Browse Source

Correct `check_expr_is_stack_variable`

gingerBill 3 years ago
parent
commit
af1b3b6368
1 changed files with 2 additions and 1 deletions
  1. 2 1
      src/check_stmt.cpp

+ 2 - 1
src/check_stmt.cpp

@@ -1397,6 +1397,7 @@ bool check_stmt_internal_builtin_proc_id(Ast *expr, BuiltinProcId *id_) {
 }
 }
 
 
 bool check_expr_is_stack_variable(Ast *expr) {
 bool check_expr_is_stack_variable(Ast *expr) {
+	expr = unparen_expr(expr);
 	Entity *e = entity_of_node(expr);
 	Entity *e = entity_of_node(expr);
 	if (e && e->kind == Entity_Variable) {
 	if (e && e->kind == Entity_Variable) {
 		if (e->flags & EntityFlag_Static) {
 		if (e->flags & EntityFlag_Static) {
@@ -1404,7 +1405,7 @@ bool check_expr_is_stack_variable(Ast *expr) {
 		} else if (e->Variable.thread_local_model.len != 0) {
 		} else if (e->Variable.thread_local_model.len != 0) {
 			// okay
 			// okay
 		} else if (e->scope) {
 		} else if (e->scope) {
-			if ((e->scope->flags & (ScopeFlag_Global|ScopeFlag_File)) == 0) {
+			if ((e->scope->flags & (ScopeFlag_Global|ScopeFlag_File|ScopeFlag_Type)) == 0) {
 				return true;
 				return true;
 			}
 			}
 		}
 		}