diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2016-08-25 17:25:18 -0700 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2016-08-29 22:14:09 -0700 |
| commit | 651dc31247c2f637925ed6a6e92c8bc1a19efd5c (patch) | |
| tree | 7e75713d6c4c9b5dfc8783759b5ed60b5e9e71bf /src/codegen.cpp | |
| parent | 1f7ec741fa5b1d9ba3826e06a8a8a0feec58876f (diff) | |
| download | zig-651dc31247c2f637925ed6a6e92c8bc1a19efd5c.tar.gz zig-651dc31247c2f637925ed6a6e92c8bc1a19efd5c.zip | |
implement null as a literal type
Diffstat (limited to 'src/codegen.cpp')
| -rw-r--r-- | src/codegen.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/codegen.cpp b/src/codegen.cpp index 12ba5378ac..82f7084159 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -875,6 +875,9 @@ static LLVMValueRef gen_cast_expr(CodeGen *g, AstNode *node) { return cast_expr->tmp_ptr; } + case CastOpNullToMaybe: + // handled by constant expression evaluator + zig_unreachable(); case CastOpErrorWrap: { assert(wanted_type->id == TypeTableEntryIdErrorUnion); @@ -3806,6 +3809,7 @@ static LLVMValueRef gen_const_val(CodeGen *g, TypeTableEntry *type_entry, ConstE case TypeTableEntryIdNumLitFloat: case TypeTableEntryIdNumLitInt: case TypeTableEntryIdUndefLit: + case TypeTableEntryIdNullLit: case TypeTableEntryIdVoid: case TypeTableEntryIdNamespace: case TypeTableEntryIdGenericFn: @@ -4311,6 +4315,12 @@ static void define_builtin_types(CodeGen *g) { entry->deep_const = true; g->builtin_types.entry_undef = entry; } + { + TypeTableEntry *entry = new_type_table_entry(TypeTableEntryIdNullLit); + buf_init_from_str(&entry->name, "(null)"); + entry->deep_const = true; + g->builtin_types.entry_null = entry; + } for (int int_size_i = 0; int_size_i < array_length(int_sizes_in_bits); int_size_i += 1) { int size_in_bits = int_sizes_in_bits[int_size_i]; |
