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:
nboyd%atg.com
2009-10-09 17:27:18 +00:00
parent 0b553ed12a
commit fb13cf8973
5 changed files with 35 additions and 13 deletions

View File

@@ -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()));
}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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);
}
}