aboutsummaryrefslogtreecommitdiff
path: root/src/codegen.cpp
diff options
context:
space:
mode:
authorAlexandros Naskos <alex_naskos@hotmail.com>2018-04-25 17:50:11 +0300
committerAlexandros Naskos <alex_naskos@hotmail.com>2018-04-25 17:50:11 +0300
commitbc160821d33a9284cf8bb85cca6cbf161af71d3b (patch)
treef1f4423e2f85f651e77b3c1933f66ddbf44bd045 /src/codegen.cpp
parent2606993cb48e69015a9152b860e48fca29d330e1 (diff)
downloadzig-bc160821d33a9284cf8bb85cca6cbf161af71d3b.tar.gz
zig-bc160821d33a9284cf8bb85cca6cbf161af71d3b.zip
Changed TypeInfo layout.
Diffstat (limited to 'src/codegen.cpp')
-rw-r--r--src/codegen.cpp236
1 files changed, 118 insertions, 118 deletions
diff --git a/src/codegen.cpp b/src/codegen.cpp
index 2e7cc937b4..7d83a38bbf 100644
--- a/src/codegen.cpp
+++ b/src/codegen.cpp
@@ -6349,143 +6349,143 @@ static void define_builtin_compile_vars(CodeGen *g) {
{
// TODO: Add method info where methods are supported.
buf_appendf(contents,
- "pub const IntInfo = struct {\n"
- " is_signed: bool,\n"
- " bits: u8,\n"
- "};\n"
- "\n"
- "pub const FloatInfo = struct {\n"
- " bits: u8,\n"
- "};\n"
+ "pub const TypeInfo = union(TypeId) {\n"
+ " Type: void,\n"
+ " Void: void,\n"
+ " Bool: void,\n"
+ " NoReturn: void,\n"
+ " Int: Int,\n"
+ " Float: Float,\n"
+ " Pointer: Pointer,\n"
+ " Array: Array,\n"
+ " Struct: Struct,\n"
+ " FloatLiteral: void,\n"
+ " IntLiteral: void,\n"
+ " UndefinedLiteral: void,\n"
+ " NullLiteral: void,\n"
+ " Nullable: Nullable,\n"
+ " ErrorUnion: ErrorUnion,\n"
+ " ErrorSet: ErrorSet,\n"
+ " Enum: Enum,\n"
+ " Union: Union,\n"
+ " Fn: Fn,\n"
+ " Namespace: void,\n"
+ " Block: void,\n"
+ " BoundFn: BoundFn,\n"
+ " ArgTuple: void,\n"
+ " Opaque: void,\n"
+ " Promise: Promise,\n"
+ "\n\n"
+ " pub const Int = struct {\n"
+ " is_signed: bool,\n"
+ " bits: u8,\n"
+ " };\n"
"\n"
- "pub const PointerInfo = struct {\n"
- " is_const: bool,\n"
- " is_volatile: bool,\n"
- " alignment: u32,\n"
- " child: &TypeInfo,\n"
- "};\n"
+ " pub const Float = struct {\n"
+ " bits: u8,\n"
+ " };\n"
"\n"
- "pub const ArrayInfo = struct {\n"
- " len: usize,\n"
- " child: &TypeInfo,\n"
- "};\n"
+ " pub const Pointer = struct {\n"
+ " is_const: bool,\n"
+ " is_volatile: bool,\n"
+ " alignment: u32,\n"
+ " child: &TypeInfo,\n"
+ " };\n"
"\n"
- "pub const ContainerLayout = enum {\n"
- " Auto,\n"
- " Extern,\n"
- " Packed,\n"
- "};\n"
+ " pub const Array = struct {\n"
+ " len: usize,\n"
+ " child: &TypeInfo,\n"
+ " };\n"
"\n"
- "pub const StructFieldInfo = struct {\n"
- " name: []const u8,\n"
- " offset: usize,\n"
- " type_info: TypeInfo,\n"
- "};\n"
+ " pub const ContainerLayout = enum {\n"
+ " Auto,\n"
+ " Extern,\n"
+ " Packed,\n"
+ " };\n"
"\n"
- "pub const StructInfo = struct {\n"
- " layout: ContainerLayout,\n"
- " fields: []StructFieldInfo,\n"
- "};\n"
+ " pub const StructField = struct {\n"
+ " name: []const u8,\n"
+ " offset: usize,\n"
+ " type_info: TypeInfo,\n"
+ " };\n"
"\n"
- "pub const NullableInfo = struct {\n"
- " child: &TypeInfo,\n"
- "};\n"
+ " pub const Struct = struct {\n"
+ " layout: ContainerLayout,\n"
+ " fields: []StructField,\n"
+ " };\n"
"\n"
- "pub const ErrorUnionInfo = struct {\n"
- " error_set: ErrorSetInfo,\n"
- " payload: &TypeInfo,\n"
- "};\n"
+ " pub const Nullable = struct {\n"
+ " child: &TypeInfo,\n"
+ " };\n"
"\n"
- "pub const ErrorInfo = struct {\n"
- " name: []const u8,\n"
- " value: usize,\n"
- "};\n"
+ " pub const ErrorUnion = struct {\n"
+ " error_set: ErrorSet,\n"
+ " payload: &TypeInfo,\n"
+ " };\n"
"\n"
- "pub const ErrorSetInfo = struct {\n"
- " errors: []ErrorInfo,\n"
- "};\n"
+ " pub const Error = struct {\n"
+ " name: []const u8,\n"
+ " value: usize,\n"
+ " };\n"
"\n"
- "pub const EnumFieldInfo = struct {\n"
- " name: []const u8,\n"
- " value: usize,\n"
- "};\n"
+ " pub const ErrorSet = struct {\n"
+ " errors: []Error,\n"
+ " };\n"
"\n"
- "pub const EnumInfo = struct {\n"
- " layout: ContainerLayout,\n"
- " tag_type: IntInfo,\n"
- " fields: []EnumFieldInfo,\n"
- "};\n"
+ " pub const EnumField = struct {\n"
+ " name: []const u8,\n"
+ " value: usize,\n"
+ " };\n"
"\n"
- "pub const UnionFieldInfo = struct {\n"
- " name: []const u8,\n"
- " enum_field: EnumFieldInfo,\n"
- " type_info: TypeInfo,\n"
- "};\n"
+ " pub const Enum = struct {\n"
+ " layout: ContainerLayout,\n"
+ " tag_type: Int,\n"
+ " fields: []EnumField,\n"
+ " };\n"
"\n"
- "pub const UnionInfo = struct {\n"
- " layout: ContainerLayout,\n"
- " tag_type: ?EnumInfo,\n"
- " fields: []UnionFieldInfo,\n"
- "};\n"
+ " pub const UnionField = struct {\n"
+ " name: []const u8,\n"
+ " enum_field: EnumField,\n"
+ " type_info: TypeInfo,\n"
+ " };\n"
"\n"
- "pub const CallingConvention = enum {\n"
- " Unspecified,\n"
- " C,\n"
- " Cold,\n"
- " Naked,\n"
- " Stdcall,\n"
- " Async,\n"
- "};\n"
+ " pub const Union = struct {\n"
+ " layout: ContainerLayout,\n"
+ " tag_type: ?Enum,\n"
+ " fields: []UnionField,\n"
+ " };\n"
"\n"
- "pub const FnArgInfo = struct {\n"
- " is_comptime: bool,\n"
- " name: []const u8,\n"
- " type_info: TypeInfo,\n"
- "};\n"
+ " pub const CallingConvention = enum {\n"
+ " Unspecified,\n"
+ " C,\n"
+ " Cold,\n"
+ " Naked,\n"
+ " Stdcall,\n"
+ " Async,\n"
+ " };\n"
"\n"
- "pub const FnInfo = struct {\n"
- " calling_convention: CallingConvention,\n"
- " is_generic: bool,\n"
- " is_varargs: bool,\n"
- " return_type: &TypeInfo,\n"
- " args: []FnArgInfo,\n"
- "};\n"
+ " pub const FnArg = struct {\n"
+ " is_comptime: bool,\n"
+ " name: []const u8,\n"
+ " type_info: TypeInfo,\n"
+ " };\n"
"\n"
- "pub const BoundFnInfo = struct {\n"
- " bound_type: &TypeInfo,\n"
- " fn_info: FnInfo,\n"
- "};\n"
+ " pub const Fn = struct {\n"
+ " calling_convention: CallingConvention,\n"
+ " is_generic: bool,\n"
+ " is_varargs: bool,\n"
+ " return_type: &TypeInfo,\n"
+ " args: []FnArg,\n"
+ " };\n"
"\n"
- "pub const PromiseInfo = struct {\n"
- " child: ?&TypeInfo,\n"
- "};\n"
+ " pub const BoundFn = struct {\n"
+ " bound_type: &TypeInfo,\n"
+ " fn_info: Fn,\n"
+ " };\n"
"\n"
- "pub const TypeInfo = union(TypeId) {\n"
- " Type: void,\n"
- " Void: void,\n"
- " Bool: void,\n"
- " NoReturn: void,\n"
- " Int: IntInfo,\n"
- " Float: FloatInfo,\n"
- " Pointer: PointerInfo,\n"
- " Array: ArrayInfo,\n"
- " Struct: StructInfo,\n"
- " FloatLiteral: void,\n"
- " IntLiteral: void,\n"
- " UndefinedLiteral: void,\n"
- " NullLiteral: void,\n"
- " Nullable: NullableInfo,\n"
- " ErrorUnion: ErrorUnionInfo,\n"
- " ErrorSet: ErrorSetInfo,\n"
- " Enum: EnumInfo,\n"
- " Union: UnionInfo,\n"
- " Fn: FnInfo,\n"
- " Namespace: void,\n"
- " Block: void,\n"
- " BoundFn: BoundFnInfo,\n"
- " ArgTuple: void,\n"
- " Opaque: void,\n"
- " Promise: PromiseInfo,\n"
+ " pub const Promise = struct {\n"
+ " child: ?&TypeInfo,\n"
+ " };\n"
"};\n\n");
assert(ContainerLayoutAuto == 0);
assert(ContainerLayoutExtern == 1);