--- a/langtools/src/share/classes/com/sun/tools/javac/code/Symbol.java Mon Sep 12 11:40:07 2011 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/code/Symbol.java Tue Sep 13 14:14:57 2011 +0100
@@ -149,7 +149,8 @@
* the default package; otherwise, the owner symbol is returned
*/
public Symbol location() {
- if (owner.name == null || (owner.name.isEmpty() && owner.kind != PCK && owner.kind != TYP)) {
+ if (owner.name == null || (owner.name.isEmpty() &&
+ (owner.flags() & BLOCK) == 0 && owner.kind != PCK && owner.kind != TYP)) {
return null;
}
return owner;
@@ -1299,10 +1300,17 @@
return ElementKind.CONSTRUCTOR;
else if (name == name.table.names.clinit)
return ElementKind.STATIC_INIT;
+ else if ((flags() & BLOCK) != 0)
+ return isStatic() ? ElementKind.STATIC_INIT : ElementKind.INSTANCE_INIT;
else
return ElementKind.METHOD;
}
+ public boolean isStaticOrInstanceInit() {
+ return getKind() == ElementKind.STATIC_INIT ||
+ getKind() == ElementKind.INSTANCE_INIT;
+ }
+
public Attribute getDefaultValue() {
return defaultValue;
}