#stdout
Char's flags is signed or unsigned
Void:flags:0 kind:0
Bool:flags:0 kind:1
Char_S:flags:1 kind:2
Char_U:flags:2 kind:2
Char16:flags:0 kind:3
Char32:flags:0 kind:4
WChar:flags:0 kind:5
Short:flags:32 kind:6
UShort:flags:34 kind:6
Int:flags:0 kind:6
UInt:flags:2 kind:6
Long:flags:4 kind:6
ULong:flags:6 kind:6
LongLong:flags:8 kind:6
ULongLong:flags:10 kind:6
Int128:flags:0 kind:7
UInt128:flags:2 kind:7
Float:flags:0 kind:8
Half:flags:0 kind:9
Float16:flags:0 kind:9
Double:flags:16 kind:8
LongDouble:flags:20 kind:8
Float128:flags:0 kind:10
Complex:flags:0 kind:11
Complex:flags:16 kind:11
Complex:flags:20 kind:11
Unknown:flags:0 kind:0
Type: int *:
{
	"_Type":	"PointerType",
	"X":	{
		"_Type":	"BuiltinType",
		"Kind":	6,
		"Flags":	0
	}
}
Type: int ***:
{
	"_Type":	"PointerType",
	"X":	{
		"_Type":	"PointerType",
		"X":	{
			"_Type":	"PointerType",
			"X":	{
				"_Type":	"BuiltinType",
				"Kind":	6,
				"Flags":	0
			}
		}
	}
}
Type: int[]:
{
	"_Type":	"ArrayType",
	"Elt":	{
		"_Type":	"BuiltinType",
		"Kind":	6,
		"Flags":	0
	},
	"Len":	null
}
Type: int[10]:
{
	"_Type":	"ArrayType",
	"Elt":	{
		"_Type":	"BuiltinType",
		"Kind":	6,
		"Flags":	0
	},
	"Len":	{
		"_Type":	"BasicLit",
		"Kind":	0,
		"Value":	"10"
	}
}
Type: int[3][4]:
{
	"_Type":	"ArrayType",
	"Elt":	{
		"_Type":	"ArrayType",
		"Elt":	{
			"_Type":	"BuiltinType",
			"Kind":	6,
			"Flags":	0
		},
		"Len":	{
			"_Type":	"BasicLit",
			"Kind":	0,
			"Value":	"4"
		}
	},
	"Len":	{
		"_Type":	"BasicLit",
		"Kind":	0,
		"Value":	"3"
	}
}
Type: int &:
{
	"_Type":	"LvalueRefType",
	"X":	{
		"_Type":	"BuiltinType",
		"Kind":	6,
		"Flags":	0
	}
}
Type: int &&:
{
	"_Type":	"RvalueRefType",
	"X":	{
		"_Type":	"BuiltinType",
		"Kind":	6,
		"Flags":	0
	}
}
Type: Foo:
{
	"_Type":	"Ident",
	"Name":	"Foo"
}
Type: struct Foo:
{
	"_Type":	"TagExpr",
	"Name":	{
		"_Type":	"Ident",
		"Name":	"Foo"
	},
	"Tag":	0
}
Type: struct (unnamed struct at temp.h:1:1):
{
	"_Type":	"RecordType",
	"Tag":	0,
	"Fields":	{
		"_Type":	"FieldList",
		"List":	[{
				"_Type":	"Field",
				"Type":	{
					"_Type":	"BuiltinType",
					"Kind":	6,
					"Flags":	0
				},
				"Doc":	null,
				"Comment":	null,
				"IsStatic":	false,
				"Access":	1,
				"Names":	[{
						"_Type":	"Ident",
						"Name":	"x"
					}]
			}]
	},
	"Methods":	[]
}
Type: Foo:
{
	"_Type":	"Ident",
	"Name":	"Foo"
}
Type: union Foo:
{
	"_Type":	"TagExpr",
	"Name":	{
		"_Type":	"Ident",
		"Name":	"Foo"
	},
	"Tag":	1
}
Type: union (unnamed union at temp.h:1:1):
{
	"_Type":	"RecordType",
	"Tag":	1,
	"Fields":	{
		"_Type":	"FieldList",
		"List":	[{
				"_Type":	"Field",
				"Type":	{
					"_Type":	"BuiltinType",
					"Kind":	6,
					"Flags":	0
				},
				"Doc":	null,
				"Comment":	null,
				"IsStatic":	false,
				"Access":	1,
				"Names":	[{
						"_Type":	"Ident",
						"Name":	"x"
					}]
			}]
	},
	"Methods":	[]
}
Type: Foo:
{
	"_Type":	"Ident",
	"Name":	"Foo"
}
Type: enum Foo:
{
	"_Type":	"TagExpr",
	"Name":	{
		"_Type":	"Ident",
		"Name":	"Foo"
	},
	"Tag":	2
}
Type: enum (unnamed enum at temp.h:1:1):
{
	"_Type":	"EnumType",
	"Items":	[{
			"_Type":	"EnumItem",
			"Name":	{
				"_Type":	"Ident",
				"Name":	"x"
			},
			"Value":	{
				"_Type":	"BasicLit",
				"Kind":	0,
				"Value":	"42"
			}
		}]
}
Type: Foo:
{
	"_Type":	"Ident",
	"Name":	"Foo"
}
Type: class Foo:
{
	"_Type":	"TagExpr",
	"Name":	{
		"_Type":	"Ident",
		"Name":	"Foo"
	},
	"Tag":	3
}
Type: class (unnamed class at temp.h:1:1):
{
	"_Type":	"RecordType",
	"Tag":	3,
	"Fields":	{
		"_Type":	"FieldList",
		"List":	[{
				"_Type":	"Field",
				"Type":	{
					"_Type":	"BuiltinType",
					"Kind":	6,
					"Flags":	0
				},
				"Doc":	null,
				"Comment":	null,
				"IsStatic":	false,
				"Access":	3,
				"Names":	[{
						"_Type":	"Ident",
						"Name":	"x"
					}]
			}]
	},
	"Methods":	[]
}
Type: a::b::c:
{
	"_Type":	"ScopingExpr",
	"X":	{
		"_Type":	"Ident",
		"Name":	"c"
	},
	"Parent":	{
		"_Type":	"ScopingExpr",
		"X":	{
			"_Type":	"Ident",
			"Name":	"b"
		},
		"Parent":	{
			"_Type":	"Ident",
			"Name":	"a"
		}
	}
}
Type: class a::b::c:
{
	"_Type":	"TagExpr",
	"Name":	{
		"_Type":	"ScopingExpr",
		"X":	{
			"_Type":	"Ident",
			"Name":	"c"
		},
		"Parent":	{
			"_Type":	"ScopingExpr",
			"X":	{
				"_Type":	"Ident",
				"Name":	"b"
			},
			"Parent":	{
				"_Type":	"Ident",
				"Name":	"a"
			}
		}
	},
	"Tag":	3
}
Type: int (*)(int, int):
{
	"_Type":	"PointerType",
	"X":	{
		"_Type":	"FuncType",
		"Params":	{
			"_Type":	"FieldList",
			"List":	[{
					"_Type":	"Field",
					"Type":	{
						"_Type":	"BuiltinType",
						"Kind":	6,
						"Flags":	0
					},
					"Doc":	null,
					"Comment":	null,
					"IsStatic":	false,
					"Access":	0,
					"Names":	null
				}, {
					"_Type":	"Field",
					"Type":	{
						"_Type":	"BuiltinType",
						"Kind":	6,
						"Flags":	0
					},
					"Doc":	null,
					"Comment":	null,
					"IsStatic":	false,
					"Access":	0,
					"Names":	null
				}]
		},
		"Ret":	{
			"_Type":	"BuiltinType",
			"Kind":	6,
			"Flags":	0
		}
	}
}

#stderr
todo: unknown builtin type: Ibm128

#exit 0
