Commit fd798378 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Fix hiding of parent members by @private in subclass.

Previously ClassFormatter removed all information about private
members, resulting in info about private members getting lost and
so @private in subclass not hiding public member in parent class.

Fixed by leaving all private members intact.

Additionally minor enhancement for test, so it actually tests if
private member in subclass hides public member of parent.  This
part of the code worked fine before too, just the test was not
really testing for it.
parent 6fc86c02
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -23,11 +23,13 @@ module JsDuck
      @formatter.class_context = cls[:name]
      @formatter.doc_context = cls[:files][0]
      cls[:doc] = @formatter.format(cls[:doc]) if cls[:doc]
      cls[:members].each_pair do |type, members|
        cls[:members][type] = members.reject {|m| m[:private] }.map {|m| format_member(m) }
      [:members, :statics].each do |group|
        cls[group].each_pair do |type, members|
          # format all public members, but keep the private members
          # too - some of them might override public members and we
          # don't want to lose this information.
          cls[group][type] = members.map {|m| m[:private] ? m : format_member(m)  }
        end
      cls[:statics].each_pair do |type, members|
        cls[:statics][type] = members.reject {|m| m[:private] }.map {|m| format_member(m) }
      end
      cls
    end
+1 −1
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@ describe JsDuck::Class do
              {:name => "foo", :owner => "ParentClass"},
              {:name => "constructor", :owner => "ParentClass"},
              {:name => "frank", :owner => "ParentClass", :private => true},
              {:name => "zappa", :owner => "ParentClass", :private => true},
              {:name => "zappa", :owner => "ParentClass", :private => false},
            ]
          },
          :statics => {