diff options
| author | Ginger Bill <bill@gingerbill.org> | 2016-08-28 01:06:42 +0100 |
|---|---|---|
| committer | Ginger Bill <bill@gingerbill.org> | 2016-08-28 01:06:42 +0100 |
| commit | 593563d8eabf725ac851f4c3c72cd32b5a71aa7c (patch) | |
| tree | b3d74aaa9d2af9dde3457e69a1d0501bc519e012 /src/checker/checker.cpp | |
| parent | ae75ab169ba6199cac4555570f6c33d1f5aa75e9 (diff) | |
new, new_slice, delete
Diffstat (limited to 'src/checker/checker.cpp')
| -rw-r--r-- | src/checker/checker.cpp | 57 |
1 files changed, 32 insertions, 25 deletions
diff --git a/src/checker/checker.cpp b/src/checker/checker.cpp index 27d4d2c8a..5bb2e53bb 100644 --- a/src/checker/checker.cpp +++ b/src/checker/checker.cpp @@ -104,15 +104,18 @@ struct Scope { Map<Entity *> elements; // Key: String }; -enum ExpressionKind { - Expression_Expression, - Expression_Conversion, - Expression_Statement, +enum ExprKind { + Expr_Expr, + Expr_Stmt, }; enum BuiltinProcId { BuiltinProc_Invalid, + BuiltinProc_new, + BuiltinProc_new_slice, + BuiltinProc_delete, + BuiltinProc_size_of, BuiltinProc_size_of_val, BuiltinProc_align_of, @@ -138,29 +141,33 @@ struct BuiltinProc { String name; isize arg_count; b32 variadic; - ExpressionKind kind; + ExprKind kind; }; gb_global BuiltinProc builtin_procs[BuiltinProc_Count] = { - {STR_LIT(""), 0, false, Expression_Statement}, - - {STR_LIT("size_of"), 1, false, Expression_Expression}, - {STR_LIT("size_of_val"), 1, false, Expression_Expression}, - {STR_LIT("align_of"), 1, false, Expression_Expression}, - {STR_LIT("align_of_val"), 1, false, Expression_Expression}, - {STR_LIT("offset_of"), 2, false, Expression_Expression}, - {STR_LIT("offset_of_val"), 1, false, Expression_Expression}, - {STR_LIT("static_assert"), 1, false, Expression_Statement}, - - {STR_LIT("len"), 1, false, Expression_Expression}, - {STR_LIT("cap"), 1, false, Expression_Expression}, - {STR_LIT("copy"), 2, false, Expression_Expression}, - {STR_LIT("append"), 2, false, Expression_Expression}, - - {STR_LIT("swizzle"), 1, true, Expression_Expression}, - - {STR_LIT("ptr_offset"), 2, false, Expression_Expression}, - {STR_LIT("ptr_sub"), 2, false, Expression_Expression}, - {STR_LIT("slice_ptr"), 2, true, Expression_Expression}, + {STR_LIT(""), 0, false, Expr_Stmt}, + + {STR_LIT("new"), 1, false, Expr_Expr}, + {STR_LIT("new_slice"), 2, true, Expr_Expr}, + {STR_LIT("delete"), 1, false, Expr_Stmt}, + + {STR_LIT("size_of"), 1, false, Expr_Expr}, + {STR_LIT("size_of_val"), 1, false, Expr_Expr}, + {STR_LIT("align_of"), 1, false, Expr_Expr}, + {STR_LIT("align_of_val"), 1, false, Expr_Expr}, + {STR_LIT("offset_of"), 2, false, Expr_Expr}, + {STR_LIT("offset_of_val"), 1, false, Expr_Expr}, + {STR_LIT("static_assert"), 1, false, Expr_Stmt}, + + {STR_LIT("len"), 1, false, Expr_Expr}, + {STR_LIT("cap"), 1, false, Expr_Expr}, + {STR_LIT("copy"), 2, false, Expr_Expr}, + {STR_LIT("append"), 2, false, Expr_Expr}, + + {STR_LIT("swizzle"), 1, true, Expr_Expr}, + + {STR_LIT("ptr_offset"), 2, false, Expr_Expr}, + {STR_LIT("ptr_sub"), 2, false, Expr_Expr}, + {STR_LIT("slice_ptr"), 2, true, Expr_Expr}, }; struct CheckerContext { |