Commit 1f3192f0 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Inherit meta tags in autodetected members.

parent ddfd09da
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -35,6 +35,10 @@ module JsDuck
        m[:params] = parent[:params] if parent[:params]
        m[:return] = parent[:return] if parent[:return]

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

        # remember properties that have changed to configs
        if m[:tagname] != parent[:tagname]
          new_cfgs << m
+68 −0
Original line number Diff line number Diff line
@@ -629,5 +629,73 @@ describe JsDuck::Aggregator do
    end
  end

  describe "autoinherit with several meta tags" do
    before do
      @docs = parse(<<-EOF)
        /** */
        Ext.define("Parent", {
            /**
             * My property.
             * @protected
             * @deprecated 4.0 Use something else.
             */
            foo: 5
        });
        /** */
        Ext.define("Child", {
            extend: "Parent",
            foo: 10
        });
      EOF
      @cls = @docs["Child"]
      @cfg = @cls[:members][:property][0]
    end

    it "inherits @protected" do
      @cfg[:meta][:protected].should == true
    end

    it "inherits @deprecated" do
      @cfg[:meta][:deprecated][:version].should == "4.0"
      @cfg[:meta][:deprecated][:text].should == "Use something else."
    end
  end

  describe "autoinherit with his own and parent meta tags" do
    before do
      @docs = parse(<<-EOF)
        /** */
        Ext.define("Parent", {
            /**
             * My property.
             * @protected
             * @deprecated 3.0
             */
            foo: 5
        });
        /** */
        Ext.define("Child", {
            extend: "Parent",
            // @readonly
            // @deprecated 4.0
            foo: 10
        });
      EOF
      @cls = @docs["Child"]
      @cfg = @cls[:members][:property][0]
    end

    it "inherits @protected" do
      @cfg[:meta][:protected].should == true
    end

    it "keeps @readonly" do
      @cfg[:meta][:readonly].should == true
    end

    it "overrides @deprecated of parent with its own @deprecated" do
      @cfg[:meta][:deprecated][:version].should == "4.0"
    end
  end
end