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

Improve auto-inheritance logic.

Remove the special-case rule of @deprecated tag.
parent 20587065
Loading
Loading
Loading
Loading
+14 −4
Original line number Diff line number Diff line
@@ -35,10 +35,10 @@ module JsDuck
        end

        if m[:inheritdoc] && parent
          if autodetected?(m) && !parent[:private]
            auto_inherit(m, parent)
          else
            inherit(m, parent)

          if autodetected?(m)
            m[:deprecated] = parent[:deprecated] if parent[:deprecated] && !m[:deprecated]
          end

          # remember properties that have changed to configs
@@ -73,6 +73,16 @@ module JsDuck
        end
      end

      def auto_inherit(m, parent)
        m[:doc] = parent[:doc] if m[:doc].empty?

        parent.each_pair do |key, value|
          if key == :type || !m[key]
            m[key] = value
          end
        end
      end

      # True when specific field of member has been auto-detected
      def auto?(m, key)
        m[:autodetected] && m[:autodetected][key]
+9 −0
Original line number Diff line number Diff line
@@ -106,6 +106,7 @@ describe JsDuck::Aggregator do
             * My property.
             * @protected
             * @deprecated 4.0 Use something else.
             * @readonly
             */
            foo: 5
        });
@@ -127,6 +128,10 @@ describe JsDuck::Aggregator do
      @property[:deprecated][:version].should == "4.0"
      @property[:deprecated][:text].should == "Use something else."
    end

    it "inherits @readonly" do
      @property[:readonly].should == true
    end
  end

  describe "autoinherit with his own and parent tags" do
@@ -161,6 +166,10 @@ describe JsDuck::Aggregator do
      @property[:readonly].should == true
    end

    it "keeps default value" do
      @property[:default].should == "10"
    end

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