aboutsummaryrefslogtreecommitdiff
path: root/src/checker/checker.cpp
diff options
context:
space:
mode:
authorGinger Bill <bill@gingerbill.org>2016-08-28 01:06:42 +0100
committerGinger Bill <bill@gingerbill.org>2016-08-28 01:06:42 +0100
commit593563d8eabf725ac851f4c3c72cd32b5a71aa7c (patch)
treeb3d74aaa9d2af9dde3457e69a1d0501bc519e012 /src/checker/checker.cpp
parentae75ab169ba6199cac4555570f6c33d1f5aa75e9 (diff)
new, new_slice, delete
Diffstat (limited to 'src/checker/checker.cpp')
-rw-r--r--src/checker/checker.cpp57
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 {