Closed Bug 381197 Opened 17 years ago Closed 12 years ago

Incorrect decompilation for "a.@this::b"

Categories

(Core :: JavaScript Engine, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: jruderman, Unassigned)

References

Details

(Keywords: testcase)

js> f = function() { j = (a.@this::b); }
function () {
    j = a.@[this::b];
}
js> eval("" + f)
typein:3: SyntaxError: missing ] after attribute expression:
typein:3:     j = a.@[this::b];
typein:3: ................^
This is one of the bugs jsfunfuzz hits most frequently.
Blocks: e4x
Not just "this".  "true", "false", and "null" trigger similar problems:

js> (function() { 2 .@ null :: a })
function () {
    (2).@[null::a];
}

(In reply to comment #1)
> This is one of the bugs jsfunfuzz hits most frequently.

Never mind, this is easy to ignore with a regexp.
(In reply to comment #2)
> Not just "this".  "true", "false", and "null" trigger similar problems:

actually when there is any namespace for attributes

a = function(){
  y=x.@ns::attr;
  y=x.(@ns::attr);
  y=x.(@ns::attr==5);
  y=x.ns::y.(@attr==5);
}

gives ==>

function () {
    y = x.@[ns::attr];
    y = x.(@[ns::attr]);
    y = x.((@[ns::attr] == 5));
    y = x.ns::y.((@attr == 5));
}

PS: Also please notice that extra parenthesis on last two cases
(In reply to comment #4)
> PS: Also please notice that extra parenthesis on last two cases

Bug 452729 

another testcase

a=function(){
 y = x.@ns::["attr-s"];
}

gives ==>

function () {
    y = x.@[ns::["attr-s"]];
}

which is need to solve
http://groups.google.com/group/mozilla.dev.tech.js-engine/browse_thread/thread/1271260fc2e3f7b8
OS: Mac OS X → All
Hardware: x86 → All
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.