aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobbert Jan Grootjans <grootjans@gmail.com>2012-03-05 21:12:39 +0100
committerRobbert Jan Grootjans <grootjans@gmail.com>2012-03-05 21:12:39 +0100
commitd39623693b779634ea8b25cdc9792bc1ca3c880e (patch)
treed2365f9d463b6a302854baae3738f745238b2938
parentf1e679471d5dfadcd983476bda0bca61c86dc71c (diff)
parent1ac79bf86b3a11f34ad7f154f1062541052b114d (diff)
downloadlombok-d39623693b779634ea8b25cdc9792bc1ca3c880e.tar.gz
lombok-d39623693b779634ea8b25cdc9792bc1ca3c880e.tar.bz2
lombok-d39623693b779634ea8b25cdc9792bc1ca3c880e.zip
Merge branch 'master' of github.com:rzwitserloot/lombok
Conflicts: doc/changelog.markdown
-rw-r--r--AUTHORS1
-rw-r--r--doc/changelog.markdown1
-rw-r--r--src/core/lombok/javac/handlers/HandleDelegate.java3
-rw-r--r--src/eclipseAgent/lombok/eclipse/agent/PatchDelegate.java18
-rw-r--r--test/core/src/lombok/RunTestsViaDelombok.java8
-rw-r--r--test/transform/resource/after-delombok/DelegateWithDeprecated.java24
-rw-r--r--test/transform/resource/after-ecj/DelegateWithDeprecated.java21
-rw-r--r--test/transform/resource/before/DelegateWithDeprecated.java13
8 files changed, 71 insertions, 18 deletions
diff --git a/AUTHORS b/AUTHORS
index 851f526b..8758bf40 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -6,5 +6,6 @@ Reinier Zwitserloot <reinier@zwitserloot.com>
Robbert Jan Grootjans <grootjans@gmail.com>
Roel Spilker <r.spilker@gmail.com>
Sander Koning <askoning@gmail.com>
+Taiki Sugawara <buzz.taiki@gmail.com>
By adding your name to this list, you grant full and irrevocable copyright and patent indemnity to Project Lombok and all use of Project Lombok, and you certify that you have the right to do so for all commits you add to Project Lombok.
diff --git a/doc/changelog.markdown b/doc/changelog.markdown
index a92c19a4..5d32c204 100644
--- a/doc/changelog.markdown
+++ b/doc/changelog.markdown
@@ -7,6 +7,7 @@ Lombok Changelog
* BUGFIX: Using `val` with a type like `Outer<TypeArgs>.Inner` now works. [Issue #343](http://code.google.com/p/projectlombok/issues/detail?id=343)
* BUGFIX: `@Getter(lazy=true)` where the variable type is a primitive and the initializing expression is of a different primitive type that would type coerce implicitly, i.e. ints can be assigned to longs without a cast, didn't work before. [Issue #345](http://code.google.com/p/projectlombok/issues/detail?id=345)
* BUGFIX: `val` is no longer legal inside basic for loops (the old kind, not the foreach kind). These variables should rarely be final, and in practice it wasn't possible to delombok this code properly. [Issue #346](http://code.google.com/p/projectlombok/issues/detail?id=346)
+* BUGFIX: @Delegate would not generate @Deprecated on methods marked deprecated in javadoc [Issue #348](http://code.google.com/p/projectlombok/issues/detail?id=348)
* BUGFIX: PrettyCommentsPrinter now prints default clause of annotation methods. Fixes [Issue #350](http://code.google.com/p/projectlombok/issues/detail?id=350)
### v0.10.8 (January 19th, 2012)
diff --git a/src/core/lombok/javac/handlers/HandleDelegate.java b/src/core/lombok/javac/handlers/HandleDelegate.java
index 41e587f8..18817d49 100644
--- a/src/core/lombok/javac/handlers/HandleDelegate.java
+++ b/src/core/lombok/javac/handlers/HandleDelegate.java
@@ -22,6 +22,7 @@
package lombok.javac.handlers;
import static lombok.javac.handlers.JavacHandlerUtil.*;
+import static com.sun.tools.javac.code.Flags.*;
import java.util.ArrayList;
import java.util.Arrays;
@@ -335,7 +336,7 @@ public class HandleDelegate extends JavacAnnotationHandler<Delegate> {
ExecutableType methodType = (ExecutableType) types.asMemberOf(ct, member);
String sig = printSig(methodType, member.name, types);
if (!banList.add(sig)) continue; //If add returns false, it was already in there
- boolean isDeprecated = exElem.getAnnotation(Deprecated.class) != null;
+ boolean isDeprecated = (member.flags() & DEPRECATED) != 0;
signatures.add(new MethodSig(member.name, methodType, isDeprecated, exElem));
}
diff --git a/src/eclipseAgent/lombok/eclipse/agent/PatchDelegate.java b/src/eclipseAgent/lombok/eclipse/agent/PatchDelegate.java
index 87335b4e..acf1589d 100644
--- a/src/eclipseAgent/lombok/eclipse/agent/PatchDelegate.java
+++ b/src/eclipseAgent/lombok/eclipse/agent/PatchDelegate.java
@@ -21,8 +21,8 @@
*/
package lombok.eclipse.agent;
-import static lombok.eclipse.handlers.EclipseHandlerUtil.*;
import static lombok.eclipse.Eclipse.*;
+import static lombok.eclipse.handlers.EclipseHandlerUtil.*;
import java.lang.reflect.Method;
import java.util.ArrayList;
@@ -65,7 +65,6 @@ import org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
import org.eclipse.jdt.internal.compiler.ast.TypeParameter;
import org.eclipse.jdt.internal.compiler.ast.TypeReference;
import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
-import org.eclipse.jdt.internal.compiler.lookup.AnnotationBinding;
import org.eclipse.jdt.internal.compiler.lookup.ArrayBinding;
import org.eclipse.jdt.internal.compiler.lookup.BaseTypeBinding;
import org.eclipse.jdt.internal.compiler.lookup.Binding;
@@ -416,19 +415,6 @@ public class PatchDelegate {
}
}
- private static boolean hasDeprecatedAnnotation(MethodBinding binding) {
- AnnotationBinding[] annotations = binding.getAnnotations();
- if (annotations != null) for (AnnotationBinding ann : annotations) {
- ReferenceBinding annType = ann.getAnnotationType();
- char[] pkg = annType.qualifiedPackageName();
- char[] src = annType.qualifiedSourceName();
-
- if (charArrayEquals("java.lang", pkg) && charArrayEquals("Deprecated", src)) return true;
- }
-
- return false;
- }
-
public static void checkConflictOfTypeVarNames(BindingTuple binding, EclipseNode typeNode) throws CantMakeDelegates {
TypeVariableBinding[] typeVars = binding.parameterized.typeVariables();
if (typeVars == null || typeVars.length == 0) return;
@@ -581,7 +567,7 @@ public class PatchDelegate {
method.modifiers = ClassFileConstants.AccPublic;
method.returnType = makeType(binding.returnType, source, false);
- boolean isDeprecated = hasDeprecatedAnnotation(binding);
+ boolean isDeprecated = binding.isDeprecated();
method.selector = binding.selector;
diff --git a/test/core/src/lombok/RunTestsViaDelombok.java b/test/core/src/lombok/RunTestsViaDelombok.java
index bde74434..52653e2e 100644
--- a/test/core/src/lombok/RunTestsViaDelombok.java
+++ b/test/core/src/lombok/RunTestsViaDelombok.java
@@ -56,6 +56,12 @@ public class RunTestsViaDelombok extends AbstractRunTests {
delombok.addFile(file.getAbsoluteFile().getParentFile(), file.getName());
delombok.setSourcepath(file.getAbsoluteFile().getParent());
delombok.setWriter(result);
- delombok.delombok();
+ Locale originalLocale = Locale.getDefault();
+ try {
+ Locale.setDefault(Locale.ENGLISH);
+ delombok.delombok();
+ } finally {
+ Locale.setDefault(originalLocale);
+ }
}
}
diff --git a/test/transform/resource/after-delombok/DelegateWithDeprecated.java b/test/transform/resource/after-delombok/DelegateWithDeprecated.java
new file mode 100644
index 00000000..04e12160
--- /dev/null
+++ b/test/transform/resource/after-delombok/DelegateWithDeprecated.java
@@ -0,0 +1,24 @@
+class DelegateWithDeprecated {
+ private Bar bar;
+ private interface Bar {
+ @Deprecated
+ void deprecatedAnnotation();
+ /** @deprecated */
+ void deprecatedComment();
+ void notDeprecated();
+ }
+ @java.lang.Deprecated
+ @java.lang.SuppressWarnings("all")
+ public void deprecatedAnnotation() {
+ this.bar.deprecatedAnnotation();
+ }
+ @java.lang.Deprecated
+ @java.lang.SuppressWarnings("all")
+ public void deprecatedComment() {
+ this.bar.deprecatedComment();
+ }
+ @java.lang.SuppressWarnings("all")
+ public void notDeprecated() {
+ this.bar.notDeprecated();
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/after-ecj/DelegateWithDeprecated.java b/test/transform/resource/after-ecj/DelegateWithDeprecated.java
new file mode 100644
index 00000000..2a4fdf98
--- /dev/null
+++ b/test/transform/resource/after-ecj/DelegateWithDeprecated.java
@@ -0,0 +1,21 @@
+import lombok.Delegate;
+class DelegateWithDeprecated {
+ private interface Bar {
+ @Deprecated void deprecatedAnnotation();
+ void deprecatedComment();
+ void notDeprecated();
+ }
+ private @Delegate Bar bar;
+ public @java.lang.Deprecated @java.lang.SuppressWarnings("all") void deprecatedAnnotation() {
+ this.bar.deprecatedAnnotation();
+ }
+ public @java.lang.Deprecated @java.lang.SuppressWarnings("all") void deprecatedComment() {
+ this.bar.deprecatedComment();
+ }
+ public @java.lang.SuppressWarnings("all") void notDeprecated() {
+ this.bar.notDeprecated();
+ }
+ DelegateWithDeprecated() {
+ super();
+ }
+} \ No newline at end of file
diff --git a/test/transform/resource/before/DelegateWithDeprecated.java b/test/transform/resource/before/DelegateWithDeprecated.java
new file mode 100644
index 00000000..b748c6ec
--- /dev/null
+++ b/test/transform/resource/before/DelegateWithDeprecated.java
@@ -0,0 +1,13 @@
+import lombok.Delegate;
+
+class DelegateWithDeprecated {
+ @Delegate private Bar bar;
+
+ private interface Bar {
+ @Deprecated
+ void deprecatedAnnotation();
+ /** @deprecated */
+ void deprecatedComment();
+ void notDeprecated();
+ }
+} \ No newline at end of file