diff options
| author | Reinier Zwitserloot <reinier@zwitserloot.com> | 2010-07-22 01:33:24 +0200 |
|---|---|---|
| committer | Reinier Zwitserloot <reinier@zwitserloot.com> | 2010-07-22 01:33:24 +0200 |
| commit | 483e23d3853aa37a19390019fcf0db97ac8bc1d4 (patch) | |
| tree | 1794c6fc66136f962ee4c9c6a229e39c0af827e5 | |
| parent | 59e585a0c68959eb72be34524bdad19df5dc8a4d (diff) | |
| download | lombok-483e23d3853aa37a19390019fcf0db97ac8bc1d4.tar.gz lombok-483e23d3853aa37a19390019fcf0db97ac8bc1d4.tar.bz2 lombok-483e23d3853aa37a19390019fcf0db97ac8bc1d4.zip | |
Added tests for ecj, fixed a few minor bugs that came out of that.
50 files changed, 1180 insertions, 34 deletions
diff --git a/src/core/lombok/eclipse/handlers/HandleEqualsAndHashCode.java b/src/core/lombok/eclipse/handlers/HandleEqualsAndHashCode.java index 2142618f..e501c3f1 100644 --- a/src/core/lombok/eclipse/handlers/HandleEqualsAndHashCode.java +++ b/src/core/lombok/eclipse/handlers/HandleEqualsAndHashCode.java @@ -527,6 +527,7 @@ public class HandleEqualsAndHashCode implements EclipseAnnotationHandler<EqualsA /* MyType<?> other = (MyType<?>) o; */ { if (!fields.isEmpty()) { LocalDeclaration other = new LocalDeclaration(otherN, pS, pE); + other.modifiers |= ClassFileConstants.AccFinal; Eclipse.setGeneratedBy(other, source); char[] typeName = typeDecl.name; Expression targetType; diff --git a/src/core/lombok/javac/handlers/HandleEqualsAndHashCode.java b/src/core/lombok/javac/handlers/HandleEqualsAndHashCode.java index 20ede725..ee049f1f 100644 --- a/src/core/lombok/javac/handlers/HandleEqualsAndHashCode.java +++ b/src/core/lombok/javac/handlers/HandleEqualsAndHashCode.java @@ -412,7 +412,7 @@ public class HandleEqualsAndHashCode implements JavacAnnotationHandler<EqualsAnd } else /* objects */ { /* if (this.fieldName == null ? other.fieldName != null : !this.fieldName.equals(other.fieldName)) return false; */ JCExpression thisEqualsNull = maker.Binary(JCTree.EQ, thisFieldAccessor, maker.Literal(TypeTags.BOT, null)); - JCExpression otherNotEqualsNull = maker.Binary(JCTree.NE, thisFieldAccessor, maker.Literal(TypeTags.BOT, null)); + JCExpression otherNotEqualsNull = maker.Binary(JCTree.NE, otherFieldAccessor, maker.Literal(TypeTags.BOT, null)); JCExpression thisEqualsThat = maker.Apply(List.<JCExpression>nil(), maker.Select(createFieldAccessor(maker, fieldNode, useFieldsDirectly), typeNode.toName("equals")), List.of(createFieldAccessor(maker, fieldNode, useFieldsDirectly, maker.Ident(otherName)))); diff --git a/src/core/lombok/javac/handlers/HandleSneakyThrows.java b/src/core/lombok/javac/handlers/HandleSneakyThrows.java index fda8805c..b2337f67 100644 --- a/src/core/lombok/javac/handlers/HandleSneakyThrows.java +++ b/src/core/lombok/javac/handlers/HandleSneakyThrows.java @@ -102,7 +102,7 @@ public class HandleSneakyThrows implements JavacAnnotationHandler<SneakyThrows> JCExpression varType = chainDots(maker, node, exception.split("\\.")); - JCVariableDecl catchParam = maker.VarDef(maker.Modifiers(0), node.toName("$ex"), varType, null); + JCVariableDecl catchParam = maker.VarDef(maker.Modifiers(Flags.FINAL), node.toName("$ex"), varType, null); JCExpression lombokLombokSneakyThrowNameRef = chainDots(maker, node, "lombok", "Lombok", "sneakyThrow"); JCBlock catchBody = maker.Block(0, List.<JCStatement>of(maker.Throw(maker.Apply( List.<JCExpression>nil(), lombokLombokSneakyThrowNameRef, diff --git a/test/core/src/lombok/AbstractRunTests.java b/test/core/src/lombok/AbstractRunTests.java index ad9c45af..4241646b 100644 --- a/test/core/src/lombok/AbstractRunTests.java +++ b/test/core/src/lombok/AbstractRunTests.java @@ -83,6 +83,10 @@ public abstract class AbstractRunTests { System.out.println(expectedFile); System.out.println("**** Actual ******"); System.out.println(actualFile); + if (actualMessages != null && !actualMessages.isEmpty()) { + System.out.println("**** Actual Errors *****"); + System.out.println(actualMessages); + } System.out.println("*******************"); } throw e; diff --git a/test/core/src/lombok/RunTestsViaDelombok.java b/test/core/src/lombok/RunTestsViaDelombok.java index 7f99b99e..50fad33e 100644 --- a/test/core/src/lombok/RunTestsViaDelombok.java +++ b/test/core/src/lombok/RunTestsViaDelombok.java @@ -24,6 +24,8 @@ package lombok; import java.io.File; import java.io.StringWriter; import java.util.Locale; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import javax.tools.Diagnostic; import javax.tools.DiagnosticListener; @@ -35,14 +37,17 @@ public class RunTestsViaDelombok extends AbstractRunTests { private Delombok delombok = new Delombok(); @Override - public void transformCode(final StringBuilder messages, StringWriter result, File file) throws Throwable { + public void transformCode(final StringBuilder messages, StringWriter result, final File file) throws Throwable { delombok.setVerbose(false); delombok.setForceProcess(true); delombok.setCharset("UTF-8"); delombok.setDiagnosticsListener(new DiagnosticListener<JavaFileObject>() { @Override public void report(Diagnostic<? extends JavaFileObject> d) { - messages.append(String.format("%d:%d %s %s\n", d.getLineNumber(), d.getColumnNumber(), d.getKind(), d.getMessage(Locale.ENGLISH))); + String msg = d.getMessage(Locale.ENGLISH); + Matcher m = Pattern.compile("^" + Pattern.quote(file.getAbsolutePath()) + "\\s*:\\s*\\d+\\s*:\\s*(?:warning:\\s*)?(.*)$").matcher(msg); + if (m.matches()) msg = m.group(1); + messages.append(String.format("%d:%d %s %s\n", d.getLineNumber(), d.getColumnNumber(), d.getKind(), msg)); } }); diff --git a/test/core/src/lombok/RunTestsViaEcj.java b/test/core/src/lombok/RunTestsViaEcj.java index 3f7d6e81..fa1501bc 100644 --- a/test/core/src/lombok/RunTestsViaEcj.java +++ b/test/core/src/lombok/RunTestsViaEcj.java @@ -47,8 +47,10 @@ public class RunTestsViaEcj extends AbstractRunTests { TransformEclipseAST.transform(parser, cud); - for (CategorizedProblem p : compilationResult.getErrors()) { - messages.append(p.toString()).append("\n"); + CategorizedProblem[] problems = compilationResult.getAllProblems(); + + if (problems != null) for (CategorizedProblem p : problems) { + messages.append(String.format("%d %s %s\n", p.getSourceLineNumber(), p.isError() ? "error" : p.isWarning() ? "warning" : "unknown", p.getMessage())); } result.append(cud.toString()); diff --git a/test/transform/resource/after-delombok/GetterWithDollar.java b/test/transform/resource/after-delombok/GetterWithDollar.java index 9e02ccb8..520f4ea5 100644 --- a/test/transform/resource/after-delombok/GetterWithDollar.java +++ b/test/transform/resource/after-delombok/GetterWithDollar.java @@ -1,7 +1,7 @@ class GetterWithDollar1 { int $i; @java.lang.SuppressWarnings("all") - public int getI() { + public int get$i() { return this.$i; } } @@ -9,6 +9,10 @@ class GetterWithDollar2 { int $i; int i; @java.lang.SuppressWarnings("all") + public int get$i() { + return this.$i; + } + @java.lang.SuppressWarnings("all") public int getI() { return this.i; } diff --git a/test/transform/resource/after-delombok/NonNullPlain.java b/test/transform/resource/after-delombok/NonNullPlain.java index 19869db1..0c58425c 100644 --- a/test/transform/resource/after-delombok/NonNullPlain.java +++ b/test/transform/resource/after-delombok/NonNullPlain.java @@ -3,15 +3,15 @@ class NonNullPlain { int i; @lombok.NonNull String s; + @java.lang.SuppressWarnings("all") + public void setI(@lombok.NonNull final int i) { + this.i = i; + } @lombok.NonNull @java.lang.SuppressWarnings("all") public int getI() { return this.i; } - @java.lang.SuppressWarnings("all") - public void setI(@lombok.NonNull final int i) { - this.i = i; - } @lombok.NonNull @java.lang.SuppressWarnings("all") public String getS() { diff --git a/test/transform/resource/after-delombok/SetterWithDollar.java b/test/transform/resource/after-delombok/SetterWithDollar.java index c26a1ccd..974efdcd 100644 --- a/test/transform/resource/after-delombok/SetterWithDollar.java +++ b/test/transform/resource/after-delombok/SetterWithDollar.java @@ -1,14 +1,20 @@ class SetterWithDollar1 { int $i; - public void setI(final int i) { - this.$i = i; + @java.lang.SuppressWarnings("all") + public void set$i(final int $i) { + this.$i = $i; } } class SetterWithDollar2 { int $i; int i; + @java.lang.SuppressWarnings("all") + public void set$i(final int $i) { + this.$i = $i; + } + @java.lang.SuppressWarnings("all") public void setI(final int i) { this.i = i; } diff --git a/test/transform/resource/after-delombok/SneakyThrowsMultiple.java b/test/transform/resource/after-delombok/SneakyThrowsMultiple.java index bab13990..42b275c6 100644 --- a/test/transform/resource/after-delombok/SneakyThrowsMultiple.java +++ b/test/transform/resource/after-delombok/SneakyThrowsMultiple.java @@ -7,10 +7,10 @@ class SneakyThrowsMultiple { try { System.out.println("test1"); throw new IOException(); - } catch (IOException $ex) { + } catch (final IOException $ex) { throw lombok.Lombok.sneakyThrow($ex); } - } catch (Throwable $ex) { + } catch (final Throwable $ex) { throw lombok.Lombok.sneakyThrow($ex); } } @@ -23,10 +23,10 @@ class SneakyThrowsMultiple { } else { throw new AWTException("WHAT"); } - } catch (AWTException $ex) { + } catch (final AWTException $ex) { throw lombok.Lombok.sneakyThrow($ex); } - } catch (IOException $ex) { + } catch (final IOException $ex) { throw lombok.Lombok.sneakyThrow($ex); } } @@ -35,10 +35,10 @@ class SneakyThrowsMultiple { try { System.out.println("test3"); throw new IOException(); - } catch (IOException $ex) { + } catch (final IOException $ex) { throw lombok.Lombok.sneakyThrow($ex); } - } catch (Throwable $ex) { + } catch (final Throwable $ex) { throw lombok.Lombok.sneakyThrow($ex); } } diff --git a/test/transform/resource/after-delombok/SneakyThrowsPlain.java b/test/transform/resource/after-delombok/SneakyThrowsPlain.java index d5abc478..28c39b40 100644 --- a/test/transform/resource/after-delombok/SneakyThrowsPlain.java +++ b/test/transform/resource/after-delombok/SneakyThrowsPlain.java @@ -2,7 +2,7 @@ class SneakyThrowsPlain { public void test() { try { System.out.println("test1"); - } catch (java.lang.Throwable $ex) { + } catch (final java.lang.Throwable $ex) { throw lombok.Lombok.sneakyThrow($ex); } } @@ -10,7 +10,7 @@ class SneakyThrowsPlain { public void test2() { try { System.out.println("test2"); - } catch (java.lang.Throwable $ex) { + } catch (final java.lang.Throwable $ex) { throw lombok.Lombok.sneakyThrow($ex); } } diff --git a/test/transform/resource/after-delombok/SneakyThrowsSingle.java b/test/transform/resource/after-delombok/SneakyThrowsSingle.java index 519d06a9..8901f827 100644 --- a/test/transform/resource/after-delombok/SneakyThrowsSingle.java +++ b/test/transform/resource/after-delombok/SneakyThrowsSingle.java @@ -3,7 +3,7 @@ class SneakyThrowsSingle { public void test() { try { System.out.println("test1"); - } catch (Throwable $ex) { + } catch (final Throwable $ex) { throw lombok.Lombok.sneakyThrow($ex); } } @@ -11,7 +11,7 @@ class SneakyThrowsSingle { try { System.out.println("test2"); throw new IOException(); - } catch (IOException $ex) { + } catch (final IOException $ex) { throw lombok.Lombok.sneakyThrow($ex); } } @@ -19,7 +19,7 @@ class SneakyThrowsSingle { try { System.out.println("test3"); throw new IOException(); - } catch (IOException $ex) { + } catch (final IOException $ex) { throw lombok.Lombok.sneakyThrow($ex); } } diff --git a/test/transform/resource/after-delombok/SynchronizedName.java b/test/transform/resource/after-delombok/SynchronizedName.java index 066e3bdf..e7dd23ff 100644 --- a/test/transform/resource/after-delombok/SynchronizedName.java +++ b/test/transform/resource/after-delombok/SynchronizedName.java @@ -2,7 +2,7 @@ class SynchronizedName { private Object read = new Object(); private static Object READ = new Object(); void test1() { - synchronized (read) { + synchronized (this.read) { System.out.println("one"); } } @@ -10,15 +10,17 @@ class SynchronizedName { System.out.println("two"); } static void test3() { - System.out.println("three"); + synchronized (SynchronizedName.read) { + System.out.println("three"); + } } void test4() { - synchronized (READ) { + synchronized (this.READ) { System.out.println("four"); } } void test5() { - synchronized (read) { + synchronized (this.read) { System.out.println("five"); } } diff --git a/test/transform/resource/after-ecj/ClassNamedAfterGetter.java b/test/transform/resource/after-ecj/ClassNamedAfterGetter.java new file mode 100644 index 00000000..fdb6f122 --- /dev/null +++ b/test/transform/resource/after-ecj/ClassNamedAfterGetter.java @@ -0,0 +1,9 @@ +class GetFoo { + private @lombok.Getter int foo; + GetFoo() { + super(); + } + public @java.lang.SuppressWarnings("all") int getFoo() { + return this.foo; + } +} diff --git a/test/transform/resource/after-ecj/CleanupName.java b/test/transform/resource/after-ecj/CleanupName.java new file mode 100644 index 00000000..944a81e1 --- /dev/null +++ b/test/transform/resource/after-ecj/CleanupName.java @@ -0,0 +1,27 @@ +class CleanupName { + CleanupName() { + super(); + } + void test() { + @lombok.Cleanup("toString") Object o = "Hello World!"; + try + { + System.out.println(o); + } + finally + { + o.toString(); + } + } + void test2() { + @lombok.Cleanup(value = "toString") Object o = "Hello World too!"; + try + { + System.out.println(o); + } + finally + { + o.toString(); + } + } +}
\ No newline at end of file diff --git a/test/transform/resource/after-ecj/CleanupPlain.java b/test/transform/resource/after-ecj/CleanupPlain.java new file mode 100644 index 00000000..6754b4f6 --- /dev/null +++ b/test/transform/resource/after-ecj/CleanupPlain.java @@ -0,0 +1,29 @@ +import lombok.Cleanup; +import java.io.*; +class CleanupPlain { + CleanupPlain() { + super(); + } + void test() throws Exception { + @lombok.Cleanup InputStream in = new FileInputStream("in"); + try + { + @Cleanup OutputStream out = new FileOutputStream("out"); + try + { + if (in.markSupported()) + { + out.flush(); + } + } + finally + { + out.close(); + } + } + finally + { + in.close(); + } + } +}
\ No newline at end of file diff --git a/test/transform/resource/after-ecj/CommentsInterspersed.java b/test/transform/resource/after-ecj/CommentsInterspersed.java new file mode 100644 index 00000000..d708ad72 --- /dev/null +++ b/test/transform/resource/after-ecj/CommentsInterspersed.java @@ -0,0 +1,12 @@ +import lombok.Getter; +public class CommentsInterspersed { + private int x; + private @Getter String test = "foo"; + public CommentsInterspersed() { + super(); + } + public native void gwtTest(); + public @java.lang.SuppressWarnings("all") String getTest() { + return this.test; + } +} diff --git a/test/transform/resource/after-ecj/DataExtended.java b/test/transform/resource/after-ecj/DataExtended.java new file mode 100644 index 00000000..b7be8bcf --- /dev/null +++ b/test/transform/resource/after-ecj/DataExtended.java @@ -0,0 +1,33 @@ +@lombok.Data @lombok.ToString(doNotUseGetters = true) class DataExtended { + int x; + public @java.lang.SuppressWarnings("all") DataExtended() { + super(); + } + public @java.lang.SuppressWarnings("all") int getX() { + return this.x; + } + public @java.lang.SuppressWarnings("all") void setX(final int x) { + this.x = x; + } + public @java.lang.Override @java.lang.SuppressWarnings("all") boolean equals(final java.lang.Object o) { + if ((o == this)) + return true; + if ((o == null)) + return false; + if ((o.getClass() != this.getClass())) + return false; + final DataExtended other = (DataExtended) o; + if ((this.getX() != other.getX())) + return false; + return true; + } + public @java.lang.Override @java.lang.SuppressWarnings("all") int hashCode() { + final int PRIME = 31; + int result = 1; + result = ((result * PRIME) + this.getX()); + return result; + } + public @java.lang.Override @java.lang.SuppressWarnings("all") java.lang.String toString() { + return (("DataExtended(x=" + this.x) + ")"); + } +} diff --git a/test/transform/resource/after-ecj/DataIgnore.java b/test/transform/resource/after-ecj/DataIgnore.java new file mode 100644 index 00000000..df2254c8 --- /dev/null +++ b/test/transform/resource/after-ecj/DataIgnore.java @@ -0,0 +1,32 @@ +@lombok.Data class DataIgnore { + final int x; + String $name; + public @java.beans.ConstructorProperties({"x"}) @java.lang.SuppressWarnings("all") DataIgnore(final int x) { + super(); + this.x = x; + } + public @java.lang.SuppressWarnings("all") int getX() { + return this.x; + } + public @java.lang.Override @java.lang.SuppressWarnings("all") boolean equals(final java.lang.Object o) { + if ((o == this)) + return true; + if ((o == null)) + return false; + if ((o.getClass() != this.getClass())) + return false; + final DataIgnore other = (DataIgnore) o; + if ((this.getX() != other.getX())) + return false; + return true; + } + public @java.lang.Override @java.lang.SuppressWarnings("all") int hashCode() { + final int PRIME = 31; + int result = 1; + result = ((result * PRIME) + this.getX()); + return result; + } + public @java.lang.Override @java.lang.SuppressWarnings("all") java.lang.String toString() { + return (("DataIgnore(x=" + this.getX()) + ")"); + } +} diff --git a/test/transform/resource/after-ecj/DataPlain.java b/test/transform/resource/after-ecj/DataPlain.java new file mode 100644 index 00000000..b6e385f3 --- /dev/null +++ b/test/transform/resource/after-ecj/DataPlain.java @@ -0,0 +1,83 @@ +import lombok.Data; +@lombok.Data class Data1 { + final int x; + String name; + public @java.beans.ConstructorProperties({"x"}) @java.lang.SuppressWarnings("all") Data1(final int x) { + super(); + this.x = x; + } + public @java.lang.SuppressWarnings("all") int getX() { + return this.x; + } + public @java.lang.SuppressWarnings("all") String getName() { + return this.name; + } + public @java.lang.SuppressWarnings("all") void setName(final String name) { + this.name = name; + } + public @java.lang.Override @java.lang.SuppressWarnings("all") boolean equals(final java.lang.Object o) { + if ((o == this)) + return true; + if ((o == null)) + return false; + if ((o.getClass() != this.getClass())) + return false; + final Data1 other = (Data1) o; + if ((this.getX() != other.getX())) + return false; + if (((this.getName() == null) ? (other.getName() != null) : (! this.getName().equals(other.getName())))) |
