/** * Stores a speculative cache entry corresponding to given symbol * and resolution phase */ void put(JCTree speculativeTree, ResultInfo resultInfo) { Symbol msym = resultInfo.checkContext.deferredAttrContext().msym; List<Entry> entries = cache.get(msym); if (entries == null) { entries = List.nil(); } cache.put(msym, entries.prepend(new Entry(speculativeTree, resultInfo))); } }
mt = (MethodType)types.createMethodTypeWithReturn(mt, newRestype); if (resultInfo.checkContext.inferenceContext().free(resultInfo.pt)) { inferenceContext.dupTo(resultInfo.checkContext.inferenceContext()); deferredAttrContext.complete(); return mt;
if (resultInfo.checkContext.deferredAttrContext().mode == DeferredAttr.AttrMode.CHECK && isSerializable(clazztype)) { localEnv.info.isSerializable = true; InferenceContext inferenceContext = resultInfo.checkContext.inferenceContext(); if (tree.constructorType != null && inferenceContext.free(tree.constructorType)) {
Type currentTarget = pt(); boolean isTargetSerializable = resultInfo.checkContext.deferredAttrContext().mode == DeferredAttr.AttrMode.CHECK && isSerializable(currentTarget); if (currentTarget != Type.recoveryType) { if (resultInfo.checkContext.inferenceContext().free(argtypes)) { referenceCheck = rs.new MethodReferenceCheck(resultInfo.checkContext.inferenceContext()); List<Type> saved_undet = resultInfo.checkContext.inferenceContext().save(); try { refResult = rs.resolveMemberReference(localEnv, that, that.expr.type, that.name, argtypes, typeargtypes, referenceCheck, resultInfo.checkContext.inferenceContext(), resultInfo.checkContext.deferredAttrContext().mode); } finally { resultInfo.checkContext.inferenceContext().rollback(saved_undet); } else { if (targetError) { resultInfo.checkContext.report(that, diag); } else { log.report(diag); if (resultInfo.checkContext.deferredAttrContext().mode == AttrMode.CHECK) { resultInfo.checkContext.inferenceContext().free(argtypes.head)) { if (!types.isSubtype(resultInfo.checkContext.inferenceContext().asUndetVar(argtypes.head), exprType)) {
if (resultInfo.checkContext.inferenceContext().free(argtypes)) { referenceCheck = rs.new MethodReferenceCheck(resultInfo.checkContext.inferenceContext()); List<Type> saved_undet = resultInfo.checkContext.inferenceContext().save(); try { refResult = rs.resolveMemberReference(localEnv, that, that.expr.type, that.name, argtypes, typeargtypes, referenceCheck, resultInfo.checkContext.inferenceContext(), resultInfo.checkContext.deferredAttrContext().mode); } finally { resultInfo.checkContext.inferenceContext().rollback(saved_undet); } else { if (targetError) { resultInfo.checkContext.report(that, diag); } else { log.report(diag); if (resultInfo.checkContext.deferredAttrContext().mode == AttrMode.CHECK) { resultInfo.checkContext.inferenceContext().free(argtypes.head)) { if (!types.isSubtype(resultInfo.checkContext.inferenceContext().asFree(argtypes.head), exprType)) { resultInfo.checkContext.deferredAttrContext().mode == DeferredAttr.AttrMode.SPECULATIVE; checkReferenceCompatible(that, desc, refType, resultInfo.checkContext, isSpeculativeRound); if (!isSpeculativeRound) { checkAccessibleTypes(that, localEnv, resultInfo.checkContext.inferenceContext(), desc, target);
resultInfo.checkContext.deferredAttrContext().mode == DeferredAttr.AttrMode.CHECK; try { Type currentTarget = pt(); resultInfo.checkContext.report(that, diags.fragment("invalid.generic.lambda.target", lambdaType, kindName(currentTarget.tsym), currentTarget.tsym)); result = that.type = types.createErrorType(pt()); resultInfo.checkContext.report(that, diags.fragment("incompatible.arg.types.in.lambda")); result = that.type = types.createErrorType(currentTarget); return; resultInfo.checkContext.deferredAttrContext().mode == DeferredAttr.AttrMode.SPECULATIVE; if (resultInfo.checkContext.inferenceContext().free(lambdaType.getThrownTypes())) { List<Type> inferredThrownTypes = flow.analyzeLambdaThrownTypes(env, that, make); List<Type> thrownTypes = resultInfo.checkContext.inferenceContext().asUndetVars(lambdaType.getThrownTypes()); checkAccessibleTypes(that, localEnv, resultInfo.checkContext.inferenceContext(), lambdaType, currentTarget); resultInfo.checkContext.report(that, cause); result = that.type = types.createErrorType(pt()); return;
resultInfo.checkContext.inferenceContext()); } catch (Infer.InferenceException ex) { resultInfo.checkContext.report(env.tree.pos(), ex.getDiagnostic()); return types.createErrorType(site); } catch (Resolve.InapplicableMethodException ex) {
resultInfo.checkContext.deferredAttrContext().mode == DeferredAttr.AttrMode.CHECK; try { Type currentTarget = pt(); resultInfo.checkContext.report(that, diags.fragment("invalid.generic.lambda.target", lambdaType, kindName(currentTarget.tsym), currentTarget.tsym)); result = that.type = types.createErrorType(pt()); resultInfo.checkContext.report(that, diags.fragment("incompatible.arg.types.in.lambda")); result = that.type = types.createErrorType(currentTarget); return; resultInfo.checkContext.deferredAttrContext().mode == DeferredAttr.AttrMode.SPECULATIVE; if (resultInfo.checkContext.inferenceContext().free(lambdaType.getThrownTypes())) { List<Type> inferredThrownTypes = flow.analyzeLambdaThrownTypes(env, that, make); List<Type> thrownTypes = resultInfo.checkContext.inferenceContext().asFree(lambdaType.getThrownTypes()); checkAccessibleTypes(that, localEnv, resultInfo.checkContext.inferenceContext(), lambdaType, currentTarget); resultInfo.checkContext.report(that, cause); result = that.type = types.createErrorType(pt()); return;
resultInfo.checkContext.inferenceContext()); } catch (Infer.InferenceException ex) { resultInfo.checkContext.report(env.tree.pos(), ex.getDiagnostic()); return types.createErrorType(site); } catch (Resolve.InapplicableMethodException ex) {
mt = (MethodType)types.createMethodTypeWithReturn(mt, newRestype); if (resultInfo.checkContext.inferenceContext().free(resultInfo.pt)) { inferenceContext.dupTo(resultInfo.checkContext.inferenceContext()); deferredAttrContext.complete(); return mt;
checkContext.report(pos, diags.fragment("incompatible.arg.types.in.lambda")); return types.createErrorType(funcInterface); checkContext.report(pos, diags.fragment("no.suitable.functional.intf.inst", funcInterface)); return types.createErrorType(funcInterface); funcInterfaceContext.solve(funcInterfaceContext.boundedVars(), types.noWarnings); } catch (InferenceException ex) { checkContext.report(pos, diags.fragment("no.suitable.functional.intf.inst", funcInterface)); checkContext.report(pos, diags.fragment("no.suitable.functional.intf.inst", funcInterface)); checkContext.compatible(owntype, funcInterface, types.noWarnings); return owntype;
checkContext.report(pos, diags.fragment("incompatible.arg.types.in.lambda")); return types.createErrorType(funcInterface); checkContext.report(pos, diags.fragment("no.suitable.functional.intf.inst", funcInterface)); return types.createErrorType(funcInterface); funcInterfaceContext.solve(funcInterfaceContext.boundedVars(), types.noWarnings); } catch (InferenceException ex) { checkContext.report(pos, diags.fragment("no.suitable.functional.intf.inst", funcInterface)); checkContext.report(pos, diags.fragment("no.suitable.functional.intf.inst", funcInterface));
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), if (checkContext.deferredAttrContext().mode == DeferredAttr.AttrMode.CHECK && pt != Type.recoveryType) { resultInfo.checkContext.report(env.tree, cause);
InferenceContext inferenceContext = resultInfo.checkContext.inferenceContext(); Type owntype; boolean shouldCheck = !found.hasTag(ERROR) &&
InferenceContext inferenceContext = resultInfo.checkContext.inferenceContext(); Type owntype = found; if (!owntype.hasTag(ERROR) && !resultInfo.pt.hasTag(METHOD) && !resultInfo.pt.hasTag(FORALL)) {
InferenceContext rsInfoInfContext = resultInfo.checkContext.inferenceContext(); Type from = mt.getReturnType(); if (mt.getReturnType().containsAny(inferenceContext.inferencevars) && if (!resultInfo.checkContext.compatible(qtype, rsInfoInfContext.asUndetVar(to), retWarn) ||
descriptorType = types.findDescriptorType(pt); } catch (Types.FunctionDescriptorLookupError ex) { checkContext.report(null, ex.getDiagnostic()); checkContext.report(tree, diags.fragment("incompatible.arg.types.in.lambda")); TreeInfo.isExpressionStatement((JCExpression)tree.getBody()); if (!isExpressionCompatible) { resultInfo.checkContext.report(tree.pos(), diags.fragment("incompatible.ret.type.in.lambda", diags.fragment("missing.ret.val", currentReturnType))); resultInfo.checkContext.report(tree.pos(), diags.fragment("unexpected.ret.val")); resultInfo.checkContext.report(tree.pos(), diags.fragment("incompatible.ret.type.in.lambda", diags.fragment("missing.ret.val", currentReturnType)));
resultInfo.checkContext.report(tree, diags.fragment("conditional.target.cant.be.void")); result = tree.type = types.createErrorType(resultInfo.pt); return;