langtools/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java
changeset 9603 fa337b87574b
parent 9082 53409a3a93f8
child 11053 48713f779b1d
equal deleted inserted replaced
9602:5efe2fa1581a 9603:fa337b87574b
  1607 
  1607 
  1608         public void visitEnumAttributeProxy(EnumAttributeProxy proxy) {
  1608         public void visitEnumAttributeProxy(EnumAttributeProxy proxy) {
  1609             // type.tsym.flatName() should == proxy.enumFlatName
  1609             // type.tsym.flatName() should == proxy.enumFlatName
  1610             TypeSymbol enumTypeSym = proxy.enumType.tsym;
  1610             TypeSymbol enumTypeSym = proxy.enumType.tsym;
  1611             VarSymbol enumerator = null;
  1611             VarSymbol enumerator = null;
  1612             for (Scope.Entry e = enumTypeSym.members().lookup(proxy.enumerator);
  1612             CompletionFailure failure = null;
  1613                  e.scope != null;
  1613             try {
  1614                  e = e.next()) {
  1614                 for (Scope.Entry e = enumTypeSym.members().lookup(proxy.enumerator);
  1615                 if (e.sym.kind == VAR) {
  1615                      e.scope != null;
  1616                     enumerator = (VarSymbol)e.sym;
  1616                      e = e.next()) {
  1617                     break;
  1617                     if (e.sym.kind == VAR) {
  1618                 }
  1618                         enumerator = (VarSymbol)e.sym;
       
  1619                         break;
       
  1620                     }
       
  1621                 }
       
  1622             }
       
  1623             catch (CompletionFailure ex) {
       
  1624                 failure = ex;
  1619             }
  1625             }
  1620             if (enumerator == null) {
  1626             if (enumerator == null) {
  1621                 log.error("unknown.enum.constant",
  1627                 if (failure != null) {
  1622                           currentClassFile, enumTypeSym, proxy.enumerator);
  1628                     log.warning("unknown.enum.constant.reason",
  1623                 result = new Attribute.Error(enumTypeSym.type);
  1629                               currentClassFile, enumTypeSym, proxy.enumerator,
       
  1630                               failure.getDiagnostic());
       
  1631                 } else {
       
  1632                     log.warning("unknown.enum.constant",
       
  1633                               currentClassFile, enumTypeSym, proxy.enumerator);
       
  1634                 }
       
  1635                 result = new Attribute.Enum(enumTypeSym.type,
       
  1636                         new VarSymbol(0, proxy.enumerator, syms.botType, enumTypeSym));
  1624             } else {
  1637             } else {
  1625                 result = new Attribute.Enum(enumTypeSym.type, enumerator);
  1638                 result = new Attribute.Enum(enumTypeSym.type, enumerator);
  1626             }
  1639             }
  1627         }
  1640         }
  1628 
  1641