if (tree.getMode() == ReferenceMode.NEW && tree.kind != ReferenceKind.ARRAY_CTOR && tree.sym.owner.isLocal()) {
if (that.getMode() == JCMemberReference.ReferenceMode.NEW) { exprType = chk.checkConstructorRefType(that.expr, exprType); if (!exprType.isErroneous() && exprType.isRaw() && that.typeargs != null) { log.error(that.expr.pos(), "invalid.mref", Kinds.kindName(that.getMode()), diags.fragment("mref.infer.and.explicit.params")); exprType = types.createErrorType(exprType); "invalid.mref", Kinds.kindName(that.getMode()), detailsDiag); if (that.getMode() == ReferenceMode.INVOKE && TreeInfo.isStaticSelector(that.expr, names) && that.kind.isUnbound() && exprType.getTypeArguments().nonEmpty()) { log.error(that.expr.pos(), "invalid.mref", Kinds.kindName(that.getMode()), diags.fragment("static.mref.with.targs")); result = that.type = types.createErrorType(currentTarget); !that.kind.isUnbound()) { log.error(that.expr.pos(), "invalid.mref", Kinds.kindName(that.getMode()), diags.fragment("static.bound.mref")); result = that.type = types.createErrorType(currentTarget);
boolean isStaticSelector = TreeInfo.isStaticSelector(referenceTree.expr, names); boolean shouldCheckForStaticness = isStaticSelector && referenceTree.getMode() == ReferenceMode.INVOKE; if (boundSym.kind != WRONG_MTHS && boundSym.kind != WRONG_MTH) { if (shouldCheckForStaticness) { Kinds.kindName(referenceTree.getMode()), diags.fragment(errorFragmentToPrint, Kinds.kindName(symToPrint), symToPrint));
boolean isStaticSelector = TreeInfo.isStaticSelector(referenceTree.expr, names); boolean shouldCheckForStaticness = isStaticSelector && referenceTree.getMode() == ReferenceMode.INVOKE; if (boundSym.kind != WRONG_MTHS && boundSym.kind != WRONG_MTH) { if (shouldCheckForStaticness) { Kinds.kindName(referenceTree.getMode()), diags.fragment(errorFragmentToPrint, Kinds.kindName(symToPrint), symToPrint));
if (that.getMode() == JCMemberReference.ReferenceMode.NEW) { exprType = chk.checkConstructorRefType(that.expr, exprType); if (!exprType.isErroneous() && exprType.isRaw() && that.typeargs != null) { log.error(that.expr.pos(), "invalid.mref", Kinds.kindName(that.getMode()), diags.fragment("mref.infer.and.explicit.params")); exprType = types.createErrorType(exprType); "invalid.mref", Kinds.kindName(that.getMode()), detailsDiag); if (that.getMode() == ReferenceMode.INVOKE && TreeInfo.isStaticSelector(that.expr, names) && that.kind.isUnbound() && exprType.getTypeArguments().nonEmpty()) { log.error(that.expr.pos(), "invalid.mref", Kinds.kindName(that.getMode()), diags.fragment("static.mref.with.targs")); result = that.type = types.createErrorType(target); !that.kind.isUnbound()) { log.error(that.expr.pos(), "invalid.mref", Kinds.kindName(that.getMode()), diags.fragment("static.bound.mref")); result = that.type = types.createErrorType(target);
JCExpression bridgeExpr = (tree.getMode() == ReferenceMode.INVOKE) ? bridgeExpressionInvoke(makeReceiver(rcvr)) : bridgeExpressionNew();
switch (tree.getMode()) { case NEW: if (!tree.expr.type.isRaw()) {
switch (tree.getMode()) { case NEW: if (!tree.expr.type.isRaw()) {
JCLambda lambda() { int prevPos = make.pos; try { make.at(tree); //body generation - this can be either a method call or a //new instance creation expression, depending on the member reference kind VarSymbol rcvr = addParametersReturnReceiver(); JCExpression expr = (tree.getMode() == ReferenceMode.INVOKE) ? expressionInvoke(rcvr) : expressionNew(); JCLambda slam = make.Lambda(params.toList(), expr); slam.targets = tree.targets; slam.type = tree.type; slam.pos = tree.pos; return slam; } finally { make.at(prevPos); } }
/** * Does this reference need to be converted to a lambda * (i.e. var args need to be expanded or "super" is used) */ final boolean needsConversionToLambda() { return interfaceParameterIsIntersectionType() || isSuper || needsVarArgsConversion() || isArrayOp() || isPrivateInOtherClass() || !receiverAccessible() || (tree.getMode() == ReferenceMode.NEW && tree.kind != ReferenceKind.ARRAY_CTOR && (tree.sym.owner.isLocal() || tree.sym.owner.isInner())); }
public void visitReference(JCMemberReference tree) { try { printExpr(tree.expr); print("::"); if (tree.typeargs != null) { print("<"); printExprs(tree.typeargs); print(">"); } print(tree.getMode() == ReferenceMode.INVOKE ? tree.name : "new"); } catch (IOException e) { throw new UncheckedIOException(e); } }
ResultInfo memberReferenceQualifierResult(JCMemberReference tree) { //if this is a constructor reference, the expected kind must be a type return new ResultInfo(tree.getMode() == ReferenceMode.INVOKE ? VAL | TYP : TYP, Type.noType); }
public void visitReference(JCMemberReference tree) { try { printExpr(tree.expr); print("::"); if (tree.typeargs != null) { print("<"); printExprs(tree.typeargs); print(">"); } print(tree.getMode() == ReferenceMode.INVOKE ? tree.name : "new"); } catch (IOException e) { throw new UncheckedIOException(e); } }
ResultInfo memberReferenceQualifierResult(JCMemberReference tree) { //if this is a constructor reference, the expected kind must be a type return new ResultInfo(tree.getMode() == ReferenceMode.INVOKE ? VAL | TYP : TYP, Type.noType); }
@Override public void visitReference(JCMemberReference tree) { printExpr(tree.expr); print(cs.spaceAroundMethodReferenceDoubleColon() ? " :: " : "::"); if (tree.typeargs != null && !tree.typeargs.isEmpty()) { print("<"); printExprs(tree.typeargs); print(">"); } if (tree.getMode() == ReferenceMode.INVOKE) print(tree.name); else print("new"); }
@Override public void visitReference(JCMemberReference tree) { super.visitReference(tree); if (tree.getMode() != ReferenceMode.NEW) { return; } if (memberOfEnclosing(owner, state, tree.expr.type.tsym)) { canPossiblyBeStatic = false; } }
@Override public void visitReference(JCMemberReference tree) { super.visitReference(tree); if (tree.getMode() != ReferenceMode.NEW) { return; } if (memberOfEnclosing(owner, state, tree.expr.type.tsym)) { canPossiblyBeStatic = false; } }