aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorReinier Zwitserloot <reinier@zwitserloot.com>2021-10-22 09:54:12 +0200
committerGitHub <noreply@github.com>2021-10-22 09:54:12 +0200
commit341c458f108d4bb207e32c6e61647ca673526a6e (patch)
treef65f76f8c838a73f5f91f8efe0811c6b019857bb /test
parent13d84b129e562fdc71b049778c3b3bd2376e29a4 (diff)
parent553b25addde4fab136258f7718e274a98bfbe34a (diff)
downloadlombok-341c458f108d4bb207e32c6e61647ca673526a6e.tar.gz
lombok-341c458f108d4bb207e32c6e61647ca673526a6e.tar.bz2
lombok-341c458f108d4bb207e32c6e61647ca673526a6e.zip
Merge pull request #3007 from Rawi01/eclipse-junit
Resolve var/val only once in eclipse
Diffstat (limited to 'test')
-rw-r--r--test/core/src/lombok/DirectoryRunner.java3
-rw-r--r--test/core/src/lombok/RunTestsViaEcj.java26
-rw-r--r--test/transform/resource/after-delombok/ValInvalidParameter.java29
-rw-r--r--test/transform/resource/after-ecj/ValErrors.java4
-rw-r--r--test/transform/resource/after-ecj/ValInvalidParameter.java29
-rw-r--r--test/transform/resource/before/ValInvalidParameter.java32
-rw-r--r--test/transform/resource/messages-delombok/ValInvalidParameter.java.messages1
-rw-r--r--test/transform/resource/messages-ecj/ValErrors.java.messages6
-rw-r--r--test/transform/resource/messages-ecj/ValInBasicFor.java.messages6
-rw-r--r--test/transform/resource/messages-ecj/ValInvalidParameter.java.messages9
-rw-r--r--test/transform/resource/messages-idempotent/ValInvalidParameter.java.messages9
11 files changed, 139 insertions, 15 deletions
diff --git a/test/core/src/lombok/DirectoryRunner.java b/test/core/src/lombok/DirectoryRunner.java
index b041c42e..53347e24 100644
--- a/test/core/src/lombok/DirectoryRunner.java
+++ b/test/core/src/lombok/DirectoryRunner.java
@@ -55,7 +55,8 @@ public class DirectoryRunner extends Runner {
},
ECJ {
@Override public int getVersion() {
- return Eclipse.getEcjCompilerVersion();
+ String javaVersionString = System.getProperty("compiler.compliance.level");
+ return javaVersionString != null ? Integer.parseInt(javaVersionString) : Eclipse.getEcjCompilerVersion();
}
};
diff --git a/test/core/src/lombok/RunTestsViaEcj.java b/test/core/src/lombok/RunTestsViaEcj.java
index afba8c7f..6137de49 100644
--- a/test/core/src/lombok/RunTestsViaEcj.java
+++ b/test/core/src/lombok/RunTestsViaEcj.java
@@ -64,9 +64,22 @@ import org.osgi.framework.BundleContext;
public class RunTestsViaEcj extends AbstractRunTests {
protected CompilerOptions ecjCompilerOptions() {
CompilerOptions options = new CompilerOptions();
- options.complianceLevel = Eclipse.getLatestEcjCompilerVersionConstant();
- options.sourceLevel = Eclipse.getLatestEcjCompilerVersionConstant();
- options.targetJDK = Eclipse.getLatestEcjCompilerVersionConstant();
+ Map<String, String> warnings = new HashMap<String, String>();
+
+ String javaVersionString = System.getProperty("compiler.compliance.level");
+ long ecjCompilerVersionConstant = Eclipse.getLatestEcjCompilerVersionConstant();
+ long ecjCompilerVersion = Eclipse.getEcjCompilerVersion();
+ if (javaVersionString != null) {
+ long javaVersion = Long.parseLong(javaVersionString);
+ ecjCompilerVersionConstant = (javaVersion + 44) << 16;
+ ecjCompilerVersion = javaVersion;
+ } else {
+ // Preview features are only allowed if the maximum compiler version is equal to the source version
+ warnings.put("org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures", "enabled");
+ }
+ options.complianceLevel = ecjCompilerVersionConstant;
+ options.sourceLevel = ecjCompilerVersionConstant;
+ options.targetJDK = ecjCompilerVersionConstant;
options.docCommentSupport = false;
options.parseLiteralExpressionsAsConstants = true;
options.inlineJsrBytecode = true;
@@ -78,17 +91,14 @@ public class RunTestsViaEcj extends AbstractRunTests {
options.reportUnusedParameterWhenOverridingConcrete = false;
options.reportDeadCodeInTrivialIfStatement = false;
options.generateClassFiles = false;
- Map<String, String> warnings = new HashMap<String, String>();
warnings.put(CompilerOptions.OPTION_ReportUnusedLocal, "ignore");
warnings.put(CompilerOptions.OPTION_ReportUnusedLabel, "ignore");
warnings.put(CompilerOptions.OPTION_ReportUnusedImport, "ignore");
warnings.put(CompilerOptions.OPTION_ReportUnusedPrivateMember, "ignore");
warnings.put(CompilerOptions.OPTION_ReportIndirectStaticAccess, "warning");
warnings.put(CompilerOptions.OPTION_ReportNonStaticAccessToStatic, "warning");
- warnings.put("org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures", "enabled");
warnings.put("org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures", "ignore");
- int ecjVersion = Eclipse.getEcjCompilerVersion();
- warnings.put(CompilerOptions.OPTION_Source, (ecjVersion < 9 ? "1." : "") + ecjVersion);
+ warnings.put(CompilerOptions.OPTION_Source, (ecjCompilerVersion < 9 ? "1." : "") + ecjCompilerVersion);
options.set(warnings);
return options;
}
@@ -96,7 +106,7 @@ public class RunTestsViaEcj extends AbstractRunTests {
protected IErrorHandlingPolicy ecjErrorHandlingPolicy() {
return new IErrorHandlingPolicy() {
public boolean stopOnFirstError() {
- return true;
+ return false;
}
public boolean proceedOnErrors() {
diff --git a/test/transform/resource/after-delombok/ValInvalidParameter.java b/test/transform/resource/after-delombok/ValInvalidParameter.java
new file mode 100644
index 00000000..f3d4229c
--- /dev/null
+++ b/test/transform/resource/after-delombok/ValInvalidParameter.java
@@ -0,0 +1,29 @@
+public class ValInvalidParameter {
+ public void val() {
+ final java.lang.Object a = a(new NonExistingClass());
+ final java.lang.Object b = a(a(new NonExistingClass()));
+ final java.lang.Object c = nonExisitingMethod(b(1));
+ final java.lang.Object d = nonExistingObject.nonExistingMethod();
+ final java.lang.Object e = b(1).nonExistingMethod();
+ final java.lang.Object f = 1 > 2 ? a(new NonExistingClass()) : a(new NonExistingClass());
+ final java.lang.Object g = b2(1);
+ final java.lang.Integer h = b2(a("a"), a(null));
+ final int i = a(a(null));
+ }
+
+ public int a(String param) {
+ return 0;
+ }
+
+ public int a(Integer param) {
+ return 0;
+ }
+
+ public Integer b(int i) {
+ return i;
+ }
+
+ public Integer b2(int i, int j) {
+ return i;
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/after-ecj/ValErrors.java b/test/transform/resource/after-ecj/ValErrors.java
index 1bd61f87..19c2facd 100644
--- a/test/transform/resource/after-ecj/ValErrors.java
+++ b/test/transform/resource/after-ecj/ValErrors.java
@@ -4,9 +4,9 @@ public class ValErrors {
super();
}
public void unresolvableExpression() {
- val c = d;
+ final @val java.lang.Object c = d;
}
public void arrayInitializer() {
- val e = {"foo", "bar"};
+ final @val java.lang.Object e = {"foo", "bar"};
}
} \ No newline at end of file
diff --git a/test/transform/resource/after-ecj/ValInvalidParameter.java b/test/transform/resource/after-ecj/ValInvalidParameter.java
new file mode 100644
index 00000000..14549aa7
--- /dev/null
+++ b/test/transform/resource/after-ecj/ValInvalidParameter.java
@@ -0,0 +1,29 @@
+import lombok.val;
+public class ValInvalidParameter {
+ public ValInvalidParameter() {
+ super();
+ }
+ public void val() {
+ final @val java.lang.Object a = a(new NonExistingClass());
+ final @val java.lang.Object b = a(a(new NonExistingClass()));
+ final @val java.lang.Object c = nonExisitingMethod(b(1));
+ final @val java.lang.Object d = nonExistingObject.nonExistingMethod();
+ final @val java.lang.Object e = b(1).nonExistingMethod();
+ final @val java.lang.Object f = ((1 > 2) ? a(new NonExistingClass()) : a(new NonExistingClass()));
+ final @val java.lang.Object g = b2(1);
+ final @val java.lang.Object h = b2(a("a"), a(null));
+ final @val java.lang.Object i = a(a(null));
+ }
+ public int a(String param) {
+ return 0;
+ }
+ public int a(Integer param) {
+ return 0;
+ }
+ public Integer b(int i) {
+ return i;
+ }
+ public Integer b2(int i, int j) {
+ return i;
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/before/ValInvalidParameter.java b/test/transform/resource/before/ValInvalidParameter.java
new file mode 100644
index 00000000..f4961c4e
--- /dev/null
+++ b/test/transform/resource/before/ValInvalidParameter.java
@@ -0,0 +1,32 @@
+//version :9
+import lombok.val;
+
+public class ValInvalidParameter {
+ public void val() {
+ val a = a(new NonExistingClass());
+ val b = a(a(new NonExistingClass()));
+ val c = nonExisitingMethod(b(1));
+ val d = nonExistingObject.nonExistingMethod();
+ val e = b(1).nonExistingMethod();
+ val f = 1 > 2 ? a(new NonExistingClass()) : a(new NonExistingClass());
+ val g = b2(1);
+ val h = b2(a("a"), a(null));
+ val i = a(a(null));
+ }
+
+ public int a(String param) {
+ return 0;
+ }
+
+ public int a(Integer param) {
+ return 0;
+ }
+
+ public Integer b(int i) {
+ return i;
+ }
+
+ public Integer b2(int i, int j) {
+ return i;
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/messages-delombok/ValInvalidParameter.java.messages b/test/transform/resource/messages-delombok/ValInvalidParameter.java.messages
new file mode 100644
index 00000000..da0df315
--- /dev/null
+++ b/test/transform/resource/messages-delombok/ValInvalidParameter.java.messages
@@ -0,0 +1 @@
+12 Cannot use 'val' here because initializer expression does not have a representable type: Type cannot be resolved \ No newline at end of file
diff --git a/test/transform/resource/messages-ecj/ValErrors.java.messages b/test/transform/resource/messages-ecj/ValErrors.java.messages
index c4c76901..9fcec493 100644
--- a/test/transform/resource/messages-ecj/ValErrors.java.messages
+++ b/test/transform/resource/messages-ecj/ValErrors.java.messages
@@ -1,2 +1,4 @@
-6 d cannot be resolved to a variable
-10 'val' is not compatible with array initializer expressions. Use the full form (new int[] { ... } instead of just { ... })
+7 d cannot be resolved to a variable
+7 d cannot be resolved or is not a field
+11 'val' is not compatible with array initializer expressions. Use the full form (new int[] { ... } instead of just { ... })
+11 Type mismatch: cannot convert from String[] to Object \ No newline at end of file
diff --git a/test/transform/resource/messages-ecj/ValInBasicFor.java.messages b/test/transform/resource/messages-ecj/ValInBasicFor.java.messages
index b32eabe4..00bc643f 100644
--- a/test/transform/resource/messages-ecj/ValInBasicFor.java.messages
+++ b/test/transform/resource/messages-ecj/ValInBasicFor.java.messages
@@ -1,2 +1,4 @@
-7 'val' is not allowed in old-style for loops
-7 Type mismatch: cannot convert from int to val
+8 'val' is not allowed in old-style for loops
+8 Type mismatch: cannot convert from int to val
+8 Type mismatch: cannot convert from String to val
+8 Type mismatch: cannot convert from double to val \ No newline at end of file
diff --git a/test/transform/resource/messages-ecj/ValInvalidParameter.java.messages b/test/transform/resource/messages-ecj/ValInvalidParameter.java.messages
new file mode 100644
index 00000000..cbf2d7c4
--- /dev/null
+++ b/test/transform/resource/messages-ecj/ValInvalidParameter.java.messages
@@ -0,0 +1,9 @@
+5 NonExistingClass cannot be resolved to a type
+6 NonExistingClass cannot be resolved to a type
+7 The method nonExisitingMethod(Integer) is undefined for the type ValInvalidParameter
+8 nonExistingObject cannot be resolved
+9 The method nonExistingMethod() is undefined for the type Integer
+10 NonExistingClass cannot be resolved to a type
+11 The method b2(int, int) in the type ValInvalidParameter is not applicable for the arguments (int)
+12 The method a(String) is ambiguous for the type ValInvalidParameter
+13 The method a(String) is ambiguous for the type ValInvalidParameter \ No newline at end of file
diff --git a/test/transform/resource/messages-idempotent/ValInvalidParameter.java.messages b/test/transform/resource/messages-idempotent/ValInvalidParameter.java.messages
new file mode 100644
index 00000000..539d29cd
--- /dev/null
+++ b/test/transform/resource/messages-idempotent/ValInvalidParameter.java.messages
@@ -0,0 +1,9 @@
+3 cannot find symbol
+4 cannot find symbol
+5 cannot find symbol
+6 cannot find symbol
+7 cannot find symbol
+8 cannot find symbol
+9 method b2 in class ValInvalidParameter cannot be applied to given types;
+10 reference to a is ambiguous
+11 reference to a is ambiguous \ No newline at end of file