lib/rbs/subtractor.rb in rbs-3.1.3 vs lib/rbs/subtractor.rb in rbs-3.2.0.pre.1

- old
+ new

@@ -49,10 +49,11 @@ owner = absolute_typename(decl.name, context: context) context = _ = [context, decl.name] children = call(decl.each_decl.to_a, context: context) + decl.each_member.reject { |m| member_exist?(owner, m, context: context) } + children = filter_redundunt_access_modifiers(children) return nil if children.empty? update_decl(decl, members: children) end @@ -140,9 +141,25 @@ when mixin.class # @type var m: AST::Members::Include | AST::Members::Extend | AST::Members::Prepend candidates.include?(m.name) end end + end + + private def filter_redundunt_access_modifiers(decls) + decls = decls.dup + decls.pop while access_modifier?(decls.last) + decls = decls.map.with_index do |decl, i| + if access_modifier?(decl) && access_modifier?(decls[i + 1]) + nil + else + decl + end + end.compact + end + + private def access_modifier?(decl) + decl.is_a?(AST::Members::Public) || decl.is_a?(AST::Members::Private) end private def update_decl(decl, members:) case decl when AST::Declarations::Class