< prev index next >
src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java
Print this page
@@ -34,10 +34,11 @@
import com.sun.tools.javac.code.Lint.LintCategory;
import com.sun.tools.javac.code.Scope.ImportFilter;
import com.sun.tools.javac.code.Scope.NamedImportScope;
import com.sun.tools.javac.code.Scope.StarImportScope;
import com.sun.tools.javac.code.Scope.WriteableScope;
+import com.sun.tools.javac.comp.Annotate.AnnotationTypeMetadata;
import com.sun.tools.javac.tree.*;
import com.sun.tools.javac.util.*;
import com.sun.tools.javac.util.DefinedBy.Api;
import com.sun.tools.javac.code.Symbol.*;
@@ -133,10 +134,11 @@
source = Source.instance(context);
deferredLintHandler = DeferredLintHandler.instance(context);
lint = Lint.instance(context);
typeEnvs = TypeEnvs.instance(context);
dependencies = Dependencies.instance(context);
+ Source source = Source.instance(context);
allowTypeAnnos = source.allowTypeAnnotations();
allowDeprecationOnImport = source.allowDeprecationOnImport();
}
/** Switch: support type annotations.
@@ -182,11 +184,11 @@
sym.completer = this;
return;
}
try {
- annotate.enterStart();
+ enter.enterStart();
sym.flags_field |= UNATTRIBUTED;
List<Env<AttrContext>> queue;
dependencies.push((ClassSymbol) sym, CompletionCause.MEMBER_ENTER);
@@ -204,11 +206,11 @@
finishImports(env.toplevel, () -> {});
}
}
}
} finally {
- annotate.enterDone();
+ enter.enterDone();
}
}
void finishImports(JCCompilationUnit toplevel, Runnable resolve) {
JavaFileObject prev = log.useSource(toplevel.sourcefile);
@@ -782,13 +784,13 @@
// create an environment for evaluating the base clauses
Env<AttrContext> baseEnv = baseEnv(tree, env);
if (tree.extending != null)
- annotate.annotateTypeLater(tree.extending, baseEnv, sym, tree.pos());
+ annotate.queueScanTreeAndTypeAnnotate(tree.extending, baseEnv, sym, tree.pos());
for (JCExpression impl : tree.implementing)
- annotate.annotateTypeLater(impl, baseEnv, sym, tree.pos());
+ annotate.queueScanTreeAndTypeAnnotate(impl, baseEnv, sym, tree.pos());
annotate.flush();
attribSuperTypes(env, baseEnv);
Set<Type> interfaceSet = new HashSet<>();
@@ -802,11 +804,11 @@
annotate.annotateLater(tree.mods.annotations, baseEnv,
sym, tree.pos());
attr.attribTypeVariables(tree.typarams, baseEnv);
for (JCTypeParameter tp : tree.typarams)
- annotate.annotateTypeLater(tp, baseEnv, sym, tree.pos());
+ annotate.queueScanTreeAndTypeAnnotate(tp, baseEnv, sym, tree.pos());
// check that no package exists with same fully qualified name,
// but admit classes in the unnamed package which have the same
// name as a top-level package.
if (checkClash &&
@@ -901,10 +903,15 @@
if ((tree.mods.flags & Flags.ENUM) != 0 &&
(types.supertype(tree.sym.type).tsym.flags() & Flags.ENUM) == 0) {
addEnumMembers(tree, env);
}
memberEnter.memberEnter(tree.defs, env);
+
+ if (tree.sym.isAnnotationType()) {
+ Assert.checkNull(tree.sym.completer);
+ tree.sym.setAnnotationTypeMetadata(new AnnotationTypeMetadata(tree.sym, annotate.annotationTypeSourceCompleter()));
+ }
}
/** Add the implicit members for an enum type
* to the symbol table.
*/
< prev index next >