Fixes issue #56 - annotations with shorthand parameters on methods in method-local classes failed to parse correctly due to a (rare) boneheaded design in the javac tree.

Also had a bunch of code in doing raw introspection of the Annotation ASTNode. It wasn't doing anything other than causing bugs and cluttering the code. Removed it.
This commit is contained in:
Reinier Zwitserloot committed 2009-10-16 11:52:21 +02:00
1 parent 2d3b98e847
commit fdcdcc89d8
2 files changed
+4 -15

No files matched your search

+4 -2
View File
@@ -33,6 +33,8 @@ import java.util.Map;
/**
* Represents a single annotation in a source file and can be used to query the parameters present on it.
*
* @param A The annotation that this class represents, such as {@code lombok.Getter}
*/
public class AnnotationValues<A extends Annotation> {
private final Class<A> type;
@@ -295,9 +297,9 @@ public class AnnotationValues<A extends Annotation> {
}
/**
* Returns the raw expressions used for the provided annotationMethodName.
* Returns the raw expressions used for the provided {@code annotationMethodName}.
*
* You should use this method for annotation methods that return Class objects. Remember that
* You should use this method for annotation methods that return {@code Class} objects. Remember that
* class literals end in ".class" which you probably want to strip off.
*/
public List<String> getRawExpressions(String annotationMethodName) {
@@ -36,11 +36,9 @@ import org.mangosdk.spi.ProviderFor;
import com.sun.tools.javac.code.Flags;
import com.sun.tools.javac.tree.TreeMaker;
import com.sun.tools.javac.tree.JCTree.JCAnnotation;
import com.sun.tools.javac.tree.JCTree.JCAssign;
import com.sun.tools.javac.tree.JCTree.JCBlock;
import com.sun.tools.javac.tree.JCTree.JCExpression;
import com.sun.tools.javac.tree.JCTree.JCMethodDecl;
import com.sun.tools.javac.tree.JCTree.JCNewArray;
import com.sun.tools.javac.tree.JCTree.JCStatement;
import com.sun.tools.javac.tree.JCTree.JCVariableDecl;
import com.sun.tools.javac.util.List;
@@ -56,17 +54,6 @@ public class HandleSneakyThrows implements JavacAnnotationHandler<SneakyThrows>
List<JCExpression> memberValuePairs = ast.getArguments();
if (memberValuePairs == null || memberValuePairs.size() == 0) return false;
JCExpression arrayOrSingle = ((JCAssign)memberValuePairs.get(0)).rhs;
final List<JCExpression> exceptionNameNodes;
if (arrayOrSingle instanceof JCNewArray) {
exceptionNameNodes = ((JCNewArray)arrayOrSingle).elems;
} else exceptionNameNodes = List.of(arrayOrSingle);
if (exceptionNames.size() != exceptionNameNodes.size()) {
annotationNode.addError(
"LOMBOK BUG: The number of exception classes in the annotation isn't the same pre- and post- guessing.");
}
java.util.List<String> exceptions = new ArrayList<String>();
for (String exception : exceptionNames) {
if (exception.endsWith(".class")) exception = exception.substring(0, exception.length() - 6);