lib/rbs/definition_builder.rb in rbs-3.6.0.pre.2 vs lib/rbs/definition_builder.rb in rbs-3.6.0.pre.3
- old
+ new
@@ -77,11 +77,11 @@
entry.type_params
else
raise
end
- Substitution.build(params.map(&:name), args)
+ AST::TypeParam.application(params, args) || Substitution.new()
end
def define_instance(definition, type_name, subst)
one_ancestors = ancestor_builder.one_instance_ancestors(type_name)
methods = method_builder.build_instance(type_name)
@@ -547,19 +547,20 @@
interface_method_duplicates = Set[] #: Set[Symbol]
interfaces_methods.each do |interface, (methods, member)|
unless interface.args.empty?
methods.type.is_a?(Types::Interface) or raise
- params = methods.type.args.map do |arg|
- arg.is_a?(Types::Variable) or raise
- arg.name
- end
interface.args.each do |arg|
validate_type_presence(arg)
end
- subst_ = subst + Substitution.build(params, interface.args)
+ type_params = env.interface_decls.fetch(interface.name).decl.type_params
+ if s = AST::TypeParam.application(type_params, interface.args)
+ subst_ = subst + s
+ else
+ subst_ = subst
+ end
else
subst_ = subst
end
methods.each do |method|