lib/rbs/definition_builder/ancestor_builder.rb in rbs-1.2.1 vs lib/rbs/definition_builder/ancestor_builder.rb in rbs-1.3.0

- old
+ new

@@ -235,10 +235,11 @@ end end end mixin_ancestors(entry, + type_name, included_modules: ancestors.included_modules, included_interfaces: ancestors.included_interfaces, prepended_modules: ancestors.prepended_modules, extended_modules: nil, extended_interfaces: nil) @@ -282,10 +283,11 @@ super_class: Definition::Ancestor::Instance.new(name: BuiltinNames::Module.name, args: [], source: :super) ) end mixin_ancestors(entry, + type_name, included_modules: nil, included_interfaces: nil, prepended_modules: nil, extended_modules: ancestors.extended_modules, extended_interfaces: ancestors.extended_interfaces) @@ -299,39 +301,42 @@ entry = env.interface_decls[type_name] or raise "Unknown name for one_interface_ancestors: #{type_name}" params = entry.decl.type_params.each.map(&:name) OneAncestors.interface(type_name: type_name, params: params).tap do |ancestors| mixin_ancestors0(entry.decl, + type_name, align_params: nil, included_modules: nil, included_interfaces: ancestors.included_interfaces, prepended_modules: nil, extended_modules: nil, extended_interfaces: nil) end end end - def mixin_ancestors0(decl, align_params:, included_modules:, included_interfaces:, extended_modules:, prepended_modules:, extended_interfaces:) + def mixin_ancestors0(decl, type_name, align_params:, included_modules:, included_interfaces:, extended_modules:, prepended_modules:, extended_interfaces:) decl.each_mixin do |member| case member when AST::Members::Include module_name = member.name module_args = member.args.map {|type| align_params ? type.sub(align_params) : type } ancestor = Definition::Ancestor::Instance.new(name: module_name, args: module_args, source: member) case when member.name.class? && included_modules + MixinClassError.check!(type_name: type_name, env: env, member: member) NoMixinFoundError.check!(member.name, env: env, member: member) included_modules << ancestor when member.name.interface? && included_interfaces NoMixinFoundError.check!(member.name, env: env, member: member) included_interfaces << ancestor end when AST::Members::Prepend if prepended_modules + MixinClassError.check!(type_name: type_name, env: env, member: member) NoMixinFoundError.check!(member.name, env: env, member: member) module_name = member.name module_args = member.args.map {|type| align_params ? type.sub(align_params) : type } @@ -343,29 +348,31 @@ module_args = member.args ancestor = Definition::Ancestor::Instance.new(name: module_name, args: module_args, source: member) case when member.name.class? && extended_modules + MixinClassError.check!(type_name: type_name, env: env, member: member) NoMixinFoundError.check!(member.name, env: env, member: member) extended_modules << ancestor when member.name.interface? && extended_interfaces NoMixinFoundError.check!(member.name, env: env, member: member) extended_interfaces << ancestor end end end end - def mixin_ancestors(entry, included_modules:, included_interfaces:, extended_modules:, prepended_modules:, extended_interfaces:) + def mixin_ancestors(entry, type_name, included_modules:, included_interfaces:, extended_modules:, prepended_modules:, extended_interfaces:) entry.decls.each do |d| decl = d.decl align_params = Substitution.build( decl.type_params.each.map(&:name), Types::Variable.build(entry.type_params.each.map(&:name)) ) mixin_ancestors0(decl, + type_name, align_params: align_params, included_modules: included_modules, included_interfaces: included_interfaces, extended_modules: extended_modules, prepended_modules: prepended_modules,