src/jdk.compiler/share/classes/com/sun/tools/javac/comp/DeferredAttr.java
changeset 51721 96b76dca2be8
parent 51563 de411d537aae
child 52455 bbbc110cdffe
equal deleted inserted replaced
51720:b7bfd64e43a6 51721:96b76dca2be8
   167                      */
   167                      */
   168                     JCMemberReference result = new JCMemberReference(t.mode, t.name, expr, typeargs) {
   168                     JCMemberReference result = new JCMemberReference(t.mode, t.name, expr, typeargs) {
   169                         @Override
   169                         @Override
   170                         public void setOverloadKind(OverloadKind overloadKind) {
   170                         public void setOverloadKind(OverloadKind overloadKind) {
   171                             OverloadKind previous = t.getOverloadKind();
   171                             OverloadKind previous = t.getOverloadKind();
   172                             if (previous == null) {
   172                             if (previous == null || previous == OverloadKind.ERROR) {
   173                                 t.setOverloadKind(overloadKind);
   173                                 t.setOverloadKind(overloadKind);
   174                             } else {
   174                             } else {
   175                                 Assert.check(previous == overloadKind);
   175                                 Assert.check(previous == overloadKind);
   176                             }
   176                             }
   177                         }
   177                         }
  1238             }
  1238             }
  1239 
  1239 
  1240             Type descType = types.findDescriptorType(pt);
  1240             Type descType = types.findDescriptorType(pt);
  1241             List<Type> freeArgVars = inferenceContext.freeVarsIn(descType.getParameterTypes());
  1241             List<Type> freeArgVars = inferenceContext.freeVarsIn(descType.getParameterTypes());
  1242             if (freeArgVars.nonEmpty() &&
  1242             if (freeArgVars.nonEmpty() &&
  1243                     tree.getOverloadKind() == JCMemberReference.OverloadKind.OVERLOADED) {
  1243                     tree.getOverloadKind() != JCMemberReference.OverloadKind.UNOVERLOADED) {
  1244                 stuckVars.addAll(freeArgVars);
  1244                 stuckVars.addAll(freeArgVars);
  1245                 depVars.addAll(inferenceContext.freeVarsIn(descType.getReturnType()));
  1245                 depVars.addAll(inferenceContext.freeVarsIn(descType.getReturnType()));
  1246             }
  1246             }
  1247         }
  1247         }
  1248 
  1248 
  1303         }
  1303         }
  1304 
  1304 
  1305         @Override
  1305         @Override
  1306         public void visitReference(JCMemberReference tree) {
  1306         public void visitReference(JCMemberReference tree) {
  1307             super.visitReference(tree);
  1307             super.visitReference(tree);
  1308             if (tree.getOverloadKind() == JCMemberReference.OverloadKind.OVERLOADED) {
  1308             if (tree.getOverloadKind() != JCMemberReference.OverloadKind.UNOVERLOADED) {
  1309                 stuck = true;
  1309                 stuck = true;
  1310             }
  1310             }
  1311         }
  1311         }
  1312     }
  1312     }
  1313 }
  1313 }