Commit 1538ab28 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Inherit parent type of auto-detected configs/properties.

parent d87e92c9
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ module JsDuck

        if m[:autodetected]
          m[:meta] = parent[:meta].merge(m[:meta])
          m[:type] = parent[:type] if parent[:type]
        end

        # remember properties that have changed to configs
+31 −1
Original line number Diff line number Diff line
@@ -725,6 +725,37 @@ describe JsDuck::Aggregator do
    end
  end

  describe "autoinherit of property with type explicitly defined in parent class" do
    before do
      @docs = parse(<<-EOF)
        /** */
        Ext.define("Parent", {
            /**
             * @property {String/Number}
             */
            foo: 5,
            bar: 42
        });
        /** */
        Ext.define("Child", {
            extend: "Parent",
            foo: 10,
            bar: true
        });
      EOF
      @cls = @docs["Child"]
      @members = @cls[:members]
    end

    it "keeps the type from public parent" do
      @members[0][:type].should == "String/Number"
    end

    it "overrides the type from private parent" do
      @members[1][:type].should == "Boolean"
    end
  end

  describe "instance members autoinherit with parent containing statics" do
    before do
      @docs = parse(<<-EOF)
@@ -789,4 +820,3 @@ describe JsDuck::Aggregator do
    end
  end
end