aboutsummaryrefslogtreecommitdiff
path: root/src/compiler/ast-tree.c
diff options
context:
space:
mode:
authorA404M <ahmadmahmoudiprogrammer@gmail.com>2025-05-26 01:24:56 +0330
committerA404M <ahmadmahmoudiprogrammer@gmail.com>2025-05-26 01:24:56 +0330
commitafa78451df1e9fb2810d4ae8cb697b1b2071ff9c (patch)
tree9b0ad12b58522cc0f99832253b1948fdebc1158c /src/compiler/ast-tree.c
parente55d45bac0bbd3039118bffa7e6aaf01c04b991a (diff)
add shift
Diffstat (limited to 'src/compiler/ast-tree.c')
-rw-r--r--src/compiler/ast-tree.c91
1 files changed, 90 insertions, 1 deletions
diff --git a/src/compiler/ast-tree.c b/src/compiler/ast-tree.c
index de863c8..93c69ae 100644
--- a/src/compiler/ast-tree.c
+++ b/src/compiler/ast-tree.c
@@ -202,6 +202,8 @@ const char *AST_TREE_TOKEN_STRINGS[] = {
"AST_TREE_TOKEN_BUILTIN_BITWISE_AND",
"AST_TREE_TOKEN_BUILTIN_BITWISE_XOR",
"AST_TREE_TOKEN_BUILTIN_BITWISE_OR",
+ "AST_TREE_TOKEN_BUILTIN_SHIFT_LEFT",
+ "AST_TREE_TOKEN_BUILTIN_SHIFT_RIGHT",
"AST_TREE_TOKEN_KEYWORD_RETURN",
"AST_TREE_TOKEN_KEYWORD_BREAK",
@@ -281,6 +283,8 @@ const char *AST_TREE_TOKEN_STRINGS[] = {
"AST_TREE_TOKEN_OPERATOR_BITWISE_AND",
"AST_TREE_TOKEN_OPERATOR_BITWISE_XOR",
"AST_TREE_TOKEN_OPERATOR_BITWISE_OR",
+ "AST_TREE_TOKEN_OPERATOR_SHIFT_LEFT",
+ "AST_TREE_TOKEN_OPERATOR_SHIFT_RIGHT",
"AST_TREE_TOKEN_SCOPE",
@@ -361,6 +365,8 @@ void astTreePrint(const AstTree *tree, int indent) {
case AST_TREE_TOKEN_BUILTIN_BITWISE_AND:
case AST_TREE_TOKEN_BUILTIN_BITWISE_XOR:
case AST_TREE_TOKEN_BUILTIN_BITWISE_OR:
+ case AST_TREE_TOKEN_BUILTIN_SHIFT_LEFT:
+ case AST_TREE_TOKEN_BUILTIN_SHIFT_RIGHT:
case AST_TREE_TOKEN_TYPE_TYPE:
case AST_TREE_TOKEN_TYPE_VOID:
case AST_TREE_TOKEN_TYPE_I8:
@@ -544,6 +550,8 @@ void astTreePrint(const AstTree *tree, int indent) {
case AST_TREE_TOKEN_OPERATOR_BITWISE_AND:
case AST_TREE_TOKEN_OPERATOR_BITWISE_XOR:
case AST_TREE_TOKEN_OPERATOR_BITWISE_OR:
+ case AST_TREE_TOKEN_OPERATOR_SHIFT_LEFT:
+ case AST_TREE_TOKEN_OPERATOR_SHIFT_RIGHT:
case AST_TREE_TOKEN_OPERATOR_SUM:
case AST_TREE_TOKEN_OPERATOR_SUB:
case AST_TREE_TOKEN_OPERATOR_MULTIPLY:
@@ -809,6 +817,8 @@ void astTreeDestroy(AstTree tree) {
case AST_TREE_TOKEN_BUILTIN_BITWISE_AND:
case AST_TREE_TOKEN_BUILTIN_BITWISE_XOR:
case AST_TREE_TOKEN_BUILTIN_BITWISE_OR:
+ case AST_TREE_TOKEN_BUILTIN_SHIFT_LEFT:
+ case AST_TREE_TOKEN_BUILTIN_SHIFT_RIGHT:
case AST_TREE_TOKEN_TYPE_TYPE:
case AST_TREE_TOKEN_TYPE_VOID:
case AST_TREE_TOKEN_TYPE_I8:
@@ -945,6 +955,8 @@ void astTreeDestroy(AstTree tree) {
case AST_TREE_TOKEN_OPERATOR_BITWISE_AND:
case AST_TREE_TOKEN_OPERATOR_BITWISE_XOR:
case AST_TREE_TOKEN_OPERATOR_BITWISE_OR:
+ case AST_TREE_TOKEN_OPERATOR_SHIFT_LEFT:
+ case AST_TREE_TOKEN_OPERATOR_SHIFT_RIGHT:
case AST_TREE_TOKEN_OPERATOR_SUM:
case AST_TREE_TOKEN_OPERATOR_SUB:
case AST_TREE_TOKEN_OPERATOR_MULTIPLY:
@@ -1195,6 +1207,8 @@ AstTree *copyAstTreeBack(AstTree *tree, AstTreeVariables oldVariables[],
case AST_TREE_TOKEN_BUILTIN_BITWISE_AND:
case AST_TREE_TOKEN_BUILTIN_BITWISE_XOR:
case AST_TREE_TOKEN_BUILTIN_BITWISE_OR:
+ case AST_TREE_TOKEN_BUILTIN_SHIFT_LEFT:
+ case AST_TREE_TOKEN_BUILTIN_SHIFT_RIGHT:
return newAstTree(tree->token, NULL,
copyAstTreeBack(tree->type, oldVariables, newVariables,
variables_size, safetyCheck),
@@ -1343,6 +1357,8 @@ AstTree *copyAstTreeBack(AstTree *tree, AstTreeVariables oldVariables[],
case AST_TREE_TOKEN_OPERATOR_BITWISE_AND:
case AST_TREE_TOKEN_OPERATOR_BITWISE_XOR:
case AST_TREE_TOKEN_OPERATOR_BITWISE_OR:
+ case AST_TREE_TOKEN_OPERATOR_SHIFT_LEFT:
+ case AST_TREE_TOKEN_OPERATOR_SHIFT_RIGHT:
case AST_TREE_TOKEN_OPERATOR_ASSIGN:
case AST_TREE_TOKEN_OPERATOR_SUM:
case AST_TREE_TOKEN_OPERATOR_SUB:
@@ -2168,6 +2184,8 @@ AstTreeRoot *makeAstRoot(const ParserNode *parsedRoot, char *filePath) {
case PARSER_TOKEN_OPERATOR_BITWISE_AND:
case PARSER_TOKEN_OPERATOR_BITWISE_XOR:
case PARSER_TOKEN_OPERATOR_BITWISE_OR:
+ case PARSER_TOKEN_OPERATOR_SHIFT_LEFT:
+ case PARSER_TOKEN_OPERATOR_SHIFT_RIGHT:
case PARSER_TOKEN_SYMBOL_PARENTHESIS:
case PARSER_TOKEN_KEYWORD_IF:
case PARSER_TOKEN_KEYWORD_WHILE:
@@ -2225,6 +2243,8 @@ AstTreeRoot *makeAstRoot(const ParserNode *parsedRoot, char *filePath) {
case PARSER_TOKEN_BUILTIN_BITWISE_AND:
case PARSER_TOKEN_BUILTIN_BITWISE_XOR:
case PARSER_TOKEN_BUILTIN_BITWISE_OR:
+ case PARSER_TOKEN_BUILTIN_SHIFT_LEFT:
+ case PARSER_TOKEN_BUILTIN_SHIFT_RIGHT:
case PARSER_TOKEN_SYMBOL_BRACKET_LEFT:
case PARSER_TOKEN_SYMBOL_BRACKET_RIGHT:
goto AFTER_SWITCH;
@@ -2362,6 +2382,10 @@ AstTree *astTreeParse(const ParserNode *parserNode) {
return astTreeParseKeyword(parserNode, AST_TREE_TOKEN_BUILTIN_BITWISE_XOR);
case PARSER_TOKEN_BUILTIN_BITWISE_OR:
return astTreeParseKeyword(parserNode, AST_TREE_TOKEN_BUILTIN_BITWISE_OR);
+ case PARSER_TOKEN_BUILTIN_SHIFT_LEFT:
+ return astTreeParseKeyword(parserNode, AST_TREE_TOKEN_BUILTIN_SHIFT_LEFT);
+ case PARSER_TOKEN_BUILTIN_SHIFT_RIGHT:
+ return astTreeParseKeyword(parserNode, AST_TREE_TOKEN_BUILTIN_SHIFT_RIGHT);
case PARSER_TOKEN_TYPE_TYPE:
return &AST_TREE_TYPE_TYPE;
case PARSER_TOKEN_TYPE_FUNCTION:
@@ -2507,6 +2531,12 @@ AstTree *astTreeParse(const ParserNode *parserNode) {
case PARSER_TOKEN_OPERATOR_BITWISE_NOT:
return astTreeParseUnaryOperator(parserNode,
AST_TREE_TOKEN_OPERATOR_BITWISE_NOT);
+ case PARSER_TOKEN_OPERATOR_SHIFT_LEFT:
+ return astTreeParseBinaryOperator(parserNode,
+ AST_TREE_TOKEN_OPERATOR_SHIFT_LEFT);
+ case PARSER_TOKEN_OPERATOR_SHIFT_RIGHT:
+ return astTreeParseBinaryOperator(parserNode,
+ AST_TREE_TOKEN_OPERATOR_SHIFT_RIGHT);
case PARSER_TOKEN_OPERATOR_PLUS:
return astTreeParseUnaryOperator(parserNode, AST_TREE_TOKEN_OPERATOR_PLUS);
case PARSER_TOKEN_OPERATOR_MINUS:
@@ -2690,6 +2720,8 @@ AstTree *astTreeParseFunction(const ParserNode *parserNode) {
case PARSER_TOKEN_OPERATOR_BITWISE_AND:
case PARSER_TOKEN_OPERATOR_BITWISE_XOR:
case PARSER_TOKEN_OPERATOR_BITWISE_OR:
+ case PARSER_TOKEN_OPERATOR_SHIFT_LEFT:
+ case PARSER_TOKEN_OPERATOR_SHIFT_RIGHT:
case PARSER_TOKEN_BUILTIN_CAST:
case PARSER_TOKEN_BUILTIN_TYPE_OF:
case PARSER_TOKEN_BUILTIN_SIZE_OF:
@@ -2716,6 +2748,8 @@ AstTree *astTreeParseFunction(const ParserNode *parserNode) {
case PARSER_TOKEN_BUILTIN_BITWISE_AND:
case PARSER_TOKEN_BUILTIN_BITWISE_XOR:
case PARSER_TOKEN_BUILTIN_BITWISE_OR:
+ case PARSER_TOKEN_BUILTIN_SHIFT_LEFT:
+ case PARSER_TOKEN_BUILTIN_SHIFT_RIGHT:
case PARSER_TOKEN_SYMBOL_BRACKET_LEFT:
case PARSER_TOKEN_SYMBOL_BRACKET_RIGHT:
printError(node->str_begin, node->str_end, "Unexpected %s",
@@ -3300,6 +3334,8 @@ AstTree *astTreeParseCurlyBracket(const ParserNode *parserNode) {
case PARSER_TOKEN_OPERATOR_BITWISE_AND:
case PARSER_TOKEN_OPERATOR_BITWISE_XOR:
case PARSER_TOKEN_OPERATOR_BITWISE_OR:
+ case PARSER_TOKEN_OPERATOR_SHIFT_LEFT:
+ case PARSER_TOKEN_OPERATOR_SHIFT_RIGHT:
case PARSER_TOKEN_BUILTIN_CAST:
case PARSER_TOKEN_BUILTIN_TYPE_OF:
case PARSER_TOKEN_BUILTIN_SIZE_OF:
@@ -3326,6 +3362,8 @@ AstTree *astTreeParseCurlyBracket(const ParserNode *parserNode) {
case PARSER_TOKEN_BUILTIN_BITWISE_AND:
case PARSER_TOKEN_BUILTIN_BITWISE_XOR:
case PARSER_TOKEN_BUILTIN_BITWISE_OR:
+ case PARSER_TOKEN_BUILTIN_SHIFT_LEFT:
+ case PARSER_TOKEN_BUILTIN_SHIFT_RIGHT:
case PARSER_TOKEN_SYMBOL_BRACKET_LEFT:
case PARSER_TOKEN_SYMBOL_BRACKET_RIGHT:
printError(node->str_begin, node->str_end, "Unexpected %s",
@@ -3555,6 +3593,8 @@ bool isConst(AstTree *tree) {
case AST_TREE_TOKEN_BUILTIN_BITWISE_AND:
case AST_TREE_TOKEN_BUILTIN_BITWISE_XOR:
case AST_TREE_TOKEN_BUILTIN_BITWISE_OR:
+ case AST_TREE_TOKEN_BUILTIN_SHIFT_LEFT:
+ case AST_TREE_TOKEN_BUILTIN_SHIFT_RIGHT:
case AST_TREE_TOKEN_TYPE_TYPE:
case AST_TREE_TOKEN_TYPE_FUNCTION:
case AST_TREE_TOKEN_TYPE_VOID:
@@ -3658,7 +3698,9 @@ bool isConst(AstTree *tree) {
case AST_TREE_TOKEN_OPERATOR_LOGICAL_OR:
case AST_TREE_TOKEN_OPERATOR_BITWISE_AND:
case AST_TREE_TOKEN_OPERATOR_BITWISE_XOR:
- case AST_TREE_TOKEN_OPERATOR_BITWISE_OR: {
+ case AST_TREE_TOKEN_OPERATOR_BITWISE_OR:
+ case AST_TREE_TOKEN_OPERATOR_SHIFT_LEFT:
+ case AST_TREE_TOKEN_OPERATOR_SHIFT_RIGHT: {
AstTreeInfix *metadata = tree->metadata;
return metadata->function->isConst && isConst(metadata->left) &&
isConst(metadata->right);
@@ -3804,6 +3846,8 @@ AstTree *makeTypeOf(AstTree *value) {
case AST_TREE_TOKEN_OPERATOR_BITWISE_AND:
case AST_TREE_TOKEN_OPERATOR_BITWISE_XOR:
case AST_TREE_TOKEN_OPERATOR_BITWISE_OR:
+ case AST_TREE_TOKEN_OPERATOR_SHIFT_LEFT:
+ case AST_TREE_TOKEN_OPERATOR_SHIFT_RIGHT:
case AST_TREE_TOKEN_OPERATOR_EQUAL:
case AST_TREE_TOKEN_OPERATOR_NOT_EQUAL:
case AST_TREE_TOKEN_OPERATOR_GREATER:
@@ -3878,6 +3922,8 @@ AstTree *makeTypeOf(AstTree *value) {
case AST_TREE_TOKEN_BUILTIN_BITWISE_AND:
case AST_TREE_TOKEN_BUILTIN_BITWISE_XOR:
case AST_TREE_TOKEN_BUILTIN_BITWISE_OR:
+ case AST_TREE_TOKEN_BUILTIN_SHIFT_LEFT:
+ case AST_TREE_TOKEN_BUILTIN_SHIFT_RIGHT:
case AST_TREE_TOKEN_VALUE_OBJECT:
case AST_TREE_TOKEN_VARIABLE_DEFINE:
case AST_TREE_TOKEN_KEYWORD_RETURN:
@@ -3968,6 +4014,8 @@ bool typeIsEqualBack(const AstTree *type0, const AstTree *type1) {
case AST_TREE_TOKEN_BUILTIN_BITWISE_AND:
case AST_TREE_TOKEN_BUILTIN_BITWISE_XOR:
case AST_TREE_TOKEN_BUILTIN_BITWISE_OR:
+ case AST_TREE_TOKEN_BUILTIN_SHIFT_LEFT:
+ case AST_TREE_TOKEN_BUILTIN_SHIFT_RIGHT:
case AST_TREE_TOKEN_FUNCTION:
case AST_TREE_TOKEN_KEYWORD_RETURN:
case AST_TREE_TOKEN_KEYWORD_BREAK:
@@ -4010,6 +4058,8 @@ bool typeIsEqualBack(const AstTree *type0, const AstTree *type1) {
case AST_TREE_TOKEN_OPERATOR_BITWISE_AND:
case AST_TREE_TOKEN_OPERATOR_BITWISE_XOR:
case AST_TREE_TOKEN_OPERATOR_BITWISE_OR:
+ case AST_TREE_TOKEN_OPERATOR_SHIFT_LEFT:
+ case AST_TREE_TOKEN_OPERATOR_SHIFT_RIGHT:
case AST_TREE_TOKEN_SCOPE:
case AST_TREE_TOKEN_OPERATOR_DEREFERENCE:
case AST_TREE_TOKEN_OPERATOR_ADDRESS:
@@ -4161,6 +4211,8 @@ AstTree *getValue(AstTree *tree, bool copy) {
case AST_TREE_TOKEN_BUILTIN_BITWISE_AND:
case AST_TREE_TOKEN_BUILTIN_BITWISE_XOR:
case AST_TREE_TOKEN_BUILTIN_BITWISE_OR:
+ case AST_TREE_TOKEN_BUILTIN_SHIFT_LEFT:
+ case AST_TREE_TOKEN_BUILTIN_SHIFT_RIGHT:
case AST_TREE_TOKEN_TYPE_FUNCTION:
case AST_TREE_TOKEN_TYPE_TYPE:
case AST_TREE_TOKEN_TYPE_VOID:
@@ -4221,6 +4273,8 @@ AstTree *getValue(AstTree *tree, bool copy) {
case AST_TREE_TOKEN_OPERATOR_BITWISE_AND:
case AST_TREE_TOKEN_OPERATOR_BITWISE_XOR:
case AST_TREE_TOKEN_OPERATOR_BITWISE_OR:
+ case AST_TREE_TOKEN_OPERATOR_SHIFT_LEFT:
+ case AST_TREE_TOKEN_OPERATOR_SHIFT_RIGHT:
case AST_TREE_TOKEN_KEYWORD_IF:
case AST_TREE_TOKEN_KEYWORD_WHILE:
case AST_TREE_TOKEN_KEYWORD_COMPTIME:
@@ -4317,6 +4371,8 @@ bool isIntType(AstTree *type) {
case AST_TREE_TOKEN_BUILTIN_BITWISE_AND:
case AST_TREE_TOKEN_BUILTIN_BITWISE_XOR:
case AST_TREE_TOKEN_BUILTIN_BITWISE_OR:
+ case AST_TREE_TOKEN_BUILTIN_SHIFT_LEFT:
+ case AST_TREE_TOKEN_BUILTIN_SHIFT_RIGHT:
case AST_TREE_TOKEN_KEYWORD_RETURN:
case AST_TREE_TOKEN_KEYWORD_BREAK:
case AST_TREE_TOKEN_KEYWORD_CONTINUE:
@@ -4381,6 +4437,8 @@ bool isIntType(AstTree *type) {
case AST_TREE_TOKEN_OPERATOR_BITWISE_AND:
case AST_TREE_TOKEN_OPERATOR_BITWISE_XOR:
case AST_TREE_TOKEN_OPERATOR_BITWISE_OR:
+ case AST_TREE_TOKEN_OPERATOR_SHIFT_LEFT:
+ case AST_TREE_TOKEN_OPERATOR_SHIFT_RIGHT:
case AST_TREE_TOKEN_OPERATOR_ARRAY_ACCESS:
case AST_TREE_TOKEN_SCOPE:
case AST_TREE_TOKEN_SHAPE_SHIFTER_ELEMENT:
@@ -4434,6 +4492,8 @@ bool isFloatType(AstTree *type) {
case AST_TREE_TOKEN_BUILTIN_BITWISE_AND:
case AST_TREE_TOKEN_BUILTIN_BITWISE_XOR:
case AST_TREE_TOKEN_BUILTIN_BITWISE_OR:
+ case AST_TREE_TOKEN_BUILTIN_SHIFT_LEFT:
+ case AST_TREE_TOKEN_BUILTIN_SHIFT_RIGHT:
case AST_TREE_TOKEN_KEYWORD_RETURN:
case AST_TREE_TOKEN_KEYWORD_BREAK:
case AST_TREE_TOKEN_KEYWORD_CONTINUE:
@@ -4492,6 +4552,8 @@ bool isFloatType(AstTree *type) {
case AST_TREE_TOKEN_OPERATOR_BITWISE_AND:
case AST_TREE_TOKEN_OPERATOR_BITWISE_XOR:
case AST_TREE_TOKEN_OPERATOR_BITWISE_OR:
+ case AST_TREE_TOKEN_OPERATOR_SHIFT_LEFT:
+ case AST_TREE_TOKEN_OPERATOR_SHIFT_RIGHT:
case AST_TREE_TOKEN_OPERATOR_ARRAY_ACCESS:
case AST_TREE_TOKEN_SCOPE:
case AST_TREE_TOKEN_SHAPE_SHIFTER_ELEMENT:
@@ -4586,6 +4648,8 @@ bool isEqual(AstTree *left, AstTree *right) {
case AST_TREE_TOKEN_BUILTIN_BITWISE_AND:
case AST_TREE_TOKEN_BUILTIN_BITWISE_XOR:
case AST_TREE_TOKEN_BUILTIN_BITWISE_OR:
+ case AST_TREE_TOKEN_BUILTIN_SHIFT_LEFT:
+ case AST_TREE_TOKEN_BUILTIN_SHIFT_RIGHT:
case AST_TREE_TOKEN_KEYWORD_RETURN:
case AST_TREE_TOKEN_KEYWORD_BREAK:
case AST_TREE_TOKEN_KEYWORD_CONTINUE:
@@ -4628,6 +4692,8 @@ bool isEqual(AstTree *left, AstTree *right) {
case AST_TREE_TOKEN_OPERATOR_BITWISE_AND:
case AST_TREE_TOKEN_OPERATOR_BITWISE_XOR:
case AST_TREE_TOKEN_OPERATOR_BITWISE_OR:
+ case AST_TREE_TOKEN_OPERATOR_SHIFT_LEFT:
+ case AST_TREE_TOKEN_OPERATOR_SHIFT_RIGHT:
case AST_TREE_TOKEN_OPERATOR_ARRAY_ACCESS:
case AST_TREE_TOKEN_SCOPE:
case AST_TREE_TOKEN_SHAPE_SHIFTER_ELEMENT:
@@ -4784,6 +4850,13 @@ static const size_t STR_BITWISE_XOR_SIZE =
static const char STR_BITWISE_OR[] = "__bitwise_or__";
static const size_t STR_BITWISE_OR_SIZE =
sizeof(STR_BITWISE_OR) / sizeof(*STR_BITWISE_OR) - sizeof(*STR_BITWISE_OR);
+static const char STR_SHIFT_LEFT[] = "__shift_left__";
+static const size_t STR_SHIFT_LEFT_SIZE =
+ sizeof(STR_SHIFT_LEFT) / sizeof(*STR_SHIFT_LEFT) - sizeof(*STR_SHIFT_LEFT);
+static const char STR_SHIFT_RIGHT[] = "__shift_right__";
+static const size_t STR_SHIFT_RIGHT_SIZE =
+ sizeof(STR_SHIFT_RIGHT) / sizeof(*STR_SHIFT_RIGHT) -
+ sizeof(*STR_SHIFT_RIGHT);
static const char STR_EQUAL[] = "__equal__";
static const size_t STR_EQUAL_SIZE =
sizeof(STR_EQUAL) / sizeof(*STR_EQUAL) - sizeof(*STR_EQUAL);
@@ -4916,6 +4989,12 @@ bool setAllTypes(AstTree *tree, AstTreeSetTypesHelper helper,
case AST_TREE_TOKEN_OPERATOR_BITWISE_OR:
return setTypesOperatorInfix(tree, helper, STR_BITWISE_OR,
STR_BITWISE_OR_SIZE);
+ case AST_TREE_TOKEN_OPERATOR_SHIFT_LEFT:
+ return setTypesOperatorInfix(tree, helper, STR_SHIFT_LEFT,
+ STR_SHIFT_LEFT_SIZE);
+ case AST_TREE_TOKEN_OPERATOR_SHIFT_RIGHT:
+ return setTypesOperatorInfix(tree, helper, STR_SHIFT_RIGHT,
+ STR_SHIFT_RIGHT_SIZE);
case AST_TREE_TOKEN_OPERATOR_POINTER:
return setTypesOperatorPointer(tree, helper);
case AST_TREE_TOKEN_OPERATOR_ADDRESS:
@@ -4961,6 +5040,8 @@ bool setAllTypes(AstTree *tree, AstTreeSetTypesHelper helper,
case AST_TREE_TOKEN_BUILTIN_BITWISE_AND:
case AST_TREE_TOKEN_BUILTIN_BITWISE_XOR:
case AST_TREE_TOKEN_BUILTIN_BITWISE_OR:
+ case AST_TREE_TOKEN_BUILTIN_SHIFT_LEFT:
+ case AST_TREE_TOKEN_BUILTIN_SHIFT_RIGHT:
return setTypesBuiltinBinary(tree, helper, functionCall);
case AST_TREE_TOKEN_BUILTIN_EQUAL:
case AST_TREE_TOKEN_BUILTIN_NOT_EQUAL:
@@ -6695,6 +6776,8 @@ bool setTypesBuiltinUnary(AstTree *tree, AstTreeSetTypesHelper helper,
case AST_TREE_TOKEN_BUILTIN_BITWISE_AND:
case AST_TREE_TOKEN_BUILTIN_BITWISE_XOR:
case AST_TREE_TOKEN_BUILTIN_BITWISE_OR:
+ case AST_TREE_TOKEN_BUILTIN_SHIFT_LEFT:
+ case AST_TREE_TOKEN_BUILTIN_SHIFT_RIGHT:
case AST_TREE_TOKEN_KEYWORD_RETURN:
case AST_TREE_TOKEN_KEYWORD_BREAK:
case AST_TREE_TOKEN_KEYWORD_CONTINUE:
@@ -6750,6 +6833,8 @@ bool setTypesBuiltinUnary(AstTree *tree, AstTreeSetTypesHelper helper,
case AST_TREE_TOKEN_OPERATOR_BITWISE_AND:
case AST_TREE_TOKEN_OPERATOR_BITWISE_XOR:
case AST_TREE_TOKEN_OPERATOR_BITWISE_OR:
+ case AST_TREE_TOKEN_OPERATOR_SHIFT_LEFT:
+ case AST_TREE_TOKEN_OPERATOR_SHIFT_RIGHT:
case AST_TREE_TOKEN_OPERATOR_ARRAY_ACCESS:
case AST_TREE_TOKEN_SCOPE:
case AST_TREE_TOKEN_SHAPE_SHIFTER_ELEMENT:
@@ -7776,6 +7861,8 @@ size_t getSizeOfType(AstTree *type) {
case AST_TREE_TOKEN_BUILTIN_BITWISE_AND:
case AST_TREE_TOKEN_BUILTIN_BITWISE_XOR:
case AST_TREE_TOKEN_BUILTIN_BITWISE_OR:
+ case AST_TREE_TOKEN_BUILTIN_SHIFT_LEFT:
+ case AST_TREE_TOKEN_BUILTIN_SHIFT_RIGHT:
case AST_TREE_TOKEN_KEYWORD_RETURN:
case AST_TREE_TOKEN_KEYWORD_BREAK:
case AST_TREE_TOKEN_KEYWORD_CONTINUE:
@@ -7823,6 +7910,8 @@ size_t getSizeOfType(AstTree *type) {
case AST_TREE_TOKEN_OPERATOR_BITWISE_AND:
case AST_TREE_TOKEN_OPERATOR_BITWISE_XOR:
case AST_TREE_TOKEN_OPERATOR_BITWISE_OR:
+ case AST_TREE_TOKEN_OPERATOR_SHIFT_LEFT:
+ case AST_TREE_TOKEN_OPERATOR_SHIFT_RIGHT:
case AST_TREE_TOKEN_OPERATOR_ARRAY_ACCESS:
case AST_TREE_TOKEN_SCOPE:
case AST_TREE_TOKEN_NONE: