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 |