src/share/classes/com/sun/tools/javac/comp/Check.java

Print this page

        

*** 125,134 **** --- 125,135 ---- allowAnnotations = source.allowAnnotations(); allowCovariantReturns = source.allowCovariantReturns(); allowSimplifiedVarargs = source.allowSimplifiedVarargs(); allowDefaultMethods = source.allowDefaultMethods(); allowStrictMethodClashCheck = source.allowStrictMethodClashCheck(); + allowPrivateSafeVarargs = source.allowPrivateSafeVarargs(); complexInference = options.isSet("complexinference"); warnOnSyntheticConflicts = options.isSet("warnOnSyntheticConflicts"); suppressAbortOnBadClassFile = options.isSet("suppressAbortOnBadClassFile"); enableSunApiLintControl = options.isSet("enableSunApiLintControl"); warnOnAccessToSensitiveMembers = options.isSet("warnOnAccessToSensitiveMembers");
*** 179,188 **** --- 180,193 ---- /** Switch: should unrelated return types trigger a method clash? */ boolean allowStrictMethodClashCheck; + /** Switch: can the @SafeVarargs annotation be applied to private methods? + */ + boolean allowPrivateSafeVarargs; + /** Switch: -complexinference option set? */ boolean complexInference; /** Character for synthetic names
*** 815,825 **** if (hasTrustMeAnno && !isTrustMeAllowedOnMethod(m)) { if (varargElemType != null) { log.error(tree, "varargs.invalid.trustme.anno", syms.trustMeType.tsym, ! diags.fragment("varargs.trustme.on.virtual.varargs", m)); } else { log.error(tree, "varargs.invalid.trustme.anno", syms.trustMeType.tsym, diags.fragment("varargs.trustme.on.non.varargs.meth", m)); --- 820,832 ---- if (hasTrustMeAnno && !isTrustMeAllowedOnMethod(m)) { if (varargElemType != null) { log.error(tree, "varargs.invalid.trustme.anno", syms.trustMeType.tsym, ! allowPrivateSafeVarargs ? ! diags.fragment("varargs.trustme.on.virtual.varargs", m) : ! diags.fragment("varargs.trustme.on.virtual.varargs.final.only", m)); } else { log.error(tree, "varargs.invalid.trustme.anno", syms.trustMeType.tsym, diags.fragment("varargs.trustme.on.non.varargs.meth", m));
*** 838,848 **** } //where private boolean isTrustMeAllowedOnMethod(Symbol s) { return (s.flags() & VARARGS) != 0 && (s.isConstructor() || ! (s.flags() & (STATIC | FINAL)) != 0); } Type checkMethod(final Type mtype, final Symbol sym, final Env<AttrContext> env, --- 845,856 ---- } //where private boolean isTrustMeAllowedOnMethod(Symbol s) { return (s.flags() & VARARGS) != 0 && (s.isConstructor() || ! (s.flags() & (STATIC | FINAL | ! (allowPrivateSafeVarargs ? PRIVATE : 0) )) != 0); } Type checkMethod(final Type mtype, final Symbol sym, final Env<AttrContext> env,