529 return checkType(pos, found, req, basicHandler); |
529 return checkType(pos, found, req, basicHandler); |
530 } |
530 } |
531 |
531 |
532 Type checkType(final DiagnosticPosition pos, final Type found, final Type req, final CheckContext checkContext) { |
532 Type checkType(final DiagnosticPosition pos, final Type found, final Type req, final CheckContext checkContext) { |
533 final Infer.InferenceContext inferenceContext = checkContext.inferenceContext(); |
533 final Infer.InferenceContext inferenceContext = checkContext.inferenceContext(); |
534 if (inferenceContext.free(req)) { |
534 if (inferenceContext.free(req) || inferenceContext.free(found)) { |
535 inferenceContext.addFreeTypeListener(List.of(req), new FreeTypeListener() { |
535 inferenceContext.addFreeTypeListener(List.of(req, found), new FreeTypeListener() { |
536 @Override |
536 @Override |
537 public void typesInferred(InferenceContext inferenceContext) { |
537 public void typesInferred(InferenceContext inferenceContext) { |
538 checkType(pos, inferenceContext.asInstType(found), inferenceContext.asInstType(req), checkContext); |
538 checkType(pos, inferenceContext.asInstType(found), inferenceContext.asInstType(req), checkContext); |
539 } |
539 } |
540 }); |
540 }); |