Fix bug Bug 519692 - Failed to decompile expressions like "new Date()"
Patch from Marc Guillemot. git-svn-id: svn://10.0.0.236/trunk@258649 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -692,8 +692,7 @@ public final class IRFactory extends Parser
|
||||
Node nx = createCallOrNew(Token.NEW, transform(node.getTarget()));
|
||||
nx.setLineno(node.getLineno());
|
||||
List<AstNode> args = node.getArguments();
|
||||
if (!args.isEmpty())
|
||||
decompiler.addToken(Token.LP);
|
||||
decompiler.addToken(Token.LP);
|
||||
for (int i = 0; i < args.size(); i++) {
|
||||
AstNode arg = args.get(i);
|
||||
nx.addChildToBack(transform(arg));
|
||||
@@ -701,8 +700,7 @@ public final class IRFactory extends Parser
|
||||
decompiler.addToken(Token.COMMA);
|
||||
}
|
||||
}
|
||||
if (!args.isEmpty())
|
||||
decompiler.addToken(Token.RP);
|
||||
decompiler.addToken(Token.RP);
|
||||
if (node.getInitializer() != null) {
|
||||
nx.addChildToBack(transformObjectLiteral(node.getInitializer()));
|
||||
}
|
||||
|
||||
@@ -1353,10 +1353,8 @@ js1_5/decompilation/regress-349663.js
|
||||
js1_5/decompilation/regress-350670.js
|
||||
js1_5/decompilation/regress-351625.js
|
||||
js1_5/decompilation/regress-351626.js
|
||||
js1_5/decompilation/regress-351705.js
|
||||
js1_5/decompilation/regress-352022.js
|
||||
js1_5/decompilation/regress-352073.js
|
||||
js1_5/decompilation/regress-352312.js
|
||||
js1_5/decompilation/regress-352360.js
|
||||
js1_5/decompilation/regress-352873-01.js
|
||||
js1_5/decompilation/regress-352873-02.js
|
||||
@@ -1366,7 +1364,6 @@ js1_5/decompilation/regress-354910.js
|
||||
js1_5/decompilation/regress-371692.js
|
||||
js1_5/decompilation/regress-373678.js
|
||||
js1_5/decompilation/regress-375639.js
|
||||
js1_5/decompilation/regress-376564.js
|
||||
js1_5/decompilation/regress-383721.js
|
||||
js1_5/decompilation/regress-406555.js
|
||||
js1_5/extensions/catchguard-001.js
|
||||
|
||||
@@ -1349,10 +1349,8 @@ js1_5/decompilation/regress-349663.js
|
||||
js1_5/decompilation/regress-350670.js
|
||||
js1_5/decompilation/regress-351625.js
|
||||
js1_5/decompilation/regress-351626.js
|
||||
js1_5/decompilation/regress-351705.js
|
||||
js1_5/decompilation/regress-352022.js
|
||||
js1_5/decompilation/regress-352073.js
|
||||
js1_5/decompilation/regress-352312.js
|
||||
js1_5/decompilation/regress-352360.js
|
||||
js1_5/decompilation/regress-352873-01.js
|
||||
js1_5/decompilation/regress-352873-02.js
|
||||
@@ -1362,7 +1360,6 @@ js1_5/decompilation/regress-354910.js
|
||||
js1_5/decompilation/regress-371692.js
|
||||
js1_5/decompilation/regress-373678.js
|
||||
js1_5/decompilation/regress-375639.js
|
||||
js1_5/decompilation/regress-376564.js
|
||||
js1_5/decompilation/regress-383721.js
|
||||
js1_5/decompilation/regress-406555.js
|
||||
js1_5/extensions/catchguard-001.js
|
||||
|
||||
@@ -1349,10 +1349,8 @@ js1_5/decompilation/regress-349663.js
|
||||
js1_5/decompilation/regress-350670.js
|
||||
js1_5/decompilation/regress-351625.js
|
||||
js1_5/decompilation/regress-351626.js
|
||||
js1_5/decompilation/regress-351705.js
|
||||
js1_5/decompilation/regress-352022.js
|
||||
js1_5/decompilation/regress-352073.js
|
||||
js1_5/decompilation/regress-352312.js
|
||||
js1_5/decompilation/regress-352360.js
|
||||
js1_5/decompilation/regress-352873-01.js
|
||||
js1_5/decompilation/regress-352873-02.js
|
||||
@@ -1362,7 +1360,6 @@ js1_5/decompilation/regress-354910.js
|
||||
js1_5/decompilation/regress-371692.js
|
||||
js1_5/decompilation/regress-373678.js
|
||||
js1_5/decompilation/regress-375639.js
|
||||
js1_5/decompilation/regress-376564.js
|
||||
js1_5/decompilation/regress-383721.js
|
||||
js1_5/decompilation/regress-406555.js
|
||||
js1_5/extensions/catchguard-001.js
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
package org.mozilla.javascript.tests;
|
||||
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.mozilla.javascript.Context;
|
||||
import org.mozilla.javascript.ContextAction;
|
||||
import org.mozilla.javascript.Script;
|
||||
|
||||
/**
|
||||
* Test for {@link Context#decompileScript(Script, int)}.
|
||||
* @author Marc Guillemot
|
||||
*/
|
||||
public class DecompileTest {
|
||||
|
||||
/**
|
||||
* As of head of trunk on 30.09.09, decompile of "new Date()" returns "new Date" without parentheses.
|
||||
* @see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=519692">Bug 519692</a>
|
||||
*/
|
||||
@Test
|
||||
public void newObject0Arg()
|
||||
{
|
||||
final String source = "var x = new Date().getTime();";
|
||||
final ContextAction action = new ContextAction() {
|
||||
public Object run(final Context cx) {
|
||||
final Script script = cx.compileString(source, "my script", 0, null);
|
||||
Assert.assertEquals(source, cx.decompileScript(script, 4).trim());
|
||||
return null;
|
||||
}
|
||||
};
|
||||
Utils.runWithAllOptimizationLevels(action);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user