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

Explorer: prevent creating invalid class with missing parent (#2536)

Add a check to prevent creating a class from a struct with a missing parent.
This is already type-checked for carbon / user code, but not when using `Convert` manually.
Adrien Leravat 3 лет назад
Родитель
Сommit
35989c5283
1 измененных файлов с 2 добавлено и 0 удалено
  1. 2 0
      explorer/interpreter/interpreter.cpp

+ 2 - 0
explorer/interpreter/interpreter.cpp

@@ -716,6 +716,8 @@ auto Interpreter::ConvertStructToClass(
       struct_values.push_back(field);
     }
   }
+  CARBON_CHECK(!cast<NominalClassType>(inst_class)->base() || base_instance)
+      << "Invalid conversion for `" << *inst_class << "`: base class missing";
   auto* converted_init_struct =
       arena_->New<StructValue>(std::move(struct_values));
   Nonnull<const NominalClassValue** const> class_value_ptr =