public CheckStuckPolicy(ResultInfo resultInfo, DeferredType dt) { this.pt = resultInfo.pt; this.inferenceContext = resultInfo.checkContext.inferenceContext(); scan(dt.tree); if (!stuckVars.isEmpty()) { resultInfo.checkContext.inferenceContext() .addFreeTypeListener(List.from(stuckVars), this); } }
public CheckStuckPolicy(ResultInfo resultInfo, DeferredType dt) { this.pt = resultInfo.pt; this.inferenceContext = resultInfo.checkContext.inferenceContext(); scan(dt.tree); if (!stuckVars.isEmpty()) { resultInfo.checkContext.inferenceContext() .addFreeTypeListener(List.from(stuckVars), this); } }
if (tree.constructorType != null && inferenceContext.free(tree.constructorType)) { inferenceContext.addFreeTypeListener(List.of(tree.constructorType), new FreeTypeListener() { @Override
inferenceContext.addFreeTypeListener(List.of(mtype), new FreeTypeListener() { public void typesInferred(InferenceContext inferenceContext) { checkMethod(inferenceContext.asInstType(mtype), sym, env, argtrees, argtypes, useVarargs, inferenceContext);
inferenceContext.addFreeTypeListener(List.of(mtype), new FreeTypeListener() { public void typesInferred(InferenceContext inferenceContext) { checkMethod(inferenceContext.asInstType(mtype), sym, env, argtrees, argtypes, useVarargs, inferenceContext);
final Type pt, final Type descriptorType, final Type primaryTarget, final CheckContext checkContext) { if (checkContext.inferenceContext().free(descriptorType)) { checkContext.inferenceContext().addFreeTypeListener(List.of(pt, descriptorType), new FreeTypeListener() { public void typesInferred(InferenceContext inferenceContext) { setFunctionalInfo(env, fExpr, pt, inferenceContext.asInstType(descriptorType),
inferenceContext.addFreeTypeListener(List.of(found, resultInfo.pt), new FreeTypeListener() { @Override public void typesInferred(InferenceContext inferenceContext) {
owntype = types.createErrorType(owntype); inferenceContext.addFreeTypeListener(List.of(found, resultInfo.pt), new FreeTypeListener() { @Override public void typesInferred(InferenceContext inferenceContext) {
final Type pt, final Type descriptorType, final Type primaryTarget, final CheckContext checkContext) { if (checkContext.inferenceContext().free(descriptorType)) { checkContext.inferenceContext().addFreeTypeListener(List.of(pt, descriptorType), new FreeTypeListener() { public void typesInferred(InferenceContext inferenceContext) { setFunctionalInfo(env, fExpr, pt, inferenceContext.asInstType(descriptorType),
Type checkType(final DiagnosticPosition pos, final Type found, final Type req, final CheckContext checkContext) { final Infer.InferenceContext inferenceContext = checkContext.inferenceContext(); if (inferenceContext.free(req) || inferenceContext.free(found)) { inferenceContext.addFreeTypeListener(List.of(req, found), new FreeTypeListener() { @Override public void typesInferred(InferenceContext inferenceContext) { checkType(pos, inferenceContext.asInstType(found), inferenceContext.asInstType(req), checkContext); } }); } if (req.hasTag(ERROR)) return req; if (req.hasTag(NONE)) return found; if (checkContext.compatible(found, req, checkContext.checkWarner(pos, found, req))) { return found; } else { if (found.isNumeric() && req.isNumeric()) { checkContext.report(pos, diags.fragment("possible.loss.of.precision", found, req)); return types.createErrorType(found); } checkContext.report(pos, diags.fragment("inconvertible.types", found, req)); return types.createErrorType(found); } }
Type checkType(final DiagnosticPosition pos, final Type found, final Type req, final CheckContext checkContext) { final Infer.InferenceContext inferenceContext = checkContext.inferenceContext(); if (inferenceContext.free(req)) { inferenceContext.addFreeTypeListener(List.of(req), new FreeTypeListener() { @Override public void typesInferred(InferenceContext inferenceContext) { checkType(pos, inferenceContext.asInstType(found), inferenceContext.asInstType(req), checkContext); } }); } if (req.hasTag(ERROR)) return req; if (req.hasTag(NONE)) return found; if (checkContext.compatible(found, req, checkContext.checkWarner(pos, found, req))) { return found; } else { if (found.isNumeric() && req.isNumeric()) { checkContext.report(pos, diags.fragment("possible.loss.of.precision", found, req)); return types.createErrorType(found); } checkContext.report(pos, diags.fragment("inconvertible.types", found, req)); return types.createErrorType(found); } }
private void checkAccessibleTypes(final DiagnosticPosition pos, final Env<AttrContext> env, final InferenceContext inferenceContext, final List<Type> ts) { if (inferenceContext.free(ts)) { inferenceContext.addFreeTypeListener(ts, new FreeTypeListener() { @Override public void typesInferred(InferenceContext inferenceContext) { checkAccessibleTypes(pos, env, inferenceContext, inferenceContext.asInstTypes(ts)); } }); } else { for (Type t : ts) { rs.checkAccessibleType(env, t); } } }
private void checkAccessibleTypes(final DiagnosticPosition pos, final Env<AttrContext> env, final InferenceContext inferenceContext, final List<Type> ts) { if (inferenceContext.free(ts)) { inferenceContext.addFreeTypeListener(ts, new FreeTypeListener() { @Override public void typesInferred(InferenceContext inferenceContext) { checkAccessibleTypes(pos, env, inferenceContext, inferenceContext.asInstTypes(ts)); } }); } else { for (Type t : ts) { rs.checkAccessibleType(env, t); } } }