mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 15:48:51 +00:00
Bodged in support for region pragmas
Have them as basic directives They're similar to the assert and panic macros but are hardcoded to true #region (<string literal>) #endregion (<string literal>)
This commit is contained in:
+15
-1
@@ -1670,7 +1670,21 @@ gb_internal bool check_builtin_procedure_directive(CheckerContext *c, Operand *o
|
|||||||
operand->value = found->Constant.value;
|
operand->value = found->Constant.value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
|
||||||
|
// Bodging in #region & #endregion support
|
||||||
|
else if (name == "region") {
|
||||||
|
operand->type = t_untyped_bool;
|
||||||
|
operand->mode = Addressing_Constant;
|
||||||
|
operand->value = exact_value_bool(true);
|
||||||
|
}
|
||||||
|
else if (name == "endregion") {
|
||||||
|
operand->type = t_untyped_bool;
|
||||||
|
operand->mode = Addressing_Constant;
|
||||||
|
operand->value = exact_value_bool(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
else {
|
||||||
error(call, "Unknown directive call: #%.*s", LIT(name));
|
error(call, "Unknown directive call: #%.*s", LIT(name));
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -7372,6 +7372,8 @@ gb_internal ExprKind check_call_expr(CheckerContext *c, Operand *operand, Ast *c
|
|||||||
name == "location" ||
|
name == "location" ||
|
||||||
name == "assert" ||
|
name == "assert" ||
|
||||||
name == "panic" ||
|
name == "panic" ||
|
||||||
|
name == "region" ||
|
||||||
|
name == "endregion" ||
|
||||||
name == "defined" ||
|
name == "defined" ||
|
||||||
name == "config" ||
|
name == "config" ||
|
||||||
name == "load" ||
|
name == "load" ||
|
||||||
|
|||||||
+1
-1
@@ -5147,7 +5147,7 @@ gb_internal Ast *parse_stmt(AstFile *f) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return s;
|
return s;
|
||||||
} else if (tag == "assert" || tag == "panic") {
|
} else if (tag == "assert" || tag == "panic" || tag == "region" || tag == "endregion") {
|
||||||
Ast *t = ast_basic_directive(f, hash_token, name);
|
Ast *t = ast_basic_directive(f, hash_token, name);
|
||||||
Ast *stmt = ast_expr_stmt(f, parse_call_expr(f, t));
|
Ast *stmt = ast_expr_stmt(f, parse_call_expr(f, t));
|
||||||
expect_semicolon(f);
|
expect_semicolon(f);
|
||||||
|
|||||||
Reference in New Issue
Block a user