Просмотр исходного кода

Disallow aliasing of `any` and `typeid`

gingerBill 2 лет назад
Родитель
Сommit
b72f009d87
1 измененных файлов с 7 добавлено и 0 удалено
  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);
 			gb_string_free(str);
 			is_distinct = false;
 			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) {
 	if (!is_distinct) {
 		e->type = bt;
 		e->type = bt;
 		named->Named.base = bt;
 		named->Named.base = bt;