Skip to content

Commit

Permalink
Eclipse 4.10 (RC1) JDT Patch for Groovy-Eclipse: JDT commit 2ea4c6b
Browse files Browse the repository at this point in the history
  • Loading branch information
eric-milles committed Nov 30, 2018
1 parent 6ef5c4c commit db3d6e1
Show file tree
Hide file tree
Showing 14 changed files with 372 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
</license>

<requires>
<import feature="org.eclipse.jdt" version="3.16.0.v20181121-1800" patch="true"/>
<import feature="org.eclipse.jdt" version="3.16.0.v20181129-0401" patch="true"/>
</requires>

<plugin
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,10 @@ static class JavacCompiler {
StringBuffer classpathBuffer = new StringBuffer(" -classpath ");
this.classpath = classpathBuffer.toString();
}
/** Call this if " -classpath " should be replaced by some other option token. */
protected void usePathOption(String option) {
this.classpath = option;
}
static String getVersion(String javacPathName) throws IOException, InterruptedException {
Process fetchVersionProcess = null;
try {
Expand Down Expand Up @@ -1011,7 +1015,7 @@ public void run() {
// list of available javac compilers, as defined by the jdk.roots
// variable, which should hold a File.pathSeparatorChar separated
// list of paths for to-be-tested JDK root directories
protected static List javacCompilers = null;
protected static List<JavacCompiler> javacCompilers = null;

public static final String OUTPUT_DIR = Util.getOutputDirectory() + File.separator + "regression";
public static final String LIB_DIR = Util.getOutputDirectory() + File.separator + "lib";
Expand Down Expand Up @@ -1864,7 +1868,15 @@ protected void runConformTest(
expectedSuccessOutputString,
null,
javacTestOptions);
}

protected static void javacUsePathOption(String option) {
if (AbstractRegressionTest.javacCompilers != null) {
for (JavacCompiler compiler : AbstractRegressionTest.javacCompilers) {
compiler.usePathOption(option);
}
}
}

/*
* Run Sun compilation using javac.
Expand Down Expand Up @@ -2179,9 +2191,9 @@ protected void runJavac(
}
}
String testName = testName();
Iterator compilers = javacCompilers.iterator();
Iterator<JavacCompiler> compilers = javacCompilers.iterator();
while (compilers.hasNext()) {
JavacCompiler compiler = (JavacCompiler) compilers.next();
JavacCompiler compiler = compilers.next();
if (!options.skip(compiler) && compiler.compliance == this.complianceLevel) {
// WORK this may exclude some compilers under some conditions (when
// complianceLevel is not set); consider accepting the compiler
Expand All @@ -2203,6 +2215,7 @@ protected void runJavac(
for (int i = 0, length = testFiles.length; i < length; ) {
String fileName = testFiles[i++];
String contents = testFiles[i++];
fileName = expandFileNameForJavac(fileName);
File file = new File(javacOutputDirectory, fileName);
if (fileName.lastIndexOf('/') >= 0) {
File dir = file.getParentFile();
Expand All @@ -2216,7 +2229,7 @@ protected void runJavac(
int testFilesLength = testFiles.length;
sourceFileNames = new String[testFilesLength / 2];
for (int i = 0, j = 0; i < testFilesLength; i += 2, j++) {
sourceFileNames[j] = testFiles[i];
sourceFileNames[j] = expandFileNameForJavac(testFiles[i]);
}

// compile
Expand Down Expand Up @@ -2319,6 +2332,10 @@ protected void runJavac(
}
}
}
/** Hook for AbstractRegressionTest9 */
protected String expandFileNameForJavac(String fileName) {
return fileName;
}
void handleMismatch(JavacCompiler compiler, String testName, String[] testFiles, String expectedCompilerLog,
String expectedOutputString, String expectedErrorString, StringBuffer compilerLog, String output, String err,
JavacTestOptions.Excuse excuse, int mismatch) {
Expand Down Expand Up @@ -3568,7 +3585,7 @@ protected void setUp() throws Exception {
System.out.println("* Sun Javac compiler output archived into file:");
System.out.println("* " + javacFullLogFileName);
System.out.println("***************************************************************************");
javacCompilers = new ArrayList();
javacCompilers = new ArrayList<>();
String jdkRoots = System.getProperty("jdk.roots");
if (jdkRoots == null) {
javacCompilers.add(new JavacCompiler(jdkRootDirPath.toString()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,18 @@ protected CompilationUnit[] getCompilationUnits(String[] testFiles) {
return compilationUnits;
}

/**
* javac cannot leverage our internal map {@code file2module}, so we better
* neatly place each file into a sub directory matching the module name.
*/
protected String expandFileNameForJavac(String fileName) {
String fileNameAsKey = fileName.replace(File.separator, "/");
if (this.file2module != null && this.file2module.containsKey(fileNameAsKey)) {
fileName = new String(this.file2module.get(fileNameAsKey))+File.separator+fileName;
}
return fileName;
}

private IModule extractModuleDesc(String fileName, String fileContent, ICompilationUnit cu) {
if (fileName.toLowerCase().endsWith(IModule.MODULE_INFO_JAVA)) {
Parser parser = createParser();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -688,7 +688,8 @@ public void testDeprecatedModule() {
runner.runNegativeTest();
}
public void testDeprecatedProvidedServices() {
associateToModule("mod0", "p1/IServiceDep.java", "p1/IServiceDepSince.java", "p1/IServiceTermDep.java", "p1/IServiceTermDepSince.java");
javacUsePathOption(" --module-source-path ");
associateToModule("mod0", "module-info.java", "p1/IServiceDep.java", "p1/IServiceDepSince.java", "p1/IServiceTermDep.java", "p1/IServiceTermDepSince.java");
associateToModule("mod1", "p1impl/ServiceDep.java", "p1impl/ServiceDepSince.java", "p1impl/ServiceTermDep.java", "p1impl/ServiceTermDepSince.java");
Runner runner = new Runner();
runner.customOptions = new HashMap<>();
Expand Down Expand Up @@ -732,7 +733,7 @@ public void testDeprecatedProvidedServices() {
"package p1impl;\n" +
"@Deprecated(since=\"3\",forRemoval=true)\n" +
"public class ServiceTermDepSince implements p1.IServiceTermDepSince {}\n",
"folder2/module-info.java",
"mod1/module-info.java",
"module mod1 {\n" +
" requires mod0;\n" +
" provides p1.IServiceDep with p1impl.ServiceDep;\n" +
Expand All @@ -743,49 +744,51 @@ public void testDeprecatedProvidedServices() {
};
runner.expectedCompilerLog =
"----------\n" +
"1. INFO in folder2\\module-info.java (at line 3)\n" +
"1. INFO in mod1\\module-info.java (at line 3)\n" +
" provides p1.IServiceDep with p1impl.ServiceDep;\n" +
" ^^^^^^^^^^^\n" +
"The type IServiceDep is deprecated\n" +
"----------\n" +
"2. INFO in folder2\\module-info.java (at line 3)\n" +
"2. INFO in mod1\\module-info.java (at line 3)\n" +
" provides p1.IServiceDep with p1impl.ServiceDep;\n" +
" ^^^^^^^^^^\n" +
"The type ServiceDep is deprecated\n" +
"----------\n" +
"3. INFO in folder2\\module-info.java (at line 4)\n" +
"3. INFO in mod1\\module-info.java (at line 4)\n" +
" provides p1.IServiceDepSince with p1impl.ServiceDepSince;\n" +
" ^^^^^^^^^^^^^^^^\n" +
"The type IServiceDepSince is deprecated since version 2\n" +
"----------\n" +
"4. INFO in folder2\\module-info.java (at line 4)\n" +
"4. INFO in mod1\\module-info.java (at line 4)\n" +
" provides p1.IServiceDepSince with p1impl.ServiceDepSince;\n" +
" ^^^^^^^^^^^^^^^\n" +
"The type ServiceDepSince is deprecated since version 2\n" +
"----------\n" +
"5. WARNING in folder2\\module-info.java (at line 5)\n" +
"5. WARNING in mod1\\module-info.java (at line 5)\n" +
" provides p1.IServiceTermDep with p1impl.ServiceTermDep;\n" +
" ^^^^^^^^^^^^^^^\n" +
"The type IServiceTermDep has been deprecated and marked for removal\n" +
"----------\n" +
"6. WARNING in folder2\\module-info.java (at line 5)\n" +
"6. WARNING in mod1\\module-info.java (at line 5)\n" +
" provides p1.IServiceTermDep with p1impl.ServiceTermDep;\n" +
" ^^^^^^^^^^^^^^\n" +
"The type ServiceTermDep has been deprecated and marked for removal\n" +
"----------\n" +
"7. WARNING in folder2\\module-info.java (at line 6)\n" +
"7. WARNING in mod1\\module-info.java (at line 6)\n" +
" provides p1.IServiceTermDepSince with p1impl.ServiceTermDepSince;\n" +
" ^^^^^^^^^^^^^^^^^^^^\n" +
"The type IServiceTermDepSince has been deprecated since version 3 and marked for removal\n" +
"----------\n" +
"8. WARNING in folder2\\module-info.java (at line 6)\n" +
"8. WARNING in mod1\\module-info.java (at line 6)\n" +
" provides p1.IServiceTermDepSince with p1impl.ServiceTermDepSince;\n" +
" ^^^^^^^^^^^^^^^^^^^\n" +
"The type ServiceTermDepSince has been deprecated since version 3 and marked for removal\n" +
"----------\n";
runner.runWarningTest();
}
public void testDeprecatedUsedServices() {
javacUsePathOption(" --module-path ");

associateToModule("mod0", "p1/IServiceDep.java", "p1/IServiceDepSince.java", "p1/IServiceTermDep.java", "p1/IServiceTermDepSince.java");
Runner runner = new Runner();
runner.customOptions = new HashMap<>();
Expand Down Expand Up @@ -888,6 +891,8 @@ public void testBug533063_1() throws Exception {
}
}
public void testBug533063_2() throws Exception {
javacUsePathOption(" --module-path ");

runConformTest(new String[] {
"dont.use/module-info.java",
"@Deprecated(forRemoval=true,since=\"9\") module dont.use {}\n"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -897,6 +897,8 @@ public void testBug537033() {
" }\n" +
"}\n"
},
this.complianceLevel < ClassFileConstants.JDK11
?
"----------\n" +
"1. WARNING in ShowBug.java (at line 9)\n" +
" final X x = new X() {\n" +
Expand All @@ -907,6 +909,13 @@ public void testBug537033() {
" x.x(val - 1);\n" +
" ^\n" +
"The local variable x may not have been initialized\n" +
"----------\n"
:
"----------\n" +
"1. ERROR in ShowBug.java (at line 13)\n" +
" x.x(val - 1);\n" +
" ^\n" +
"The local variable x may not have been initialized\n" +
"----------\n");
}
public static Class testClass() {
Expand Down
Loading

0 comments on commit db3d6e1

Please sign in to comment.