blob: 747c24f8a0a4aa93033a38786485ad61f58e00ee [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2008 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.jdt.core.tests.compiler.parser;
import java.util.Locale;
import java.util.Map;
import org.eclipse.jdt.core.tests.util.AbstractCompilerTest;
import org.eclipse.jdt.core.tests.util.Util;
import org.eclipse.jdt.internal.codeassist.complete.CompletionParser;
import org.eclipse.jdt.internal.compiler.CompilationResult;
import org.eclipse.jdt.internal.compiler.DefaultErrorHandlingPolicies;
import org.eclipse.jdt.internal.compiler.SourceElementParser;
import org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration;
import org.eclipse.jdt.internal.compiler.batch.CompilationUnit;
import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
import org.eclipse.jdt.internal.compiler.env.ICompilationUnit;
import org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
import org.eclipse.jdt.internal.compiler.parser.Parser;
import org.eclipse.jdt.internal.compiler.problem.DefaultProblemFactory;
import org.eclipse.jdt.internal.compiler.problem.ProblemReporter;
public class GenericDietRecoveryTest extends AbstractCompilerTest {
public static boolean optimizeStringLiterals = false;
public static long sourceLevel = ClassFileConstants.JDK1_3; //$NON-NLS-1$
public GenericDietRecoveryTest(String testName){
super(testName);
}
/*
* Toggle compiler in mode -1.5
*/
protected Map getCompilerOptions() {
Map options = super.getCompilerOptions();
options.put(CompilerOptions.OPTION_Compliance, CompilerOptions.VERSION_1_5);
options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_5);
options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_5);
return options;
}
public void checkParse(
char[] source,
String expectedDietUnitToString,
String expectedDietPlusBodyUnitToString,
String expectedDietPlusBodyPlusStatementsRecoveryUnitToString,
String expectedFullUnitToString,
String expectedCompletionDietUnitToString, String testName) {
/* using regular parser in DIET mode */
{
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 (!expectedDietUnitToString.equals(computedUnitToString)){
System.out.println(Util.displayString(computedUnitToString));
}
assertEquals(
"Invalid unit diet structure" + testName,
expectedDietUnitToString,
computedUnitToString);
}
/* using regular parser in DIET mode + getMethodBodies */
{
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 = 0, length = computedUnit.types.length; i < length; i++){
computedUnit.types[i].parseMethods(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 + statements recovery*/
{
Parser parser =
new Parser(
new ProblemReporter(
DefaultErrorHandlingPolicies.proceedWithAllProblems(),
new CompilerOptions(getCompilerOptions()),
new DefaultProblemFactory(Locale.getDefault())),
optimizeStringLiterals);
parser.setMethodsFullRecovery(true);
parser.setStatementsRecovery(true);
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 = 0, length = computedUnit.types.length; i < length; i++){
computedUnit.types[i].parseMethods(parser, computedUnit);
}
}
computedUnitToString = computedUnit.toString();
if (!expectedDietPlusBodyPlusStatementsRecoveryUnitToString.equals(computedUnitToString)){
System.out.println(Util.displayString(computedUnitToString));
}
assertEquals(
"Invalid unit diet+body structure" + testName,
expectedDietPlusBodyPlusStatementsRecoveryUnitToString,
computedUnitToString);
}
/* using regular parser in FULL mode */
{
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 (!expectedFullUnitToString.equals(computedUnitToString)){
System.out.println(Util.displayString(computedUnitToString));
}
assertEquals(
"Invalid unit full structure" + testName,
expectedFullUnitToString,
computedUnitToString);
}
/* using source element parser in DIET mode */
{
SourceElementParser parser =
new SourceElementParser(
new TestSourceElementRequestor(),
new DefaultProblemFactory(Locale.getDefault()),
new CompilerOptions(getCompilerOptions()),
false/*don't record local declarations*/,
true/*optimize string literals*/);
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 source element diet structure" + testName,
expectedDietUnitToString,
computedUnitToString);
}
/* using source element parser in FULL mode */
{
SourceElementParser parser =
new SourceElementParser(
new TestSourceElementRequestor(),
new DefaultProblemFactory(Locale.getDefault()),
new CompilerOptions(getCompilerOptions()),
false/*don't record local declarations*/,
true/*optimize string literals*/);
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 source element full structure" + testName,
expectedFullUnitToString,
computedUnitToString);
}
/* using completion parser in DIET mode */
{
CompilerOptions options = new CompilerOptions(getCompilerOptions());
CompletionParser parser =
new CompletionParser(
new ProblemReporter(
DefaultErrorHandlingPolicies.proceedWithAllProblems(),
options,
new DefaultProblemFactory(Locale.getDefault())),
false);
ICompilationUnit sourceUnit = new CompilationUnit(source, testName, null);
CompilationResult compilationResult = new CompilationResult(sourceUnit, 0, 0, 0);
CompilationUnitDeclaration computedUnit = parser.dietParse(sourceUnit, compilationResult, Integer.MAX_VALUE);
String computedUnitToString = computedUnit.toString();
if (!expectedCompletionDietUnitToString.equals(computedUnitToString)){
System.out.println(Util.displayString(computedUnitToString));
}
assertEquals(
"Invalid completion diet structure" + testName,
expectedCompletionDietUnitToString,
computedUnitToString);
}
}
public void test0001() {
String s =
"package a; \n"
+ "public class X <A { \n"
+ "} \n";
String expectedDietUnitToString =
"package a;\n" +
"public class X<A> {\n" +
" public X() {\n" +
" }\n" +
"}\n";
String expectedDietPlusBodyUnitToString =
"package a;\n" +
"public class X<A> {\n" +
" public X() {\n" +
" super();\n" +
" }\n" +
"}\n";
String expectedFullUnitToString = expectedDietUnitToString;
String expectedCompletionDietUnitToString =
expectedDietUnitToString;
String testName = "<generic type recovery>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyUnitToString,
expectedFullUnitToString,
expectedCompletionDietUnitToString, testName);
}
public void test0002() {
String s =
"package a; \n"
+ "public interface X <A { \n"
+ "} \n";
String expectedDietUnitToString =
"package a;\n" +
"public interface X<A> {\n" +
"}\n";
String expectedDietPlusBodyUnitToString =
expectedDietUnitToString;
String expectedFullUnitToString = expectedDietUnitToString;
String expectedCompletionDietUnitToString =
expectedDietUnitToString;
String testName = "<generic type recovery>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyUnitToString,
expectedFullUnitToString,
expectedCompletionDietUnitToString, testName);
}
public void test0003() {
String s =
"package a; \n"
+ "public class X <A> \n"
+ "} \n";
String expectedDietUnitToString =
"package a;\n" +
"public class X<A> {\n" +
" public X() {\n" +
" }\n" +
"}\n";
String expectedDietPlusBodyUnitToString =
"package a;\n" +
"public class X<A> {\n" +
" public X() {\n" +
" super();\n" +
" }\n" +
"}\n";
String expectedFullUnitToString = expectedDietUnitToString;
String expectedCompletionDietUnitToString =
expectedDietUnitToString;
String testName = "<generic type recovery>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyUnitToString,
expectedFullUnitToString,
expectedCompletionDietUnitToString, testName);
}
public void test0004() {
String s =
"package a; \n"
+ "public class X <A, B \n"
+ "} \n";
String expectedDietUnitToString =
"package a;\n" +
"public class X<A, B> {\n" +
" public X() {\n" +
" }\n" +
"}\n";
String expectedDietPlusBodyUnitToString =
"package a;\n" +
"public class X<A, B> {\n" +
" public X() {\n" +
" super();\n" +
" }\n" +
"}\n";
String expectedFullUnitToString = expectedDietUnitToString;
String expectedCompletionDietUnitToString =
expectedDietUnitToString;
String testName = "<generic type recovery>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyUnitToString,
expectedFullUnitToString,
expectedCompletionDietUnitToString, testName);
}
public void test0005() {
String s =
"package a; \n"
+ "public class X <A, B \n"
+ " A a; \n"
+ "} \n";
String expectedDietUnitToString =
"package a;\n" +
"public class X<A, B> {\n" +
" A a;\n" +
" public X() {\n" +
" }\n" +
"}\n";
String expectedDietPlusBodyUnitToString =
"package a;\n" +
"public class X<A, B> {\n" +
" A a;\n" +
" public X() {\n" +
" super();\n" +
" }\n" +
"}\n";
String expectedFullUnitToString = expectedDietUnitToString;
String expectedCompletionDietUnitToString =
expectedDietUnitToString;
String testName = "<generic type recovery>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyUnitToString,
expectedFullUnitToString,
expectedCompletionDietUnitToString, testName);
}
public void test0006() {
String s =
"package a; \n"
+ "public class X <A extends String, B \n"
+ " A a; \n"
+ "} \n";
String expectedDietUnitToString =
"package a;\n" +
"public class X<A extends String, B> {\n" +
" A a;\n" +
" public X() {\n" +
" }\n" +
"}\n";
String expectedDietPlusBodyUnitToString =
"package a;\n" +
"public class X<A extends String, B> {\n" +
" A a;\n" +
" public X() {\n" +
" super();\n" +
" }\n" +
"}\n";
String expectedFullUnitToString = expectedDietUnitToString;
String expectedCompletionDietUnitToString =
expectedDietUnitToString;
String testName = "<generic type recovery>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyUnitToString,
expectedFullUnitToString,
expectedCompletionDietUnitToString, testName);
}
public void test0007() {
String s =
"package a; \n"
+ "public class X <A extends \n"
+ " A a; \n"
+ "} \n";
String expectedDietUnitToString =
"package a;\n" +
"public class X<A extends A> {\n" +
" public X() {\n" +
" }\n" +
"}\n";
String expectedDietPlusBodyUnitToString =
"package a;\n" +
"public class X<A extends A> {\n" +
" public X() {\n" +
" super();\n" +
" }\n" +
"}\n";
String expectedFullUnitToString = expectedDietUnitToString;
String expectedCompletionDietUnitToString =
expectedDietUnitToString;
String testName = "<generic type recovery>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyUnitToString,
expectedFullUnitToString,
expectedCompletionDietUnitToString, testName);
}
public void test0008() {
String s =
"package a; \n"
+ "public class X <A exteds B> \n"
+ " A a; \n"
+ "} \n";
String expectedDietUnitToString =
"package a;\n" +
"public class X<A> {\n" +
" exteds B;\n" +
" A a;\n" +
" public X() {\n" +
" }\n" +
"}\n";
String expectedDietPlusBodyUnitToString =
"package a;\n" +
"public class X<A> {\n" +
" exteds B;\n" +
" A a;\n" +
" public X() {\n" +
" super();\n" +
" }\n" +
"}\n";
String expectedFullUnitToString = expectedDietUnitToString;
String expectedCompletionDietUnitToString =
expectedDietUnitToString;
String testName = "<generic type recovery>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyUnitToString,
expectedFullUnitToString,
expectedCompletionDietUnitToString, testName);
}
public void test0009() {
String s =
"package a; \n"
+ "public class X <A extends> \n"
+ " A a; \n"
+ "} \n";
String expectedDietUnitToString =
"package a;\n" +
"public class X<A> {\n" +
" A a;\n" +
" public X() {\n" +
" }\n" +
"}\n";
String expectedDietPlusBodyUnitToString =
"package a;\n" +
"public class X<A> {\n" +
" A a;\n" +
" public X() {\n" +
" super();\n" +
" }\n" +
"}\n";
String expectedFullUnitToString = expectedDietUnitToString;
String expectedCompletionDietUnitToString =
expectedDietUnitToString;
String testName = "<generic type recovery>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyUnitToString,
expectedFullUnitToString,
expectedCompletionDietUnitToString, testName);
}
public void test0010() {
String s =
"package a; \n"
+ "public class X <A extends \n"
+ " void foo(){} \n"
+ "} \n";
String expectedDietUnitToString =
"package a;\n" +
"public class X<A> {\n" +
" public X() {\n" +
" }\n" +
" void foo() {\n" +
" }\n" +
"}\n";
String expectedDietPlusBodyUnitToString =
"package a;\n" +
"public class X<A> {\n" +
" public X() {\n" +
" super();\n" +
" }\n" +
" void foo() {\n" +
" }\n" +
"}\n";
String expectedFullUnitToString = expectedDietUnitToString;
String expectedCompletionDietUnitToString =
expectedDietUnitToString;
String testName = "<generic type recovery>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyUnitToString,
expectedFullUnitToString,
expectedCompletionDietUnitToString, testName);
}
public void test0011() {
String s =
"package a; \n"
+ "public class X <A, B extends \n"
+ "} \n";
String expectedDietUnitToString =
"package a;\n" +
"public class X<A, B> {\n" +
" public X() {\n" +
" }\n" +
"}\n";
String expectedDietPlusBodyUnitToString =
"package a;\n" +
"public class X<A, B> {\n" +
" public X() {\n" +
" super();\n" +
" }\n" +
"}\n";
String expectedFullUnitToString = expectedDietUnitToString;
String expectedCompletionDietUnitToString =
expectedDietUnitToString;
String testName = "<generic type recovery>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyUnitToString,
expectedFullUnitToString,
expectedCompletionDietUnitToString, testName);
}
public void test0012() {
String s =
"package a; \n"
+ "public class X <A, B extends Z \n"
+ "} \n";
String expectedDietUnitToString =
"package a;\n" +
"public class X<A, B extends Z> {\n" +
" public X() {\n" +
" }\n" +
"}\n";
String expectedDietPlusBodyUnitToString =
"package a;\n" +
"public class X<A, B extends Z> {\n" +
" public X() {\n" +
" super();\n" +
" }\n" +
"}\n";
String expectedFullUnitToString = expectedDietUnitToString;
String expectedCompletionDietUnitToString =
expectedDietUnitToString;
String testName = "<generic type recovery>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyUnitToString,
expectedFullUnitToString,
expectedCompletionDietUnitToString, testName);
}
public void test0013() {
String s =
"package a; \n"
+ "public class X <A, B extends Z< \n"
+ "} \n";
String expectedDietUnitToString =
"package a;\n" +
"public class X<A, B> {\n" +
" public X() {\n" +
" }\n" +
"}\n";
String expectedDietPlusBodyUnitToString =
"package a;\n" +
"public class X<A, B> {\n" +
" public X() {\n" +
" super();\n" +
" }\n" +
"}\n";
String expectedFullUnitToString = expectedDietUnitToString;
String expectedCompletionDietUnitToString =
expectedDietUnitToString;
String testName = "<generic type recovery>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyUnitToString,
expectedFullUnitToString,
expectedCompletionDietUnitToString, testName);
}
public void test0014() {
String s =
"package a; \n"
+ "public class X <A, B extends Z<Y \n"
+ "} \n";
String expectedDietUnitToString =
"package a;\n" +
"public class X<A, B> {\n" +
" public X() {\n" +
" }\n" +
"}\n";
String expectedDietPlusBodyUnitToString =
"package a;\n" +
"public class X<A, B> {\n" +
" public X() {\n" +
" super();\n" +
" }\n" +
"}\n";
String expectedFullUnitToString = expectedDietUnitToString;
String expectedCompletionDietUnitToString =
expectedDietUnitToString;
String testName = "<generic type recovery>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyUnitToString,
expectedFullUnitToString,
expectedCompletionDietUnitToString, testName);
}
public void test0015() {
String s =
"package a; \n"
+ "public class X <A, B extends Z<Y> \n"
+ "} \n";
String expectedDietUnitToString =
"package a;\n" +
"public class X<A, B extends Z<Y>> {\n" +
" public X() {\n" +
" }\n" +
"}\n";
String expectedDietPlusBodyUnitToString =
"package a;\n" +
"public class X<A, B extends Z<Y>> {\n" +
" public X() {\n" +
" super();\n" +
" }\n" +
"}\n";
String expectedFullUnitToString = expectedDietUnitToString;
String expectedCompletionDietUnitToString =
expectedDietUnitToString;
String testName = "<generic type recovery>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyUnitToString,
expectedFullUnitToString,
expectedCompletionDietUnitToString, testName);
}
public void test0016() {
String s =
"package a; \n"
+ "public class X <A super int> { \n"
+ "} \n";
String expectedDietUnitToString =
"package a;\n" +
"public class X<A> {\n" +
" public X() {\n" +
" }\n" +
"}\n";
String expectedDietPlusBodyUnitToString =
"package a;\n" +
"public class X<A> {\n" +
" public X() {\n" +
" super();\n" +
" }\n" +
"}\n";
String expectedFullUnitToString = expectedDietUnitToString;
String expectedCompletionDietUnitToString =
expectedDietUnitToString;
String testName = "<generic type recovery>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyUnitToString,
expectedFullUnitToString,
expectedCompletionDietUnitToString, testName);
}
public void test0017() {
String s =
"package a; \n"
+ "public class X <A<B super int>> { \n"
+ "} \n";
String expectedDietUnitToString =
"package a;\n" +
"public class X<A> {\n" +
" public X() {\n" +
" }\n" +
"}\n";
String expectedDietPlusBodyUnitToString =
"package a;\n" +
"public class X<A> {\n" +
" public X() {\n" +
" super();\n" +
" }\n" +
"}\n";
String expectedFullUnitToString = expectedDietUnitToString;
String expectedCompletionDietUnitToString =
expectedDietUnitToString;
String testName = "<generic type recovery>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyUnitToString,
expectedFullUnitToString,
expectedCompletionDietUnitToString, testName);
}
public void test0018() {
String s =
"package a; \n"
+ "public class X <A<B<C super int>>> { \n"
+ "} \n";
String expectedDietUnitToString =
"package a;\n" +
"public class X<A> {\n" +
" public X() {\n" +
" }\n" +
"}\n";
String expectedDietPlusBodyUnitToString =
"package a;\n" +
"public class X<A> {\n" +
" public X() {\n" +
" super();\n" +
" }\n" +
"}\n";
String expectedFullUnitToString = expectedDietUnitToString;
String expectedCompletionDietUnitToString =
expectedDietUnitToString;
String testName = "<generic type recovery>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyUnitToString,
expectedFullUnitToString,
expectedCompletionDietUnitToString, testName);
}
public void test0019() {
String s =
"package a; \n"
+ "public class X { \n"
+ " void foo()[\n"
+ " Object o = (Y<Z>.W<U>)e\n"
+ " \n"
+ " }\n"
+ "} \n";
String expectedDietUnitToString =
"package a;\n" +
"public class X {\n" +
" public X() {\n" +
" }\n" +
" void foo() {\n" +
" }\n" +
"}\n";
String expectedDietPlusBodyUnitToString =
"package a;\n" +
"public class X {\n" +
" public X() {\n" +
" super();\n" +
" }\n" +
" void foo() {\n" +
" }\n" +
"}\n";
String expectedDietPlusBodyPlusStatementsRecoveryUnitToString =
"package a;\n" +
"public class X {\n" +
" public X() {\n" +
" super();\n" +
" }\n" +
" void foo() {\n" +
" Object o = (Y<Z>.W<U>) e;\n" +
" }\n" +
"}\n";
String expectedFullUnitToString = expectedDietUnitToString;
String expectedCompletionDietUnitToString =
expectedDietUnitToString;
String testName = "<generic type recovery>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyPlusStatementsRecoveryUnitToString,
expectedFullUnitToString,
expectedCompletionDietUnitToString, testName);
}
public void test0020() {
String s =
"public class X<T> {\n" +
" public class B<U> {}\n" +
" public static void main (String[] args) {\n" +
" X<?>.B[] b = new X<?>.B[1];\n" +
" X<?>.B<?>[] b = new X<?>.B<?>[1];\n" +
" p.p1.X<?>.q.B<?>[] b = new p.p1.X<?>.q.B<?>[1];\n" +
" p.p1.X<?>.q.B[] b = new p.p1.X<?>.q.B[1];\n" +
" p.p1.X<?>[] b = new p.p1.X<?>[1];\n" +
" p.p1.X<String, Integer>.q.B<?>[] b = new p.p1.X<String, Integer>.q.B<?>[1];\n" +
" X<?>.B<?> b = null;\n" +
" p.p1.X<?>.q.B<?> b = null;\n" +
" p.p1.X<String, Integer>.q.B<?> b = null;\n" +
" }\n" +
"}";
String expectedDietUnitToString =
"public class X<T> {\n" +
" public class B<U> {\n" +
" public B() {\n" +
" }\n" +
" }\n" +
" public X() {\n" +
" }\n" +
" public static void main(String[] args) {\n" +
" }\n" +
"}\n";
String expectedDietPlusBodyUnitToString =
"public class X<T> {\n" +
" public class B<U> {\n" +
" public B() {\n" +
" super();\n" +
" }\n" +
" }\n" +
" public X() {\n" +
" super();\n" +
" }\n" +
" public static void main(String[] args) {\n" +
" X<?>.B[] b = new X<?>.B[1];\n" +
" X<?>.B<?>[] b = new X<?>.B<?>[1];\n" +
" p.p1.X<?>.q.B<?>[] b = new p.p1.X<?>.q.B<?>[1];\n" +
" p.p1.X<?>.q.B[] b = new p.p1.X<?>.q.B[1];\n" +
" p.p1.X<?>[] b = new p.p1.X<?>[1];\n" +
" p.p1.X<String, Integer>.q.B<?>[] b = new p.p1.X<String, Integer>.q.B<?>[1];\n" +
" X<?>.B<?> b = null;\n" +
" p.p1.X<?>.q.B<?> b = null;\n" +
" p.p1.X<String, Integer>.q.B<?> b = null;\n" +
" }\n" +
"}\n";
String expectedFullUnitToString = expectedDietPlusBodyUnitToString;
String expectedCompletionDietUnitToString =
expectedDietUnitToString;
String testName = "<generic type recovery>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyUnitToString,
expectedFullUnitToString,
expectedCompletionDietUnitToString, testName);
}
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=113765
public void test0021() {
String s =
"import java.util.*;\n"+
"public interface X<T> {\n"+
" <K> List<Map<K,T> foo(Map<T,K> m);\n"+
" <K,E> List<Map<K,E> bar(Map<T,K> m, Map<T,E> e);\n"+
"}";
String expectedDietUnitToString =
"import java.util.*;\n" +
"public interface X<T> {\n" +
" <K>Map<K, T> foo(Map<T, K> m);\n" +
" <K, E>Map<K, E> bar(Map<T, K> m, Map<T, E> e);\n" +
"}\n";
String expectedDietPlusBodyUnitToString =
expectedDietUnitToString;
String expectedFullUnitToString = expectedDietPlusBodyUnitToString;
String expectedCompletionDietUnitToString =
expectedDietUnitToString;
String testName = "<generic type recovery>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyUnitToString,
expectedFullUnitToString,
expectedCompletionDietUnitToString, testName);
}
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=113765
public void test0022() {
String s =
"import java.util.*;\n"+
"public interface X<T> {\n"+
" <K> List<Map<K,T> foo();\n"+
"}";
String expectedDietUnitToString =
"import java.util.*;\n" +
"public interface X<T> {\n" +
" <K>Map<K, T> foo();\n" +
"}\n";
String expectedDietPlusBodyUnitToString =
expectedDietUnitToString;
String expectedFullUnitToString = expectedDietPlusBodyUnitToString;
String expectedCompletionDietUnitToString =
expectedDietUnitToString;
String testName = "<generic type recovery>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyUnitToString,
expectedFullUnitToString,
expectedCompletionDietUnitToString, testName);
}
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=113765
public void test0023() {
String s =
"import java.util.*;\n"+
"public interface X<T> {\n"+
" <K>\n"+
" List<Map<K,T> foo();\n"+
"}";
String expectedDietUnitToString =
"import java.util.*;\n" +
"public interface X<T> {\n" +
" Map<K, T> foo();\n" +
"}\n";
String expectedDietPlusBodyUnitToString =
expectedDietUnitToString;
String expectedFullUnitToString = expectedDietPlusBodyUnitToString;
String expectedCompletionDietUnitToString =
expectedDietUnitToString;
String testName = "<generic type recovery>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyUnitToString,
expectedFullUnitToString,
expectedCompletionDietUnitToString, testName);
}
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=113765
public void test0024() {
String s =
"import java.util.*;\n"+
"public interface X<T> {\n"+
" <K> public void foo();\n"+
"}";
String expectedDietUnitToString =
"import java.util.*;\n" +
"public interface X<T> {\n" +
" public void foo();\n" +
"}\n";
String expectedDietPlusBodyUnitToString =
expectedDietUnitToString;
String expectedFullUnitToString = expectedDietPlusBodyUnitToString;
String expectedCompletionDietUnitToString =
expectedDietUnitToString;
String testName = "<generic type recovery>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyUnitToString,
expectedFullUnitToString,
expectedCompletionDietUnitToString, testName);
}
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=113765
public void test0025() {
String s =
"import java.util.*;\n"+
"public interface X<T> {\n"+
" <K> public List<Map<K,T> foo();\n"+
"}";
String expectedDietUnitToString =
"import java.util.*;\n" +
"public interface X<T> {\n" +
" <K>Map<K, T> foo();\n" +
"}\n";
String expectedDietPlusBodyUnitToString =
expectedDietUnitToString;
String expectedFullUnitToString = expectedDietPlusBodyUnitToString;
String expectedCompletionDietUnitToString =
expectedDietUnitToString;
String testName = "<generic type recovery>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyUnitToString,
expectedFullUnitToString,
expectedCompletionDietUnitToString, testName);
}
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=113765
public void test0026() {
String s =
"import java.util.*;\n"+
"public interface X<T> {\n"+
" <K> Map<List<T>,List<K> foo();\n"+
"}";
String expectedDietUnitToString =
"import java.util.*;\n" +
"public interface X<T> {\n" +
" <T>List<K> foo();\n" +
"}\n";
String expectedDietPlusBodyUnitToString =
expectedDietUnitToString;
String expectedFullUnitToString = expectedDietPlusBodyUnitToString;
String expectedCompletionDietUnitToString =
expectedDietUnitToString;
String testName = "<generic type recovery>";
checkParse(
s.toCharArray(),
expectedDietUnitToString,
expectedDietPlusBodyUnitToString,
expectedDietPlusBodyUnitToString,
expectedFullUnitToString,
expectedCompletionDietUnitToString, testName);
}
}