blob: 2a299bf98036df2e7e131be577f576d262ca9cd8 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2013 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.wst.jsdt.core.tests.compiler.parser;
import java.util.Locale;
import org.eclipse.wst.jsdt.internal.compiler.CompilationResult;
import org.eclipse.wst.jsdt.internal.compiler.DefaultErrorHandlingPolicies;
import org.eclipse.wst.jsdt.internal.compiler.ast.CompilationUnitDeclaration;
import org.eclipse.wst.jsdt.internal.compiler.batch.CompilationUnit;
import org.eclipse.wst.jsdt.internal.compiler.classfmt.ClassFileConstants;
import org.eclipse.wst.jsdt.internal.compiler.env.ICompilationUnit;
import org.eclipse.wst.jsdt.internal.compiler.impl.CompilerOptions;
import org.eclipse.wst.jsdt.internal.compiler.parser.Parser;
import org.eclipse.wst.jsdt.internal.compiler.problem.DefaultProblemFactory;
import org.eclipse.wst.jsdt.internal.compiler.problem.ProblemReporter;
import org.eclipse.wst.jsdt.core.tests.util.AbstractCompilerTest;
import org.eclipse.wst.jsdt.core.tests.util.Util;
public class StatementRecoveryTest extends AbstractCompilerTest {
public static final boolean ONLY_DIET_PLUS_BODY_WITH_STATEMENT_RECOVERY = true;
public static boolean optimizeStringLiterals = false;
public StatementRecoveryTest(String testName){
super(testName);
}
public void checkParse(
char[] source,
String expectedDietUnitToString,
String expectedDietWithStatementRecoveryUnitToString,
String expectedDietPlusBodyUnitToString,
String expectedDietPlusBodyWithStatementRecoveryUnitToString,
String expectedFullUnitToString,
String expectedFullWithStatementRecoveryUnitToString,
String testName) {
/* using regular parser in DIET mode */
if(!ONLY_DIET_PLUS_BODY_WITH_STATEMENT_RECOVERY){
Parser parser =
new Parser(
new ProblemReporter(
DefaultErrorHandlingPolicies.proceedWithAllProblems(),
new CompilerOptions(getCompilerOptions()),
new DefaultProblemFactory(Locale.getDefault())),
optimizeStringLiterals);
parser.setMethodsFullRecovery(false);
parser.setStatementsRecovery(false);
ICompilationUnit sourceUnit = new CompilationUnit(source, testName, null);
CompilationResult compilationResult = new CompilationResult(sourceUnit, 0, 0, 0);
CompilationUnitDeclaration computedUnit = parser.dietParse(sourceUnit, compilationResult);
String computedUnitToString = computedUnit.toString();
if (!expectedDietUnitToString.equals(computedUnitToString)){
System.out.println(Util.displayString(computedUnitToString));
}
assertEquals(
"Invalid unit diet structure" + testName,
expectedDietUnitToString,
computedUnitToString);
}
/* using regular parser in DIET mode and statementRecoveryEnabled */
if(!ONLY_DIET_PLUS_BODY_WITH_STATEMENT_RECOVERY){
Parser parser =
new Parser(
new ProblemReporter(
DefaultErrorHandlingPolicies.proceedWithAllProblems(),
new CompilerOptions(getCompilerOptions()),
new DefaultProblemFactory(Locale.getDefault())),
optimizeStringLiterals);
ICompilationUnit sourceUnit = new CompilationUnit(source, testName, null);
CompilationResult compilationResult = new CompilationResult(sourceUnit, 0, 0, 0);
CompilationUnitDeclaration computedUnit = parser.dietParse(sourceUnit, compilationResult);
String computedUnitToString = computedUnit.toString();
if (!expectedDietWithStatementRecoveryUnitToString.equals(computedUnitToString)){
System.out.println(Util.displayString(computedUnitToString));
}
assertEquals(
"Invalid unit diet structure with statement recovery enabled" + testName,
expectedDietWithStatementRecoveryUnitToString,
computedUnitToString);
}
/* using regular parser in DIET mode + getMethodBodies */
if(!ONLY_DIET_PLUS_BODY_WITH_STATEMENT_RECOVERY){
Parser parser =
new Parser(
new ProblemReporter(
DefaultErrorHandlingPolicies.proceedWithAllProblems(),
new CompilerOptions(getCompilerOptions()),
new DefaultProblemFactory(Locale.getDefault())),
optimizeStringLiterals);
parser.setMethodsFullRecovery(false);
parser.setStatementsRecovery(false);
ICompilationUnit sourceUnit = new CompilationUnit(source, testName, null);
CompilationResult compilationResult = new CompilationResult(sourceUnit, 0, 0, 0);
CompilationUnitDeclaration computedUnit = parser.dietParse(sourceUnit, compilationResult);
String computedUnitToString = computedUnit.toString();
if (!expectedDietUnitToString.equals(computedUnitToString)){
System.out.println(Util.displayString(computedUnitToString));
}
assertEquals(
"Invalid unit diet structure" + testName,
expectedDietUnitToString,
computedUnitToString);
if (computedUnit.types != null) {
for (int i = computedUnit.types.length; --i >= 0;){
computedUnit.types[i].parseMethod(parser, computedUnit);
}
}
computedUnitToString = computedUnit.toString();
if (!expectedDietPlusBodyUnitToString.equals(computedUnitToString)){
System.out.println(Util.displayString(computedUnitToString));
}
assertEquals(
"Invalid unit diet+body structure" + testName,
expectedDietPlusBodyUnitToString,
computedUnitToString);
}
/* using regular parser in DIET mode + getMethodBodies and statementRecoveryEnabled */
{
Parser parser =
new Parser(
new ProblemReporter(
DefaultErrorHandlingPolicies.proceedWithAllProblems(),
new CompilerOptions(getCompilerOptions()),
new DefaultProblemFactory(Locale.getDefault())),
optimizeStringLiterals);
ICompilationUnit sourceUnit = new CompilationUnit(source, testName, null);
CompilationResult compilationResult = new CompilationResult(sourceUnit, 0, 0, 0);
CompilationUnitDeclaration computedUnit = parser.dietParse(sourceUnit, compilationResult);
String computedUnitToString = computedUnit.toString();
// if (!expectedDietWithStatementRecoveryUnitToString.equals(computedUnitToString)){
// System.out.println(Util.displayString(computedUnitToString));
// }
// assertEquals(
// "Invalid unit diet structure" + testName,
// expectedDietWithStatementRecoveryUnitToString,
// computedUnitToString);
// computedUnitToString = computedUnit.toString();
if (!expectedDietPlusBodyWithStatementRecoveryUnitToString.equals(computedUnitToString)){
System.out.println(Util.displayString(computedUnitToString));
}
assertEquals(
"Invalid unit diet+body structure with statement recovery enabled" + testName,
expectedDietPlusBodyWithStatementRecoveryUnitToString,
computedUnitToString);
}
/* using regular parser in FULL mode */
if(!ONLY_DIET_PLUS_BODY_WITH_STATEMENT_RECOVERY){
Parser parser =
new Parser(
new ProblemReporter(
DefaultErrorHandlingPolicies.proceedWithAllProblems(),
new CompilerOptions(getCompilerOptions()),
new DefaultProblemFactory(Locale.getDefault())),
optimizeStringLiterals);
parser.setMethodsFullRecovery(false);
parser.setStatementsRecovery(false);
ICompilationUnit sourceUnit = new CompilationUnit(source, testName, null);
CompilationResult compilationResult = new CompilationResult(sourceUnit, 0, 0, 0);
CompilationUnitDeclaration computedUnit = parser.parse(sourceUnit, compilationResult);
String computedUnitToString = computedUnit.toString();
if (!expectedFullUnitToString.equals(computedUnitToString)){
System.out.println(Util.displayString(computedUnitToString));
}
assertEquals(
"Invalid unit full structure" + testName,
expectedFullUnitToString,
computedUnitToString);
}
/* using regular parser in FULL mode and statementRecoveryEnabled */
if(!ONLY_DIET_PLUS_BODY_WITH_STATEMENT_RECOVERY){
Parser parser =
new Parser(
new ProblemReporter(
DefaultErrorHandlingPolicies.proceedWithAllProblems(),
new CompilerOptions(getCompilerOptions()),
new DefaultProblemFactory(Locale.getDefault())),
optimizeStringLiterals);
ICompilationUnit sourceUnit = new CompilationUnit(source, testName, null);
CompilationResult compilationResult = new CompilationResult(sourceUnit, 0, 0, 0);
CompilationUnitDeclaration computedUnit = parser.parse(sourceUnit, compilationResult);
String computedUnitToString = computedUnit.toString();
if (!expectedFullWithStatementRecoveryUnitToString.equals(computedUnitToString)){
System.out.println(Util.displayString(computedUnitToString));
}
assertEquals(
"Invalid unit full structure with statement recovery enabled" + testName,
expectedFullWithStatementRecoveryUnitToString,
computedUnitToString);
}
}
public void test0001() {
String s =
"function foo() { \n" +
" System.out.println(); \n" +
"} \n";
String expectedDietUnitToString =
"function foo() {\n" +
" System.out.println();\n"+
"}\n";
String expectedDietWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String expectedDietPlusBodyUnitToString =
"function foo() {\n" +
" System.out.println();\n"+
"}\n";
String expectedDietPlusBodyWithStatementRecoveryUnitToString =
expectedDietPlusBodyUnitToString;
String expectedFullUnitToString =
expectedDietPlusBodyUnitToString;
String expectedFullWithStatementRecoveryUnitToString =
expectedFullUnitToString;
String testName = "<test>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietWithStatementRecoveryUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyWithStatementRecoveryUnitToString,
expectedFullUnitToString,
expectedFullWithStatementRecoveryUnitToString,
testName);
}
public void test0002() {
String s =
" function foo() { \n"
+ " # \n"
+ " System.out.println(); \n"
+ "} \n";
String expectedDietUnitToString =
"function foo() {\n" +
" System.out.println();\n"+
"}\n";
String expectedDietWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String expectedDietPlusBodyUnitToString =
"function foo() {\n" +
" System.out.println();\n"+
"}\n";
String expectedDietPlusBodyWithStatementRecoveryUnitToString =
"function foo() {\n" +
" System.out.println();\n"+
"}\n";
String expectedFullUnitToString =
expectedDietUnitToString;
String expectedFullWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String testName = "<test>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietWithStatementRecoveryUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyWithStatementRecoveryUnitToString,
expectedFullUnitToString,
expectedFullWithStatementRecoveryUnitToString,
testName);
}
public void test0002a() {
String s =
" System.out.print1(); \n"
+ " # \n"
+ " System.out.print2(); \n"
+ " \n";
String expectedDietUnitToString =
"System.out.print1();\n"+
"System.out.print2();\n"+
"";
String expectedDietWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String expectedDietPlusBodyUnitToString =
" System.out.println();\n"+
"\n";
String expectedDietPlusBodyWithStatementRecoveryUnitToString =
"System.out.print1();\n"+
"System.out.print2();\n"+
"";
String expectedFullUnitToString =
expectedDietUnitToString;
String expectedFullWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String testName = "<test>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietWithStatementRecoveryUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyWithStatementRecoveryUnitToString,
expectedFullUnitToString,
expectedFullWithStatementRecoveryUnitToString,
testName);
}
public void test0002b() {
String s =
" foo = function () { \n"
+ " # \n"
+ " System.out.println(); \n"
+ "} \n";
String expectedDietUnitToString =
"foo = function () {\n" +
" System.out.println();\n"+
"};\n";
String expectedDietWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String expectedDietPlusBodyUnitToString =
"foo = function () {\n" +
" System.out.println();\n"+
"}\n";
String expectedDietPlusBodyWithStatementRecoveryUnitToString =
"foo = function () {\n" +
" System.out.println();\n"+
"};\n";
String expectedFullUnitToString =
expectedDietUnitToString;
String expectedFullWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String testName = "<test>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietWithStatementRecoveryUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyWithStatementRecoveryUnitToString,
expectedFullUnitToString,
expectedFullWithStatementRecoveryUnitToString,
testName);
}
public void test0002c() {
String s =
" obj ={ \n"
+" p1 : 2, \n"
+" meth: function () { \n"
+ " # \n"
+ " FOO(); \n"
+ "} \n"
+ "} \n";
String expectedDietUnitToString =
"obj = {\n" +
" p1 : 2,\n" +
" meth : function () {\n" +
" FOO();\n" +
"}\n" +
"};\n";
String expectedDietWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String expectedDietPlusBodyUnitToString =
"obj = {\n" +
" p1 : 2,\n" +
" meth : function () {\n" +
" FOO();\n" +
"}\n" +
"};\n";
String expectedDietPlusBodyWithStatementRecoveryUnitToString =
"obj = {\n" +
" p1 : 2,\n" +
" meth : function () {\n" +
" FOO();\n" +
"}\n" +
"};\n";
String expectedFullUnitToString =
expectedDietUnitToString;
String expectedFullWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String testName = "<test>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietWithStatementRecoveryUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyWithStatementRecoveryUnitToString,
expectedFullUnitToString,
expectedFullWithStatementRecoveryUnitToString,
testName);
}
public void test0003() {
String s =
" function foo() { \n"
+ " System.out.println(); \n"
+ " # \n"
+ "} \n";
String expectedDietUnitToString =
"function foo() {\n" +
" System.out.println();\n"+
"}\n";
String expectedDietWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String expectedDietPlusBodyUnitToString =
"function foo() {\n" +
" System.out.println();\n"+
"}\n";
String expectedDietPlusBodyWithStatementRecoveryUnitToString =
"function foo() {\n" +
" System.out.println();\n"+
"}\n";
String expectedFullUnitToString =
expectedDietUnitToString;
String expectedFullWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String testName = "<test>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietWithStatementRecoveryUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyWithStatementRecoveryUnitToString,
expectedFullUnitToString,
expectedFullWithStatementRecoveryUnitToString,
testName);
}
public void test0003b() {
String s =
" function foo1() { \n"
+ " var i; \n"
+ "} \n"
+ " function foo2() { \n"
+ " # \n"
+ " a=1; \n"
+ "} \n"
+ " function foo3() { \n"
+ " var k; \n"
+ "} \n";
String expectedDietUnitToString =
"function foo1() {\n" +
"}\n" +
"function foo2() {\n" +
"}\n" +
"function foo3() {\n" +
"}\n";
String expectedDietWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String expectedDietPlusBodyUnitToString =
"function foo1() {\n" +
" var i;\n" +
"}\n" +
"function foo2() {\n" +
" a = 1;\n" +
"}\n" +
"function foo3() {\n" +
" var k;\n" +
"}\n";
String expectedDietPlusBodyWithStatementRecoveryUnitToString =
"function foo1() {\n" +
" var i;\n" +
"}\n" +
"function foo2() {\n" +
" a = 1;\n" +
"}\n" +
"function foo3() {\n" +
" var k;\n" +
"}\n";
String expectedFullUnitToString =
expectedDietUnitToString;
String expectedFullWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String testName = "<test>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietWithStatementRecoveryUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyWithStatementRecoveryUnitToString,
expectedFullUnitToString,
expectedFullWithStatementRecoveryUnitToString,
testName);
}
public void test0004() {
String s =
" function foo() { \n"
+ " # \n"
+ " System.out.println(); \n"
+ " System.out.println(); \n"
+ "} \n";
String expectedDietUnitToString =
"function foo() {\n" +
" System.out.println();\n"+
" System.out.println();\n"+
"}\n";
String expectedDietWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String expectedDietPlusBodyUnitToString =
"function foo() {\n" +
" System.out.println();\n"+
" System.out.println();\n"+
"}\n";
String expectedDietPlusBodyWithStatementRecoveryUnitToString =
"function foo() {\n" +
" System.out.println();\n"+
" System.out.println();\n"+
"}\n";
String expectedFullUnitToString =
expectedDietUnitToString;
String expectedFullWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String testName = "<test>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietWithStatementRecoveryUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyWithStatementRecoveryUnitToString,
expectedFullUnitToString,
expectedFullWithStatementRecoveryUnitToString,
testName);
}
public void test0005() {
String s =
" function foo() { \n"
+ " System.out.println(); \n"
+ " System.out.println(); \n"
+ " # \n"
+ "} \n";
String expectedDietUnitToString =
"function foo() {\n" +
" System.out.println();\n"+
" System.out.println();\n"+
"}\n";
String expectedDietWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String expectedDietPlusBodyUnitToString =
"function foo() {\n" +
" System.out.println();\n"+
" System.out.println();\n"+
"}\n";
String expectedDietPlusBodyWithStatementRecoveryUnitToString =
"function foo() {\n" +
" System.out.println();\n"+
" System.out.println();\n"+
"}\n";
String expectedFullUnitToString =
expectedDietUnitToString;
String expectedFullWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String testName = "<test>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietWithStatementRecoveryUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyWithStatementRecoveryUnitToString,
expectedFullUnitToString,
expectedFullWithStatementRecoveryUnitToString,
testName);
}
public void test0006() {
String s =
"function foo() {\n"
+ " System.out.println(); \n"
+ " System.out.println(); \n"
+ " # \n"
+ " System.out.println(); \n"
+ " System.out.println(); \n"
+"}\n";
String expectedDietUnitToString =
"function foo() {\n" +
" System.out.println();\n"+
" System.out.println();\n"+
" System.out.println();\n"+
" System.out.println();\n"+
"}\n";
String expectedDietWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String expectedDietPlusBodyUnitToString =
"function foo() {\n" +
" System.out.println();\n"+
" System.out.println();\n"+
" System.out.println();\n"+
" System.out.println();\n"+
"}\n";
String expectedDietPlusBodyWithStatementRecoveryUnitToString =
"function foo() {\n" +
" System.out.println();\n"+
" System.out.println();\n"+
" System.out.println();\n"+
" System.out.println();\n"+
"}\n";
String expectedFullUnitToString =
expectedDietUnitToString;
String expectedFullWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String testName = "<test>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietWithStatementRecoveryUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyWithStatementRecoveryUnitToString,
expectedFullUnitToString,
expectedFullWithStatementRecoveryUnitToString,
testName);
}
public void test0007() {
String s =
"function foo() {\n"
+ " # \n"
+ " System.out.println(); \n"
+ " if(true) { \n"
+ " System.out.println(); \n"
+ " } \n"
+ " System.out.println(); \n"
+"}\n";
String expectedDietUnitToString =
"function foo() {\n"
+ " System.out.println();\n"
+ " if (true)\n"
+ " {\n"
+ " System.out.println();\n"
+ " }\n"
+ " System.out.println();\n"
+"}\n";
String expectedDietWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String expectedDietPlusBodyUnitToString =
"function foo() {\n"
+ " System.out.println();\n"
+ " if (true)\n"
+ " {\n"
+ " System.out.println();\n"
+ " }\n"
+ " System.out.println();\n"
+"}\n";
String expectedDietPlusBodyWithStatementRecoveryUnitToString =
"function foo() {\n"
+ " System.out.println();\n"
+ " if (true)\n"
+ " {\n"
+ " System.out.println();\n"
+ " }\n"
+ " System.out.println();\n"
+"}\n";
String expectedFullUnitToString =
expectedDietUnitToString;
String expectedFullWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String testName = "<test>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietWithStatementRecoveryUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyWithStatementRecoveryUnitToString,
expectedFullUnitToString,
expectedFullWithStatementRecoveryUnitToString,
testName);
}
public void test0008() {
String s =
"function X() { \n"
+ " function foo() { \n"
+ " System.out.println(); \n"
+ " if(true) { \n"
+ " System.out.println(); \n"
+ " } \n"
+ " System.out.println(); \n"
+ " # \n"
+ " } \n"
+ "} \n";
String expectedDietUnitToString =
"function X() {\n" +
" function foo() {\n" +
" }\n" +
"}\n";
String expectedDietWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String expectedDietPlusBodyUnitToString =
"function X() {\n" +
" function foo() {\n" +
" }\n" +
"}\n";
String expectedDietPlusBodyWithStatementRecoveryUnitToString =
"function X() {\n" +
" function foo() {\n" +
" System.out.println();\n" +
" if (true)\n" +
" {\n" +
" System.out.println();\n" +
" }\n" +
" System.out.println();\n" +
" }\n" +
"}\n";
String expectedFullUnitToString =
expectedDietUnitToString;
String expectedFullWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String testName = "<test>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietWithStatementRecoveryUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyWithStatementRecoveryUnitToString,
expectedFullUnitToString,
expectedFullWithStatementRecoveryUnitToString,
testName);
}
public void test0009() {
String s =
"function X() { \n"
+ " function foo() { \n"
+ " System.out.println(); \n"
+ " if(true) { \n"
+ " System.out.println(); \n"
+ " } \n"
+ " System.out.println(); \n"
+ " # \n"
+ " System.out.println(); \n"
+ " if(true) { \n"
+ " System.out.println(); \n"
+ " } \n"
+ " System.out.println(); \n"
+ " } \n"
+ "} \n";
String expectedDietUnitToString =
"function X() {\n" +
" function foo() {\n" +
" }\n" +
"}\n";
String expectedDietWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String expectedDietPlusBodyUnitToString =
"function X() {\n" +
" function foo() {\n" +
" }\n" +
"}\n";
String expectedDietPlusBodyWithStatementRecoveryUnitToString =
"function X() {\n" +
" function foo() {\n" +
" System.out.println();\n" +
" if (true)\n" +
" {\n" +
" System.out.println();\n" +
" }\n" +
" System.out.println();\n" +
" System.out.println();\n" +
" if (true)\n" +
" {\n" +
" System.out.println();\n" +
" }\n" +
" System.out.println();\n" +
" }\n" +
"}\n";
String expectedFullUnitToString =
expectedDietUnitToString;
String expectedFullWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String testName = "<test>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietWithStatementRecoveryUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyWithStatementRecoveryUnitToString,
expectedFullUnitToString,
expectedFullWithStatementRecoveryUnitToString,
testName);
}
public void test0010() {
String s =
"function X() { \n"
+ " function foo() { \n"
+ " bar(\\u0029 \n"
+ " } \n"
+ "} \n";
String expectedDietUnitToString =
"function X() {\n" +
" function foo() {\n" +
" }\n" +
"}\n";
String expectedDietWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String expectedDietPlusBodyUnitToString =
"function X() {\n" +
" function foo() {\n" +
" }\n" +
"}\n";
String expectedDietPlusBodyWithStatementRecoveryUnitToString =
"function X() {\n" +
" function foo() {\n" +
" bar();\n" +
" }\n" +
"}\n";
String expectedFullUnitToString =
expectedDietUnitToString;
String expectedFullWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String testName = "<test>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietWithStatementRecoveryUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyWithStatementRecoveryUnitToString,
expectedFullUnitToString,
expectedFullWithStatementRecoveryUnitToString,
testName);
}
public void test0011() {
String s =
"function X() { \n"
+ " function foo() { \n"
+ " if(true) { \n"
+ " foo(); \n"
+ " } \n"
+ " for(; \n"
+ " if(true) { \n"
+ " foo(); \n"
+ " } \n"
+ " } \n"
+ "} \n";
String expectedDietUnitToString =
"function X() {\n" +
" function foo() {\n" +
" }\n" +
"}\n";
String expectedDietWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String expectedDietPlusBodyUnitToString =
"function X() {\n" +
" function foo() {\n" +
" }\n" +
"}\n";
String expectedDietPlusBodyWithStatementRecoveryUnitToString =
"function X() {\n" +
"}\n" +
"function foo() {\n" +
" if (true)\n" +
" {\n" +
" foo();\n" +
" }\n" +
"}\n";
String expectedFullUnitToString =
expectedDietUnitToString;
String expectedFullWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String testName = "<test>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietWithStatementRecoveryUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyWithStatementRecoveryUnitToString,
expectedFullUnitToString,
expectedFullWithStatementRecoveryUnitToString,
testName);
}
public void test0012() {
String s =
"function X() { \n"
+ " function foo() { \n"
+ " if() { \n"
+ " foo(); \n"
+ " } \n"
+ " } \n"
+ "} \n";
String expectedDietUnitToString =
"function X() {\n" +
" function foo() {\n" +
" }\n" +
"}\n";
String expectedDietWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String expectedDietPlusBodyUnitToString =
"function X() {\n" +
" function foo() {\n" +
" }\n" +
"}\n";
String expectedDietPlusBodyWithStatementRecoveryUnitToString =
"function X() {\n" +
" function foo() {\n" +
" if ($missing$)\n" +
" {\n" +
" foo();\n" +
" }\n" +
" }\n" +
"}\n";
String expectedFullUnitToString =
expectedDietUnitToString;
String expectedFullWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String testName = "<test>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietWithStatementRecoveryUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyWithStatementRecoveryUnitToString,
expectedFullUnitToString,
expectedFullWithStatementRecoveryUnitToString,
testName);
}
public void test0013() {
String s =
"function X() { \n"
+ " function foo() { \n"
+ " for(var i \n"
+ " } \n"
+ "} \n";
String expectedDietUnitToString =
"function X() {\n" +
" function foo() {\n" +
" }\n" +
"}\n";
String expectedDietWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String expectedDietPlusBodyUnitToString =
"function X() {\n" +
" function foo() {\n" +
" }\n" +
"}\n";
String expectedDietPlusBodyWithStatementRecoveryUnitToString =
"function X() {\n" +
"}\n" +
"function foo() {\n" +
" var i;\n" +
"}\n";
String expectedFullUnitToString =
expectedDietUnitToString;
String expectedFullWithStatementRecoveryUnitToString =
expectedDietUnitToString;
String testName = "<test>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietWithStatementRecoveryUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyWithStatementRecoveryUnitToString,
expectedFullUnitToString,
expectedFullWithStatementRecoveryUnitToString,
testName);
}
}