Wed, 19 Jun 2013 13:00:00 +0100
Merge
src/share/classes/com/sun/tools/javac/comp/Check.java | file | annotate | diff | comparison | revisions |
1.1 --- a/src/share/classes/com/sun/tools/javac/code/Flags.java Wed Jun 19 11:48:05 2013 +0100 1.2 +++ b/src/share/classes/com/sun/tools/javac/code/Flags.java Wed Jun 19 13:00:00 2013 +0100 1.3 @@ -32,6 +32,8 @@ 1.4 1.5 import javax.lang.model.element.Modifier; 1.6 1.7 +import com.sun.tools.javac.util.Assert; 1.8 + 1.9 /** Access flags and other modifiers for Java classes and members. 1.10 * 1.11 * <p><b>This is NOT part of any supported API. 1.12 @@ -46,53 +48,29 @@ 1.13 public static String toString(long flags) { 1.14 StringBuilder buf = new StringBuilder(); 1.15 String sep = ""; 1.16 - for (Flag s : asFlagSet(flags)) { 1.17 + for (Flag flag : asFlagSet(flags)) { 1.18 buf.append(sep); 1.19 - buf.append(s); 1.20 + buf.append(flag); 1.21 sep = " "; 1.22 } 1.23 return buf.toString(); 1.24 } 1.25 1.26 - public static EnumSet<Flag> asFlagSet(long mask) { 1.27 - EnumSet<Flag> flags = EnumSet.noneOf(Flag.class); 1.28 - if ((mask&PUBLIC) != 0) flags.add(Flag.PUBLIC); 1.29 - if ((mask&PRIVATE) != 0) flags.add(Flag.PRIVATE); 1.30 - if ((mask&PROTECTED) != 0) flags.add(Flag.PROTECTED); 1.31 - if ((mask&STATIC) != 0) flags.add(Flag.STATIC); 1.32 - if ((mask&FINAL) != 0) flags.add(Flag.FINAL); 1.33 - if ((mask&SYNCHRONIZED) != 0) flags.add(Flag.SYNCHRONIZED); 1.34 - if ((mask&VOLATILE) != 0) flags.add(Flag.VOLATILE); 1.35 - if ((mask&TRANSIENT) != 0) flags.add(Flag.TRANSIENT); 1.36 - if ((mask&NATIVE) != 0) flags.add(Flag.NATIVE); 1.37 - if ((mask&INTERFACE) != 0) flags.add(Flag.INTERFACE); 1.38 - if ((mask&ABSTRACT) != 0) flags.add(Flag.ABSTRACT); 1.39 - if ((mask&DEFAULT) != 0) flags.add(Flag.DEFAULT); 1.40 - if ((mask&STRICTFP) != 0) flags.add(Flag.STRICTFP); 1.41 - if ((mask&BRIDGE) != 0) flags.add(Flag.BRIDGE); 1.42 - if ((mask&SYNTHETIC) != 0) flags.add(Flag.SYNTHETIC); 1.43 - if ((mask&DEPRECATED) != 0) flags.add(Flag.DEPRECATED); 1.44 - if ((mask&HASINIT) != 0) flags.add(Flag.HASINIT); 1.45 - if ((mask&ENUM) != 0) flags.add(Flag.ENUM); 1.46 - if ((mask&MANDATED) != 0) flags.add(Flag.MANDATED); 1.47 - if ((mask&IPROXY) != 0) flags.add(Flag.IPROXY); 1.48 - if ((mask&NOOUTERTHIS) != 0) flags.add(Flag.NOOUTERTHIS); 1.49 - if ((mask&EXISTS) != 0) flags.add(Flag.EXISTS); 1.50 - if ((mask&COMPOUND) != 0) flags.add(Flag.COMPOUND); 1.51 - if ((mask&CLASS_SEEN) != 0) flags.add(Flag.CLASS_SEEN); 1.52 - if ((mask&SOURCE_SEEN) != 0) flags.add(Flag.SOURCE_SEEN); 1.53 - if ((mask&LOCKED) != 0) flags.add(Flag.LOCKED); 1.54 - if ((mask&UNATTRIBUTED) != 0) flags.add(Flag.UNATTRIBUTED); 1.55 - if ((mask&ANONCONSTR) != 0) flags.add(Flag.ANONCONSTR); 1.56 - if ((mask&ACYCLIC) != 0) flags.add(Flag.ACYCLIC); 1.57 - if ((mask&PARAMETER) != 0) flags.add(Flag.PARAMETER); 1.58 - if ((mask&VARARGS) != 0) flags.add(Flag.VARARGS); 1.59 - return flags; 1.60 + public static EnumSet<Flag> asFlagSet(long flags) { 1.61 + EnumSet<Flag> flagSet = EnumSet.noneOf(Flag.class); 1.62 + for (Flag flag : Flag.values()) { 1.63 + if ((flags & flag.value) != 0) { 1.64 + flagSet.add(flag); 1.65 + flags &= ~flag.value; 1.66 + } 1.67 + } 1.68 + Assert.check(flags == 0, "Flags parameter contains unknown flags " + flags); 1.69 + return flagSet; 1.70 } 1.71 1.72 /* Standard Java flags. 1.73 */ 1.74 - public static final int PUBLIC = 1<<0; 1.75 + public static final int PUBLIC = 1; 1.76 public static final int PRIVATE = 1<<1; 1.77 public static final int PROTECTED = 1<<2; 1.78 public static final int STATIC = 1<<3; 1.79 @@ -154,9 +132,9 @@ 1.80 1.81 /** Flag is set for nested classes that do not access instance members 1.82 * or `this' of an outer class and therefore don't need to be passed 1.83 - * a this$n reference. This flag is currently set only for anonymous 1.84 + * a this$n reference. This value is currently set only for anonymous 1.85 * classes in superclass constructor calls and only for pre 1.4 targets. 1.86 - * todo: use this flag for optimizing away this$n parameters in 1.87 + * todo: use this value for optimizing away this$n parameters in 1.88 * other cases. 1.89 */ 1.90 public static final int NOOUTERTHIS = 1<<22; 1.91 @@ -342,49 +320,65 @@ 1.92 return symbol.getConstValue() != null; 1.93 } 1.94 1.95 + 1.96 public enum Flag { 1.97 + PUBLIC(Flags.PUBLIC), 1.98 + PRIVATE(Flags.PRIVATE), 1.99 + PROTECTED(Flags.PROTECTED), 1.100 + STATIC(Flags.STATIC), 1.101 + FINAL(Flags.FINAL), 1.102 + SYNCHRONIZED(Flags.SYNCHRONIZED), 1.103 + VOLATILE(Flags.VOLATILE), 1.104 + TRANSIENT(Flags.TRANSIENT), 1.105 + NATIVE(Flags.NATIVE), 1.106 + INTERFACE(Flags.INTERFACE), 1.107 + ABSTRACT(Flags.ABSTRACT), 1.108 + DEFAULT(Flags.DEFAULT), 1.109 + STRICTFP(Flags.STRICTFP), 1.110 + BRIDGE(Flags.BRIDGE), 1.111 + SYNTHETIC(Flags.SYNTHETIC), 1.112 + ANNOTATION(Flags.ANNOTATION), 1.113 + DEPRECATED(Flags.DEPRECATED), 1.114 + HASINIT(Flags.HASINIT), 1.115 + BLOCK(Flags.BLOCK), 1.116 + ENUM(Flags.ENUM), 1.117 + MANDATED(Flags.MANDATED), 1.118 + IPROXY(Flags.IPROXY), 1.119 + NOOUTERTHIS(Flags.NOOUTERTHIS), 1.120 + EXISTS(Flags.EXISTS), 1.121 + COMPOUND(Flags.COMPOUND), 1.122 + CLASS_SEEN(Flags.CLASS_SEEN), 1.123 + SOURCE_SEEN(Flags.SOURCE_SEEN), 1.124 + LOCKED(Flags.LOCKED), 1.125 + UNATTRIBUTED(Flags.UNATTRIBUTED), 1.126 + ANONCONSTR(Flags.ANONCONSTR), 1.127 + ACYCLIC(Flags.ACYCLIC), 1.128 + PARAMETER(Flags.PARAMETER), 1.129 + VARARGS(Flags.VARARGS), 1.130 + ACYCLIC_ANN(Flags.ACYCLIC_ANN), 1.131 + GENERATEDCONSTR(Flags.GENERATEDCONSTR), 1.132 + HYPOTHETICAL(Flags.HYPOTHETICAL), 1.133 + PROPRIETARY(Flags.PROPRIETARY), 1.134 + UNION(Flags.UNION), 1.135 + OVERRIDE_BRIDGE(Flags.OVERRIDE_BRIDGE), 1.136 + EFFECTIVELY_FINAL(Flags.EFFECTIVELY_FINAL), 1.137 + CLASH(Flags.CLASH), 1.138 + AUXILIARY(Flags.AUXILIARY), 1.139 + NOT_IN_PROFILE(Flags.NOT_IN_PROFILE), 1.140 + BAD_OVERRIDE(Flags.BAD_OVERRIDE); 1.141 1.142 - PUBLIC("public"), 1.143 - PRIVATE("private"), 1.144 - PROTECTED("protected"), 1.145 - STATIC("static"), 1.146 - FINAL("final"), 1.147 - SYNCHRONIZED("synchronized"), 1.148 - VOLATILE("volatile"), 1.149 - TRANSIENT("transient"), 1.150 - NATIVE("native"), 1.151 - INTERFACE("interface"), 1.152 - ABSTRACT("abstract"), 1.153 - DEFAULT("default"), 1.154 - STRICTFP("strictfp"), 1.155 - BRIDGE("bridge"), 1.156 - SYNTHETIC("synthetic"), 1.157 - DEPRECATED("deprecated"), 1.158 - HASINIT("hasinit"), 1.159 - ENUM("enum"), 1.160 - MANDATED("mandated"), 1.161 - IPROXY("iproxy"), 1.162 - NOOUTERTHIS("noouterthis"), 1.163 - EXISTS("exists"), 1.164 - COMPOUND("compound"), 1.165 - CLASS_SEEN("class_seen"), 1.166 - SOURCE_SEEN("source_seen"), 1.167 - LOCKED("locked"), 1.168 - UNATTRIBUTED("unattributed"), 1.169 - ANONCONSTR("anonconstr"), 1.170 - ACYCLIC("acyclic"), 1.171 - PARAMETER("parameter"), 1.172 - VARARGS("varargs"), 1.173 - PACKAGE("package"); 1.174 - 1.175 - private final String name; 1.176 - 1.177 - Flag(String name) { 1.178 - this.name = name; 1.179 + Flag(long flag) { 1.180 + this.value = flag; 1.181 + this.lowercaseName = name().toLowerCase(); 1.182 } 1.183 1.184 + @Override 1.185 public String toString() { 1.186 - return name; 1.187 + return lowercaseName; 1.188 } 1.189 + 1.190 + final long value; 1.191 + final String lowercaseName; 1.192 } 1.193 + 1.194 }
2.1 --- a/src/share/classes/com/sun/tools/javac/comp/Check.java Wed Jun 19 11:48:05 2013 +0100 2.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Check.java Wed Jun 19 13:00:00 2013 +0100 2.3 @@ -1619,7 +1619,7 @@ 2.4 log.error(TreeInfo.diagnosticPositionFor(m, tree), "override.weaker.access", 2.5 cannotOverride(m, other), 2.6 other.flags() == 0 ? 2.7 - Flag.PACKAGE : 2.8 + "package" : 2.9 asFlagSet(other.flags() & AccessFlags)); 2.10 m.flags_field |= BAD_OVERRIDE; 2.11 return;