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,