aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpeichhorn <peichhor@web.de>2011-07-14 10:38:16 +0200
committerpeichhorn <peichhor@web.de>2011-07-14 10:42:42 +0200
commit68b079d3129c8201fcffb898bf6155efdc393d0a (patch)
tree03f656204f303ab4aa0d13733de2bfc7a8a174ba
parent4b9a8142d0638d0098ec0e76cc791b65592f66c0 (diff)
downloadlombok-68b079d3129c8201fcffb898bf6155efdc393d0a.tar.gz
lombok-68b079d3129c8201fcffb898bf6155efdc393d0a.tar.bz2
lombok-68b079d3129c8201fcffb898bf6155efdc393d0a.zip
fixed Issue 233:
Javac parser handles ";" (empty statements) as empty blocks with an invalid position. Thats why delomok replaces ";" with "{}". This gets an issue when you use this in an interface, since interfaces are not allowed to have initializer blocks.
-rw-r--r--src/delombok/lombok/delombok/PrettyCommentsPrinter.java21
-rw-r--r--test/pretty/resource/after/Enum.java1
-rw-r--r--test/pretty/resource/after/Interfaces.java8
-rw-r--r--test/pretty/resource/before/Enum.java2
-rw-r--r--test/pretty/resource/before/Interfaces.java8
5 files changed, 31 insertions, 9 deletions
diff --git a/src/delombok/lombok/delombok/PrettyCommentsPrinter.java b/src/delombok/lombok/delombok/PrettyCommentsPrinter.java
index edff8637..c0f61650 100644
--- a/src/delombok/lombok/delombok/PrettyCommentsPrinter.java
+++ b/src/delombok/lombok/delombok/PrettyCommentsPrinter.java
@@ -103,6 +103,7 @@ import com.sun.tools.javac.tree.JCTree.TypeBoundKind;
import com.sun.tools.javac.util.Convert;
import com.sun.tools.javac.util.List;
import com.sun.tools.javac.util.Name;
+import com.sun.tools.javac.util.Position;
/** Prints out a tree as an indented Java source program.
*
@@ -480,14 +481,18 @@ public class PrettyCommentsPrinter extends JCTree.Visitor {
/** Print a block.
*/
public void printBlock(List<? extends JCTree> stats, JCTree container) throws IOException {
- print("{");
- println();
- indent();
- printStats(stats);
- consumeComments(endPos(container));
- undent();
- align();
- print("}");
+ if ((Position.NOPOS == container.pos) && stats.isEmpty()) {
+ print(";");
+ } else {
+ print("{");
+ println();
+ indent();
+ printStats(stats);
+ consumeComments(endPos(container));
+ undent();
+ align();
+ print("}");
+ }
}
/** Print a block.
diff --git a/test/pretty/resource/after/Enum.java b/test/pretty/resource/after/Enum.java
index dd738b5b..9968b457 100644
--- a/test/pretty/resource/after/Enum.java
+++ b/test/pretty/resource/after/Enum.java
@@ -3,6 +3,7 @@ enum Ranks {
HEARTS,
DIAMONDS,
SPADES;
+ ;
}
enum Complex {
RED("ff0000"),
diff --git a/test/pretty/resource/after/Interfaces.java b/test/pretty/resource/after/Interfaces.java
index c5008f2b..b620e038 100644
--- a/test/pretty/resource/after/Interfaces.java
+++ b/test/pretty/resource/after/Interfaces.java
@@ -1,5 +1,13 @@
@SuppressWarnings("all")
interface Interfaces {
+ enum Ranks {
+ CLUBS,
+ HEARTS,
+ DIAMONDS,
+ SPADES;
+ }
+ ;
+ ;
int x = 10;
void y();
int a = 20;
diff --git a/test/pretty/resource/before/Enum.java b/test/pretty/resource/before/Enum.java
index c1185d53..1cb979d0 100644
--- a/test/pretty/resource/before/Enum.java
+++ b/test/pretty/resource/before/Enum.java
@@ -1,5 +1,5 @@
enum Ranks {
- CLUBS, HEARTS, DIAMONDS, SPADES
+ CLUBS, HEARTS, DIAMONDS, SPADES;;
}
enum Complex {
diff --git a/test/pretty/resource/before/Interfaces.java b/test/pretty/resource/before/Interfaces.java
index c8a5cca4..360657ff 100644
--- a/test/pretty/resource/before/Interfaces.java
+++ b/test/pretty/resource/before/Interfaces.java
@@ -1,5 +1,13 @@
@SuppressWarnings("all")
interface Interfaces {
+ enum Ranks {
+ CLUBS,
+ HEARTS,
+ DIAMONDS,
+ SPADES;
+ }
+ ;
+ ;
int x = 10;
void y();
public static final int a = 20;