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

Perform type kind check before making use relevant fields in objc_superclass check

Harold Brenes 4 дней назад
Родитель
Сommit
9f5bde4a6f
1 измененных файлов с 5 добавлено и 5 удалено
  1. 5 5
      src/check_decl.cpp

+ 5 - 5
src/check_decl.cpp

@@ -559,6 +559,11 @@ gb_internal void check_type_decl(CheckerContext *ctx, Entity *e, Ast *init_expr,
 
 				Type *super = ac.objc_superclass;
 				while (super != nullptr) {
+					if (super->kind != Type_Named) {
+						error(e->token, "@(objc_superclass) Referenced type must be a named struct");
+						break;
+					}
+
 					if (type_set_update(&super_set, super)) {
 						error(e->token, "@(objc_superclass) Superclass hierarchy cycle encountered");
 						break;
@@ -566,11 +571,6 @@ gb_internal void check_type_decl(CheckerContext *ctx, Entity *e, Ast *init_expr,
 
 					check_single_global_entity(ctx->checker, super->Named.type_name, super->Named.type_name->decl_info);
 
-					if (super->kind != Type_Named) {
-						error(e->token, "@(objc_superclass) Referenced type must be a named struct");
-						break;
-					}
-
 					Type* named_type = base_named_type(super);
 					GB_ASSERT(named_type->kind == Type_Named);