diff --git a/lib/nodes.js b/lib/nodes.js index aec56489..f6e8467c 100644 --- a/lib/nodes.js +++ b/lib/nodes.js @@ -502,8 +502,8 @@ this.base.front = this.front; props = this.properties; code = this.base.compile(o, props.length ? LEVEL_ACCESS : null); - if (props[0] instanceof Access && this.isSimpleNumber()) { - code = "(" + code + ")"; + if ((this.base instanceof Parens || props.length) && SIMPLENUM.test(code)) { + code = "" + code + "."; } for (_i = 0, _len = props.length; _i < _len; _i++) { prop = props[_i]; diff --git a/src/nodes.coffee b/src/nodes.coffee index 520f69d2..2d860085 100644 --- a/src/nodes.coffee +++ b/src/nodes.coffee @@ -402,7 +402,7 @@ exports.Value = class Value extends Base @base.front = @front props = @properties code = @base.compile o, if props.length then LEVEL_ACCESS else null - code = "(#{code})" if props[0] instanceof Access and @isSimpleNumber() + code = "#{code}." if (@base instanceof Parens or props.length) and SIMPLENUM.test code code += prop.compile o for prop in props code diff --git a/test/numbers.coffee b/test/numbers.coffee index ff0abce4..5598313f 100644 --- a/test/numbers.coffee +++ b/test/numbers.coffee @@ -32,11 +32,15 @@ value = 0.0 + -.25 - -.75 + 0.0 ok value is 0.5 #764: Numbers should be indexable +eq Number::toString, 4['toString'] eq Number::toString, 4.2['toString'] eq Number::toString, .42['toString'] +eq Number::toString, (4)['toString'] +eq Number::toString, 4.toString eq Number::toString, 4.2.toString eq Number::toString, .42.toString +eq Number::toString, (4).toString test '#1168: leading floating point suppresses newline', -> eq 1, do ->