Skip to content

Commit e389107

Browse files
authored
Merge pull request #2289 from ksss/validate-super-self_type
Validate superclass and module-self-type
2 parents c12b8d7 + ffa7916 commit e389107

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

lib/rbs/definition_builder/ancestor_builder.rb

+2
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,7 @@ def one_instance_ancestors(type_name)
217217
NoSuperclassFoundError.check!(super_name, env: env, location: primary.decl.location)
218218
if super_class
219219
InheritModuleError.check!(super_class, env: env)
220+
InvalidTypeApplicationError.check2!(type_name: super_class.name, args: super_class.args, env: env, location: super_class.location)
220221
end
221222

222223
super_entry = env.normalized_class_entry(super_name) or raise
@@ -243,6 +244,7 @@ def one_instance_ancestors(type_name)
243244
else
244245
entry.self_types.each do |module_self|
245246
NoSelfTypeFoundError.check!(module_self, env: env)
247+
InvalidTypeApplicationError.check2!(type_name: module_self.name, args: module_self.args, env: env, location: module_self.location)
246248

247249
module_name = module_self.name
248250
if module_name.class?

test/rbs/ancestor_builder_test.rb

+19
Original file line numberDiff line numberDiff line change
@@ -665,7 +665,18 @@ class B < Y[Integer, void]
665665
class C
666666
extend X
667667
end
668+
669+
class D
670+
end
671+
672+
class E < D[Integer]
673+
end
674+
675+
module F : D[Integer]
676+
end
668677
EOF
678+
679+
669680
manager.build do |env|
670681
builder = DefinitionBuilder::AncestorBuilder.new(env: env)
671682

@@ -680,6 +691,14 @@ class C
680691
assert_raises InvalidTypeApplicationError do
681692
builder.singleton_ancestors(type_name("::C"))
682693
end
694+
695+
assert_raises InvalidTypeApplicationError do
696+
builder.instance_ancestors(type_name("::E"))
697+
end
698+
699+
assert_raises InvalidTypeApplicationError do
700+
builder.instance_ancestors(type_name("::F"))
701+
end
683702
end
684703
end
685704
end

0 commit comments

Comments
 (0)