--- a/langtools/src/share/classes/com/sun/tools/javac/code/TypeAnnotations.java Mon Oct 14 12:38:09 2013 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/code/TypeAnnotations.java Mon Oct 14 22:11:09 2013 +0200
@@ -50,6 +50,7 @@
import com.sun.tools.javac.code.Symbol.MethodSymbol;
import com.sun.tools.javac.comp.Annotate;
import com.sun.tools.javac.comp.Annotate.Annotator;
+import com.sun.tools.javac.comp.Attr;
import com.sun.tools.javac.comp.AttrContext;
import com.sun.tools.javac.comp.Env;
import com.sun.tools.javac.tree.JCTree;
@@ -95,6 +96,7 @@
final Names names;
final Symtab syms;
final Annotate annotate;
+ final Attr attr;
private final boolean typeAnnoAsserts;
protected TypeAnnotations(Context context) {
@@ -103,6 +105,7 @@
log = Log.instance(context);
syms = Symtab.instance(context);
annotate = Annotate.instance(context);
+ attr = Attr.instance(context);
Options options = Options.instance(context);
typeAnnoAsserts = options.isSet("TypeAnnotationAsserts");
}
@@ -131,6 +134,21 @@
} );
}
+ public void validateTypeAnnotationsSignatures(final Env<AttrContext> env, final JCClassDecl tree) {
+ annotate.validate(new Annotator() { //validate annotations
+ @Override
+ public void enterAnnotation() {
+ JavaFileObject oldSource = log.useSource(env.toplevel.sourcefile);
+
+ try {
+ attr.validateTypeAnnotations(tree, true);
+ } finally {
+ log.useSource(oldSource);
+ }
+ }
+ } );
+ }
+
/**
* This version only visits types in bodies, that is, field initializers,
* top-level blocks, and method bodies, and should be called from Attr.