aboutsummaryrefslogtreecommitdiff
path: root/src/codegen.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2016-08-25 17:25:18 -0700
committerAndrew Kelley <superjoe30@gmail.com>2016-08-29 22:14:09 -0700
commit651dc31247c2f637925ed6a6e92c8bc1a19efd5c (patch)
tree7e75713d6c4c9b5dfc8783759b5ed60b5e9e71bf /src/codegen.cpp
parent1f7ec741fa5b1d9ba3826e06a8a8a0feec58876f (diff)
downloadzig-651dc31247c2f637925ed6a6e92c8bc1a19efd5c.tar.gz
zig-651dc31247c2f637925ed6a6e92c8bc1a19efd5c.zip
implement null as a literal type
Diffstat (limited to 'src/codegen.cpp')
-rw-r--r--src/codegen.cpp10
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];