Browse Source

Disallow aliasing of `any` and `typeid`

gingerBill 2 years ago
parent
commit
b72f009d87
1 changed files with 7 additions and 0 deletions
  1. 7 0
      src/check_decl.cpp

+ 7 - 0
src/check_decl.cpp

@@ -321,7 +321,14 @@ gb_internal void check_type_decl(CheckerContext *ctx, Entity *e, Ast *init_expr,
 			gb_string_free(str);
 			is_distinct = false;
 		}
+	} else {
+		if (is_type_typeid(e->type)) {
+			error(init_expr, "'typeid' cannot be aliased");
+		} else if (is_type_any(e->type)) {
+			error(init_expr, "'any' cannot be aliased");
+		}
 	}
+
 	if (!is_distinct) {
 		e->type = bt;
 		named->Named.base = bt;