--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java Wed Nov 23 16:16:36 2016 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java Thu Dec 01 09:02:42 2016 +0000
@@ -28,6 +28,7 @@
import java.lang.annotation.Annotation;
import java.lang.annotation.Inherited;
import java.util.Collections;
+import java.util.EnumSet;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.Callable;
@@ -47,6 +48,7 @@
import javax.tools.JavaFileObject;
import com.sun.tools.javac.code.ClassFinder.BadEnclosingMethodAttr;
+import com.sun.tools.javac.code.Directive.RequiresFlag;
import com.sun.tools.javac.code.Kinds.Kind;
import com.sun.tools.javac.comp.Annotate.AnnotationTypeMetadata;
import com.sun.tools.javac.code.Scope.WriteableScope;
@@ -359,6 +361,10 @@
return (flags_field & DEPRECATED) != 0;
}
+ public boolean hasDeprecatedAnnotation() {
+ return (flags_field & DEPRECATED_ANNOTATION) != 0;
+ }
+
public boolean isDeprecatedForRemoval() {
return (flags_field & DEPRECATED_REMOVAL) != 0;
}
@@ -907,6 +913,7 @@
public List<com.sun.tools.javac.code.Directive> directives;
public List<com.sun.tools.javac.code.Directive.RequiresDirective> requires;
public List<com.sun.tools.javac.code.Directive.ExportsDirective> exports;
+ public List<com.sun.tools.javac.code.Directive.OpensDirective> opens;
public List<com.sun.tools.javac.code.Directive.ProvidesDirective> provides;
public List<com.sun.tools.javac.code.Directive.UsesDirective> uses;
@@ -917,6 +924,7 @@
public List<Symbol> enclosedPackages = List.nil();
public Completer usesProvidesCompleter = Completer.NULL_COMPLETER;
+ public final Set<ModuleFlags> flags = EnumSet.noneOf(ModuleFlags.class);
/**
* Create a ModuleSymbol with an associated module-info ClassSymbol.
@@ -942,6 +950,11 @@
return name.isEmpty() && owner == null;
}
+ @Override
+ public boolean isDeprecated() {
+ return hasDeprecatedAnnotation();
+ }
+
public boolean isNoModule() {
return false;
}
@@ -1007,6 +1020,26 @@
}
+ public enum ModuleFlags {
+ OPEN(0x0020),
+ SYNTHETIC(0x1000),
+ MANDATED(0x8000);
+
+ public static int value(Set<ModuleFlags> s) {
+ int v = 0;
+ for (ModuleFlags f: s)
+ v |= f.value;
+ return v;
+ }
+
+ private ModuleFlags(int value) {
+ this.value = value;
+ }
+
+ public final int value;
+
+ }
+
/** A class for package symbols
*/
public static class PackageSymbol extends TypeSymbol