1.1 --- a/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java Fri Apr 29 16:05:56 2011 +0100 1.2 +++ b/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java Fri Apr 29 16:06:28 2011 +0100 1.3 @@ -1609,18 +1609,31 @@ 1.4 // type.tsym.flatName() should == proxy.enumFlatName 1.5 TypeSymbol enumTypeSym = proxy.enumType.tsym; 1.6 VarSymbol enumerator = null; 1.7 - for (Scope.Entry e = enumTypeSym.members().lookup(proxy.enumerator); 1.8 - e.scope != null; 1.9 - e = e.next()) { 1.10 - if (e.sym.kind == VAR) { 1.11 - enumerator = (VarSymbol)e.sym; 1.12 - break; 1.13 + CompletionFailure failure = null; 1.14 + try { 1.15 + for (Scope.Entry e = enumTypeSym.members().lookup(proxy.enumerator); 1.16 + e.scope != null; 1.17 + e = e.next()) { 1.18 + if (e.sym.kind == VAR) { 1.19 + enumerator = (VarSymbol)e.sym; 1.20 + break; 1.21 + } 1.22 } 1.23 } 1.24 + catch (CompletionFailure ex) { 1.25 + failure = ex; 1.26 + } 1.27 if (enumerator == null) { 1.28 - log.error("unknown.enum.constant", 1.29 - currentClassFile, enumTypeSym, proxy.enumerator); 1.30 - result = new Attribute.Error(enumTypeSym.type); 1.31 + if (failure != null) { 1.32 + log.warning("unknown.enum.constant.reason", 1.33 + currentClassFile, enumTypeSym, proxy.enumerator, 1.34 + failure.getDiagnostic()); 1.35 + } else { 1.36 + log.warning("unknown.enum.constant", 1.37 + currentClassFile, enumTypeSym, proxy.enumerator); 1.38 + } 1.39 + result = new Attribute.Enum(enumTypeSym.type, 1.40 + new VarSymbol(0, proxy.enumerator, syms.botType, enumTypeSym)); 1.41 } else { 1.42 result = new Attribute.Enum(enumTypeSym.type, enumerator); 1.43 }