src/share/classes/com/sun/tools/javac/comp/DeferredAttr.java

changeset 2811
610ec7dcf431
parent 2730
a513711d6171
child 2893
ca5783d9a597
     1.1 --- a/src/share/classes/com/sun/tools/javac/comp/DeferredAttr.java	Mon Jun 01 11:07:29 2015 -0700
     1.2 +++ b/src/share/classes/com/sun/tools/javac/comp/DeferredAttr.java	Mon May 11 13:28:14 2015 +0530
     1.3 @@ -1256,6 +1256,9 @@
     1.4                          return isSimpleReceiver(((JCAnnotatedType)rec).underlyingType);
     1.5                      case APPLY:
     1.6                          return true;
     1.7 +                    case NEWCLASS:
     1.8 +                        JCNewClass nc = (JCNewClass) rec;
     1.9 +                        return nc.encl == null && nc.def == null && !TreeInfo.isDiamond(nc);
    1.10                      default:
    1.11                          return false;
    1.12                  }
    1.13 @@ -1310,17 +1313,24 @@
    1.14              Type site;
    1.15  
    1.16              if (rec != null) {
    1.17 -                if (rec.hasTag(APPLY)) {
    1.18 -                    Symbol recSym = quicklyResolveMethod(env, (JCMethodInvocation) rec);
    1.19 -                    if (recSym == null)
    1.20 -                        return null;
    1.21 -                    Symbol resolvedReturnType =
    1.22 -                            analyzeCandidateMethods(recSym, syms.errSymbol, returnSymbolAnalyzer);
    1.23 -                    if (resolvedReturnType == null)
    1.24 -                        return null;
    1.25 -                    site = resolvedReturnType.type;
    1.26 -                } else {
    1.27 -                    site = attribSpeculative(rec, env, attr.unknownTypeExprInfo).type;
    1.28 +                switch (rec.getTag()) {
    1.29 +                    case APPLY:
    1.30 +                        Symbol recSym = quicklyResolveMethod(env, (JCMethodInvocation) rec);
    1.31 +                        if (recSym == null)
    1.32 +                            return null;
    1.33 +                        Symbol resolvedReturnType =
    1.34 +                                analyzeCandidateMethods(recSym, syms.errSymbol, returnSymbolAnalyzer);
    1.35 +                        if (resolvedReturnType == null)
    1.36 +                            return null;
    1.37 +                        site = resolvedReturnType.type;
    1.38 +                        break;
    1.39 +                    case NEWCLASS:
    1.40 +                        JCNewClass nc = (JCNewClass) rec;
    1.41 +                        site = attribSpeculative(nc.clazz, env, attr.unknownTypeExprInfo).type;
    1.42 +                        break;
    1.43 +                    default:
    1.44 +                        site = attribSpeculative(rec, env, attr.unknownTypeExprInfo).type;
    1.45 +                        break;
    1.46                  }
    1.47              } else {
    1.48                  site = env.enclClass.sym.type;

mercurial