Loading lib/jsduck/js/property.rb +10 −3 Original line number Diff line number Diff line Loading @@ -41,9 +41,16 @@ module JsDuck # Object.defineProperty(obj, "prop", {value: x}) elsif exp && exp.define_property? name = exp["arguments"][1].to_value if exp.object_descriptor("get") || exp.object_descriptor("set") # Objects with getters/setters don't have a value and also # aren't readonly. make(name) else writable = exp.object_descriptor("writable") readonly = writable ? !writable.to_value : true make(name, exp.object_descriptor("value"), readonly) end else nil Loading spec/aggregator_readonly_spec.rb +30 −0 Original line number Diff line number Diff line Loading @@ -66,4 +66,34 @@ describe JsDuck::Aggregator do end end describe "Object.defineProperty with getter" do let(:doc) do parse_member(<<-EOS) /** */ Object.defineProperty(this, 'myCfg', { get: function() { return 1; } }); EOS end it "gets no readonly attribute" do doc[:readonly].should_not == true end end describe "Object.defineProperty with setter" do let(:doc) do parse_member(<<-EOS) /** */ Object.defineProperty(this, 'myCfg', { set: function(x) { this.x = x; } }); EOS end it "gets no readonly attribute" do doc[:readonly].should_not == true end end end Loading
lib/jsduck/js/property.rb +10 −3 Original line number Diff line number Diff line Loading @@ -41,9 +41,16 @@ module JsDuck # Object.defineProperty(obj, "prop", {value: x}) elsif exp && exp.define_property? name = exp["arguments"][1].to_value if exp.object_descriptor("get") || exp.object_descriptor("set") # Objects with getters/setters don't have a value and also # aren't readonly. make(name) else writable = exp.object_descriptor("writable") readonly = writable ? !writable.to_value : true make(name, exp.object_descriptor("value"), readonly) end else nil Loading
spec/aggregator_readonly_spec.rb +30 −0 Original line number Diff line number Diff line Loading @@ -66,4 +66,34 @@ describe JsDuck::Aggregator do end end describe "Object.defineProperty with getter" do let(:doc) do parse_member(<<-EOS) /** */ Object.defineProperty(this, 'myCfg', { get: function() { return 1; } }); EOS end it "gets no readonly attribute" do doc[:readonly].should_not == true end end describe "Object.defineProperty with setter" do let(:doc) do parse_member(<<-EOS) /** */ Object.defineProperty(this, 'myCfg', { set: function(x) { this.x = x; } }); EOS end it "gets no readonly attribute" do doc[:readonly].should_not == true end end end