Loading lib/jsduck/merger.rb +6 −4 Original line number Diff line number Diff line Loading @@ -290,14 +290,16 @@ module JsDuck def detect_extends(doc_map, code) if doc_map[:extends] cls = doc_map[:extends].first[:extends] # Ignore extending of the Object class cls == "Object" ? nil : cls elsif code[:type] == :assignment && code[:right] && code[:right][:type] == :ext_extend code[:right][:extend].join(".") cls = code[:right][:extend].join(".") elsif code[:type] == :ext_define # Classes defined with Ext.define will automatically inherit from Ext.Base code[:extend] || "Ext.Base" cls = code[:extend] || "Ext.Base" else cls = nil end # Ignore extending of the Object class cls == "Object" ? nil : cls end def detect_default(tagname, doc_map, code) Loading spec/aggregator_classes_spec.rb +48 −0 Original line number Diff line number Diff line Loading @@ -548,4 +548,52 @@ describe JsDuck::Aggregator do @classes.length.should == 1 end end shared_examples_for "extending Object" do it "has extends == nil" do @doc[:extends].should == nil end end describe "Class explicitly extending Object" do before do @doc = parse(<<-EOS)[0] /** * @class Foo * @extends Object */ EOS end it_should_behave_like "extending Object" end describe "Ext.define extending Object" do before do @doc = parse(<<-EOS)[0] /** */ Ext.define("Foo", {extend: "Object"}); EOS end it_should_behave_like "extending Object" end describe "Ext.extend extending Object" do before do @doc = parse(<<-EOS)[0] /** */ Foo = Ext.extend(Object, { }); EOS end it_should_behave_like "extending Object" end describe "Explicit class without @extends" do before do @doc = parse(<<-EOS)[0] /** @class Foo */ EOS end it_should_behave_like "extending Object" end end Loading
lib/jsduck/merger.rb +6 −4 Original line number Diff line number Diff line Loading @@ -290,14 +290,16 @@ module JsDuck def detect_extends(doc_map, code) if doc_map[:extends] cls = doc_map[:extends].first[:extends] # Ignore extending of the Object class cls == "Object" ? nil : cls elsif code[:type] == :assignment && code[:right] && code[:right][:type] == :ext_extend code[:right][:extend].join(".") cls = code[:right][:extend].join(".") elsif code[:type] == :ext_define # Classes defined with Ext.define will automatically inherit from Ext.Base code[:extend] || "Ext.Base" cls = code[:extend] || "Ext.Base" else cls = nil end # Ignore extending of the Object class cls == "Object" ? nil : cls end def detect_default(tagname, doc_map, code) Loading
spec/aggregator_classes_spec.rb +48 −0 Original line number Diff line number Diff line Loading @@ -548,4 +548,52 @@ describe JsDuck::Aggregator do @classes.length.should == 1 end end shared_examples_for "extending Object" do it "has extends == nil" do @doc[:extends].should == nil end end describe "Class explicitly extending Object" do before do @doc = parse(<<-EOS)[0] /** * @class Foo * @extends Object */ EOS end it_should_behave_like "extending Object" end describe "Ext.define extending Object" do before do @doc = parse(<<-EOS)[0] /** */ Ext.define("Foo", {extend: "Object"}); EOS end it_should_behave_like "extending Object" end describe "Ext.extend extending Object" do before do @doc = parse(<<-EOS)[0] /** */ Foo = Ext.extend(Object, { }); EOS end it_should_behave_like "extending Object" end describe "Explicit class without @extends" do before do @doc = parse(<<-EOS)[0] /** @class Foo */ EOS end it_should_behave_like "extending Object" end end