lib/rbs/variance_calculator.rb in rbs-0.4.0 vs lib/rbs/variance_calculator.rb in rbs-0.5.0
- old
+ new
@@ -105,12 +105,22 @@
when :invariant
result.invariant(type.name)
end
end
when Types::ClassInstance, Types::Interface
- decl = env.find_class(type.name)
+ NoTypeFoundError.check!(type.name,
+ env: env,
+ location: type.location)
+
+ type_params = case type
+ when Types::ClassInstance
+ env.class_decls[type.name]&.type_params
+ when Types::Interface
+ env.interface_decls[type.name]&.decl&.type_params
+ end
+
type.args.each.with_index do |ty, i|
- var = decl.type_params.params[i]
+ var = type_params.params[i]
case var.variance
when :invariant
type(ty, result: result, context: :invariant)
when :covariant
type(ty, result: result, context: context)