summaryrefslogtreecommitdiff
path: root/deps/v8/src/torque/type-visitor.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/torque/type-visitor.cc')
-rw-r--r--deps/v8/src/torque/type-visitor.cc11
1 files changed, 9 insertions, 2 deletions
diff --git a/deps/v8/src/torque/type-visitor.cc b/deps/v8/src/torque/type-visitor.cc
index 9b5c96ee40..b45452058d 100644
--- a/deps/v8/src/torque/type-visitor.cc
+++ b/deps/v8/src/torque/type-visitor.cc
@@ -165,6 +165,12 @@ const ClassType* TypeVisitor::ComputeType(ClassDeclaration* decl) {
"class \"", decl->name->value,
"\" must extend either Tagged or an already declared class");
}
+ if (super_class->HasUndefinedLayout() &&
+ !(decl->flags & ClassFlag::kUndefinedLayout)) {
+ Error("Class \"", decl->name->value,
+ "\" defines its layout but extends a class which does not")
+ .Position(decl->pos);
+ }
}
std::string generates = decl->name->value;
@@ -282,8 +288,9 @@ void TypeVisitor::VisitClassFieldsAndMethods(
"only one indexable field is currently supported per class");
}
seen_indexed_field = true;
- const Field* index_field =
- &(class_type->LookupFieldInternal(*field_expression.index));
+ const NameAndType& index_field =
+ class_type->LookupFieldInternal(*field_expression.index)
+ .name_and_type;
class_type->RegisterField(
{field_expression.name_and_type.name->pos,
class_type,