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;