8170326: Inconsistencies between code, compiler.properties and comments
Summary: Converting uses of Log and JCDiagnostic.Factory methods to use CompilerProperties instead of plain Strings, fixing inconsistencies, adding crules analyzer to ensure CompilerProperties are used whenever possible.
Reviewed-by: mcimadamore
--- a/langtools/make/tools/crules/CodingRulesAnalyzerPlugin.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/make/tools/crules/CodingRulesAnalyzerPlugin.java Thu Jun 15 13:44:42 2017 +0200
@@ -67,7 +67,8 @@
task.addTaskListener(new PostAnalyzeTaskListener(
new MutableFieldsAnalyzer(task),
new AssertCheckAnalyzer(task),
- new DefinedByAnalyzer(task)
+ new DefinedByAnalyzer(task),
+ new LegacyLogMethodAnalyzer(task)
));
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/make/tools/crules/LegacyLogMethodAnalyzer.java Thu Jun 15 13:44:42 2017 +0200
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package crules;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import com.sun.source.util.JavacTask;
+import com.sun.source.util.TaskEvent.Kind;
+import com.sun.tools.javac.code.Kinds;
+import com.sun.tools.javac.code.Symbol;
+import com.sun.tools.javac.code.Symbol.MethodSymbol;
+import com.sun.tools.javac.code.Type;
+import com.sun.tools.javac.tree.JCTree.JCClassDecl;
+import com.sun.tools.javac.tree.JCTree.JCExpression;
+import com.sun.tools.javac.tree.JCTree.JCMethodInvocation;
+import com.sun.tools.javac.tree.JCTree.Tag;
+import com.sun.tools.javac.tree.TreeInfo;
+import com.sun.tools.javac.tree.TreeScanner;
+import com.sun.tools.javac.util.AbstractLog;
+import com.sun.tools.javac.util.JCDiagnostic;
+
+/**This analyzer guards against legacy Log.error/warning/note methods that don't use the typed keys.*/
+public class LegacyLogMethodAnalyzer extends AbstractCodingRulesAnalyzer {
+
+ public LegacyLogMethodAnalyzer(JavacTask task) {
+ super(task);
+ treeVisitor = new LegacyLogMethodVisitor();
+ eventKind = Kind.ANALYZE;
+ }
+
+ private static final Set<String> LEGACY_METHOD_NAMES = new HashSet<>(
+ Arrays.asList("error", "mandatoryWarning", "warning", "mandatoryNote", "note", "fragment"));
+
+ class LegacyLogMethodVisitor extends TreeScanner {
+
+ @Override
+ public void visitClassDef(JCClassDecl tree) {
+ if (!tree.sym.packge().fullname.toString().startsWith("com.sun.tools.javac."))
+ return ;
+ super.visitClassDef(tree);
+ }
+
+ @Override
+ public void visitApply(JCMethodInvocation tree) {
+ checkLegacyLogMethod(tree);
+ super.visitApply(tree);
+ }
+
+ void checkLegacyLogMethod(JCMethodInvocation tree) {
+ Symbol method = TreeInfo.symbolFor(tree);
+ if (method == null ||
+ method.kind != Kinds.Kind.MTH ||
+ !typeToCheck(method.owner.type) ||
+ !LEGACY_METHOD_NAMES.contains(method.name.toString()) ||
+ !((MethodSymbol) method).isVarArgs() ||
+ method.type.getParameterTypes().size() < 2) {
+ return ;
+ }
+ JCExpression key = tree.args.get(method.type.getParameterTypes().size() - 2);
+ if (key.hasTag(Tag.LITERAL)) {
+ messages.error(tree, "crules.use.of.legacy.log.method", tree);
+ }
+ }
+
+ boolean typeToCheck(Type type) {
+ Symbol abstractLog = elements.getTypeElement(AbstractLog.class.getName());
+ Symbol diagnosticFactory = elements.getTypeElement(JCDiagnostic.Factory.class.getName().replace('$', '.'));
+ return types.isSubtype(type, abstractLog.type) ||
+ types.isSubtype(type, diagnosticFactory.type);
+ }
+ }
+}
--- a/langtools/make/tools/crules/resources/crules.properties Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/make/tools/crules/resources/crules.properties Thu Jun 15 13:44:42 2017 +0200
@@ -36,3 +36,5 @@
This method implements a public API method, and is marked with incorrect @DefinedBy.
crules.defined.by.no.api=\
This method does not implement a public API method, and should not be marked with @DefinedBy.
+crules.use.of.legacy.log.method=\
+ Should not use legacy Log or JCDiagnostic.Factory methods when methods accepting an Error/Warning/Note/Fragment key can be used.
--- a/langtools/make/tools/propertiesparser/parser/MessageFile.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/make/tools/propertiesparser/parser/MessageFile.java Thu Jun 15 13:44:42 2017 +0200
@@ -54,7 +54,7 @@
if (line.startsWith(keyPrefix + ".")) {
int eq = line.indexOf("=");
if (eq > 0)
- messages.put(line.substring(0, eq), new Message(currLine));
+ messages.put(line.substring(0, eq).trim(), new Message(currLine));
}
}
}
--- a/langtools/make/tools/propertiesparser/parser/MessageLine.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/make/tools/propertiesparser/parser/MessageLine.java Thu Jun 15 13:44:42 2017 +0200
@@ -32,7 +32,7 @@
public class MessageLine {
static final Pattern emptyOrCommentPattern = Pattern.compile("( *#.*)?");
- static final Pattern typePattern = Pattern.compile("[-\\\\'A-Z\\.a-z ]+( \\([A-Za-z 0-9]+\\))?");
+ static final Pattern typePattern = Pattern.compile("[-\\\\'A-Z\\.a-z ]+( \\([-A-Za-z 0-9]+\\))?");
static final Pattern infoPattern = Pattern.compile(String.format("# ([0-9]+: %s, )*[0-9]+: %s",
typePattern.pattern(), typePattern.pattern()));
--- a/langtools/make/tools/propertiesparser/parser/MessageType.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/make/tools/propertiesparser/parser/MessageType.java Thu Jun 15 13:44:42 2017 +0200
@@ -71,7 +71,10 @@
*/
public enum SimpleType implements MessageType {
+ ANNOTATION("annotation", "Compound", "com.sun.tools.javac.code.Attribute"),
BOOLEAN("boolean", "boolean", null),
+ COLLECTION("collection", "Collection", "java.util"),
+ FLAG("flag", "Flag", "com.sun.tools.javac.code.Flags"),
FRAGMENT("fragment", "Fragment", null),
DIAGNOSTIC("diagnostic", "JCDiagnostic", "com.sun.tools.javac.util"),
MODIFIER("modifier", "Modifier", "javax.lang.model.element"),
@@ -81,7 +84,7 @@
NAME("name", "Name", "com.sun.tools.javac.util"),
NUMBER("number", "int", null),
OPTION_NAME("option name", "Option", "com.sun.tools.javac.main"),
- SOURCE_VERSION("source version", "Source", "com.sun.tools.javac.code"),
+ SOURCE_VERSION("source version", "SourceVersion", "javax.lang.model"),
STRING("string", "String", null),
SYMBOL("symbol", "Symbol", "com.sun.tools.javac.code"),
SYMBOL_KIND("symbol kind", "Kind", "com.sun.tools.javac.code.Kinds"),
@@ -131,6 +134,7 @@
* Compound type kind.
*/
public enum Kind {
+ COLLECTION("collection of", SimpleType.COLLECTION),
LIST("list of", SimpleType.LIST),
SET("set of", SimpleType.SET);
@@ -180,7 +184,7 @@
*/
public enum Kind {
MESSAGE_SEGMENT("message segment", SimpleType.DIAGNOSTIC, SimpleType.FRAGMENT),
- FILE_NAME("file name", SimpleType.FILE, SimpleType.FILE_OBJECT);
+ FILE_NAME("file name", SimpleType.FILE, SimpleType.FILE_OBJECT, SimpleType.PATH);
final String kindName;
final SimpleType[] choices;
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/api/BasicJavacTask.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/api/BasicJavacTask.java Thu Jun 15 13:44:42 2017 +0200
@@ -52,6 +52,7 @@
import com.sun.tools.javac.platform.PlatformDescription;
import com.sun.tools.javac.platform.PlatformDescription.PluginInfo;
import com.sun.tools.javac.processing.JavacProcessingEnvironment;
+import com.sun.tools.javac.resources.CompilerProperties.Errors;
import com.sun.tools.javac.tree.JCTree;
import com.sun.tools.javac.util.Context;
import com.sun.tools.javac.util.DefinedBy;
@@ -219,7 +220,7 @@
}
}
for (List<String> p: pluginsToCall) {
- Log.instance(context).error("plugin.not.found", p.head);
+ Log.instance(context).error(Errors.PluginNotFound(p.head));
}
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/api/JavacTrees.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/api/JavacTrees.java Thu Jun 15 13:44:42 2017 +0200
@@ -102,6 +102,9 @@
import com.sun.tools.javac.parser.Tokens.Comment;
import com.sun.tools.javac.parser.Tokens.Comment.CommentStyle;
import com.sun.tools.javac.processing.JavacProcessingEnvironment;
+import com.sun.tools.javac.resources.CompilerProperties.Errors;
+import com.sun.tools.javac.resources.CompilerProperties.Notes;
+import com.sun.tools.javac.resources.CompilerProperties.Warnings;
import com.sun.tools.javac.tree.DCTree;
import com.sun.tools.javac.tree.DCTree.DCBlockTag;
import com.sun.tools.javac.tree.DCTree.DCDocComment;
@@ -1129,19 +1132,19 @@
try {
switch (kind) {
case ERROR:
- log.error(DiagnosticFlag.MULTIPLE, pos, "proc.messager", msg.toString());
+ log.error(DiagnosticFlag.MULTIPLE, pos, Errors.ProcMessager(msg.toString()));
break;
case WARNING:
- log.warning(pos, "proc.messager", msg.toString());
+ log.warning(pos, Warnings.ProcMessager(msg.toString()));
break;
case MANDATORY_WARNING:
- log.mandatoryWarning(pos, "proc.messager", msg.toString());
+ log.mandatoryWarning(pos, Warnings.ProcMessager(msg.toString()));
break;
default:
- log.note(pos, "proc.messager", msg.toString());
+ log.note(pos, Notes.ProcMessager(msg.toString()));
}
} finally {
if (oldSource != null)
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/ClassFinder.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/ClassFinder.java Thu Jun 15 13:44:42 2017 +0200
@@ -56,6 +56,7 @@
import com.sun.tools.javac.jvm.Profile;
import com.sun.tools.javac.main.Option;
import com.sun.tools.javac.platform.PlatformDescription;
+import com.sun.tools.javac.resources.CompilerProperties.Fragments;
import com.sun.tools.javac.util.*;
import static javax.tools.StandardLocation.*;
@@ -292,7 +293,9 @@
try {
fillIn(p);
} catch (IOException ex) {
- throw new CompletionFailure(sym, ex.getLocalizedMessage()).initCause(ex);
+ JCDiagnostic msg =
+ diagFactory.fragment(Fragments.ExceptionMessage(ex.getLocalizedMessage()));
+ throw new CompletionFailure(sym, msg).initCause(ex);
}
}
if (!reader.filling)
@@ -329,7 +332,9 @@
*/
void fillIn(ClassSymbol c) {
if (completionFailureName == c.fullname) {
- throw new CompletionFailure(c, "user-selected completion failure by class name");
+ JCDiagnostic msg =
+ diagFactory.fragment(Fragments.UserSelectedCompletionFailure);
+ throw new CompletionFailure(c, msg);
}
currentOwner = c;
JavaFileObject classfile = c.classfile;
@@ -365,7 +370,7 @@
// where
private CompletionFailure classFileNotFound(ClassSymbol c) {
JCDiagnostic diag =
- diagFactory.fragment("class.file.not.found", c.flatname);
+ diagFactory.fragment(Fragments.ClassFileNotFound(c.flatname));
return newCompletionFailure(c, diag);
}
/** Static factory for CompletionFailure objects.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/ModuleFinder.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/ModuleFinder.java Thu Jun 15 13:44:42 2017 +0200
@@ -225,7 +225,7 @@
name = moduleNameFromSourceReader.readModuleName(fo);
if (name == null) {
JCDiagnostic diag =
- diags.fragment("file.does.not.contain.module");
+ diags.fragment(Fragments.FileDoesNotContainModule);
ClassSymbol errModuleInfo = syms.defineClass(names.module_info, syms.errModule);
throw new ClassFinder.BadClassFile(errModuleInfo, fo, diag, diags);
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java Thu Jun 15 13:44:42 2017 +0200
@@ -2148,18 +2148,6 @@
*/
public JCDiagnostic diag;
- /** A localized string describing the failure.
- * @deprecated Use {@code getDetail()} or {@code getMessage()}
- */
- @Deprecated
- public String errmsg;
-
- public CompletionFailure(Symbol sym, String errmsg) {
- this.sym = sym;
- this.errmsg = errmsg;
-// this.printStackTrace();//DEBUG
- }
-
public CompletionFailure(Symbol sym, JCDiagnostic diag) {
this.sym = sym;
this.diag = diag;
@@ -2172,14 +2160,11 @@
@Override
public String getMessage() {
- if (diag != null)
- return diag.getMessage(null);
- else
- return errmsg;
+ return diag.getMessage(null);
}
- public Object getDetailValue() {
- return (diag != null ? diag : errmsg);
+ public JCDiagnostic getDetailValue() {
+ return diag;
}
@Override
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/TypeAnnotations.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/TypeAnnotations.java Thu Jun 15 13:44:42 2017 +0200
@@ -55,6 +55,7 @@
import com.sun.tools.javac.comp.Attr;
import com.sun.tools.javac.comp.AttrContext;
import com.sun.tools.javac.comp.Env;
+import com.sun.tools.javac.resources.CompilerProperties.Errors;
import com.sun.tools.javac.tree.JCTree;
import com.sun.tools.javac.tree.TreeInfo;
import com.sun.tools.javac.tree.JCTree.JCBlock;
@@ -480,12 +481,12 @@
// The normal declaration annotation checks make sure that the use is valid.
break;
case 1:
- log.error(typetree.pos(), "cant.type.annotate.scoping.1",
- onlyTypeAnnotations);
+ log.error(typetree.pos(),
+ Errors.CantTypeAnnotateScoping1(onlyTypeAnnotations.head));
break;
default:
- log.error(typetree.pos(), "cant.type.annotate.scoping",
- onlyTypeAnnotations);
+ log.error(typetree.pos(),
+ Errors.CantTypeAnnotateScoping(onlyTypeAnnotations));
}
return type;
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Types.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Types.java Thu Jun 15 13:44:42 2017 +0200
@@ -58,6 +58,7 @@
import static com.sun.tools.javac.code.Type.*;
import static com.sun.tools.javac.code.TypeTag.*;
import static com.sun.tools.javac.jvm.ClassFile.externalize;
+import com.sun.tools.javac.resources.CompilerProperties.Fragments;
/**
* Utility class containing various operations on types.
@@ -374,7 +375,7 @@
if (!chk.checkValidGenericType(site)) {
//if the inferred functional interface type is not well-formed,
//or if it's not a subtype of the original target, issue an error
- throw failure(diags.fragment("no.suitable.functional.intf.inst", site));
+ throw failure(diags.fragment(Fragments.NoSuitableFunctionalIntfInst(site)));
}
return memberType(site, descSym);
}
@@ -434,13 +435,13 @@
} else {
//the target method(s) should be the only abstract members of t
throw failure("not.a.functional.intf.1", origin,
- diags.fragment("incompatible.abstracts", Kinds.kindName(origin), origin));
+ diags.fragment(Fragments.IncompatibleAbstracts(Kinds.kindName(origin), origin)));
}
}
if (abstracts.isEmpty()) {
//t must define a suitable non-generic method
throw failure("not.a.functional.intf.1", origin,
- diags.fragment("no.abstracts", Kinds.kindName(origin), origin));
+ diags.fragment(Fragments.NoAbstracts(Kinds.kindName(origin), origin)));
} else if (abstracts.size() == 1) {
return new FunctionDescriptor(abstracts.first());
} else { // size > 1
@@ -456,9 +457,11 @@
desc.type.getReturnType(),
desc.type.getThrownTypes()));
}
+ JCDiagnostic msg =
+ diags.fragment(Fragments.IncompatibleDescsInFunctionalIntf(Kinds.kindName(origin),
+ origin));
JCDiagnostic.MultilineDiagnostic incompatibleDescriptors =
- new JCDiagnostic.MultilineDiagnostic(diags.fragment("incompatible.descs.in.functional.intf",
- Kinds.kindName(origin), origin), descriptors.toList());
+ new JCDiagnostic.MultilineDiagnostic(msg, descriptors.toList());
throw failure(incompatibleDescriptors);
}
return descRes;
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Analyzer.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Analyzer.java Thu Jun 15 13:44:42 2017 +0200
@@ -30,6 +30,7 @@
import com.sun.tools.javac.code.Type;
import com.sun.tools.javac.code.Types;
import com.sun.tools.javac.comp.ArgumentAttr.LocalCacheContext;
+import com.sun.tools.javac.resources.CompilerProperties.Warnings;
import com.sun.tools.javac.tree.JCTree;
import com.sun.tools.javac.tree.JCTree.JCBlock;
import com.sun.tools.javac.tree.JCTree.JCClassDecl;
@@ -246,7 +247,7 @@
explicitArgs = explicitArgs.tail;
}
//exact match
- log.warning(oldTree.clazz, "diamond.redundant.args");
+ log.warning(oldTree.clazz, Warnings.DiamondRedundantArgs);
}
}
}
@@ -294,7 +295,7 @@
@Override
void process (JCNewClass oldTree, JCLambda newTree, boolean hasErrors){
if (!hasErrors) {
- log.warning(oldTree.def, "potential.lambda.found");
+ log.warning(oldTree.def, Warnings.PotentialLambdaFound);
}
}
}
@@ -322,7 +323,7 @@
void process (JCMethodInvocation oldTree, JCMethodInvocation newTree, boolean hasErrors){
if (!hasErrors) {
//exact match
- log.warning(oldTree, "method.redundant.typeargs");
+ log.warning(oldTree, Warnings.MethodRedundantTypeargs);
}
}
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Annotate.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Annotate.java Thu Jun 15 13:44:42 2017 +0200
@@ -254,7 +254,7 @@
Lint prevLint = deferPos != null ? null : chk.setLint(lint);
try {
if (s.hasAnnotations() && annotations.nonEmpty())
- log.error(annotations.head.pos, "already.annotated", Kinds.kindName(s), s);
+ log.error(annotations.head.pos, Errors.AlreadyAnnotated(Kinds.kindName(s), s));
Assert.checkNonNull(s, "Symbol argument to actualEnterAnnotations is null");
@@ -342,7 +342,7 @@
if (annotated.containsKey(a.type.tsym)) {
if (!allowRepeatedAnnos) {
- log.error(DiagnosticFlag.SOURCE_LEVEL, a.pos(), "repeatable.annotations.not.supported.in.source", sourceName);
+ log.error(DiagnosticFlag.SOURCE_LEVEL, a.pos(), Errors.RepeatableAnnotationsNotSupportedInSource(sourceName));
}
ListBuffer<T> l = annotated.get(a.type.tsym);
l = l.append(c);
@@ -456,8 +456,7 @@
boolean isError = a.type.isErroneous();
if (!a.type.tsym.isAnnotationType() && !isError) {
- log.error(a.annotationType.pos(),
- "not.annotation.type", a.type.toString());
+ log.error(a.annotationType.pos(), Errors.NotAnnotationType(a.type));
isError = true;
}
@@ -486,13 +485,13 @@
Type thisAnnotationType, boolean badAnnotation, Env<AttrContext> env, boolean elidedValue)
{
if (!nameValuePair.hasTag(ASSIGN)) {
- log.error(nameValuePair.pos(), "annotation.value.must.be.name.value");
+ log.error(nameValuePair.pos(), Errors.AnnotationValueMustBeNameValue);
attributeAnnotationValue(nameValuePair.type = syms.errType, nameValuePair, env);
return null;
}
JCAssign assign = (JCAssign)nameValuePair;
if (!assign.lhs.hasTag(IDENT)) {
- log.error(nameValuePair.pos(), "annotation.value.must.be.name.value");
+ log.error(nameValuePair.pos(), Errors.AnnotationValueMustBeNameValue);
attributeAnnotationValue(nameValuePair.type = syms.errType, nameValuePair, env);
return null;
}
@@ -505,7 +504,7 @@
left.sym = method;
left.type = method.type;
if (method.owner != thisAnnotationType.tsym && !badAnnotation)
- log.error(left.pos(), "no.annotation.member", left.name, thisAnnotationType);
+ log.error(left.pos(), Errors.NoAnnotationMember(left.name, thisAnnotationType));
Type resultType = method.type.getReturnType();
// Compute value part
@@ -526,7 +525,7 @@
try {
expectedElementType.tsym.complete();
} catch(CompletionFailure e) {
- log.error(tree.pos(), "cant.resolve", Kinds.kindName(e.sym), e.sym);
+ log.error(tree.pos(), Errors.CantResolve(Kinds.kindName(e.sym), e.sym.getQualifiedName(), null, null));
expectedElementType = syms.errType;
}
@@ -538,10 +537,10 @@
//error recovery
if (tree.hasTag(NEWARRAY)) {
if (!expectedElementType.isErroneous())
- log.error(tree.pos(), "annotation.value.not.allowable.type");
+ log.error(tree.pos(), Errors.AnnotationValueNotAllowableType);
JCNewArray na = (JCNewArray)tree;
if (na.elemtype != null) {
- log.error(na.elemtype.pos(), "new.not.allowed.in.annotation");
+ log.error(na.elemtype.pos(), Errors.NewNotAllowedInAnnotation);
}
for (List<JCExpression> l = na.elems; l.nonEmpty(); l=l.tail) {
attributeAnnotationValue(syms.errType,
@@ -555,7 +554,7 @@
if (tree.hasTag(ANNOTATION)) {
return attributeAnnotation((JCAnnotation)tree, expectedElementType, env);
} else {
- log.error(tree.pos(), "annotation.value.must.be.annotation");
+ log.error(tree.pos(), Errors.AnnotationValueMustBeAnnotation);
expectedElementType = syms.errType;
}
}
@@ -563,7 +562,7 @@
//error recovery
if (tree.hasTag(ANNOTATION)) {
if (!expectedElementType.isErroneous())
- log.error(tree.pos(), "annotation.not.valid.for.type", expectedElementType);
+ log.error(tree.pos(), Errors.AnnotationNotValidForType(expectedElementType));
attributeAnnotation((JCAnnotation)tree, syms.errType, env);
return new Attribute.Error(((JCAnnotation)tree).annotationType.type);
}
@@ -598,7 +597,7 @@
//error recovery:
if (!expectedElementType.isErroneous())
- log.error(tree.pos(), "annotation.value.not.allowable.type");
+ log.error(tree.pos(), Errors.AnnotationValueNotAllowableType);
return new Attribute.Error(attr.attribExpr(tree, env, expectedElementType));
}
@@ -609,7 +608,7 @@
TreeInfo.nonstaticSelect(tree) ||
sym.kind != VAR ||
(sym.flags() & Flags.ENUM) == 0) {
- log.error(tree.pos(), "enum.annotation.must.be.enum.constant");
+ log.error(tree.pos(), Errors.EnumAnnotationMustBeEnumConstant);
return new Attribute.Error(result.getOriginalType());
}
VarSymbol enumerator = (VarSymbol) sym;
@@ -640,7 +639,7 @@
if (result.isErroneous())
return new Attribute.Error(result.getOriginalType());
if (result.constValue() == null) {
- log.error(tree.pos(), "attribute.value.must.be.constant");
+ log.error(tree.pos(), Errors.AttributeValueMustBeConstant);
return new Attribute.Error(expectedElementType);
}
result = cfolder.coerce(result, expectedElementType);
@@ -656,7 +655,7 @@
JCNewArray na = (JCNewArray)tree;
if (na.elemtype != null) {
- log.error(na.elemtype.pos(), "new.not.allowed.in.annotation");
+ log.error(na.elemtype.pos(), Errors.NewNotAllowedInAnnotation);
}
ListBuffer<Attribute> buf = new ListBuffer<>();
for (List<JCExpression> l = na.elems; l.nonEmpty(); l=l.tail) {
@@ -751,7 +750,7 @@
}
if (!repeated.isEmpty() && targetContainerType == null) {
- log.error(ctx.pos.get(annotations.head), "duplicate.annotation.invalid.repeated", origAnnoType);
+ log.error(ctx.pos.get(annotations.head), Errors.DuplicateAnnotationInvalidRepeated(origAnnoType));
return null;
}
@@ -798,7 +797,7 @@
}
if (!chk.validateAnnotationDeferErrors(annoTree))
- log.error(annoTree.pos(), "duplicate.annotation.invalid.repeated", origAnnoType);
+ log.error(annoTree.pos(), Errors.DuplicateAnnotationInvalidRepeated(origAnnoType));
c = attributeAnnotation(annoTree, targetContainerType, ctx.env);
c.setSynthesized(true);
@@ -827,7 +826,7 @@
Attribute.Compound ca = origAnnoDecl.getAnnotationTypeMetadata().getRepeatable();
if (ca == null) { // has no Repeatable annotation
if (reportError)
- log.error(pos, "duplicate.annotation.missing.container", origAnnoType, syms.repeatableType);
+ log.error(pos, Errors.DuplicateAnnotationMissingContainer(origAnnoType));
return null;
}
@@ -855,17 +854,17 @@
// Repeatable must have at least one element
if (ca.values.isEmpty()) {
- log.error(pos, "invalid.repeatable.annotation", annoDecl);
+ log.error(pos, Errors.InvalidRepeatableAnnotation(annoDecl));
return null;
}
Pair<MethodSymbol,Attribute> p = ca.values.head;
Name name = p.fst.name;
if (name != names.value) { // should contain only one element, named "value"
- log.error(pos, "invalid.repeatable.annotation", annoDecl);
+ log.error(pos, Errors.InvalidRepeatableAnnotation(annoDecl));
return null;
}
if (!(p.snd instanceof Attribute.Class)) { // check that the value of "value" is an Attribute.Class
- log.error(pos, "invalid.repeatable.annotation", annoDecl);
+ log.error(pos, Errors.InvalidRepeatableAnnotation(annoDecl));
return null;
}
@@ -900,14 +899,12 @@
}
if (error) {
log.error(pos,
- "invalid.repeatable.annotation.multiple.values",
- targetContainerType,
- nr_value_elems);
+ Errors.InvalidRepeatableAnnotationMultipleValues(targetContainerType,
+ nr_value_elems));
return null;
} else if (nr_value_elems == 0) {
log.error(pos,
- "invalid.repeatable.annotation.no.value",
- targetContainerType);
+ Errors.InvalidRepeatableAnnotationNoValue(targetContainerType));
return null;
}
@@ -915,8 +912,7 @@
// probably "impossible" to fail this
if (containerValueSymbol.kind != MTH) {
log.error(pos,
- "invalid.repeatable.annotation.invalid.value",
- targetContainerType);
+ Errors.InvalidRepeatableAnnotationInvalidValue(targetContainerType));
fatalError = true;
}
@@ -927,10 +923,9 @@
if (!(types.isArray(valueRetType) &&
types.isSameType(expectedType, valueRetType))) {
log.error(pos,
- "invalid.repeatable.annotation.value.return",
- targetContainerType,
- valueRetType,
- expectedType);
+ Errors.InvalidRepeatableAnnotationValueReturn(targetContainerType,
+ valueRetType,
+ expectedType));
fatalError = true;
}
@@ -951,8 +946,7 @@
ListBuffer<T> manualContainer = ctx.annotated.get(validRepeated.type.tsym);
if (manualContainer != null) {
log.error(ctx.pos.get(manualContainer.first()),
- "invalid.repeatable.annotation.repeated.and.container.present",
- manualContainer.first().type.tsym);
+ Errors.InvalidRepeatableAnnotationRepeatedAndContainerPresent(manualContainer.first().type.tsym));
}
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/ArgumentAttr.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/ArgumentAttr.java Thu Jun 15 13:44:42 2017 +0200
@@ -41,6 +41,7 @@
import com.sun.tools.javac.comp.DeferredAttr.LambdaReturnScanner;
import com.sun.tools.javac.comp.Infer.PartiallyInferredMethodType;
import com.sun.tools.javac.comp.Resolve.MethodResolutionPhase;
+import com.sun.tools.javac.resources.CompilerProperties.Fragments;
import com.sun.tools.javac.tree.JCTree;
import com.sun.tools.javac.tree.JCTree.JCConditional;
import com.sun.tools.javac.tree.JCTree.JCExpression;
@@ -433,7 +434,7 @@
return localInfo.check(speculativeTree, speculativeTree.type);
} else if (resultInfo.pt.hasTag(VOID)) {
//this means we are returning a poly conditional from void-compatible lambda expression
- resultInfo.checkContext.report(tree, attr.diags.fragment("conditional.target.cant.be.void"));
+ resultInfo.checkContext.report(tree, attr.diags.fragment(Fragments.ConditionalTargetCantBeVoid));
return attr.types.createErrorType(resultInfo.pt);
} else {
//poly
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java Thu Jun 15 13:44:42 2017 +0200
@@ -53,6 +53,7 @@
import static com.sun.tools.javac.resources.CompilerProperties.Fragments.DiamondInvalidArgs;
import com.sun.tools.javac.resources.CompilerProperties.Errors;
import com.sun.tools.javac.resources.CompilerProperties.Fragments;
+import com.sun.tools.javac.resources.CompilerProperties.Warnings;
import com.sun.tools.javac.tree.*;
import com.sun.tools.javac.tree.JCTree.*;
import com.sun.tools.javac.tree.JCTree.JCPolyExpression.*;
@@ -227,9 +228,9 @@
!resultInfo.pt.hasTag(METHOD) &&
!resultInfo.pt.hasTag(FORALL);
if (shouldCheck && !ownkind.subset(resultInfo.pkind)) {
- log.error(tree.pos(), "unexpected.type",
- resultInfo.pkind.kindNames(),
- ownkind.kindNames());
+ log.error(tree.pos(),
+ Errors.UnexpectedType(resultInfo.pkind.kindNames(),
+ ownkind.kindNames()));
owntype = types.createErrorType(found);
} else if (allowPoly && inferenceContext.free(found)) {
//delay the check if there are inference variables in the found type
@@ -292,9 +293,9 @@
(base.hasTag(IDENT) && TreeInfo.name(base) == names._this)) &&
isAssignableAsBlankFinal(v, env)))) {
if (v.isResourceVariable()) { //TWR resource
- log.error(pos, "try.resource.may.not.be.assigned", v);
+ log.error(pos, Errors.TryResourceMayNotBeAssigned(v));
} else {
- log.error(pos, "cant.assign.val.to.final.var", v);
+ log.error(pos, Errors.CantAssignValToFinalVar(v));
}
}
}
@@ -868,7 +869,7 @@
final DiagnosticPosition pos = tree.hasTag(TYPEAPPLY) ?
(((JCTypeApply) tree).clazz).pos() : tree.pos();
if (t.tsym.isAnonymous()) {
- log.error(pos, "cant.inherit.from.anon");
+ log.error(pos, Errors.CantInheritFromAnon);
return types.createErrorType(t);
}
if (t.isErroneous())
@@ -876,27 +877,27 @@
if (t.hasTag(TYPEVAR) && !classExpected && !interfaceExpected) {
// check that type variable is already visible
if (t.getUpperBound() == null) {
- log.error(pos, "illegal.forward.ref");
+ log.error(pos, Errors.IllegalForwardRef);
return types.createErrorType(t);
}
} else {
t = chk.checkClassType(pos, t, checkExtensible);
}
if (interfaceExpected && (t.tsym.flags() & INTERFACE) == 0) {
- log.error(pos, "intf.expected.here");
+ log.error(pos, Errors.IntfExpectedHere);
// return errType is necessary since otherwise there might
// be undetected cycles which cause attribution to loop
return types.createErrorType(t);
} else if (checkExtensible &&
classExpected &&
(t.tsym.flags() & INTERFACE) != 0) {
- log.error(pos, "no.intf.expected.here");
+ log.error(pos, Errors.NoIntfExpectedHere);
return types.createErrorType(t);
}
if (checkExtensible &&
((t.tsym.flags() & FINAL) != 0)) {
log.error(pos,
- "cant.inherit.from.final", t.tsym);
+ Errors.CantInheritFromFinal(t.tsym));
}
chk.checkNonCyclic(pos, t);
return t;
@@ -980,7 +981,7 @@
chk.checkOverride(env, tree, m);
if (isDefaultMethod && types.overridesObjectMethod(m.enclClass(), m)) {
- log.error(tree, "default.overrides.object.member", m.name, Kinds.kindName(m.location()), m.location());
+ log.error(tree, Errors.DefaultOverridesObjectMember(m.name, Kinds.kindName(m.location()), m.location()));
}
// Enter all type parameters into the local method scope.
@@ -994,7 +995,7 @@
log.error(tree.params.nonEmpty() ?
tree.params.head.pos() :
tree.recvparam.pos(),
- "intf.annotation.members.cant.have.params");
+ Errors.IntfAnnotationMembersCantHaveParams);
// Attribute all value parameters.
for (List<JCVariableDecl> l = tree.params; l.nonEmpty(); l = l.tail) {
@@ -1025,12 +1026,12 @@
// annotation method cannot have throws clause
if (tree.thrown.nonEmpty()) {
log.error(tree.thrown.head.pos(),
- "throws.not.allowed.in.intf.annotation");
+ Errors.ThrowsNotAllowedInIntfAnnotation);
}
// annotation method cannot declare type-parameters
if (tree.typarams.nonEmpty()) {
log.error(tree.typarams.head.pos(),
- "intf.annotation.members.cant.have.type.params");
+ Errors.IntfAnnotationMembersCantHaveTypeParams);
}
// validate annotation method's return type (could be an annotation type)
chk.validateAnnotationType(tree.restype);
@@ -1048,18 +1049,18 @@
if (tree.defaultValue != null) {
if ((owner.flags() & ANNOTATION) == 0)
log.error(tree.pos(),
- "default.allowed.in.intf.annotation.member");
+ Errors.DefaultAllowedInIntfAnnotationMember);
}
if (isDefaultMethod || (tree.sym.flags() & (ABSTRACT | NATIVE)) == 0)
- log.error(tree.pos(), "missing.meth.body.or.decl.abstract");
+ log.error(tree.pos(), Errors.MissingMethBodyOrDeclAbstract);
} else if ((tree.sym.flags() & (ABSTRACT|DEFAULT|PRIVATE)) == ABSTRACT) {
if ((owner.flags() & INTERFACE) != 0) {
- log.error(tree.body.pos(), "intf.meth.cant.have.body");
+ log.error(tree.body.pos(), Errors.IntfMethCantHaveBody);
} else {
- log.error(tree.pos(), "abstract.meth.cant.have.body");
+ log.error(tree.pos(), Errors.AbstractMethCantHaveBody);
}
} else if ((tree.mods.flags & NATIVE) != 0) {
- log.error(tree.pos(), "native.meth.cant.have.body");
+ log.error(tree.pos(), Errors.NativeMethCantHaveBody);
} else {
// Add an implicit super() call unless an explicit call to
// super(...) or this(...) is given
@@ -1081,8 +1082,7 @@
// in enum constructors, except in the compiler
// generated one.
log.error(tree.body.stats.head.pos(),
- "call.to.super.not.allowed.in.enum.ctor",
- env.enclClass.sym);
+ Errors.CallToSuperNotAllowedInEnumCtor(env.enclClass.sym));
}
}
@@ -1252,9 +1252,8 @@
Type base = types.asSuper(exprType, syms.iterableType.tsym);
if (base == null) {
log.error(tree.expr.pos(),
- "foreach.not.applicable.to.type",
- exprType,
- diags.fragment("type.req.array.or.iterable"));
+ Errors.ForeachNotApplicableToType(exprType,
+ Fragments.TypeReqArrayOrIterable));
elemtype = types.createErrorType(exprType);
} else {
List<Type> iterableParams = base.allparams();
@@ -1279,8 +1278,8 @@
while (env1 != null && !env1.tree.hasTag(CLASSDEF)) {
if (env1.tree.hasTag(LABELLED) &&
((JCLabeledStatement) env1.tree).label == tree.label) {
- log.error(tree.pos(), "label.already.in.use",
- tree.label);
+ log.error(tree.pos(),
+ Errors.LabelAlreadyInUse(tree.label));
break;
}
env1 = env1.next;
@@ -1301,7 +1300,7 @@
boolean enumSwitch = (seltype.tsym.flags() & Flags.ENUM) != 0;
boolean stringSwitch = types.isSameType(seltype, syms.stringType);
if (stringSwitch && !allowStringsInSwitch) {
- log.error(DiagnosticFlag.SOURCE_LEVEL, tree.selector.pos(), "string.switch.not.supported.in.source", sourceName);
+ log.error(DiagnosticFlag.SOURCE_LEVEL, tree.selector.pos(), Errors.StringSwitchNotSupportedInSource(sourceName));
}
if (!enumSwitch && !stringSwitch)
seltype = chk.checkType(tree.selector.pos(), seltype, syms.intType);
@@ -1316,9 +1315,9 @@
if (enumSwitch) {
Symbol sym = enumConstant(c.pat, seltype);
if (sym == null) {
- log.error(c.pat.pos(), "enum.label.must.be.unqualified.enum");
+ log.error(c.pat.pos(), Errors.EnumLabelMustBeUnqualifiedEnum);
} else if (!labels.add(sym)) {
- log.error(c.pos(), "duplicate.case.label");
+ log.error(c.pos(), Errors.DuplicateCaseLabel);
}
} else {
Type pattype = attribExpr(c.pat, switchEnv, seltype);
@@ -1327,12 +1326,12 @@
log.error(c.pat.pos(),
(stringSwitch ? "string.const.req" : "const.expr.req"));
} else if (!labels.add(pattype.constValue())) {
- log.error(c.pos(), "duplicate.case.label");
+ log.error(c.pos(), Errors.DuplicateCaseLabel);
}
}
}
} else if (hasDefault) {
- log.error(c.pos(), "duplicate.default.label");
+ log.error(c.pos(), Errors.DuplicateDefaultLabel);
} else {
hasDefault = true;
}
@@ -1401,7 +1400,7 @@
CheckContext twrContext = new Check.NestedCheckContext(resultInfo.checkContext) {
@Override
public void report(DiagnosticPosition pos, JCDiagnostic details) {
- chk.basicHandler.report(pos, diags.fragment("try.not.applicable.to.type", details));
+ chk.basicHandler.report(pos, diags.fragment(Fragments.TryNotApplicableToType(details)));
}
};
ResultInfo twrResult =
@@ -1481,7 +1480,7 @@
close.overrides(syms.autoCloseableClose, resource.tsym, types, true) &&
chk.isHandled(syms.interruptedExceptionType, types.memberType(resource, close).getThrownTypes()) &&
env.info.lint.isEnabled(LintCategory.TRY)) {
- log.warning(LintCategory.TRY, pos, "try.resource.throws.interrupted.exc", resource);
+ log.warning(LintCategory.TRY, pos, Warnings.TryResourceThrowsInterruptedExc(resource));
}
}
}
@@ -1496,7 +1495,7 @@
if (tree.polyKind == PolyKind.POLY && resultInfo.pt.hasTag(VOID)) {
//this means we are returning a poly conditional from void-compatible lambda expression
- resultInfo.checkContext.report(tree, diags.fragment("conditional.target.cant.be.void"));
+ resultInfo.checkContext.report(tree, diags.fragment(Fragments.ConditionalTargetCantBeVoid));
result = tree.type = types.createErrorType(resultInfo.pt);
return;
}
@@ -1574,7 +1573,7 @@
//depending on whether boxing is allowed, we could have incompatibilities
@Override
public void report(DiagnosticPosition pos, JCDiagnostic details) {
- enclosingContext.report(pos, diags.fragment("incompatible.type.in.conditional", details));
+ enclosingContext.report(pos, diags.fragment(Fragments.IncompatibleTypeInConditional(details)));
}
};
}
@@ -1640,8 +1639,9 @@
return thentype.baseType();
if (thentype.hasTag(VOID) || elsetype.hasTag(VOID)) {
- log.error(pos, "neither.conditional.subtype",
- thentype, elsetype);
+ log.error(pos,
+ Errors.NeitherConditionalSubtype(thentype,
+ elsetype));
return thentype.baseType();
}
@@ -1720,7 +1720,7 @@
!labelled.body.hasTag(WHILELOOP) &&
!labelled.body.hasTag(FORLOOP) &&
!labelled.body.hasTag(FOREACHLOOP))
- log.error(pos, "not.loop.label", label);
+ log.error(pos, Errors.NotLoopLabel(label));
// Found labelled statement target, now go inwards
// to next non-labelled tree.
return TreeInfo.referencedStatement(labelled);
@@ -1747,11 +1747,11 @@
env1 = env1.next;
}
if (label != null)
- log.error(pos, "undef.label", label);
+ log.error(pos, Errors.UndefLabel(label));
else if (tag == CONTINUE)
- log.error(pos, "cont.outside.loop");
+ log.error(pos, Errors.ContOutsideLoop);
else
- log.error(pos, "break.outside.switch.loop");
+ log.error(pos, Errors.BreakOutsideSwitchLoop);
return null;
}
@@ -1759,20 +1759,20 @@
// Check that there is an enclosing method which is
// nested within than the enclosing class.
if (env.info.returnResult == null) {
- log.error(tree.pos(), "ret.outside.meth");
+ log.error(tree.pos(), Errors.RetOutsideMeth);
} else {
// Attribute return expression, if it exists, and check that
// it conforms to result type of enclosing method.
if (tree.expr != null) {
if (env.info.returnResult.pt.hasTag(VOID)) {
env.info.returnResult.checkContext.report(tree.expr.pos(),
- diags.fragment("unexpected.ret.val"));
+ diags.fragment(Fragments.UnexpectedRetVal));
}
attribTree(tree.expr, env, env.info.returnResult);
} else if (!env.info.returnResult.pt.hasTag(VOID) &&
!env.info.returnResult.pt.hasTag(NONE)) {
env.info.returnResult.checkContext.report(tree.pos(),
- diags.fragment("missing.ret.val"));
+ diags.fragment(Fragments.MissingRetVal(env.info.returnResult.pt)));
}
}
result = null;
@@ -1834,7 +1834,7 @@
Type site = env.enclClass.sym.type;
if (methName == names._super) {
if (site == syms.objectType) {
- log.error(tree.meth.pos(), "no.superclass", site);
+ log.error(tree.meth.pos(), Errors.NoSuperclass(site));
site = types.createErrorType(syms.objectType);
} else {
site = types.supertype(site);
@@ -1865,8 +1865,8 @@
localEnv, site, true);
}
} else if (tree.meth.hasTag(SELECT)) {
- log.error(tree.meth.pos(), "illegal.qual.not.icls",
- site.tsym);
+ log.error(tree.meth.pos(),
+ Errors.IllegalQualNotIcls(site.tsym));
}
// if we're calling a java.lang.Enum constructor,
@@ -1968,8 +1968,8 @@
((JCExpressionStatement) body.stats.head).expr == tree)
return true;
}
- log.error(tree.pos(),"call.must.be.first.stmt.in.ctor",
- TreeInfo.name(tree.meth));
+ log.error(tree.pos(),
+ Errors.CallMustBeFirstStmtInCtor(TreeInfo.name(tree.meth)));
return false;
}
@@ -2080,9 +2080,9 @@
}
if (!clazztype.isErroneous()) {
if (cdef != null && clazztype.tsym.isInterface()) {
- log.error(tree.encl.pos(), "anon.class.impl.intf.no.qual.for.new");
+ log.error(tree.encl.pos(), Errors.AnonClassImplIntfNoQualForNew);
} else if (clazztype.tsym.isStatic()) {
- log.error(tree.encl.pos(), "qualified.new.of.static.class", clazztype.tsym);
+ log.error(tree.encl.pos(), Errors.QualifiedNewOfStaticClass(clazztype.tsym));
}
}
} else if (!clazztype.tsym.isInterface() &&
@@ -2105,7 +2105,7 @@
(!env.tree.hasTag(VARDEF) ||
(((JCVariableDecl) env.tree).mods.flags & Flags.ENUM) == 0 ||
((JCVariableDecl) env.tree).init != tree))
- log.error(tree.pos(), "enum.cant.be.instantiated");
+ log.error(tree.pos(), Errors.EnumCantBeInstantiated);
boolean isSpeculativeDiamondInferenceRound = TreeInfo.isDiamond(tree) &&
resultInfo.checkContext.deferredAttrContext().mode == DeferredAttr.AttrMode.SPECULATIVE;
@@ -2113,17 +2113,17 @@
// Check that class is not abstract
if (cdef == null && !isSpeculativeDiamondInferenceRound && // class body may be nulled out in speculative tree copy
(clazztype.tsym.flags() & (ABSTRACT | INTERFACE)) != 0) {
- log.error(tree.pos(), "abstract.cant.be.instantiated",
- clazztype.tsym);
+ log.error(tree.pos(),
+ Errors.AbstractCantBeInstantiated(clazztype.tsym));
skipNonDiamondPath = true;
} else if (cdef != null && clazztype.tsym.isInterface()) {
// Check that no constructor arguments are given to
// anonymous classes implementing an interface
if (!argtypes.isEmpty())
- log.error(tree.args.head.pos(), "anon.class.impl.intf.no.args");
+ log.error(tree.args.head.pos(), Errors.AnonClassImplIntfNoArgs);
if (!typeargtypes.isEmpty())
- log.error(tree.typeargs.head.pos(), "anon.class.impl.intf.no.typeargs");
+ log.error(tree.typeargs.head.pos(), Errors.AnonClassImplIntfNoTypeargs);
// Error recovery: pretend no arguments were supplied.
argtypes = List.nil();
@@ -2342,7 +2342,7 @@
@Override
public void report(DiagnosticPosition _unused, JCDiagnostic details) {
enclosingContext.report(clazz.clazz,
- diags.fragment("cant.apply.diamond.1", diags.fragment("diamond", tsym), details));
+ diags.fragment(Fragments.CantApplyDiamond1(Fragments.Diamond(tsym), details)));
}
};
}
@@ -2383,8 +2383,8 @@
elemtype = types.elemtype(pt());
} else {
if (!pt().hasTag(ERROR)) {
- log.error(tree.pos(), "illegal.initializer.for.type",
- pt());
+ log.error(tree.pos(),
+ Errors.IllegalInitializerForType(pt()));
}
elemtype = types.createErrorType(pt());
}
@@ -2394,7 +2394,7 @@
owntype = new ArrayType(elemtype, syms.arrayClass);
}
if (!types.isReifiable(elemtype))
- log.error(tree.pos(), "generic.array.creation");
+ log.error(tree.pos(), Errors.GenericArrayCreation);
result = check(tree, owntype, KindSelector.VAL, resultInfo);
}
@@ -2409,7 +2409,7 @@
if (pt().isErroneous() || (pt().hasTag(NONE) && pt() != Type.recoveryType)) {
if (pt().hasTag(NONE)) {
//lambda only allowed in assignment or method invocation/cast context
- log.error(that.pos(), "unexpected.lambda");
+ log.error(that.pos(), Errors.UnexpectedLambda);
}
result = that.type = types.createErrorType(pt());
return;
@@ -2443,8 +2443,10 @@
if (lambdaType.hasTag(FORALL)) {
//lambda expression target desc cannot be a generic method
- resultInfo.checkContext.report(that, diags.fragment("invalid.generic.lambda.target",
- lambdaType, kindName(currentTarget.tsym), currentTarget.tsym));
+ Fragment msg = Fragments.InvalidGenericLambdaTarget(lambdaType,
+ kindName(currentTarget.tsym),
+ currentTarget.tsym);
+ resultInfo.checkContext.report(that, diags.fragment(msg));
result = that.type = types.createErrorType(pt());
return;
}
@@ -2477,7 +2479,7 @@
attribStats(that.params, localEnv);
if (arityMismatch) {
- resultInfo.checkContext.report(that, diags.fragment("incompatible.arg.types.in.lambda"));
+ resultInfo.checkContext.report(that, diags.fragment(Fragments.IncompatibleArgTypesInLambda));
result = that.type = types.createErrorType(currentTarget);
return;
}
@@ -2576,8 +2578,10 @@
}
if (that.hasTag(LAMBDA) && lambdaType.hasTag(FORALL)) {
//lambda expression target desc cannot be a generic method
- resultInfo.checkContext.report(that, diags.fragment("invalid.generic.lambda.target",
- lambdaType, kindName(currentTarget.tsym), currentTarget.tsym));
+ Fragment msg = Fragments.InvalidGenericLambdaTarget(lambdaType,
+ kindName(currentTarget.tsym),
+ currentTarget.tsym);
+ resultInfo.checkContext.report(that, diags.fragment(msg));
currentTarget = types.createErrorType(pt());
}
return new TargetInfo(currentTarget, lambdaType);
@@ -2640,8 +2644,8 @@
}
private void reportIntersectionError(DiagnosticPosition pos, String key, Object... args) {
- resultInfo.checkContext.report(pos, diags.fragment("bad.intersection.target.for.functional.expr",
- diags.fragment(key, args)));
+ resultInfo.checkContext.report(pos,
+ diags.fragment(Fragments.BadIntersectionTargetForFunctionalExpr(diags.fragment(key, args))));
}
};
@@ -2703,7 +2707,7 @@
@Override
public void report(DiagnosticPosition pos, JCDiagnostic details) {
- enclosingContext.report(pos, diags.fragment("incompatible.ret.type.in.lambda", details));
+ enclosingContext.report(pos, diags.fragment(Fragments.IncompatibleRetTypeInLambda(details)));
}
}
@@ -2764,13 +2768,15 @@
//the descriptor's return type must be void
if (tree.getBodyKind() == JCLambda.BodyKind.STATEMENT && tree.canCompleteNormally &&
!returnType.hasTag(VOID) && returnType != Type.recoveryType) {
- checkContext.report(tree, diags.fragment("incompatible.ret.type.in.lambda",
- diags.fragment("missing.ret.val", returnType)));
+ Fragment msg =
+ Fragments.IncompatibleRetTypeInLambda(Fragments.MissingRetVal(returnType));
+ checkContext.report(tree,
+ diags.fragment(msg));
}
List<Type> argTypes = checkContext.inferenceContext().asUndetVars(descriptor.getParameterTypes());
if (!types.isSameTypes(argTypes, TreeInfo.types(tree.params))) {
- checkContext.report(tree, diags.fragment("incompatible.arg.types.in.lambda"));
+ checkContext.report(tree, diags.fragment(Fragments.IncompatibleArgTypesInLambda));
}
}
@@ -2841,7 +2847,7 @@
if (pt().isErroneous() || (pt().hasTag(NONE) && pt() != Type.recoveryType)) {
if (pt().hasTag(NONE)) {
//method reference only allowed in assignment or method invocation/cast context
- log.error(that.pos(), "unexpected.mref");
+ log.error(that.pos(), Errors.UnexpectedMref);
}
result = that.type = types.createErrorType(pt());
return;
@@ -2857,8 +2863,9 @@
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"));
+ log.error(that.expr.pos(),
+ Errors.InvalidMref(Kinds.kindName(that.getMode()),
+ Fragments.MrefInferAndExplicitParams));
exprType = types.createErrorType(exprType);
}
}
@@ -2990,8 +2997,9 @@
if (that.sym.isStatic() && TreeInfo.isStaticSelector(that.expr, names) &&
exprType.getTypeArguments().nonEmpty()) {
//static ref with class type-args
- log.error(that.expr.pos(), "invalid.mref", Kinds.kindName(that.getMode()),
- diags.fragment("static.mref.with.targs"));
+ log.error(that.expr.pos(),
+ Errors.InvalidMref(Kinds.kindName(that.getMode()),
+ Fragments.StaticMrefWithTargs));
result = that.type = types.createErrorType(currentTarget);
return;
}
@@ -3088,8 +3096,9 @@
}
if (incompatibleReturnType != null) {
- checkContext.report(tree, diags.fragment("incompatible.ret.type.in.mref",
- diags.fragment("inconvertible.types", resType, descriptor.getReturnType())));
+ Fragment msg =
+ Fragments.IncompatibleRetTypeInMref(Fragments.InconvertibleTypes(resType, descriptor.getReturnType()));
+ checkContext.report(tree, diags.fragment(msg));
} else {
if (inferenceContext.free(refType)) {
// we need to wait for inference to finish and then replace inference vars in the referent type
@@ -3105,7 +3114,7 @@
if (!speculativeAttr) {
List<Type> thrownTypes = inferenceContext.asUndetVars(descriptor.getThrownTypes());
if (chk.unhandled(refType.getThrownTypes(), thrownTypes).nonEmpty()) {
- log.error(tree, "incompatible.thrown.types.in.mref", refType.getThrownTypes());
+ log.error(tree, Errors.IncompatibleThrownTypesInMref(refType.getThrownTypes()));
}
//18.2.5: "In addition, for all j (1 <= j <= n), the constraint reduces to the bound throws Ej"
thrownTypes.stream()
@@ -3176,7 +3185,7 @@
result = check(tree, owntype, pkind(), resultInfo);
Symbol sym = TreeInfo.symbol(tree);
if (sym != null && sym.kind.matches(KindSelector.TYP_PCK))
- log.error(tree.pos(), "illegal.start.of.type");
+ log.error(tree.pos(), Errors.IllegalStartOfType);
}
public void visitAssign(JCAssign tree) {
@@ -3255,7 +3264,7 @@
// comparisons will not have an acmp* opc at this point.
if ((opc == ByteCodes.if_acmpeq || opc == ByteCodes.if_acmpne)) {
if (!types.isCastable(left, right, new Warner(tree.pos()))) {
- log.error(tree.pos(), "incomparable.types", left, right);
+ log.error(tree.pos(), Errors.IncomparableTypes(left, right));
}
}
@@ -3304,7 +3313,7 @@
clazztype = chk.checkClassOrArrayType(tree.clazz.pos(), clazztype);
}
if (!clazztype.isErroneous() && !types.isReifiable(clazztype)) {
- log.error(tree.clazz.pos(), "illegal.generic.type.for.instof");
+ log.error(tree.clazz.pos(), Errors.IllegalGenericTypeForInstof);
clazztype = types.createErrorType(clazztype);
}
chk.validate(tree.clazz, env, false);
@@ -3319,7 +3328,7 @@
if (types.isArray(atype))
owntype = types.elemtype(atype);
else if (!atype.hasTag(ERROR))
- log.error(tree.pos(), "array.req.but.found", atype);
+ log.error(tree.pos(), Errors.ArrayReqButFound(atype));
if (!pkind().contains(KindSelector.VAL))
owntype = capture(owntype);
result = check(tree, owntype, KindSelector.VAR, resultInfo);
@@ -3432,7 +3441,7 @@
while (elt.hasTag(ARRAY))
elt = ((ArrayType)elt).elemtype;
if (elt.hasTag(TYPEVAR)) {
- log.error(tree.pos(), "type.var.cant.be.deref");
+ log.error(tree.pos(), Errors.TypeVarCantBeDeref);
result = tree.type = types.createErrorType(tree.name, site.tsym, site);
tree.sym = tree.type.tsym;
return ;
@@ -3452,7 +3461,7 @@
env.info.pendingResolutionPhase = null;
Symbol sym = selectSym(tree, sitesym, site, env, resultInfo);
if (sym.kind == VAR && sym.name != names._super && env.info.defaultSuperCallSite != null) {
- log.error(tree.selected.pos(), "not.encl.class", site.tsym);
+ log.error(tree.selected.pos(), Errors.NotEnclClass(site.tsym));
sym = syms.errSymbol;
}
if (sym.exists() && !isType(sym) && pkind().contains(KindSelector.TYP_PCK)) {
@@ -3487,7 +3496,7 @@
sym.name.equals(names.close) &&
sym.overrides(syms.autoCloseableClose, sitesym.type.tsym, types, true) &&
env.info.lint.isEnabled(LintCategory.TRY)) {
- log.warning(LintCategory.TRY, tree, "try.explicit.close.call");
+ log.warning(LintCategory.TRY, tree, Warnings.TryExplicitCloseCall);
}
// Disallow selecting a type from an expression
@@ -3517,7 +3526,7 @@
}
if (!allowStaticInterfaceMethods && sitesym.isInterface() &&
sym.isStatic() && sym.kind == MTH) {
- log.error(DiagnosticFlag.SOURCE_LEVEL, tree.pos(), "static.intf.method.invoke.not.supported.in.source", sourceName);
+ log.error(DiagnosticFlag.SOURCE_LEVEL, tree.pos(), Errors.StaticIntfMethodInvokeNotSupportedInSource(sourceName));
}
} else if (sym.kind != ERR &&
(sym.flags() & STATIC) != 0 &&
@@ -3602,7 +3611,7 @@
? selectSym(tree, location, capture(site.getUpperBound()), env, resultInfo)
: null;
if (sym == null) {
- log.error(pos, "type.var.cant.be.deref");
+ log.error(pos, Errors.TypeVarCantBeDeref);
return syms.errSymbol;
} else {
Symbol sym2 = (sym.flags() & Flags.PRIVATE) != 0 ?
@@ -3626,7 +3635,7 @@
return new VarSymbol(
STATIC | PUBLIC | FINAL, names._class, t, site.tsym);
} else {
- log.error(pos, "cant.deref", site);
+ log.error(pos, Errors.CantDeref(site));
return syms.errSymbol;
}
}
@@ -3926,7 +3935,7 @@
if (!Resolve.isInitializer(env))
return;
- log.error(tree.pos(), "illegal.enum.static.ref");
+ log.error(tree.pos(), Errors.IllegalEnumStaticRef);
}
}
@@ -3973,8 +3982,8 @@
if (icand_sup.nonEmpty() &&
icand_sup.head != sym &&
icand_sup.head.overrides(sym, icand_sup.head.enclClass(), types, true)) {
- log.error(env.tree.pos(), "illegal.default.super.call", env.info.defaultSuperCallSite,
- diags.fragment("overridden.default", sym, sup));
+ log.error(env.tree.pos(),
+ Errors.IllegalDefaultSuperCall(env.info.defaultSuperCallSite, Fragments.OverriddenDefault(sym, sup)));
break;
}
}
@@ -3985,7 +3994,7 @@
JCMethodInvocation app = (JCMethodInvocation)env.tree;
if (app.meth.hasTag(SELECT) &&
!TreeInfo.isStaticSelector(((JCFieldAccess)app.meth).selected, names)) {
- log.error(env.tree.pos(), "illegal.static.intf.meth.call", site);
+ log.error(env.tree.pos(), Errors.IllegalStaticIntfMethCall(site));
}
}
@@ -4130,10 +4139,10 @@
clazztype.getMetadata());
} else {
if (formals.length() != 0) {
- log.error(tree.pos(), "wrong.number.type.args",
- Integer.toString(formals.length()));
+ log.error(tree.pos(),
+ Errors.WrongNumberTypeArgs(Integer.toString(formals.length())));
} else {
- log.error(tree.pos(), "type.doesnt.take.params", clazztype.tsym);
+ log.error(tree.pos(), Errors.TypeDoesntTakeParams(clazztype.tsym));
}
owntype = types.createErrorType(tree.type);
}
@@ -4160,7 +4169,7 @@
//assume 'a' <: 'b'
Type a = sub ? ctype : t;
Type b = sub ? t : ctype;
- log.error(typeTree.pos(), "multicatch.types.must.be.disjoint", a, b);
+ log.error(typeTree.pos(), Errors.MulticatchTypesMustBeDisjoint(a, b));
}
}
}
@@ -4216,7 +4225,7 @@
// if first bound was a typevar, do not accept further bounds.
if (bounds.tail.nonEmpty()) {
log.error(bounds.tail.head.pos(),
- "type.var.may.not.be.followed.by.other.bounds");
+ Errors.TypeVarMayNotBeFollowedByOtherBounds);
return bounds.head.type;
}
} else {
@@ -4438,13 +4447,13 @@
// java.lang.Enum may not be subclassed by a non-enum
if (st.tsym == syms.enumSym &&
((c.flags_field & (Flags.ENUM|Flags.COMPOUND)) == 0))
- log.error(env.tree.pos(), "enum.no.subclassing");
+ log.error(env.tree.pos(), Errors.EnumNoSubclassing);
// Enums may not be extended by source-level classes
if (st.tsym != null &&
((st.tsym.flags_field & Flags.ENUM) != 0) &&
((c.flags_field & (Flags.ENUM | Flags.COMPOUND)) == 0)) {
- log.error(env.tree.pos(), "enum.types.not.extensible");
+ log.error(env.tree.pos(), Errors.EnumTypesNotExtensible);
}
if (isSerializable(c.type)) {
@@ -4510,10 +4519,11 @@
if ((c.flags() & ANNOTATION) != 0) {
if (tree.implementing.nonEmpty())
log.error(tree.implementing.head.pos(),
- "cant.extend.intf.annotation");
- if (tree.typarams.nonEmpty())
+ Errors.CantExtendIntfAnnotation);
+ if (tree.typarams.nonEmpty()) {
log.error(tree.typarams.head.pos(),
- "intf.annotation.cant.have.type.params");
+ Errors.IntfAnnotationCantHaveTypeParams(c));
+ }
// If this annotation type has a @Repeatable, validate
Attribute.Compound repeatable = c.getAnnotationTypeMetadata().getRepeatable();
@@ -4548,7 +4558,7 @@
// Check that a generic class doesn't extend Throwable
if (!c.type.allparams().isEmpty() && types.isSubtype(c.type, syms.throwableType))
- log.error(tree.extending.pos(), "generic.throwable");
+ log.error(tree.extending.pos(), Errors.GenericThrowable);
// Check that all methods which implement some
// method conform to the method they implement.
@@ -4570,7 +4580,7 @@
if (sym == null ||
sym.kind != VAR ||
((VarSymbol) sym).getConstValue() == null)
- log.error(l.head.pos(), "icls.cant.have.static.decl", c);
+ log.error(l.head.pos(), Errors.IclsCantHaveStaticDecl(c));
}
}
@@ -4643,7 +4653,7 @@
if (svuid == null) {
log.warning(LintCategory.SERIAL,
- tree.pos(), "missing.SVUID", c);
+ tree.pos(), Warnings.MissingSVUID(c));
return;
}
@@ -4651,17 +4661,17 @@
if ((svuid.flags() & (STATIC | FINAL)) !=
(STATIC | FINAL))
log.warning(LintCategory.SERIAL,
- TreeInfo.diagnosticPositionFor(svuid, tree), "improper.SVUID", c);
+ TreeInfo.diagnosticPositionFor(svuid, tree), Warnings.ImproperSVUID(c));
// check that it is long
else if (!svuid.type.hasTag(LONG))
log.warning(LintCategory.SERIAL,
- TreeInfo.diagnosticPositionFor(svuid, tree), "long.SVUID", c);
+ TreeInfo.diagnosticPositionFor(svuid, tree), Warnings.LongSVUID(c));
// check constant
else if (svuid.getConstValue() == null)
log.warning(LintCategory.SERIAL,
- TreeInfo.diagnosticPositionFor(svuid, tree), "constant.SVUID", c);
+ TreeInfo.diagnosticPositionFor(svuid, tree), Warnings.ConstantSVUID(c));
}
private Type capture(Type type) {
@@ -4831,13 +4841,13 @@
JCAnnotatedType at = (JCTree.JCAnnotatedType) enclTr;
if (enclTy == null || enclTy.hasTag(NONE)) {
if (at.getAnnotations().size() == 1) {
- log.error(at.underlyingType.pos(), "cant.type.annotate.scoping.1", at.getAnnotations().head.attribute);
+ log.error(at.underlyingType.pos(), Errors.CantTypeAnnotateScoping1(at.getAnnotations().head.attribute));
} else {
ListBuffer<Attribute.Compound> comps = new ListBuffer<>();
for (JCAnnotation an : at.getAnnotations()) {
comps.add(an.attribute);
}
- log.error(at.underlyingType.pos(), "cant.type.annotate.scoping", comps.toList());
+ log.error(at.underlyingType.pos(), Errors.CantTypeAnnotateScoping(comps.toList()));
}
repeat = false;
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java Thu Jun 15 13:44:42 2017 +0200
@@ -42,6 +42,7 @@
import com.sun.tools.javac.util.*;
import com.sun.tools.javac.util.JCDiagnostic.DiagnosticFlag;
import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
+import com.sun.tools.javac.util.JCDiagnostic.Fragment;
import com.sun.tools.javac.util.List;
import com.sun.tools.javac.code.Lint;
@@ -269,7 +270,7 @@
*/
void warnDivZero(DiagnosticPosition pos) {
if (lint.isEnabled(LintCategory.DIVZERO))
- log.warning(LintCategory.DIVZERO, pos, "div.zero");
+ log.warning(LintCategory.DIVZERO, pos, Warnings.DivZero);
}
/**
@@ -288,7 +289,7 @@
* @param ex The failure to report.
*/
public Type completionError(DiagnosticPosition pos, CompletionFailure ex) {
- log.error(JCDiagnostic.DiagnosticFlag.NON_DEFERRABLE, pos, "cant.access", ex.sym, ex.getDetailValue());
+ log.error(JCDiagnostic.DiagnosticFlag.NON_DEFERRABLE, pos, Errors.CantAccess(ex.sym, ex.getDetailValue()));
if (ex instanceof ClassFinder.BadClassFile) throw new Abort();
else return syms.errType;
}
@@ -299,14 +300,14 @@
* required.
* @param found The type that was found.
*/
- Type typeTagError(DiagnosticPosition pos, Object required, Object found) {
+ Type typeTagError(DiagnosticPosition pos, JCDiagnostic required, Object found) {
// this error used to be raised by the parser,
// but has been delayed to this point:
if (found instanceof Type && ((Type)found).hasTag(VOID)) {
- log.error(pos, "illegal.start.of.type");
+ log.error(pos, Errors.IllegalStartOfType);
return syms.errType;
}
- log.error(pos, "type.found.req", found, required);
+ log.error(pos, Errors.TypeFoundReq(found, required));
return types.createErrorType(found instanceof Type ? (Type)found : syms.errType);
}
@@ -316,7 +317,7 @@
* @param sym The referenced symbol.
*/
void earlyRefError(DiagnosticPosition pos, Symbol sym) {
- log.error(pos, "cant.ref.before.ctor.called", sym);
+ log.error(pos, Errors.CantRefBeforeCtorCalled(sym));
}
/** Report duplicate declaration error.
@@ -326,12 +327,18 @@
Symbol location = sym.location();
if (location.kind == MTH &&
((MethodSymbol)location).isStaticOrInstanceInit()) {
- log.error(pos, "already.defined.in.clinit", kindName(sym), sym,
- kindName(sym.location()), kindName(sym.location().enclClass()),
- sym.location().enclClass());
+ log.error(pos,
+ Errors.AlreadyDefinedInClinit(kindName(sym),
+ sym,
+ kindName(sym.location()),
+ kindName(sym.location().enclClass()),
+ sym.location().enclClass()));
} else {
- log.error(pos, "already.defined", kindName(sym), sym,
- kindName(sym.location()), sym.location());
+ log.error(pos,
+ Errors.AlreadyDefined(kindName(sym),
+ sym,
+ kindName(sym.location()),
+ sym.location()));
}
}
}
@@ -340,7 +347,7 @@
*/
void varargsDuplicateError(DiagnosticPosition pos, Symbol sym1, Symbol sym2) {
if (!sym1.type.isErroneous() && !sym2.type.isErroneous()) {
- log.error(pos, "array.and.varargs", sym1, sym2, sym2.location());
+ log.error(pos, Errors.ArrayAndVarargs(sym1, sym2, sym2.location()));
}
}
@@ -530,7 +537,7 @@
*/
CheckContext basicHandler = new CheckContext() {
public void report(DiagnosticPosition pos, JCDiagnostic details) {
- log.error(pos, "prob.found.req", details);
+ log.error(pos, Errors.ProbFoundReq(details));
}
public boolean compatible(Type found, Type req, Warner warn) {
return types.isAssignable(found, req, warn);
@@ -578,10 +585,10 @@
return found;
} else {
if (found.isNumeric() && req.isNumeric()) {
- checkContext.report(pos, diags.fragment("possible.loss.of.precision", found, req));
+ checkContext.report(pos, diags.fragment(Fragments.PossibleLossOfPrecision(found, req)));
return types.createErrorType(found);
}
- checkContext.report(pos, diags.fragment("inconvertible.types", found, req));
+ checkContext.report(pos, diags.fragment(Fragments.InconvertibleTypes(found, req)));
return types.createErrorType(found);
}
}
@@ -599,7 +606,7 @@
if (types.isCastable(found, req, castWarner(pos, found, req))) {
return req;
} else {
- checkContext.report(pos, diags.fragment("inconvertible.types", found, req));
+ checkContext.report(pos, diags.fragment(Fragments.InconvertibleTypes(found, req)));
return types.createErrorType(found);
}
}
@@ -615,7 +622,7 @@
deferredLintHandler.report(() -> {
if (lint.isEnabled(LintCategory.CAST))
log.warning(LintCategory.CAST,
- tree.pos(), "redundant.cast", tree.clazz.type);
+ tree.pos(), Warnings.RedundantCast(tree.clazz.type));
});
}
}
@@ -662,7 +669,7 @@
*/
Type checkNonVoid(DiagnosticPosition pos, Type t) {
if (t.hasTag(VOID)) {
- log.error(pos, "void.not.allowed.here");
+ log.error(pos, Errors.VoidNotAllowedHere);
return types.createErrorType(t);
} else {
return t;
@@ -672,7 +679,7 @@
Type checkClassOrArrayType(DiagnosticPosition pos, Type t) {
if (!t.hasTag(CLASS) && !t.hasTag(ARRAY) && !t.hasTag(ERROR)) {
return typeTagError(pos,
- diags.fragment("type.req.class.array"),
+ diags.fragment(Fragments.TypeReqClassArray),
asTypeParam(t));
} else {
return t;
@@ -686,7 +693,7 @@
Type checkClassType(DiagnosticPosition pos, Type t) {
if (!t.hasTag(CLASS) && !t.hasTag(ERROR)) {
return typeTagError(pos,
- diags.fragment("type.req.class"),
+ diags.fragment(Fragments.TypeReqClass),
asTypeParam(t));
} else {
return t;
@@ -695,7 +702,7 @@
//where
private Object asTypeParam(Type t) {
return (t.hasTag(TYPEVAR))
- ? diags.fragment("type.parameter", t)
+ ? diags.fragment(Fragments.TypeParameter(t))
: t;
}
@@ -705,17 +712,17 @@
t = checkClassOrArrayType(pos, t);
if (t.hasTag(CLASS)) {
if ((t.tsym.flags() & (ABSTRACT | INTERFACE)) != 0) {
- log.error(pos, "abstract.cant.be.instantiated", t.tsym);
+ log.error(pos, Errors.AbstractCantBeInstantiated(t.tsym));
t = types.createErrorType(t);
} else if ((t.tsym.flags() & ENUM) != 0) {
- log.error(pos, "enum.cant.be.instantiated");
+ log.error(pos, Errors.EnumCantBeInstantiated);
t = types.createErrorType(t);
} else {
t = checkClassType(pos, t, true);
}
} else if (t.hasTag(ARRAY)) {
if (!types.isReifiable(((ArrayType)t).elemtype)) {
- log.error(pos, "generic.array.creation");
+ log.error(pos, Errors.GenericArrayCreation);
t = types.createErrorType(t);
}
}
@@ -734,7 +741,7 @@
while (args.nonEmpty()) {
if (args.head.hasTag(WILDCARD))
return typeTagError(pos,
- diags.fragment("type.req.exact"),
+ diags.fragment(Fragments.TypeReqExact),
args.head);
args = args.tail;
}
@@ -752,7 +759,7 @@
return t;
else
return typeTagError(pos,
- diags.fragment("type.req.ref"),
+ diags.fragment(Fragments.TypeReqRef),
t);
}
@@ -779,7 +786,7 @@
return t;
else
return typeTagError(pos,
- diags.fragment("type.req.ref"),
+ diags.fragment(Fragments.TypeReqRef),
t);
}
@@ -793,9 +800,8 @@
boolean checkDisjoint(DiagnosticPosition pos, long flags, long set1, long set2) {
if ((flags & set1) != 0 && (flags & set2) != 0) {
log.error(pos,
- "illegal.combination.of.modifiers",
- asFlagSet(TreeInfo.firstFlag(flags & set1)),
- asFlagSet(TreeInfo.firstFlag(flags & set2)));
+ Errors.IllegalCombinationOfModifiers(asFlagSet(TreeInfo.firstFlag(flags & set1)),
+ asFlagSet(TreeInfo.firstFlag(flags & set2))));
return false;
} else
return true;
@@ -815,14 +821,14 @@
}
if (t.tsym.type.getTypeArguments().isEmpty()) {
log.error(tree.clazz.pos(),
- "cant.apply.diamond.1",
- t, diags.fragment("diamond.non.generic", t));
+ Errors.CantApplyDiamond1(t,
+ Fragments.DiamondNonGeneric(t)));
return types.createErrorType(t);
} else if (tree.typeargs != null &&
tree.typeargs.nonEmpty()) {
log.error(tree.clazz.pos(),
- "cant.apply.diamond.1",
- t, diags.fragment("diamond.and.explicit.params", t));
+ Errors.CantApplyDiamond1(t,
+ Fragments.DiamondAndExplicitParams(t)));
return types.createErrorType(t);
} else {
return t;
@@ -905,24 +911,23 @@
}
if (hasTrustMeAnno && !isTrustMeAllowedOnMethod(m)) {
if (varargElemType != null) {
+ JCDiagnostic msg = allowPrivateSafeVarargs ?
+ diags.fragment(Fragments.VarargsTrustmeOnVirtualVarargs(m)) :
+ diags.fragment(Fragments.VarargsTrustmeOnVirtualVarargsFinalOnly(m));
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));
+ Errors.VarargsInvalidTrustmeAnno(syms.trustMeType.tsym,
+ msg));
} else {
log.error(tree,
- "varargs.invalid.trustme.anno",
- syms.trustMeType.tsym,
- diags.fragment("varargs.trustme.on.non.varargs.meth", m));
+ Errors.VarargsInvalidTrustmeAnno(syms.trustMeType.tsym,
+ Fragments.VarargsTrustmeOnNonVarargsMeth(m)));
}
} else if (hasTrustMeAnno && varargElemType != null &&
types.isReifiable(varargElemType)) {
warnUnsafeVararg(tree,
"varargs.redundant.trustme.anno",
syms.trustMeType.tsym,
- diags.fragment("varargs.trustme.on.reifiable.varargs", varargElemType));
+ diags.fragment(Fragments.VarargsTrustmeOnReifiableVarargs(varargElemType)));
}
else if (!hasTrustMeAnno && varargElemType != null &&
!types.isReifiable(varargElemType)) {
@@ -986,8 +991,8 @@
Type lastArg = argtypes.last();
if (types.isSubtypeUnchecked(lastArg, types.elemtype(varParam)) &&
!types.isSameType(types.erasure(varParam), types.erasure(lastArg)))
- log.warning(argtrees.last().pos(), "inexact.non-varargs.call",
- types.elemtype(varParam), varParam);
+ log.warning(argtrees.last().pos(),
+ Warnings.InexactNonVarargsCall(types.elemtype(varParam),varParam));
}
}
if (useVarargs) {
@@ -1172,14 +1177,14 @@
mask = LocalClassFlags;
if ((sym.owner.flags_field & STATIC) == 0 &&
(flags & ENUM) != 0)
- log.error(pos, "enums.must.be.static");
+ log.error(pos, Errors.EnumsMustBeStatic);
} else if (sym.owner.kind == TYP) {
mask = MemberClassFlags;
if (sym.owner.owner.kind == PCK ||
(sym.owner.flags_field & STATIC) != 0)
mask |= STATIC;
else if ((flags & ENUM) != 0)
- log.error(pos, "enums.must.be.static");
+ log.error(pos, Errors.EnumsMustBeStatic);
// Nested interfaces and enums are always STATIC (Spec ???)
if ((flags & (INTERFACE | ENUM)) != 0 ) implicit = STATIC;
} else {
@@ -1202,12 +1207,12 @@
long illegal = flags & ExtendedStandardFlags & ~mask;
if (illegal != 0) {
if ((illegal & INTERFACE) != 0) {
- log.error(pos, "intf.not.allowed.here");
+ log.error(pos, Errors.IntfNotAllowedHere);
mask |= INTERFACE;
}
else {
log.error(pos,
- "mod.not.allowed.here", asFlagSet(illegal));
+ Errors.ModNotAllowedHere(asFlagSet(illegal)));
}
}
else if ((sym.kind == TYP ||
@@ -1346,7 +1351,7 @@
if (incompatibleArg != null) {
for (JCTree arg : tree.arguments) {
if (arg.type == incompatibleArg) {
- log.error(arg, "not.within.bounds", incompatibleArg, forms.head);
+ log.error(arg, Errors.NotWithinBounds(incompatibleArg, forms.head));
}
forms = forms.tail;
}
@@ -1369,7 +1374,7 @@
// Check that this type is either fully parameterized, or
// not parameterized at all.
if (tree.type.getEnclosingType().isRaw())
- log.error(tree.pos(), "improperly.formed.type.inner.raw.param");
+ log.error(tree.pos(), Errors.ImproperlyFormedTypeInnerRawParam);
if (tree.clazz.hasTag(SELECT))
visitSelectInternal((JCFieldAccess)tree.clazz);
}
@@ -1395,7 +1400,7 @@
// Check that this type is either fully parameterized, or
// not parameterized at all.
if (tree.selected.type.isParameterized() && tree.type.tsym.type.getTypeArguments().nonEmpty())
- log.error(tree.pos(), "improperly.formed.type.param.missing");
+ log.error(tree.pos(), Errors.ImproperlyFormedTypeParamMissing);
}
}
@@ -1405,7 +1410,7 @@
// The enclosing type is not a class, so we are
// looking at a static member type. However, the
// qualifying expression is parameterized.
- log.error(tree.pos(), "cant.select.static.class.from.param.type");
+ log.error(tree.pos(), Errors.CantSelectStaticClassFromParamType);
} else {
// otherwise validate the rest of the expression
tree.selected.accept(this);
@@ -1420,7 +1425,7 @@
@Override
public void visitTypeIdent(JCPrimitiveTypeTree that) {
if (that.type.hasTag(TypeTag.VOID)) {
- log.error(that.pos(), "void.not.allowed.here");
+ log.error(that.pos(), Errors.VoidNotAllowedHere);
}
super.visitTypeIdent(that);
}
@@ -1462,7 +1467,7 @@
!withinAnonConstr(env) &&
tree.type.isRaw()) {
log.warning(LintCategory.RAW,
- tree.pos(), "raw.class.use", tree.type, tree.type.tsym.type);
+ tree.pos(), Warnings.RawClassUse(tree.type, tree.type.tsym.type));
}
}
//where
@@ -1613,15 +1618,16 @@
* @param other The overridden method.
* @return An internationalized string.
*/
- Object cannotOverride(MethodSymbol m, MethodSymbol other) {
- String key;
+ Fragment cannotOverride(MethodSymbol m, MethodSymbol other) {
+ Symbol mloc = m.location();
+ Symbol oloc = other.location();
+
if ((other.owner.flags() & INTERFACE) == 0)
- key = "cant.override";
+ return Fragments.CantOverride(m, mloc, other, oloc);
else if ((m.owner.flags() & INTERFACE) == 0)
- key = "cant.implement";
+ return Fragments.CantImplement(m, mloc, other, oloc);
else
- key = "clashes.with";
- return diags.fragment(key, m, m.location(), other, other.location());
+ return Fragments.ClashesWith(m, mloc, other, oloc);
}
/** A customized "override" warning message.
@@ -1629,15 +1635,16 @@
* @param other The overridden method.
* @return An internationalized string.
*/
- Object uncheckedOverrides(MethodSymbol m, MethodSymbol other) {
- String key;
+ Fragment uncheckedOverrides(MethodSymbol m, MethodSymbol other) {
+ Symbol mloc = m.location();
+ Symbol oloc = other.location();
+
if ((other.owner.flags() & INTERFACE) == 0)
- key = "unchecked.override";
+ return Fragments.UncheckedOverride(m, mloc, other, oloc);
else if ((m.owner.flags() & INTERFACE) == 0)
- key = "unchecked.implement";
+ return Fragments.UncheckedImplement(m, mloc, other, oloc);
else
- key = "unchecked.clash.with";
- return diags.fragment(key, m, m.location(), other, other.location());
+ return Fragments.UncheckedClashWith(m, mloc, other, oloc);
}
/** A customized "override" warning message.
@@ -1645,15 +1652,16 @@
* @param other The overridden method.
* @return An internationalized string.
*/
- Object varargsOverrides(MethodSymbol m, MethodSymbol other) {
- String key;
+ Fragment varargsOverrides(MethodSymbol m, MethodSymbol other) {
+ Symbol mloc = m.location();
+ Symbol oloc = other.location();
+
if ((other.owner.flags() & INTERFACE) == 0)
- key = "varargs.override";
+ return Fragments.VarargsOverride(m, mloc, other, oloc);
else if ((m.owner.flags() & INTERFACE) == 0)
- key = "varargs.implement";
+ return Fragments.VarargsImplement(m, mloc, other, oloc);
else
- key = "varargs.clash.with";
- return diags.fragment(key, m, m.location(), other, other.location());
+ return Fragments.VarargsClashWith(m, mloc, other, oloc);
}
/** Check that this method conforms with overridden method 'other'.
@@ -1689,8 +1697,8 @@
// Error if static method overrides instance method (JLS 8.4.6.2).
if ((m.flags() & STATIC) != 0 &&
(other.flags() & STATIC) == 0) {
- log.error(TreeInfo.diagnosticPositionFor(m, tree), "override.static",
- cannotOverride(m, other));
+ log.error(TreeInfo.diagnosticPositionFor(m, tree),
+ Errors.OverrideStatic(cannotOverride(m, other)));
m.flags_field |= BAD_OVERRIDE;
return;
}
@@ -1700,9 +1708,9 @@
if ((other.flags() & FINAL) != 0 ||
(m.flags() & STATIC) == 0 &&
(other.flags() & STATIC) != 0) {
- log.error(TreeInfo.diagnosticPositionFor(m, tree), "override.meth",
- cannotOverride(m, other),
- asFlagSet(other.flags() & (FINAL | STATIC)));
+ log.error(TreeInfo.diagnosticPositionFor(m, tree),
+ Errors.OverrideMeth(cannotOverride(m, other),
+ asFlagSet(other.flags() & (FINAL | STATIC))));
m.flags_field |= BAD_OVERRIDE;
return;
}
@@ -1714,11 +1722,12 @@
// Error if overriding method has weaker access (JLS 8.4.6.3).
if (protection(m.flags()) > protection(other.flags())) {
- log.error(TreeInfo.diagnosticPositionFor(m, tree), "override.weaker.access",
- cannotOverride(m, other),
+ log.error(TreeInfo.diagnosticPositionFor(m, tree),
(other.flags() & AccessFlags) == 0 ?
- "package" :
- asFlagSet(other.flags() & AccessFlags));
+ Errors.OverrideWeakerAccess(cannotOverride(m, other),
+ "package") :
+ Errors.OverrideWeakerAccess(cannotOverride(m, other),
+ asFlagSet(other.flags() & AccessFlags)));
m.flags_field |= BAD_OVERRIDE;
return;
}
@@ -1740,14 +1749,12 @@
if (!resultTypesOK) {
if ((m.flags() & STATIC) != 0 && (other.flags() & STATIC) != 0) {
log.error(TreeInfo.diagnosticPositionFor(m, tree),
- Errors.OverrideIncompatibleRet(Fragments.CantHide(m, m.location(), other,
+ Errors.OverrideIncompatibleRet(Fragments.CantHide(m, m.location(), other,
other.location()), mtres, otres));
m.flags_field |= BAD_OVERRIDE;
} else {
log.error(TreeInfo.diagnosticPositionFor(m, tree),
- "override.incompatible.ret",
- cannotOverride(m, other),
- mtres, otres);
+ Errors.OverrideIncompatibleRet(cannotOverride(m, other), mtres, otres));
m.flags_field |= BAD_OVERRIDE;
}
return;
@@ -1765,9 +1772,7 @@
List<Type> unhandledUnerased = unhandled(mt.getThrownTypes(), otthrown);
if (unhandledErased.nonEmpty()) {
log.error(TreeInfo.diagnosticPositionFor(m, tree),
- "override.meth.doesnt.throw",
- cannotOverride(m, other),
- unhandledUnerased.head);
+ Errors.OverrideMethDoesntThrow(cannotOverride(m, other), unhandledUnerased.head));
m.flags_field |= BAD_OVERRIDE;
return;
}
@@ -1784,15 +1789,14 @@
&& lint.isEnabled(LintCategory.OVERRIDES)) {
log.warning(TreeInfo.diagnosticPositionFor(m, tree),
((m.flags() & Flags.VARARGS) != 0)
- ? "override.varargs.missing"
- : "override.varargs.extra",
- varargsOverrides(m, other));
+ ? Warnings.OverrideVarargsMissing(varargsOverrides(m, other))
+ : Warnings.OverrideVarargsExtra(varargsOverrides(m, other)));
}
// Warn if instance method overrides bridge method (compiler spec ??)
if ((other.flags() & BRIDGE) != 0) {
- log.warning(TreeInfo.diagnosticPositionFor(m, tree), "override.bridge",
- uncheckedOverrides(m, other));
+ log.warning(TreeInfo.diagnosticPositionFor(m, tree),
+ Warnings.OverrideBridge(uncheckedOverrides(m, other)));
}
// Warn if a deprecated method overridden by a non-deprecated one.
@@ -1871,8 +1875,8 @@
continue;
Type st2 = types.memberType(t2, s2);
if (types.overrideEquivalent(st1, st2))
- log.error(pos, "concrete.inheritance.conflict",
- s1, t1, s2, t2, sup);
+ log.error(pos,
+ Errors.ConcreteInheritanceConflict(s1, t1, s2, t2, sup));
}
}
}
@@ -1971,9 +1975,8 @@
types.covariantReturnType(rt2, rt1, types.noWarnings)) ||
checkCommonOverriderIn(s1,s2,site);
if (!compat) {
- log.error(pos, "types.incompatible.diff.ret",
- t1, t2, s2.name +
- "(" + types.memberType(t2, s2).getParameterTypes() + ")");
+ log.error(pos, Errors.TypesIncompatibleDiffRet(t1, t2, s2.name +
+ "(" + types.memberType(t2, s2).getParameterTypes() + ")"));
return s2;
}
} else if (checkNameClash((ClassSymbol)site.tsym, s1, s2) &&
@@ -2017,7 +2020,7 @@
ClassSymbol origin = (ClassSymbol)m.owner;
if ((origin.flags() & ENUM) != 0 && names.finalize.equals(m.name))
if (m.overrides(syms.enumFinalFinalize, origin, types, false)) {
- log.error(tree.pos(), "enum.no.finalize");
+ log.error(tree.pos(), Errors.EnumNoFinalize);
return;
}
for (Type t = origin.type; t.hasTag(CLASS);
@@ -2097,7 +2100,7 @@
if (overridesEquals && !overridesHashCode) {
log.warning(LintCategory.OVERRIDES, pos,
- "override.equals.but.not.hashcode", someClass);
+ Warnings.OverrideEqualsButNotHashcode(someClass));
}
}
}
@@ -2154,8 +2157,8 @@
MethodSymbol undef1 =
new MethodSymbol(undef.flags(), undef.name,
types.memberType(c.type, undef), undef.owner);
- log.error(pos, "does.not.override.abstract",
- c, undef1, undef1.location());
+ log.error(pos,
+ Errors.DoesNotOverrideAbstract(c, undef1, undef1.location()));
}
}
@@ -2288,7 +2291,7 @@
if (seen.contains(t)) {
tv = (TypeVar)t;
tv.bound = types.createErrorType(t);
- log.error(pos, "cyclic.inheritance", t);
+ log.error(pos, Errors.CyclicInheritance(t));
} else if (t.hasTag(TYPEVAR)) {
tv = (TypeVar)t;
seen = seen.prepend(tv);
@@ -2340,7 +2343,7 @@
/** Note that we found an inheritance cycle. */
private void noteCyclic(DiagnosticPosition pos, ClassSymbol c) {
- log.error(pos, "cyclic.inheritance", c);
+ log.error(pos, Errors.CyclicInheritance(c));
for (List<Type> l=types.interfaces(c.type); l.nonEmpty(); l=l.tail)
l.head = types.createErrorType((ClassSymbol)l.head.tsym, Type.noType);
Type st = types.supertype(c.type);
@@ -2509,9 +2512,7 @@
if (!types.isSubSignature(sym.type, types.memberType(site, s), allowStrictMethodClashCheck)) {
if (types.hasSameArgs(s.erasure(types), sym.erasure(types))) {
log.error(pos,
- "name.clash.same.erasure.no.hide",
- sym, sym.location(),
- s, s.location());
+ Errors.NameClashSameErasureNoHide(sym, sym.location(), s, s.location()));
return;
} else {
checkPotentiallyAmbiguousOverloads(pos, site, sym, (MethodSymbol)s);
@@ -2647,9 +2648,9 @@
//this means a call site passing an implicit lambda would be ambigiuous
msym1.flags_field |= POTENTIALLY_AMBIGUOUS;
msym2.flags_field |= POTENTIALLY_AMBIGUOUS;
- log.warning(LintCategory.OVERLOADS, pos, "potentially.ambiguous.overload",
- msym1, msym1.location(),
- msym2, msym2.location());
+ log.warning(LintCategory.OVERLOADS, pos,
+ Warnings.PotentiallyAmbiguousOverload(msym1, msym1.location(),
+ msym2, msym2.location()));
return;
}
}
@@ -2679,11 +2680,11 @@
if (isLambda) {
if (belongsToRestrictedPackage(sym)) {
log.warning(LintCategory.SERIAL, tree.pos(),
- "access.to.member.from.serializable.lambda", sym);
+ Warnings.AccessToMemberFromSerializableLambda(sym));
}
} else {
log.warning(tree.pos(),
- "access.to.member.from.serializable.element", sym);
+ Warnings.AccessToMemberFromSerializableElement(sym));
}
}
}
@@ -2715,7 +2716,7 @@
*/
private void syntheticError(DiagnosticPosition pos, Symbol sym) {
if (!sym.type.isErroneous()) {
- log.error(pos, "synthetic.name.conflict", sym, sym.location());
+ log.error(pos, Errors.SyntheticNameConflict(sym, sym.location()));
}
}
@@ -2743,9 +2744,10 @@
List<Type> oldparams = oldit.allparams();
List<Type> newparams = it.allparams();
if (!types.containsTypeEquivalent(oldparams, newparams))
- log.error(pos, "cant.inherit.diff.arg",
- it.tsym, Type.toString(oldparams),
- Type.toString(newparams));
+ log.error(pos,
+ Errors.CantInheritDiffArg(it.tsym,
+ Type.toString(oldparams),
+ Type.toString(newparams)));
}
checkClassBounds(pos, seensofar, it);
}
@@ -2758,7 +2760,7 @@
*/
void checkNotRepeated(DiagnosticPosition pos, Type it, Set<Type> its) {
if (its.contains(it))
- log.error(pos, "repeated.interface");
+ log.error(pos, Errors.RepeatedInterface);
else {
its.add(it);
}
@@ -2808,7 +2810,7 @@
validateAnnotationType(pos, types.elemtype(type));
return;
}
- log.error(pos, "invalid.annotation.member.type");
+ log.error(pos, Errors.InvalidAnnotationMemberType);
}
/**
@@ -2826,7 +2828,7 @@
if (sym.kind == MTH &&
(sym.flags() & (PUBLIC | PROTECTED)) != 0 &&
types.overrideEquivalent(m.type, sym.type))
- log.error(pos, "intf.annotation.member.clash", sym, sup);
+ log.error(pos, Errors.IntfAnnotationMemberClash(sym, sup));
}
}
}
@@ -2851,13 +2853,13 @@
validateAnnotationTree(a);
if (a.type.tsym.isAnnotationType() && !annotationApplicable(a, s))
- log.error(a.pos(), "annotation.type.not.applicable");
+ log.error(a.pos(), Errors.AnnotationTypeNotApplicable);
if (a.annotationType.type.tsym == syms.functionalInterfaceType.tsym) {
if (s.kind != TYP) {
- log.error(a.pos(), "bad.functional.intf.anno");
+ log.error(a.pos(), Errors.BadFunctionalIntfAnno);
} else if (!s.isInterface() || (s.flags() & ANNOTATION) != 0) {
- log.error(a.pos(), "bad.functional.intf.anno.1", diags.fragment("not.a.functional.intf", s));
+ log.error(a.pos(), Errors.BadFunctionalIntfAnno1(Fragments.NotAFunctionalIntf(s)));
}
}
}
@@ -2911,11 +2913,13 @@
MethodSymbol m = (MethodSymbol) sym;
Type ret = m.getReturnType();
if (!(ret.hasTag(ARRAY) && types.isSameType(((ArrayType)ret).elemtype, contained.type))) {
- log.error(pos, "invalid.repeatable.annotation.value.return",
- container, ret, types.makeArrayType(contained.type));
+ log.error(pos,
+ Errors.InvalidRepeatableAnnotationValueReturn(container,
+ ret,
+ types.makeArrayType(contained.type)));
}
} else {
- log.error(pos, "invalid.repeatable.annotation.no.value", container);
+ log.error(pos, Errors.InvalidRepeatableAnnotationNoValue(container));
}
}
@@ -2936,16 +2940,18 @@
}
}
if (error ) {
- log.error(pos, "invalid.repeatable.annotation.retention",
- container, containerRetention,
- contained, containedRetention);
+ log.error(pos,
+ Errors.InvalidRepeatableAnnotationRetention(container,
+ containerRetention.name(),
+ contained,
+ containedRetention.name()));
}
}
private void validateDocumented(Symbol container, Symbol contained, DiagnosticPosition pos) {
if (contained.attribute(syms.documentedType.tsym) != null) {
if (container.attribute(syms.documentedType.tsym) == null) {
- log.error(pos, "invalid.repeatable.annotation.not.documented", container, contained);
+ log.error(pos, Errors.InvalidRepeatableAnnotationNotDocumented(container, contained));
}
}
}
@@ -2953,7 +2959,7 @@
private void validateInherited(Symbol container, Symbol contained, DiagnosticPosition pos) {
if (contained.attribute(syms.inheritedType.tsym) != null) {
if (container.attribute(syms.inheritedType.tsym) == null) {
- log.error(pos, "invalid.repeatable.annotation.not.inherited", container, contained);
+ log.error(pos, Errors.InvalidRepeatableAnnotationNotInherited(container, contained));
}
}
}
@@ -2995,7 +3001,7 @@
}
if (!isTargetSubsetOf(containerTargets, containedTargets)) {
- log.error(pos, "invalid.repeatable.annotation.incompatible.target", container, contained);
+ log.error(pos, Errors.InvalidRepeatableAnnotationIncompatibleTarget(container, contained));
}
}
@@ -3058,9 +3064,7 @@
elm.kind == MTH &&
((MethodSymbol)elm).defaultValue == null) {
log.error(pos,
- "invalid.repeatable.annotation.elem.nondefault",
- container,
- elm);
+ Errors.InvalidRepeatableAnnotationElemNondefault(container, elm));
}
}
}
@@ -3209,8 +3213,8 @@
if (m == null || m.type.isErroneous()) continue;
if (!elements.remove(m)) {
isValid = false;
- log.error(assign.lhs.pos(), "duplicate.annotation.member.value",
- m.name, a.type);
+ log.error(assign.lhs.pos(),
+ Errors.DuplicateAnnotationMemberValue(m.name, a.type));
}
}
@@ -3256,7 +3260,7 @@
for (JCTree elem : na.elems) {
if (!targets.add(TreeInfo.symbol(elem))) {
isValid = false;
- log.error(elem.pos(), "repeated.annotation.target");
+ log.error(elem.pos(), Errors.RepeatedAnnotationTarget);
}
}
return isValid;
@@ -3268,13 +3272,13 @@
!syms.deprecatedType.isErroneous() &&
s.attribute(syms.deprecatedType.tsym) == null) {
log.warning(LintCategory.DEP_ANN,
- pos, "missing.deprecated.annotation");
+ pos, Warnings.MissingDeprecatedAnnotation);
}
// Note: @Deprecated has no effect on local variables, parameters and package decls.
if (lint.isEnabled(LintCategory.DEPRECATION) && !s.isDeprecatableViaAnnotation()) {
if (!syms.deprecatedType.isErroneous() && s.attribute(syms.deprecatedType.tsym) != null) {
log.warning(LintCategory.DEPRECATION, pos,
- "deprecated.annotation.has.no.effect", Kinds.kindName(s));
+ Warnings.DeprecatedAnnotationHasNoEffect(Kinds.kindName(s)));
}
}
}
@@ -3290,14 +3294,14 @@
void checkSunAPI(final DiagnosticPosition pos, final Symbol s) {
if ((s.flags() & PROPRIETARY) != 0) {
deferredLintHandler.report(() -> {
- log.mandatoryWarning(pos, "sun.proprietary", s);
+ log.mandatoryWarning(pos, Warnings.SunProprietary(s));
});
}
}
void checkProfile(final DiagnosticPosition pos, final Symbol s) {
if (profile != Profile.DEFAULT && (s.flags() & NOT_IN_PROFILE) != 0) {
- log.error(pos, "not.in.profile", s, profile);
+ log.error(pos, Errors.NotInProfile(s, profile));
}
}
@@ -3327,7 +3331,7 @@
if ((tsym.flags_field & ACYCLIC_ANN) != 0)
return;
if ((tsym.flags_field & LOCKED) != 0) {
- log.error(pos, "cyclic.annotation.element");
+ log.error(pos, Errors.CyclicAnnotationElement(tsym));
return;
}
try {
@@ -3395,7 +3399,7 @@
if (ctor != null && (ctor.flags_field & ACYCLIC) == 0) {
if ((ctor.flags_field & LOCKED) != 0) {
log.error(TreeInfo.diagnosticPositionFor(ctor, tree),
- "recursive.ctor.invocation");
+ Errors.RecursiveCtorInvocation);
} else {
ctor.flags_field |= LOCKED;
checkCyclicConstructor(tree, callMap.remove(ctor), callMap);
@@ -3433,7 +3437,7 @@
void checkEmptyIf(JCIf tree) {
if (tree.thenpart.hasTag(SKIP) && tree.elsepart == null &&
lint.isEnabled(LintCategory.EMPTY))
- log.warning(LintCategory.EMPTY, tree.thenpart.pos(), "empty.if");
+ log.warning(LintCategory.EMPTY, tree.thenpart.pos(), Warnings.EmptyIf);
}
/** Check that symbol is unique in given scope.
@@ -3473,7 +3477,7 @@
*/
void duplicateErasureError(DiagnosticPosition pos, Symbol sym1, Symbol sym2) {
if (!sym1.type.isErroneous() && !sym2.type.isErroneous()) {
- log.error(pos, "name.clash.same.erasure", sym1, sym2);
+ log.error(pos, Errors.NameClashSameErasure(sym1, sym2));
}
}
@@ -3531,14 +3535,14 @@
}
if (clashing != null) {
if (staticImport)
- log.error(pos, "already.defined.static.single.import", clashing);
+ log.error(pos, Errors.AlreadyDefinedStaticSingleImport(clashing));
else
- log.error(pos, "already.defined.single.import", clashing);
+ log.error(pos, Errors.AlreadyDefinedSingleImport(clashing));
return false;
}
clashing = topLevelScope.findFirst(sym.name, duplicates);
if (clashing != null) {
- log.error(pos, "already.defined.this.unit", clashing);
+ log.error(pos, Errors.AlreadyDefinedThisUnit(clashing));
return false;
}
return true;
@@ -3548,8 +3552,8 @@
*/
public void checkCanonical(JCTree tree) {
if (!isCanonical(tree))
- log.error(tree.pos(), "import.requires.canonical",
- TreeInfo.symbol(tree));
+ log.error(tree.pos(),
+ Errors.ImportRequiresCanonical(TreeInfo.symbol(tree)));
}
// where
private boolean isCanonical(JCTree tree) {
@@ -3570,8 +3574,8 @@
rs.isAccessible(env, c) &&
!fileManager.isSameFile(c.sourcefile, env.toplevel.sourcefile))
{
- log.warning(pos, "auxiliary.class.accessed.from.outside.of.its.source.file",
- c, c.sourcefile);
+ log.warning(pos,
+ Warnings.AuxiliaryClassAccessedFromOutsideOfItsSourceFile(c, c.sourcefile));
}
}
@@ -3631,7 +3635,7 @@
break;
}
}
- log.error(pos, "bad.functional.intf.anno.1", ex.getDiagnostic());
+ log.error(pos, Errors.BadFunctionalIntfAnno1(ex.getDiagnostic()));
}
}
}
@@ -3647,11 +3651,14 @@
TypeSymbol site = (TypeSymbol) TreeInfo.symbol(select.selected);
if (!checkTypeContainsImportableElement(site, site, toplevel.packge, select.name, new HashSet<Symbol>())) {
- log.error(imp.pos(), "cant.resolve.location",
- KindName.STATIC,
- select.name, List.<Type>nil(), List.<Type>nil(),
- Kinds.typeKindName(TreeInfo.symbol(select.selected).type),
- TreeInfo.symbol(select.selected).type);
+ log.error(imp.pos(),
+ Errors.CantResolveLocation(KindName.STATIC,
+ select.name,
+ null,
+ null,
+ Fragments.Location(kindName(site),
+ site,
+ null)));
}
}
}
@@ -3672,7 +3679,7 @@
}
}
if (tsym.kind == PCK && tsym.members().isEmpty() && !tsym.exists()) {
- log.error(DiagnosticFlag.RESOLVE_ERROR, imp.pos, "doesnt.exist", tsym);
+ log.error(DiagnosticFlag.RESOLVE_ERROR, imp.pos, Errors.DoesntExist(tsym));
}
}
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/DeferredAttr.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/DeferredAttr.java Thu Jun 15 13:44:42 2017 +0200
@@ -41,6 +41,7 @@
import com.sun.tools.javac.code.Symbol.*;
import com.sun.tools.javac.comp.Attr.ResultInfo;
import com.sun.tools.javac.comp.Resolve.MethodResolutionPhase;
+import com.sun.tools.javac.resources.CompilerProperties.Errors;
import com.sun.tools.javac.tree.JCTree.*;
import com.sun.tools.javac.util.JCDiagnostic.DiagnosticType;
import com.sun.tools.javac.util.Log.DeferredDiagnosticHandler;
@@ -811,7 +812,7 @@
if (descriptorType.getParameterTypes().length() != tree.params.length()) {
checkContext.report(tree,
- diags.fragment("incompatible.arg.types.in.lambda"));
+ diags.fragment(Fragments.IncompatibleArgTypesInLambda));
}
Type currentReturnType = descriptorType.getReturnType();
@@ -821,8 +822,7 @@
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)));
+ diags.fragment(Fragments.IncompatibleRetTypeInLambda(Fragments.MissingRetVal(currentReturnType))));
}
} else {
LambdaBodyStructChecker lambdaBodyChecker =
@@ -834,20 +834,19 @@
if (returnTypeIsVoid) {
if (!isVoidCompatible) {
resultInfo.checkContext.report(tree.pos(),
- diags.fragment("unexpected.ret.val"));
+ diags.fragment(Fragments.UnexpectedRetVal));
}
} else {
boolean isValueCompatible = lambdaBodyChecker.isPotentiallyValueCompatible
&& !canLambdaBodyCompleteNormally(tree);
if (!isValueCompatible && !isVoidCompatible) {
log.error(tree.body.pos(),
- "lambda.body.neither.value.nor.void.compatible");
+ Errors.LambdaBodyNeitherValueNorVoidCompatible);
}
if (!isValueCompatible) {
resultInfo.checkContext.report(tree.pos(),
- diags.fragment("incompatible.ret.type.in.lambda",
- diags.fragment("missing.ret.val", currentReturnType)));
+ diags.fragment(Fragments.IncompatibleRetTypeInLambda(Fragments.MissingRetVal(currentReturnType))));
}
}
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Enter.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Enter.java Thu Jun 15 13:44:42 2017 +0200
@@ -39,6 +39,7 @@
import com.sun.tools.javac.code.Type.*;
import com.sun.tools.javac.main.Option.PkgInfo;
import com.sun.tools.javac.resources.CompilerProperties.Errors;
+import com.sun.tools.javac.resources.CompilerProperties.Warnings;
import com.sun.tools.javac.tree.*;
import com.sun.tools.javac.tree.JCTree.*;
import com.sun.tools.javac.util.*;
@@ -332,7 +333,7 @@
addEnv = true;
} else if (pd.annotations.nonEmpty()) {
log.error(pd.annotations.head.pos(),
- "pkg.annotations.sb.in.package-info.java");
+ Errors.PkgAnnotationsSbInPackageInfoJava);
}
}
} else {
@@ -363,8 +364,7 @@
JCCompilationUnit tree0 = env0.toplevel;
if (!fileManager.isSameFile(tree.sourcefile, tree0.sourcefile)) {
log.warning(pd != null ? pd.pid.pos() : null,
- "pkg-info.already.seen",
- tree.packge);
+ Warnings.PkgInfoAlreadySeen(tree.packge));
}
}
typeEnvs.put(tree.packge, packageEnv);
@@ -409,7 +409,7 @@
topElement = KindName.INTERFACE;
}
log.error(tree.pos(),
- "class.public.should.be.in.file", topElement, tree.name);
+ Errors.ClassPublicShouldBeInFile(topElement, tree.name));
}
} else {
if (!tree.name.isEmpty() &&
@@ -512,7 +512,7 @@
/** Complain about a duplicate class. */
protected void duplicateClass(DiagnosticPosition pos, ClassSymbol c) {
- log.error(pos, "duplicate.class", c.fullname);
+ log.error(pos, Errors.DuplicateClass(c.fullname));
}
/** Class enter visitor method for type parameters.
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java Thu Jun 15 13:44:42 2017 +0200
@@ -32,6 +32,8 @@
import com.sun.source.tree.LambdaExpressionTree.BodyKind;
import com.sun.tools.javac.code.*;
import com.sun.tools.javac.code.Scope.WriteableScope;
+import com.sun.tools.javac.resources.CompilerProperties.Errors;
+import com.sun.tools.javac.resources.CompilerProperties.Warnings;
import com.sun.tools.javac.tree.*;
import com.sun.tools.javac.util.*;
import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
@@ -427,7 +429,7 @@
scanStat(tree);
if (tree != null && tree.hasTag(JCTree.Tag.BLOCK) && !alive) {
log.error(tree.pos(),
- "initializer.must.be.able.to.complete.normally");
+ Errors.InitializerMustBeAbleToCompleteNormally);
}
}
@@ -435,7 +437,7 @@
*/
void scanStat(JCTree tree) {
if (!alive && tree != null) {
- log.error(tree.pos(), "unreachable.stmt");
+ log.error(tree.pos(), Errors.UnreachableStmt);
if (!tree.hasTag(SKIP)) alive = true;
}
scan(tree);
@@ -503,7 +505,7 @@
scanStat(tree.body);
if (alive && !tree.sym.type.getReturnType().hasTag(VOID))
- log.error(TreeInfo.diagEndPos(tree.body), "missing.ret.stmt");
+ log.error(TreeInfo.diagEndPos(tree.body), Errors.MissingRetStmt);
List<PendingExit> exits = pendingExits.toList();
pendingExits = new ListBuffer<>();
@@ -608,7 +610,7 @@
c.stats.nonEmpty() && l.tail.nonEmpty())
log.warning(Lint.LintCategory.FALLTHROUGH,
l.tail.head.pos(),
- "possible.fall-through.into.case");
+ Warnings.PossibleFallThroughIntoCase);
}
if (!hasDefault) {
alive = true;
@@ -650,7 +652,7 @@
if (lint.isEnabled(Lint.LintCategory.FINALLY)) {
log.warning(Lint.LintCategory.FINALLY,
TreeInfo.diagEndPos(tree.finalizer),
- "finally.cannot.complete");
+ Warnings.FinallyCannotComplete);
}
} else {
while (exits.nonEmpty()) {
@@ -811,18 +813,15 @@
if (classDef != null &&
classDef.pos == exit.tree.pos) {
log.error(exit.tree.pos(),
- "unreported.exception.default.constructor",
- exit.thrown);
+ Errors.UnreportedExceptionDefaultConstructor(exit.thrown));
} else if (exit.tree.hasTag(VARDEF) &&
((JCVariableDecl)exit.tree).sym.isResourceVariable()) {
log.error(exit.tree.pos(),
- "unreported.exception.implicit.close",
- exit.thrown,
- ((JCVariableDecl)exit.tree).sym.name);
+ Errors.UnreportedExceptionImplicitClose(exit.thrown,
+ ((JCVariableDecl)exit.tree).sym.name));
} else {
log.error(exit.tree.pos(),
- "unreported.exception.need.to.catch.or.throw",
- exit.thrown);
+ Errors.UnreportedExceptionNeedToCatchOrThrow(exit.thrown));
}
}
}
@@ -1170,11 +1169,11 @@
void checkCaughtType(DiagnosticPosition pos, Type exc, List<Type> thrownInTry, List<Type> caughtInTry) {
if (chk.subset(exc, caughtInTry)) {
- log.error(pos, "except.already.caught", exc);
+ log.error(pos, Errors.ExceptAlreadyCaught(exc));
} else if (!chk.isUnchecked(pos, exc) &&
!isExceptionOrThrowable(exc) &&
!chk.intersects(exc, thrownInTry)) {
- log.error(pos, "except.never.thrown.in.try", exc);
+ log.error(pos, Errors.ExceptNeverThrownInTry(exc));
} else if (allowImprovedCatchAnalysis) {
List<Type> catchableThrownTypes = chk.intersect(List.of(exc), thrownInTry);
// 'catchableThrownTypes' cannnot possibly be empty - if 'exc' was an
@@ -1610,11 +1609,11 @@
else if ((sym.flags() & FINAL) != 0) {
if ((sym.flags() & PARAMETER) != 0) {
if ((sym.flags() & UNION) != 0) { //multi-catch parameter
- log.error(pos, "multicatch.parameter.may.not.be.assigned", sym);
+ log.error(pos, Errors.MulticatchParameterMayNotBeAssigned(sym));
}
else {
- log.error(pos, "final.parameter.may.not.be.assigned",
- sym);
+ log.error(pos,
+ Errors.FinalParameterMayNotBeAssigned(sym));
}
} else if (!uninits.isMember(sym.adr)) {
log.error(pos, flowKind.errKey, sym);
@@ -1624,7 +1623,7 @@
}
inits.incl(sym.adr);
} else if ((sym.flags() & FINAL) != 0) {
- log.error(pos, "var.might.already.be.assigned", sym);
+ log.error(pos, Errors.VarMightAlreadyBeAssigned(sym));
}
}
//where
@@ -2190,7 +2189,7 @@
for (JCVariableDecl resVar : resourceVarDecls) {
if (unrefdResources.includes(resVar.sym)) {
log.warning(Lint.LintCategory.TRY, resVar.pos(),
- "try.resource.not.referenced", resVar.sym);
+ Warnings.TryResourceNotReferenced(resVar.sym));
unrefdResources.remove(resVar.sym);
}
}
@@ -2601,13 +2600,12 @@
void reportEffectivelyFinalError(DiagnosticPosition pos, Symbol sym) {
String subKey = currentTree.hasTag(LAMBDA) ?
"lambda" : "inner.cls";
- log.error(pos, "cant.ref.non.effectively.final.var", sym, diags.fragment(subKey));
+ log.error(pos, Errors.CantRefNonEffectivelyFinalVar(sym, diags.fragment(subKey)));
}
void reportInnerClsNeedsFinalError(DiagnosticPosition pos, Symbol sym) {
log.error(pos,
- "local.var.accessed.from.icls.needs.final",
- sym);
+ Errors.LocalVarAccessedFromIclsNeedsFinal(sym));
}
/*************************************************************************
@@ -2676,7 +2674,7 @@
if (!resource.hasTag(VARDEF)) {
Symbol var = TreeInfo.symbol(resource);
if (var != null && (var.flags() & (FINAL | EFFECTIVELY_FINAL)) == 0) {
- log.error(resource.pos(), "try.with.resources.expr.effectively.final.var", var);
+ log.error(resource.pos(), Errors.TryWithResourcesExprEffectivelyFinalVar(var));
}
}
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Infer.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Infer.java Thu Jun 15 13:44:42 2017 +0200
@@ -28,6 +28,8 @@
import com.sun.tools.javac.code.Type.UndetVar.UndetVarListener;
import com.sun.tools.javac.code.Types.TypeMapping;
import com.sun.tools.javac.comp.Attr.CheckMode;
+import com.sun.tools.javac.resources.CompilerProperties.Fragments;
+import com.sun.tools.javac.resources.CompilerProperties.Notes;
import com.sun.tools.javac.tree.JCTree;
import com.sun.tools.javac.tree.JCTree.JCTypeCast;
import com.sun.tools.javac.tree.TreeInfo;
@@ -238,7 +240,7 @@
}
if (resultInfo != null && rs.verboseResolutionMode.contains(VerboseResolutionMode.DEFERRED_INST)) {
- log.note(env.tree.pos, "deferred.method.inst", msym, mt, resultInfo.pt);
+ log.note(env.tree.pos, Notes.DeferredMethodInst(msym, mt, resultInfo.pt));
}
// return instantiated version of method type
@@ -665,12 +667,12 @@
//in the functional interface descriptors)
List<Type> descParameterTypes = types.findDescriptorType(formalInterface).getParameterTypes();
if (descParameterTypes.size() != paramTypes.size()) {
- checkContext.report(pos, diags.fragment("incompatible.arg.types.in.lambda"));
+ checkContext.report(pos, diags.fragment(Fragments.IncompatibleArgTypesInLambda));
return types.createErrorType(funcInterface);
}
for (Type p : descParameterTypes) {
if (!types.isSameType(funcInterfaceContext.asUndetVar(p), paramTypes.head)) {
- checkContext.report(pos, diags.fragment("no.suitable.functional.intf.inst", funcInterface));
+ checkContext.report(pos, diags.fragment(Fragments.NoSuitableFunctionalIntfInst(funcInterface)));
return types.createErrorType(funcInterface);
}
paramTypes = paramTypes.tail;
@@ -689,7 +691,7 @@
if (!chk.checkValidGenericType(owntype)) {
//if the inferred functional interface type is not well-formed,
//or if it's not a subtype of the original target, issue an error
- checkContext.report(pos, diags.fragment("no.suitable.functional.intf.inst", funcInterface));
+ checkContext.report(pos, diags.fragment(Fragments.NoSuitableFunctionalIntfInst(funcInterface)));
}
//propagate constraints as per JLS 18.2.1
checkContext.compatible(owntype, funcInterface, types.noWarnings);
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java Thu Jun 15 13:44:42 2017 +0200
@@ -45,6 +45,7 @@
import com.sun.tools.javac.code.Types;
import com.sun.tools.javac.comp.LambdaToMethod.LambdaAnalyzerPreprocessor.*;
import com.sun.tools.javac.comp.Lower.BasicFreeVarCollector;
+import com.sun.tools.javac.resources.CompilerProperties.Notes;
import com.sun.tools.javac.jvm.*;
import com.sun.tools.javac.util.*;
import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
@@ -1497,7 +1498,7 @@
} else {
super.visitReference(tree);
if (dumpLambdaToMethodStats) {
- log.note(tree, "mref.stat", rcontext.needsAltMetafactory(), null);
+ log.note(tree, Notes.MrefStat(rcontext.needsAltMetafactory(), null));
}
}
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Lower.java Thu Jun 15 13:44:42 2017 +0200
@@ -39,6 +39,7 @@
import com.sun.tools.javac.code.Symbol.*;
import com.sun.tools.javac.code.Symbol.OperatorSymbol.AccessCode;
+import com.sun.tools.javac.resources.CompilerProperties.Errors;
import com.sun.tools.javac.tree.JCTree.*;
import com.sun.tools.javac.code.Type.*;
@@ -1760,7 +1761,7 @@
JCExpression makeOuterThis(DiagnosticPosition pos, TypeSymbol c) {
List<VarSymbol> ots = outerThisStack;
if (ots.isEmpty()) {
- log.error(pos, "no.encl.instance.of.type.in.scope", c);
+ log.error(pos, Errors.NoEnclInstanceOfTypeInScope(c));
Assert.error();
return makeNull();
}
@@ -1771,9 +1772,7 @@
do {
ots = ots.tail;
if (ots.isEmpty()) {
- log.error(pos,
- "no.encl.instance.of.type.in.scope",
- c);
+ log.error(pos, Errors.NoEnclInstanceOfTypeInScope(c));
Assert.error(); // should have been caught in Attr
return tree;
}
@@ -1818,7 +1817,7 @@
Symbol c = sym.owner;
List<VarSymbol> ots = outerThisStack;
if (ots.isEmpty()) {
- log.error(pos, "no.encl.instance.of.type.in.scope", c);
+ log.error(pos, Errors.NoEnclInstanceOfTypeInScope(c));
Assert.error();
return makeNull();
}
@@ -1829,9 +1828,7 @@
do {
ots = ots.tail;
if (ots.isEmpty()) {
- log.error(pos,
- "no.encl.instance.of.type.in.scope",
- c);
+ log.error(pos, Errors.NoEnclInstanceOfTypeInScope(c));
Assert.error();
return tree;
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/MemberEnter.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/MemberEnter.java Thu Jun 15 13:44:42 2017 +0200
@@ -36,6 +36,7 @@
import com.sun.tools.javac.code.Symbol.*;
import com.sun.tools.javac.code.Type.*;
+import com.sun.tools.javac.resources.CompilerProperties.Errors;
import com.sun.tools.javac.tree.JCTree.*;
import static com.sun.tools.javac.code.Flags.*;
@@ -320,7 +321,7 @@
checkType(tree.vartype, outertype, "incorrect.constructor.receiver.type");
checkType(tree.nameexpr, outertype, "incorrect.constructor.receiver.name");
} else {
- log.error(tree, "receiver.parameter.not.applicable.constructor.toplevel.class");
+ log.error(tree, Errors.ReceiverParameterNotApplicableConstructorToplevelClass);
}
} else {
checkType(tree.vartype, m.owner.type, "incorrect.receiver.type");
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Modules.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Modules.java Thu Jun 15 13:44:42 2017 +0200
@@ -276,7 +276,7 @@
msym.complete();
}
} catch (CompletionFailure ex) {
- log.error(JCDiagnostic.DiagnosticFlag.NON_DEFERRABLE, Position.NOPOS, "cant.access", ex.sym, ex.getDetailValue());
+ log.error(JCDiagnostic.DiagnosticFlag.NON_DEFERRABLE, Position.NOPOS, Errors.CantAccess(ex.sym, ex.getDetailValue()));
if (ex instanceof ClassFinder.BadClassFile) throw new Abort();
} finally {
depth--;
@@ -565,7 +565,7 @@
JavaFileObject prev = log.useSource(tree.sourcefile);
try {
- log.error(tree.pos(), "file.sb.on.source.or.patch.path.for.module");
+ log.error(tree.pos(), Errors.FileSbOnSourceOrPatchPathForModule);
} finally {
log.useSource(prev);
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java Thu Jun 15 13:44:42 2017 +0200
@@ -41,6 +41,7 @@
import com.sun.tools.javac.comp.Resolve.ReferenceLookupResult.StaticKind;
import com.sun.tools.javac.jvm.*;
import com.sun.tools.javac.main.Option;
+import com.sun.tools.javac.resources.CompilerProperties.Errors;
import com.sun.tools.javac.resources.CompilerProperties.Fragments;
import com.sun.tools.javac.tree.*;
import com.sun.tools.javac.tree.JCTree.*;
@@ -253,7 +254,7 @@
JCDiagnostic getVerboseApplicableCandidateDiag(int pos, Symbol sym, Type inst) {
JCDiagnostic subDiag = null;
if (sym.type.hasTag(FORALL)) {
- subDiag = diags.fragment("partial.inst.sig", inst);
+ subDiag = diags.fragment(Fragments.PartialInstSig(inst));
}
String key = subDiag == null ?
@@ -264,7 +265,7 @@
}
JCDiagnostic getVerboseInapplicableCandidateDiag(int pos, Symbol sym, JCDiagnostic subDiag) {
- return diags.fragment("not.applicable.method.found", pos, sym, subDiag);
+ return diags.fragment(Fragments.NotApplicableMethodFound(pos, sym, subDiag));
}
// </editor-fold>
@@ -1452,8 +1453,7 @@
Symbol sym = findField(env, site, name, site.tsym);
if (sym.kind == VAR) return (VarSymbol)sym;
else throw new FatalError(
- diags.fragment("fatal.err.cant.locate.field",
- name));
+ diags.fragment(Fragments.FatalErrCantLocateField(name)));
}
/** Find unqualified variable or field with given name.
@@ -2545,8 +2545,8 @@
*/
void checkNonAbstract(DiagnosticPosition pos, Symbol sym) {
if ((sym.flags() & ABSTRACT) != 0 && (sym.flags() & DEFAULT) == 0)
- log.error(pos, "abstract.cant.be.accessed.directly",
- kindName(sym), sym, sym.location());
+ log.error(pos,
+ Errors.AbstractCantBeAccessedDirectly(kindName(sym),sym, sym.location()));
}
/* ***************************************************************************
@@ -2693,8 +2693,7 @@
site, name, argtypes, typeargtypes);
if (sym.kind == MTH) return (MethodSymbol)sym;
else throw new FatalError(
- diags.fragment("fatal.err.cant.locate.meth",
- name));
+ diags.fragment(Fragments.FatalErrCantLocateMeth(name)));
}
/** Resolve constructor.
@@ -2746,7 +2745,7 @@
Symbol sym = resolveConstructor(resolveContext, pos, env, site, argtypes, typeargtypes);
if (sym.kind == MTH) return (MethodSymbol)sym;
else throw new FatalError(
- diags.fragment("fatal.err.cant.locate.ctor", site));
+ diags.fragment(Fragments.FatalErrCantLocateCtor(site)));
}
Symbol findConstructor(DiagnosticPosition pos, Env<AttrContext> env,
@@ -3531,14 +3530,15 @@
//find a direct super type that is a subtype of 'c'
for (Type i : types.directSupertypes(env.enclClass.type)) {
if (i.tsym.isSubClass(c, types) && i.tsym != c) {
- log.error(pos, "illegal.default.super.call", c,
- diags.fragment("redundant.supertype", c, i));
+ log.error(pos,
+ Errors.IllegalDefaultSuperCall(c,
+ Fragments.RedundantSupertype(c, i)));
return syms.errSymbol;
}
}
Assert.error();
}
- log.error(pos, "not.encl.class", c);
+ log.error(pos, Errors.NotEnclClass(c));
return syms.errSymbol;
}
//where
@@ -3572,7 +3572,7 @@
boolean isSuperCall) {
Symbol sym = resolveSelfContainingInternal(env, member, isSuperCall);
if (sym == null) {
- log.error(pos, "encl.class.required", member);
+ log.error(pos, Errors.EnclClassRequired(member));
return syms.errSymbol;
} else {
return accessBase(sym, pos, env.enclClass.sym.type, sym.name, true);
@@ -3623,8 +3623,9 @@
Type thisType = (t.tsym.owner.kind.matches(KindSelector.VAL_MTH)
? resolveSelf(pos, env, t.getEnclosingType().tsym, names._this)
: resolveSelfContaining(pos, env, t.tsym, isSuperCall)).type;
- if (env.info.isSelfCall && thisType.tsym == env.enclClass.sym)
- log.error(pos, "cant.ref.before.ctor.called", "this");
+ if (env.info.isSelfCall && thisType.tsym == env.enclClass.sym) {
+ log.error(pos, Errors.CantRefBeforeCtorCalled("this"));
+ }
return thisType;
}
@@ -3847,15 +3848,13 @@
}
private JCDiagnostic getLocationDiag(Symbol location, Type site) {
if (location.kind == VAR) {
- return diags.fragment("location.1",
- kindName(location),
- location,
- location.type);
+ return diags.fragment(Fragments.Location1(kindName(location),
+ location,
+ location.type));
} else {
- return diags.fragment("location",
- typeKindName(site),
- site,
- null);
+ return diags.fragment(Fragments.Location(typeKindName(site),
+ site,
+ null));
}
}
}
@@ -4019,11 +4018,11 @@
List<JCDiagnostic> details = List.nil();
for (Map.Entry<Symbol, JCDiagnostic> _entry : candidatesMap.entrySet()) {
Symbol sym = _entry.getKey();
- JCDiagnostic detailDiag = diags.fragment("inapplicable.method",
- Kinds.kindName(sym),
- sym.location(site, types),
- sym.asMemberOf(site, types),
- _entry.getValue());
+ JCDiagnostic detailDiag =
+ diags.fragment(Fragments.InapplicableMethod(Kinds.kindName(sym),
+ sym.location(site, types),
+ sym.asMemberOf(site, types),
+ _entry.getValue()));
details = details.prepend(detailDiag);
}
//typically members are visited in reverse order (see Scope)
@@ -4067,7 +4066,7 @@
"cant.apply.diamond" :
"cant.apply.diamond.1";
return diags.create(dkind, log.currentSource(), pos, key,
- diags.fragment("diamond", site.tsym), details);
+ Fragments.Diamond(site.tsym), details);
}
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransTypes.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransTypes.java Thu Jun 15 13:44:42 2017 +0200
@@ -541,8 +541,7 @@
if (sym != tree.sym &&
types.isSameType(erasure(sym.type), tree.type)) {
log.error(tree.pos(),
- "name.clash.same.erasure", tree.sym,
- sym);
+ Errors.NameClashSameErasure(tree.sym, sym));
return;
}
}
@@ -683,8 +682,8 @@
else
if (tree.args.length() != argtypes.length()) {
log.error(tree.pos(),
- "method.invoked.with.incorrect.number.arguments",
- tree.args.length(), argtypes.length());
+ Errors.MethodInvokedWithIncorrectNumberArguments(tree.args.length(),
+ argtypes.length()));
}
tree.args = translateArgs(tree.args, argtypes, tree.varargsElement);
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java Thu Jun 15 13:44:42 2017 +0200
@@ -44,6 +44,7 @@
import com.sun.tools.javac.code.Symbol.*;
import com.sun.tools.javac.code.Type.*;
+import com.sun.tools.javac.resources.CompilerProperties.Errors;
import com.sun.tools.javac.tree.JCTree.*;
import static com.sun.tools.javac.code.Flags.*;
@@ -52,6 +53,7 @@
import static com.sun.tools.javac.code.Kinds.Kind.*;
import static com.sun.tools.javac.code.TypeTag.CLASS;
import static com.sun.tools.javac.code.TypeTag.ERROR;
+import com.sun.tools.javac.resources.CompilerProperties.Fragments;
import static com.sun.tools.javac.tree.JCTree.Tag.*;
import com.sun.tools.javac.util.Dependencies.CompletionCause;
@@ -339,7 +341,7 @@
// Import-on-demand java.lang.
PackageSymbol javaLang = syms.enterPackage(syms.java_base, names.java_lang);
if (javaLang.members().isEmpty() && !javaLang.exists())
- throw new FatalError(diags.fragment("fatal.err.no.java.lang"));
+ throw new FatalError(diags.fragment(Fragments.FatalErrNoJavaLang));
importAll(make.at(tree.pos()).Import(make.QualIdent(javaLang), false), javaLang, env);
JCModuleDecl decl = tree.getModuleDecl();
@@ -378,8 +380,7 @@
PackageSymbol pack = syms.lookupPackage(env.toplevel.modle, p.owner.getQualifiedName());
if (syms.getClass(pack.modle, p.getQualifiedName()) != null) {
log.error(tree.pos,
- "pkg.clashes.with.class.of.same.name",
- p);
+ Errors.PkgClashesWithClassOfSameName(p));
}
p = p.owner;
}
@@ -471,7 +472,7 @@
final Name name,
final Env<AttrContext> env) {
if (tsym.kind != TYP) {
- log.error(DiagnosticFlag.RECOVERABLE, imp.pos(), "static.imp.only.classes.and.interfaces");
+ log.error(DiagnosticFlag.RECOVERABLE, imp.pos(), Errors.StaticImpOnlyClassesAndInterfaces);
return;
}
@@ -831,7 +832,7 @@
if (checkClash &&
sym.owner.kind == PCK && sym.owner != env.toplevel.modle.unnamedPackage &&
syms.packageExists(env.toplevel.modle, sym.fullname)) {
- log.error(tree.pos, "clash.with.pkg.of.same.name", Kinds.kindName(sym), sym);
+ log.error(tree.pos, Errors.ClashWithPkgOfSameName(Kinds.kindName(sym),sym));
}
if (sym.owner.kind == PCK && (sym.flags_field & PUBLIC) == 0 &&
!env.toplevel.sourcefile.isNameCompatible(sym.name.toString(),JavaFileObject.Kind.SOURCE)) {
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/BaseFileManager.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/BaseFileManager.java Thu Jun 15 13:44:42 2017 +0200
@@ -311,7 +311,7 @@
try {
decoder = getDecoder(encName, ignoreEncodingErrors);
} catch (IllegalCharsetNameException | UnsupportedCharsetException e) {
- log.error("unsupported.encoding", encName);
+ log.error(Errors.UnsupportedEncoding(encName));
return (CharBuffer)CharBuffer.allocate(1).flip();
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/JavacFileManager.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/JavacFileManager.java Thu Jun 15 13:44:42 2017 +0200
@@ -69,6 +69,7 @@
import com.sun.tools.javac.file.RelativePath.RelativeDirectory;
import com.sun.tools.javac.file.RelativePath.RelativeFile;
+import com.sun.tools.javac.resources.CompilerProperties.Errors;
import com.sun.tools.javac.util.Assert;
import com.sun.tools.javac.util.Context;
import com.sun.tools.javac.util.Context.Factory;
@@ -390,7 +391,7 @@
}
} catch (IOException ex) {
ex.printStackTrace(System.err);
- log.error("error.reading.file", userPath, getMessage(ex));
+ log.error(Errors.ErrorReadingFile(userPath, getMessage(ex)));
}
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java Thu Jun 15 13:44:42 2017 +0200
@@ -215,7 +215,7 @@
entries.add(getPath(s));
} catch (IllegalArgumentException e) {
if (warn) {
- log.warning(LintCategory.PATH, "invalid.path", s);
+ log.warning(LintCategory.PATH, Warnings.InvalidPath(s));
}
}
}
@@ -311,7 +311,7 @@
if (!Files.isDirectory(dir)) {
if (warn) {
log.warning(Lint.LintCategory.PATH,
- "dir.path.element.not.found", dir);
+ Warnings.DirPathElementNotFound(dir));
}
return;
}
@@ -357,7 +357,7 @@
/* No such file or directory exists */
if (warn) {
log.warning(Lint.LintCategory.PATH,
- "path.element.not.found", file);
+ Warnings.PathElementNotFound(file));
}
super.add(file);
return;
@@ -380,13 +380,13 @@
FileSystems.newFileSystem(file, null).close();
if (warn) {
log.warning(Lint.LintCategory.PATH,
- "unexpected.archive.file", file);
+ Warnings.UnexpectedArchiveFile(file));
}
} catch (IOException | ProviderNotFoundException e) {
// FIXME: include e.getLocalizedMessage in warning
if (warn) {
log.warning(Lint.LintCategory.PATH,
- "invalid.archive.file", file);
+ Warnings.InvalidArchiveFile(file));
}
return;
}
@@ -419,7 +419,7 @@
addFile(f, warn);
}
} catch (IOException e) {
- log.error("error.reading.file", jarFile, JavacFileManager.getMessage(e));
+ log.error(Errors.ErrorReadingFile(jarFile, JavacFileManager.getMessage(e)));
}
}
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/CRTable.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/CRTable.java Thu Jun 15 13:44:42 2017 +0200
@@ -27,6 +27,7 @@
import java.util.*;
+import com.sun.tools.javac.resources.CompilerProperties.Warnings;
import com.sun.tools.javac.tree.*;
import com.sun.tools.javac.util.*;
import com.sun.tools.javac.util.List;
@@ -173,7 +174,7 @@
", new_pos = " + new_pos);
}
if (new_pos == Position.NOPOS)
- log.warning(pos, "position.overflow", line);
+ log.warning(pos, Warnings.PositionOverflow(line));
return new_pos;
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java Thu Jun 15 13:44:42 2017 +0200
@@ -57,6 +57,8 @@
import com.sun.tools.javac.jvm.ClassFile.NameAndType;
import com.sun.tools.javac.jvm.ClassFile.Version;
import com.sun.tools.javac.main.Option;
+import com.sun.tools.javac.resources.CompilerProperties.Fragments;
+import com.sun.tools.javac.resources.CompilerProperties.Warnings;
import com.sun.tools.javac.util.*;
import com.sun.tools.javac.util.DefinedBy.Api;
import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
@@ -279,11 +281,11 @@
diagFactory);
}
- public ClassFinder.BadEnclosingMethodAttr badEnclosingMethod(Object... args) {
+ public ClassFinder.BadEnclosingMethodAttr badEnclosingMethod(Symbol sym) {
return new ClassFinder.BadEnclosingMethodAttr (
currentOwner.enclClass(),
currentClassFile,
- diagFactory.fragment("bad.enclosing.method", args),
+ diagFactory.fragment(Fragments.BadEnclosingMethod(sym)),
diagFactory);
}
@@ -985,8 +987,8 @@
if (lintClassfile && !warnedAttrs.contains(name)) {
JavaFileObject prev = log.useSource(currentClassFile);
try {
- log.warning(LintCategory.CLASSFILE, (DiagnosticPosition) null, "future.attr",
- name, version.major, version.minor, majorVersion, minorVersion);
+ log.warning(LintCategory.CLASSFILE, (DiagnosticPosition) null,
+ Warnings.FutureAttr(name, version.major, version.minor, majorVersion, minorVersion));
} finally {
log.useSource(prev);
}
@@ -2078,14 +2080,11 @@
try {
if (lintClassfile) {
if (failure == null) {
- log.warning("annotation.method.not.found",
- container,
- name);
+ log.warning(Warnings.AnnotationMethodNotFound(container, name));
} else {
- log.warning("annotation.method.not.found.reason",
- container,
- name,
- failure.getDetailValue());//diagnostic, if present
+ log.warning(Warnings.AnnotationMethodNotFoundReason(container,
+ name,
+ failure.getDetailValue()));//diagnostic, if present
}
}
} finally {
@@ -2161,12 +2160,14 @@
}
if (enumerator == null) {
if (failure != null) {
- log.warning("unknown.enum.constant.reason",
- currentClassFile, enumTypeSym, proxy.enumerator,
- failure.getDiagnostic());
+ log.warning(Warnings.UnknownEnumConstantReason(currentClassFile,
+ enumTypeSym,
+ proxy.enumerator,
+ failure.getDiagnostic()));
} else {
- log.warning("unknown.enum.constant",
- currentClassFile, enumTypeSym, proxy.enumerator);
+ log.warning(Warnings.UnknownEnumConstant(currentClassFile,
+ enumTypeSym,
+ proxy.enumerator));
}
result = new Attribute.Enum(enumTypeSym.type,
new VarSymbol(0, proxy.enumerator, syms.botType, enumTypeSym));
@@ -2686,10 +2687,9 @@
majorVersion * 1000 + minorVersion <
Version.MIN().major * 1000 + Version.MIN().minor) {
if (majorVersion == (maxMajor + 1))
- log.warning("big.major.version",
- currentClassFile,
- majorVersion,
- maxMajor);
+ log.warning(Warnings.BigMajorVersion(currentClassFile,
+ majorVersion,
+ maxMajor));
else
throw badClassFile("wrong.version",
Integer.toString(majorVersion),
@@ -2982,7 +2982,7 @@
theRepeatable = deproxy.deproxyCompound(repeatable);
}
} catch (Exception e) {
- throw new CompletionFailure(sym, e.getMessage());
+ throw new CompletionFailure(sym, ClassReader.this.diagFactory.fragment(Fragments.ExceptionMessage(e.getMessage())));
}
sym.getAnnotationTypeMetadata().setTarget(theTarget);
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Code.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Code.java Thu Jun 15 13:44:42 2017 +0200
@@ -28,6 +28,7 @@
import com.sun.tools.javac.code.*;
import com.sun.tools.javac.code.Symbol.*;
import com.sun.tools.javac.code.Types.UniqueType;
+import com.sun.tools.javac.resources.CompilerProperties.Errors;
import com.sun.tools.javac.tree.JCTree;
import com.sun.tools.javac.util.*;
import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
@@ -95,15 +96,15 @@
*/
public boolean checkLimits(DiagnosticPosition pos, Log log) {
if (cp > ClassFile.MAX_CODE) {
- log.error(pos, "limit.code");
+ log.error(pos, Errors.LimitCode);
return true;
}
if (max_locals > ClassFile.MAX_LOCALS) {
- log.error(pos, "limit.locals");
+ log.error(pos, Errors.LimitLocals);
return true;
}
if (max_stack > ClassFile.MAX_STACK) {
- log.error(pos, "limit.stack");
+ log.error(pos, Errors.LimitStack);
return true;
}
return false;
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java Thu Jun 15 13:44:42 2017 +0200
@@ -39,6 +39,7 @@
import com.sun.tools.javac.code.Type.*;
import com.sun.tools.javac.jvm.Code.*;
import com.sun.tools.javac.jvm.Items.*;
+import com.sun.tools.javac.resources.CompilerProperties.Errors;
import com.sun.tools.javac.tree.EndPosTable;
import com.sun.tools.javac.tree.JCTree.*;
@@ -270,7 +271,7 @@
break;
case ARRAY:
if (types.dimensions(t) > ClassFile.MAX_DIMENSIONS) {
- log.error(pos, "limit.dimensions");
+ log.error(pos, Errors.LimitDimensions);
nerrs++;
}
break;
@@ -517,7 +518,7 @@
!(constValue instanceof String) ||
((String)constValue).length() < Pool.MAX_STRING_LENGTH)
return;
- log.error(pos, "limit.string");
+ log.error(pos, Errors.LimitString);
nerrs++;
}
@@ -888,7 +889,7 @@
// System.err.println("Generating " + meth + " in " + meth.owner); //DEBUG
if (Code.width(types.erasure(env.enclMethod.sym.type).getParameterTypes()) + extras >
ClassFile.MAX_PARAMETERS) {
- log.error(tree.pos(), "limit.parameters");
+ log.error(tree.pos(), Errors.LimitParameters);
nerrs++;
}
@@ -905,7 +906,7 @@
}
if (code.state.stacksize != 0) {
- log.error(tree.body.pos(), "stack.sim.error", tree);
+ log.error(tree.body.pos(), Errors.StackSimError(tree.sym));
throw new AssertionError();
}
@@ -1536,7 +1537,7 @@
code.addCatch(startpc1, endpc1, handler_pc1,
(char)catch_type);
} else {
- log.error(pos, "limit.code.too.large.for.try.stmt");
+ log.error(pos, Errors.LimitCodeTooLargeForTryStmt);
nerrs++;
}
}
@@ -1769,7 +1770,7 @@
Item makeNewArray(DiagnosticPosition pos, Type type, int ndims) {
Type elemtype = types.elemtype(type);
if (types.dimensions(type) > ClassFile.MAX_DIMENSIONS) {
- log.error(pos, "limit.dimensions");
+ log.error(pos, Errors.LimitDimensions);
nerrs++;
}
int elemcode = Code.arraycode(elemtype);
@@ -2181,7 +2182,7 @@
genDef(l.head, localEnv);
}
if (pool.numEntries() > Pool.MAX_ENTRIES) {
- log.error(cdef.pos(), "limit.pool");
+ log.error(cdef.pos(), Errors.LimitPool);
nerrs++;
}
if (nerrs != 0) {
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/main/Arguments.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/main/Arguments.java Thu Jun 15 13:44:42 2017 +0200
@@ -578,7 +578,7 @@
if (lintOptions && source.compareTo(Source.DEFAULT) < 0 && !options.isSet(Option.RELEASE)) {
if (fm instanceof BaseFileManager) {
if (((BaseFileManager) fm).isDefaultBootClassPath())
- log.warning(LintCategory.OPTIONS, "source.no.bootclasspath", source.name);
+ log.warning(LintCategory.OPTIONS, Warnings.SourceNoBootclasspath(source.name));
}
}
@@ -628,7 +628,7 @@
}
if (obsoleteOptionFound && lintOptions) {
- log.warning(LintCategory.OPTIONS, "option.obsolete.suppression");
+ log.warning(LintCategory.OPTIONS, Warnings.OptionObsoleteSuppression);
}
SourceVersion sv = Source.toSourceVersion(source);
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/main/JavaCompiler.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/main/JavaCompiler.java Thu Jun 15 13:44:42 2017 +0200
@@ -81,6 +81,8 @@
import com.sun.tools.javac.code.Symbol.ModuleSymbol;
import com.sun.tools.javac.resources.CompilerProperties.Errors;
+import com.sun.tools.javac.resources.CompilerProperties.Fragments;
+import com.sun.tools.javac.resources.CompilerProperties.Notes;
import com.sun.tools.javac.resources.CompilerProperties.Warnings;
import static com.sun.tools.javac.code.TypeTag.CLASS;
@@ -393,7 +395,7 @@
syms = Symtab.instance(context);
} catch (CompletionFailure ex) {
// inlined Check.completionError as it is not initialized yet
- log.error("cant.access", ex.sym, ex.getDetailValue());
+ log.error(Errors.CantAccess(ex.sym, ex.getDetailValue()));
if (ex instanceof ClassFinder.BadClassFile)
throw new Abort();
}
@@ -570,7 +572,7 @@
*/
public int errorCount() {
if (werror && log.nerrors == 0 && log.nwarnings > 0) {
- log.error("warnings.and.werror");
+ log.error(Errors.WarningsAndWerror);
}
return log.nerrors;
}
@@ -598,7 +600,7 @@
inputFiles.add(filename);
return filename.getCharContent(false);
} catch (IOException e) {
- log.error("error.reading.file", filename, JavacFileManager.getMessage(e));
+ log.error(Errors.ErrorReadingFile(filename, JavacFileManager.getMessage(e)));
return null;
}
}
@@ -742,10 +744,10 @@
if (gen.genClass(env, cdef) && (errorCount() == 0))
return writer.writeClass(cdef.sym);
} catch (ClassWriter.PoolOverflow ex) {
- log.error(cdef.pos(), "limit.pool");
+ log.error(cdef.pos(), Errors.LimitPool);
} catch (ClassWriter.StringOverflow ex) {
- log.error(cdef.pos(), "limit.string.overflow",
- ex.value.substring(0, 20));
+ log.error(cdef.pos(),
+ Errors.LimitStringOverflow(ex.value.substring(0, 20)));
} catch (CompletionFailure ex) {
chk.completionError(cdef.pos(), ex);
}
@@ -764,7 +766,7 @@
JavaFileObject.Kind.SOURCE,
null);
if (inputFiles.contains(outFile)) {
- log.error(cdef.pos(), "source.cant.overwrite.input.file", outFile);
+ log.error(cdef.pos(), Errors.SourceCantOverwriteInputFile(outFile));
return null;
} else {
try (BufferedWriter out = new BufferedWriter(outFile.openWriter())) {
@@ -791,7 +793,9 @@
*/
public void readSourceFile(JCCompilationUnit tree, ClassSymbol c) throws CompletionFailure {
if (completionFailureName == c.fullname) {
- throw new CompletionFailure(c, "user-selected completion failure by class name");
+ JCDiagnostic msg =
+ diagFactory.fragment(Fragments.UserSelectedCompletionFailure);
+ throw new CompletionFailure(c, msg);
}
JavaFileObject filename = c.classfile;
JavaFileObject prev = log.useSource(filename);
@@ -800,7 +804,7 @@
try {
tree = parse(filename, filename.getCharContent(false));
} catch (IOException e) {
- log.error("error.reading.file", filename, JavacFileManager.getMessage(e));
+ log.error(Errors.ErrorReadingFile(filename, JavacFileManager.getMessage(e)));
tree = make.TopLevel(List.<JCTree>nil());
} finally {
log.useSource(prev);
@@ -819,7 +823,7 @@
// have enough modules available to access java.lang, and
// so risk getting FatalError("no.java.lang") from MemberEnter.
if (!modules.enter(List.of(tree), c)) {
- throw new CompletionFailure(c, diags.fragment("cant.resolve.modules"));
+ throw new CompletionFailure(c, diags.fragment(Fragments.CantResolveModules));
}
enter.complete(List.of(tree), c);
@@ -839,20 +843,18 @@
if (isModuleInfo) {
if (enter.getEnv(tree.modle) == null) {
JCDiagnostic diag =
- diagFactory.fragment("file.does.not.contain.module");
+ diagFactory.fragment(Fragments.FileDoesNotContainModule);
throw new ClassFinder.BadClassFile(c, filename, diag, diagFactory);
}
} else if (isPkgInfo) {
if (enter.getEnv(tree.packge) == null) {
JCDiagnostic diag =
- diagFactory.fragment("file.does.not.contain.package",
- c.location());
+ diagFactory.fragment(Fragments.FileDoesNotContainPackage(c.location()));
throw new ClassFinder.BadClassFile(c, filename, diag, diagFactory);
}
} else {
JCDiagnostic diag =
- diagFactory.fragment("file.doesnt.contain.class",
- c.getQualifiedName());
+ diagFactory.fragment(Fragments.FileDoesntContainClass(c.getQualifiedName()));
throw new ClassFinder.BadClassFile(c, filename, diag, diagFactory);
}
}
@@ -1177,13 +1179,12 @@
// annotation processing is to occur with compilation,
// emit a warning.
if (options.isSet(PROC, "only")) {
- log.warning("proc.proc-only.requested.no.procs");
+ log.warning(Warnings.ProcProcOnlyRequestedNoProcs);
todo.clear();
}
// If not processing annotations, classnames must be empty
if (!classnames.isEmpty()) {
- log.error("proc.no.explicit.annotation.processing.requested",
- classnames);
+ log.error(Errors.ProcNoExplicitAnnotationProcessingRequested(classnames));
}
Assert.checkNull(deferredDiagnosticHandler);
return ; // continue regular compilation
@@ -1198,8 +1199,7 @@
// Check for explicit request for annotation
// processing
if (!explicitAnnotationProcessingRequested()) {
- log.error("proc.no.explicit.annotation.processing.requested",
- classnames);
+ log.error(Errors.ProcNoExplicitAnnotationProcessingRequested(classnames));
deferredDiagnosticHandler.reportDeferredDiagnostics();
log.popDiagnosticHandler(deferredDiagnosticHandler);
return ; // TODO: Will this halt compilation?
@@ -1252,7 +1252,7 @@
procEnvImpl.close();
}
} catch (CompletionFailure ex) {
- log.error("cant.access", ex.sym, ex.getDetailValue());
+ log.error(Errors.CantAccess(ex.sym, ex.getDetailValue()));
if (deferredDiagnosticHandler != null) {
deferredDiagnosticHandler.reportDeferredDiagnostics();
log.popDiagnosticHandler(deferredDiagnosticHandler);
@@ -1623,8 +1623,8 @@
if (results != null && file != null)
results.add(file);
} catch (IOException ex) {
- log.error(cdef.pos(), "class.cant.write",
- cdef.sym, ex.getMessage());
+ log.error(cdef.pos(),
+ Errors.ClassCantWrite(cdef.sym, ex.getMessage()));
return;
} finally {
log.useSource(prev);
@@ -1711,13 +1711,13 @@
&& implicitSourceFilesRead
&& implicitSourcePolicy == ImplicitSourcePolicy.UNSET) {
if (explicitAnnotationProcessingRequested())
- log.warning("proc.use.implicit");
+ log.warning(Warnings.ProcUseImplicit);
else
- log.warning("proc.use.proc.or.implicit");
+ log.warning(Warnings.ProcUseProcOrImplicit);
}
chk.reportDeferredDiagnostics();
if (log.compressedOutput) {
- log.mandatoryNote(null, "compressed.diags");
+ log.mandatoryNote(null, Notes.CompressedDiags);
}
}
@@ -1798,7 +1798,7 @@
// better written to set any/all exceptions from all the
// Closeables as suppressed exceptions on the FatalError
// that is thrown.
- JCDiagnostic msg = diagFactory.fragment("fatal.err.cant.close");
+ JCDiagnostic msg = diagFactory.fragment(Fragments.FatalErrCantClose);
throw new FatalError(msg, e);
}
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/JavacParser.java Thu Jun 15 13:44:42 2017 +0200
@@ -1244,7 +1244,7 @@
if (sel.name != names._class) {
return illegal();
} else {
- log.error(token.pos, "no.annotations.on.dot.class");
+ log.error(token.pos, Errors.NoAnnotationsOnDotClass);
return expr;
}
}
@@ -3039,7 +3039,7 @@
int pos = token.pos;
Name name;
if (lambdaParameter && token.kind == UNDERSCORE) {
- log.error(pos, "underscore.as.identifier.in.lambda");
+ log.error(pos, Errors.UnderscoreAsIdentifierInLambda);
name = token.name();
nextToken();
} else {
@@ -3049,10 +3049,10 @@
name = ((JCIdent)pn).name;
} else {
if ((mods.flags & Flags.VARARGS) != 0) {
- log.error(token.pos, "varargs.and.receiver");
+ log.error(token.pos, Errors.VarargsAndReceiver);
}
if (token.kind == LBRACKET) {
- log.error(token.pos, "array.and.receiver");
+ log.error(token.pos, Errors.ArrayAndReceiver);
}
return toP(F.at(pos).ReceiverVarDef(mods, pn, type));
}
@@ -3062,7 +3062,7 @@
}
if ((mods.flags & Flags.VARARGS) != 0 &&
token.kind == LBRACKET) {
- log.error(token.pos, "varargs.and.old.array.syntax");
+ log.error(token.pos, Errors.VarargsAndOldArraySyntax);
}
type = bracketsOpt(type);
return toP(F.at(pos).VarDef(mods, name, type, null));
@@ -3104,7 +3104,7 @@
} else {
checkVariableInTryWithResources(startPos);
if (!t.hasTag(IDENT) && !t.hasTag(SELECT)) {
- log.error(t.pos(), "try.with.resources.expr.needs.var");
+ log.error(t.pos(), Errors.TryWithResourcesExprNeedsVar);
}
return t;
@@ -4144,52 +4144,52 @@
void checkDiamond() {
if (!allowDiamond) {
- log.error(DiagnosticFlag.SOURCE_LEVEL, token.pos, "diamond.not.supported.in.source", source.name);
+ log.error(DiagnosticFlag.SOURCE_LEVEL, token.pos, Errors.DiamondNotSupportedInSource(source.name));
}
}
void checkMulticatch() {
if (!allowMulticatch) {
- log.error(DiagnosticFlag.SOURCE_LEVEL, token.pos, "multicatch.not.supported.in.source", source.name);
+ log.error(DiagnosticFlag.SOURCE_LEVEL, token.pos, Errors.MulticatchNotSupportedInSource(source.name));
}
}
void checkTryWithResources() {
if (!allowTWR) {
- log.error(DiagnosticFlag.SOURCE_LEVEL, token.pos, "try.with.resources.not.supported.in.source", source.name);
+ log.error(DiagnosticFlag.SOURCE_LEVEL, token.pos, Errors.TryWithResourcesNotSupportedInSource(source.name));
}
}
void checkVariableInTryWithResources(int startPos) {
if (!allowEffectivelyFinalVariablesInTWR) {
- log.error(DiagnosticFlag.SOURCE_LEVEL, startPos, "var.in.try.with.resources.not.supported.in.source", source.name);
+ log.error(DiagnosticFlag.SOURCE_LEVEL, startPos, Errors.VarInTryWithResourcesNotSupportedInSource(source.name));
}
}
void checkLambda() {
if (!allowLambda) {
- log.error(DiagnosticFlag.SOURCE_LEVEL, token.pos, "lambda.not.supported.in.source", source.name);
+ log.error(DiagnosticFlag.SOURCE_LEVEL, token.pos, Errors.LambdaNotSupportedInSource(source.name));
}
}
void checkMethodReferences() {
if (!allowMethodReferences) {
- log.error(DiagnosticFlag.SOURCE_LEVEL, token.pos, "method.references.not.supported.in.source", source.name);
+ log.error(DiagnosticFlag.SOURCE_LEVEL, token.pos, Errors.MethodReferencesNotSupportedInSource(source.name));
}
}
void checkDefaultMethods() {
if (!allowDefaultMethods) {
- log.error(DiagnosticFlag.SOURCE_LEVEL, token.pos, "default.methods.not.supported.in.source", source.name);
+ log.error(DiagnosticFlag.SOURCE_LEVEL, token.pos, Errors.DefaultMethodsNotSupportedInSource(source.name));
}
}
void checkIntersectionTypesInCast() {
if (!allowIntersectionTypesInCast) {
- log.error(DiagnosticFlag.SOURCE_LEVEL, token.pos, "intersection.types.in.cast.not.supported.in.source", source.name);
+ log.error(DiagnosticFlag.SOURCE_LEVEL, token.pos, Errors.IntersectionTypesInCastNotSupportedInSource(source.name));
}
}
void checkStaticInterfaceMethods() {
if (!allowStaticInterfaceMethods) {
- log.error(DiagnosticFlag.SOURCE_LEVEL, token.pos, "static.intf.methods.not.supported.in.source", source.name);
+ log.error(DiagnosticFlag.SOURCE_LEVEL, token.pos, Errors.StaticIntfMethodsNotSupportedInSource(source.name));
}
}
void checkTypeAnnotations() {
if (!allowTypeAnnotations) {
- log.error(DiagnosticFlag.SOURCE_LEVEL, token.pos, "type.annotations.not.supported.in.source", source.name);
+ log.error(DiagnosticFlag.SOURCE_LEVEL, token.pos, Errors.TypeAnnotationsNotSupportedInSource(source.name));
}
}
void checkPrivateInterfaceMethods() {
@@ -4199,7 +4199,7 @@
}
protected void checkAnnotationsAfterTypeParams(int pos) {
if (!allowAnnotationsAfterTypeParams) {
- log.error(DiagnosticFlag.SOURCE_LEVEL, pos, "annotations.after.type.params.not.supported.in.source", source.name);
+ log.error(DiagnosticFlag.SOURCE_LEVEL, pos, Errors.AnnotationsAfterTypeParamsNotSupportedInSource(source.name));
}
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/UnicodeReader.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/parser/UnicodeReader.java Thu Jun 15 13:44:42 2017 +0200
@@ -29,6 +29,7 @@
import java.util.Arrays;
import com.sun.tools.javac.file.JavacFileManager;
+import com.sun.tools.javac.resources.CompilerProperties.Errors;
import com.sun.tools.javac.util.ArrayUtils;
import com.sun.tools.javac.util.Log;
import com.sun.tools.javac.util.Name;
@@ -176,7 +177,7 @@
return;
}
}
- log.error(bp, "illegal.unicode.esc");
+ log.error(bp, Errors.IllegalUnicodeEsc);
} else {
bp--;
ch = '\\';
@@ -231,7 +232,7 @@
int codePoint = peekSurrogates();
int result = codePoint >= 0 ? Character.digit(codePoint, base) : Character.digit(c, base);
if (result >= 0 && c > 0x7f) {
- log.error(pos + 1, "illegal.nonascii.digit");
+ log.error(pos + 1, Errors.IllegalNonasciiDigit);
if (codePoint >= 0)
scanChar();
ch = "0123456789abcdef".charAt(result);
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/JavacFiler.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/JavacFiler.java Thu Jun 15 13:44:42 2017 +0200
@@ -56,6 +56,7 @@
import com.sun.tools.javac.code.Symtab;
import com.sun.tools.javac.comp.Modules;
import com.sun.tools.javac.model.JavacElements;
+import com.sun.tools.javac.resources.CompilerProperties.Warnings;
import com.sun.tools.javac.util.*;
import com.sun.tools.javac.util.DefinedBy.Api;
@@ -482,7 +483,7 @@
String base = name.substring(periodIndex);
String extn = (isSourceFile ? ".java" : ".class");
if (base.equals(extn))
- log.warning("proc.suspicious.class.name", name, extn);
+ log.warning(Warnings.ProcSuspiciousClassName(name, extn));
}
}
checkNameAndExistence(mod, name, isSourceFile);
@@ -500,7 +501,7 @@
checkFileReopening(fileObject, true);
if (lastRound)
- log.warning("proc.file.create.last.round", name);
+ log.warning(Warnings.ProcFileCreateLastRound(name));
if (isSourceFile)
aggregateGeneratedSourceNames.add(Pair.of(mod, name));
@@ -690,7 +691,7 @@
private void checkName(String name, boolean allowUnnamedPackageInfo) throws FilerException {
if (!SourceVersion.isName(name) && !isPackageInfo(name, allowUnnamedPackageInfo)) {
if (lint)
- log.warning("proc.illegal.file.name", name);
+ log.warning(Warnings.ProcIllegalFileName(name));
throw new FilerException("Illegal name " + name);
}
}
@@ -722,7 +723,7 @@
initialInputs.contains(existing.sourcefile));
if (alreadySeen) {
if (lint)
- log.warning("proc.type.recreate", typename);
+ log.warning(Warnings.ProcTypeRecreate(typename));
throw new FilerException("Attempt to recreate a file for type " + typename);
}
if (!mod.isUnnamed() && !typename.contains(".")) {
@@ -737,7 +738,7 @@
private void checkFileReopening(FileObject fileObject, boolean forWriting) throws FilerException {
if (isInFileObjectHistory(fileObject, forWriting)) {
if (lint)
- log.warning("proc.file.reopening", fileObject.getName());
+ log.warning(Warnings.ProcFileReopening(fileObject.getName()));
throw new FilerException("Attempt to reopen a file for path " + fileObject.getName());
}
if (forWriting)
@@ -797,7 +798,7 @@
public void warnIfUnclosedFiles() {
if (!openTypeNames.isEmpty())
- log.warning("proc.unclosed.type.files", openTypeNames.toString());
+ log.warning(Warnings.ProcUnclosedTypeFiles(openTypeNames));
}
/**
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/JavacMessager.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/JavacMessager.java Thu Jun 15 13:44:42 2017 +0200
@@ -26,6 +26,9 @@
package com.sun.tools.javac.processing;
import com.sun.tools.javac.model.JavacElements;
+import com.sun.tools.javac.resources.CompilerProperties.Errors;
+import com.sun.tools.javac.resources.CompilerProperties.Notes;
+import com.sun.tools.javac.resources.CompilerProperties.Warnings;
import com.sun.tools.javac.util.*;
import com.sun.tools.javac.util.DefinedBy.Api;
import com.sun.tools.javac.util.JCDiagnostic.DiagnosticFlag;
@@ -114,21 +117,21 @@
switch (kind) {
case ERROR:
errorCount++;
- log.error(DiagnosticFlag.MULTIPLE, pos, "proc.messager", msg.toString());
+ log.error(DiagnosticFlag.MULTIPLE, pos, Errors.ProcMessager(msg.toString()));
break;
case WARNING:
warningCount++;
- log.warning(pos, "proc.messager", msg.toString());
+ log.warning(pos, Warnings.ProcMessager(msg.toString()));
break;
case MANDATORY_WARNING:
warningCount++;
- log.mandatoryWarning(pos, "proc.messager", msg.toString());
+ log.mandatoryWarning(pos, Warnings.ProcMessager(msg.toString()));
break;
default:
- log.note(pos, "proc.messager", msg.toString());
+ log.note(pos, Notes.ProcMessager(msg.toString()));
break;
}
} finally {
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java Thu Jun 15 13:44:42 2017 +0200
@@ -69,6 +69,7 @@
import com.sun.tools.javac.platform.PlatformDescription;
import com.sun.tools.javac.platform.PlatformDescription.PluginInfo;
import com.sun.tools.javac.resources.CompilerProperties.Errors;
+import com.sun.tools.javac.resources.CompilerProperties.Warnings;
import com.sun.tools.javac.tree.*;
import com.sun.tools.javac.tree.JCTree.*;
import com.sun.tools.javac.util.Abort;
@@ -412,7 +413,7 @@
this.iterator = handleServiceLoaderUnavailability("proc.no.service", null);
}
} catch (Throwable t) {
- log.error("proc.service.problem");
+ log.error(Errors.ProcServiceProblem);
throw new Abort(t);
}
}
@@ -428,7 +429,7 @@
try {
return internalHasNext();
} catch(ServiceConfigurationError sce) {
- log.error("proc.bad.config.file", sce.getLocalizedMessage());
+ log.error(Errors.ProcBadConfigFile(sce.getLocalizedMessage()));
throw new Abort(sce);
} catch (Throwable t) {
throw new Abort(t);
@@ -444,7 +445,7 @@
try {
return internalNext();
} catch (ServiceConfigurationError sce) {
- log.error("proc.bad.config.file", sce.getLocalizedMessage());
+ log.error(Errors.ProcBadConfigFile(sce.getLocalizedMessage()));
throw new Abort(sce);
} catch (Throwable t) {
throw new Abort(t);
@@ -561,13 +562,13 @@
ensureReadable(processorClass);
return (Processor) processorClass.getConstructor().newInstance();
} catch (ClassNotFoundException cnfe) {
- log.error("proc.processor.not.found", processorName);
+ log.error(Errors.ProcProcessorNotFound(processorName));
return null;
} catch (ClassCastException cce) {
- log.error("proc.processor.wrong.type", processorName);
+ log.error(Errors.ProcProcessorWrongType(processorName));
return null;
} catch (Exception e ) {
- log.error("proc.processor.cant.instantiate", processorName);
+ log.error(Errors.ProcProcessorCantInstantiate(processorName));
return null;
}
} catch (ClientCodeException e) {
@@ -707,19 +708,17 @@
SourceVersion procSourceVersion = processor.getSupportedSourceVersion();
if (procSourceVersion.compareTo(Source.toSourceVersion(source)) < 0 ) {
- log.warning("proc.processor.incompatible.source.version",
- procSourceVersion,
- processor.getClass().getName(),
- source.name);
+ log.warning(Warnings.ProcProcessorIncompatibleSourceVersion(procSourceVersion,
+ processor.getClass().getName(),
+ source.name));
}
}
private boolean checkOptionName(String optionName, Log log) {
boolean valid = isValidOptionName(optionName);
if (!valid)
- log.error("proc.processor.bad.option.name",
- optionName,
- processor.getClass().getName());
+ log.error(Errors.ProcProcessorBadOptionName(optionName,
+ processor.getClass().getName()));
return valid;
}
@@ -904,8 +903,7 @@
// Remove annotations processed by javac
unmatchedAnnotations.keySet().removeAll(platformAnnotations);
if (unmatchedAnnotations.size() > 0) {
- log.warning("proc.annotations.without.processors",
- unmatchedAnnotations.keySet());
+ log.warning(Warnings.ProcAnnotationsWithoutProcessors(unmatchedAnnotations.keySet()));
}
}
@@ -967,12 +965,12 @@
try {
return proc.process(tes, renv);
} catch (ClassFinder.BadClassFile ex) {
- log.error("proc.cant.access.1", ex.sym, ex.getDetailValue());
+ log.error(Errors.ProcCantAccess1(ex.sym, ex.getDetailValue()));
return false;
} catch (CompletionFailure ex) {
StringWriter out = new StringWriter();
ex.printStackTrace(new PrintWriter(out));
- log.error("proc.cant.access", ex.sym, ex.getDetailValue(), out.toString());
+ log.error(Errors.ProcCantAccess(ex.sym, ex.getDetailValue(), out.toString()));
return false;
} catch (ClientCodeException e) {
throw e;
@@ -1385,7 +1383,7 @@
private void warnIfUnmatchedOptions() {
if (!unmatchedProcessorOptions.isEmpty()) {
- log.warning("proc.unmatched.processor.options", unmatchedProcessorOptions.toString());
+ log.warning(Warnings.ProcUnmatchedProcessorOptions(unmatchedProcessorOptions.toString()));
}
}
@@ -1490,7 +1488,7 @@
throw new AssertionError(ex);
}
catch (ServiceProxy.ServiceConfigurationError e) {
- log.error("proc.bad.config.file", e.getLocalizedMessage());
+ log.error(Errors.ProcBadConfigFile(e.getLocalizedMessage()));
return true;
}
}
@@ -1682,7 +1680,7 @@
if (MatchingUtils.isValidImportString(pkg)) {
return Pattern.compile(module + MatchingUtils.validImportStringToPatternString(pkg));
} else {
- log.warning("proc.malformed.supported.string", s, p.getClass().getName());
+ log.warning(Warnings.ProcMalformedSupportedString(s, p.getClass().getName()));
return noMatches; // won't match any valid identifier
}
}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties Thu Jun 15 13:44:42 2017 +0200
@@ -28,12 +28,14 @@
# values.
# The simple types currently in use are:
#
+# annotation annotation compound
# boolean true or false
# diagnostic a sub-message; see compiler.misc.*
# fragment similar to 'message segment', but with more specific type
# modifier a Java modifier; e.g. public, private, protected
# file a file URL
# file object a file URL - similar to 'file' but typically used for source/class files, hence more specific
+# flag a Flags.Flag instance
# name a name, typically a Java identifier
# number an integer
# option name the name of a command line option
@@ -49,8 +51,9 @@
#
# The following compound types are also used:
#
+# collection of X a comma-separated collection of items; e.g. collection of type
# list of X a comma-separated list of items; e.g. list of type
-# set of X a comma-separated collection of items; e.g. set of modifier
+# set of X a comma-separated set of items; e.g. set of modifier
#
# These may be composed:
#
@@ -59,7 +62,7 @@
# The following type aliases are supported:
#
# message segment --> diagnostic or fragment
-# file name --> file or file object
+# file name --> file, path or file object
#
# Custom comments are supported in parenthesis i.e.
#
@@ -85,25 +88,27 @@
compiler.err.abstract.meth.cant.have.body=\
abstract methods cannot have a body
+# 0: kind name, 1: symbol
compiler.err.already.annotated=\
{0} {1} has already been annotated
-# 0: symbol kind, 1: symbol, 2: symbol kind, 3: symbol
+# 0: kind name, 1: symbol, 2: kind name, 3: symbol
compiler.err.already.defined=\
{0} {1} is already defined in {2} {3}
-# 0: symbol kind, 1: symbol, 2: symbol kind, 3: symbol kind, 4: symbol
+# 0: kind name, 1: symbol, 2: kind name, 3: kind name, 4: symbol
compiler.err.already.defined.in.clinit=\
{0} {1} is already defined in {2} of {3} {4}
-# 0: string
+# 0: symbol
compiler.err.already.defined.single.import=\
a type with the same simple name is already defined by the single-type-import of {0}
-# 0: string
+# 0: symbol
compiler.err.already.defined.static.single.import=\
a type with the same simple name is already defined by the static single-type-import of {0}
+# 0: symbol
compiler.err.already.defined.this.unit=\
{0} is already defined in this compilation unit
@@ -197,11 +202,11 @@
compiler.misc.cant.apply.symbols=\
no suitable {0} found for {1}({2})
-# 0: symbol kind, 1: symbol
+# 0: kind name, 1: symbol
compiler.misc.no.abstracts=\
no abstract method found in {0} {1}
-# 0: symbol kind, 1: symbol
+# 0: kind name, 1: symbol
compiler.misc.incompatible.abstracts=\
multiple non-overriding abstract methods found in {0} {1}
@@ -227,12 +232,12 @@
{0} is not a functional interface\n\
{1}
-# 0: symbol, 1: symbol kind, 2: symbol
+# 0: type, 1: kind name, 2: symbol
compiler.misc.invalid.generic.lambda.target=\
invalid functional descriptor for lambda expression\n\
method {0} in {1} {2} is generic
-# 0: symbol kind, 1: symbol
+# 0: kind name, 1: symbol
compiler.misc.incompatible.descs.in.functional.intf=\
incompatible function descriptors found in {0} {1}
@@ -257,7 +262,7 @@
compiler.misc.not.an.intf.component=\
component type {0} is not an interface
-# 0: symbol kind, 1: message segment
+# 0: kind name, 1: message segment
compiler.err.invalid.mref=\
invalid {0} reference\n\
{1}
@@ -307,7 +312,7 @@
compiler.err.cant.inherit.from.final=\
cannot inherit from final {0}
-# 0: symbol
+# 0: symbol or string
compiler.err.cant.ref.before.ctor.called=\
cannot reference {0} before supertype constructor has been called
@@ -321,7 +326,7 @@
compiler.err.catch.without.try=\
''catch'' without ''try''
-# 0: symbol kind, 1: symbol
+# 0: kind name, 1: symbol
compiler.err.clash.with.pkg.of.same.name=\
{0} {1} clashes with package of same name
@@ -334,7 +339,7 @@
compiler.err.cont.outside.loop=\
continue outside of loop
-# 0: symbol
+# 0: symbol or type
compiler.err.cyclic.inheritance=\
cyclic inheritance involving {0}
@@ -342,7 +347,7 @@
compiler.err.cyclic.annotation.element=\
type of element {0} is cyclic
-# 0: unused
+# 0: symbol
compiler.err.call.to.super.not.allowed.in.enum.ctor=\
call to super not allowed in enum constructor
@@ -350,7 +355,7 @@
compiler.err.no.superclass=\
{0} has no superclass.
-# 0: symbol, 1: type, 2: symbol, 3: type, 4: unused
+# 0: symbol, 1: type, 2: symbol, 3: type, 4: type
compiler.err.concrete.inheritance.conflict=\
methods {0} from {1} and {2} from {3} are inherited with the same signature
@@ -369,11 +374,11 @@
compiler.err.duplicate.annotation.member.value=\
duplicate element ''{0}'' in annotation @{1}.
-# 0: name, 1: unused
+# 0: type
compiler.err.duplicate.annotation.missing.container=\
{0} is not a repeatable annotation type
-# 0: type, 1: unused
+# 0: symbol
compiler.err.invalid.repeatable.annotation=\
duplicate annotation: {0} is annotated with an invalid @Repeatable annotation
@@ -389,7 +394,7 @@
compiler.err.invalid.repeatable.annotation.invalid.value=\
{0} is not a valid @Repeatable: invalid value element
-# 0: symbol or type, 1: unused, 2: type
+# 0: symbol or type, 1: type, 2: type
compiler.err.invalid.repeatable.annotation.value.return=\
containing annotation type ({0}) must declare an element named ''value'' of type {2}
@@ -397,7 +402,7 @@
compiler.err.invalid.repeatable.annotation.elem.nondefault=\
containing annotation type ({0}) does not have a default value for element {1}
-# 0: symbol, 1: unused, 2: symbol, 3: unused
+# 0: symbol, 1: string, 2: symbol, 3: string
compiler.err.invalid.repeatable.annotation.retention=\
retention of containing annotation type ({0}) is shorter than the retention of repeatable annotation type ({2})
@@ -526,7 +531,7 @@
compiler.err.illegal.char.for.encoding=\
unmappable character (0x{0}) for encoding {1}
-# 0: set of modifier, 1: set of modifier
+# 0: set of flag, 1: set of flag
compiler.err.illegal.combination.of.modifiers=\
illegal combination of modifiers: {0} and {1}
@@ -539,7 +544,7 @@
compiler.err.illegal.forward.ref=\
illegal forward reference
-# 0: symbol, 1: string
+# 0: symbol, 1: object
compiler.err.not.in.profile=\
{0} is not available in profile ''{1}''
@@ -627,9 +632,8 @@
compiler.err.intf.meth.cant.have.body=\
interface abstract methods cannot have body
-# 0: symbol
compiler.err.invalid.annotation.member.type=\
- invalid type for element {0} of annotation type
+ invalid type for annotation type element
compiler.err.invalid.binary.number=\
binary numbers must contain at least one binary digit
@@ -707,6 +711,7 @@
compiler.err.limit.string=\
constant string too long
+# 0: string
compiler.err.limit.string.overflow=\
UTF8 representation for string \"{0}...\" is too long for the constant pool
@@ -722,14 +727,14 @@
compiler.err.missing.ret.stmt=\
missing return statement
-# 0: unused
+# 0: type
compiler.misc.missing.ret.val=\
missing return value
compiler.misc.unexpected.ret.val=\
unexpected return value
-# 0: set of modifier
+# 0: set of flag
compiler.err.mod.not.allowed.here=\
modifier {0} not allowed here
@@ -778,7 +783,7 @@
compiler.misc.conditional.target.cant.be.void=\
target-type for conditional expression cannot be void
-# 0: type
+# 0: message segment
compiler.misc.incompatible.ret.type.in.lambda=\
bad return type in lambda expression\n\
{0}
@@ -787,7 +792,7 @@
lambda body is not compatible with a void functional interface\n\
(consider using a block lambda body, or use a statement expression instead)
-# 0: type
+# 0: message segment
compiler.misc.incompatible.ret.type.in.mref=\
bad return type in method reference\n\
{0}
@@ -808,9 +813,11 @@
compiler.err.new.not.allowed.in.annotation=\
''new'' not allowed in an annotation
+# 0: name, 1: type
compiler.err.no.annotation.member=\
no annotation member {0} in {1}
+# 0: symbol
compiler.err.no.encl.instance.of.type.in.scope=\
no enclosing instance of type {0} is in scope
@@ -820,6 +827,7 @@
compiler.err.no.match.entry=\
{0} has no match in entry in {1}; required {2}
+# 0: type
compiler.err.not.annotation.type=\
{0} is not an annotation type
@@ -958,14 +966,14 @@
# Errors related to annotation processing
-# 0: symbol, 1: string, 2: string (stack-trace)
+# 0: symbol, 1: message segment, 2: string (stack-trace)
compiler.err.proc.cant.access=\
cannot access {0}\n\
{1}\n\
Consult the following stack trace for details.\n\
{2}
-# 0: symbol, 1: string
+# 0: symbol, 1: message segment
compiler.err.proc.cant.access.1=\
cannot access {0}\n\
{1}
@@ -979,13 +987,21 @@
compiler.err.proc.messager=\
{0}
-# 0: list of string
+# 0: string
+compiler.misc.exception.message=\
+ {0}
+
+compiler.misc.user.selected.completion.failure=\
+ user-selected completion failure by class name
+
+# 0: collection of string
compiler.err.proc.no.explicit.annotation.processing.requested=\
Class names, ''{0}'', are only accepted if annotation processing is explicitly requested
compiler.err.proc.no.service=\
A ServiceLoader was not usable and is required for annotation processing.
+# 0: string, 1: string
compiler.err.proc.processor.bad.option.name=\
Bad option name ''{0}'' provided by processor ''{1}''
@@ -1004,13 +1020,14 @@
compiler.err.proc.service.problem=\
Error creating a service loader to load Processors.
+# 0: string
compiler.err.proc.bad.config.file=\
Bad service configuration file, or exception thrown while constructing Processor object: {0}
compiler.err.proc.cant.create.loader=\
Could not create class loader for annotation processors: {0}
-# 0: unused
+# 0: symbol
compiler.err.qualified.new.of.static.class=\
qualified new of static class
@@ -1061,9 +1078,11 @@
compiler.err.does.not.override.abstract=\
{0} is not abstract and does not override abstract method {1} in {2}
+# 0: file object
compiler.err.source.cant.overwrite.input.file=\
error writing source; cannot overwrite input file {0}
+# 0: symbol
compiler.err.stack.sim.error=\
Internal error: stack sim error on {0}
@@ -1123,7 +1142,7 @@
illegal static interface method call\n\
the receiver expression should be replaced with the type qualifier ''{0}''
-# 0: type, 1: message segment
+# 0: symbol or type, 1: message segment
compiler.err.illegal.default.super.call=\
bad type qualifier {0} in default super call\n\
{1}
@@ -1145,7 +1164,7 @@
compiler.err.unclosed.str.lit=\
unclosed string literal
-# 0: name
+# 0: string
compiler.err.unsupported.encoding=\
unsupported encoding: {0}
@@ -1314,12 +1333,15 @@
compiler.misc.fatal.err.no.java.lang=\
Fatal Error: Unable to find package java.lang in classpath or bootclasspath
+# 0: name
compiler.misc.fatal.err.cant.locate.meth=\
Fatal Error: Unable to find method {0}
+# 0: name
compiler.misc.fatal.err.cant.locate.field=\
Fatal Error: Unable to find field {0}
+# 0: type
compiler.misc.fatal.err.cant.locate.ctor=\
Fatal Error: Unable to find constructor for {0}
@@ -1527,7 +1549,7 @@
compiler.warn.constant.SVUID=\
serialVersionUID must be constant in class {0}
-# 0: file name
+# 0: path
compiler.warn.dir.path.element.not.found=\
bad path element "{0}": no such directory
@@ -1609,6 +1631,7 @@
compiler.warn.override.varargs.extra=\
{0}; overriding method is missing ''...''
+# 0: message segment
compiler.warn.override.bridge=\
{0}; overridden method is a bridge method
@@ -1616,7 +1639,7 @@
compiler.warn.pkg-info.already.seen=\
a package-info.java file has already been seen for package {0}
-# 0: file name
+# 0: path
compiler.warn.path.element.not.found=\
bad path element "{0}": no such file or directory
@@ -1678,7 +1701,7 @@
compiler.warn.proc.package.does.not.exist=\
package {0} does not exist
-# 0: name
+# 0: string
compiler.warn.proc.file.reopening=\
Attempt to create a file for ''{0}'' multiple times
@@ -1686,7 +1709,7 @@
compiler.warn.proc.type.already.exists=\
A file for type ''{0}'' already exists on the sourcepath or classpath
-# 0: name
+# 0: string
compiler.warn.proc.type.recreate=\
Attempt to create a file for type ''{0}'' multiple times
@@ -1698,7 +1721,7 @@
compiler.warn.proc.suspicious.class.name=\
Creating file for a type whose name ends in {1}: ''{0}''
-# 0: name
+# 0: string
compiler.warn.proc.file.create.last.round=\
File for type ''{0}'' created in the last round will not be subject to annotation processing.
@@ -1730,7 +1753,7 @@
compiler.warn.proc.messager=\
{0}
-# 0: set of name
+# 0: set of string
compiler.warn.proc.unclosed.type.files=\
Unclosed files for the types ''{0}''; these types will not undergo annotation processing
@@ -1784,16 +1807,19 @@
compiler.warn.missing.deprecated.annotation=\
deprecated item is not annotated with @Deprecated
-# 0: symbol kind
+# 0: kind name
compiler.warn.deprecated.annotation.has.no.effect=\
@Deprecated annotation has no effect on this {0} declaration
+# 0: string
compiler.warn.invalid.path=\
Invalid filename: {0}
+# 0: path
compiler.warn.invalid.archive.file=\
Unexpected file on path: {0}
+# 0: path
compiler.warn.unexpected.archive.file=\
Unexpected extension for archive file: {0}
@@ -1807,17 +1833,19 @@
compiler.warn.empty.if=\
empty statement after if
+# 0: type, 1: name
compiler.warn.annotation.method.not.found=\
Cannot find annotation method ''{1}()'' in type ''{0}''
+# 0: type, 1: name, 2: message segment
compiler.warn.annotation.method.not.found.reason=\
Cannot find annotation method ''{1}()'' in type ''{0}'': {2}
-# 0: symbol, 1: name
+# 0: file object, 1: symbol, 2: name
compiler.warn.unknown.enum.constant=\
unknown enum constant {1}.{2}
-# 0: symbol, 1: name, 2: message segment
+# 0: file object, 1: symbol, 2: name, 3: message segment
compiler.warn.unknown.enum.constant.reason=\
unknown enum constant {1}.{2}\n\
reason: {3}
@@ -1827,7 +1855,6 @@
found raw type: {0}\n\
missing type arguments for generic class {1}
-# 0: unused, 1: unused
compiler.warn.diamond.redundant.args=\
Redundant type arguments in new expression (use diamond operator instead).
@@ -2004,6 +2031,7 @@
compiler.misc.module.info.invalid.super.class=\
module-info with invalid super class
+# 0: name
compiler.misc.class.file.not.found=\
class file for {0} not found
@@ -2031,6 +2059,7 @@
compiler.misc.file.doesnt.contain.class=\
file does not contain class {0}
+# 0: symbol
compiler.misc.file.does.not.contain.package=\
file does not contain package {0}
@@ -2105,14 +2134,14 @@
# compiler.err.no.elem.type=\
# \[\*\] cannot have a type
-# 0: type
+# 0: message segment
compiler.misc.try.not.applicable.to.type=\
try-with-resources not applicable to variable type\n\
({0})
#####
-# 0: message segment or type, 1: message segment
+# 0: object, 1: message segment
compiler.err.type.found.req=\
unexpected type\n\
required: {1}\n\
@@ -2232,11 +2261,10 @@
type arguments {0} inferred for {1} are not allowed in this context\n\
inferred arguments are not expressible in the Signature attribute
-# 0: unused
+# 0: type
compiler.misc.diamond.and.explicit.params=\
cannot use ''<>'' with explicit type parameters for constructor
-# 0: unused
compiler.misc.mref.infer.and.explicit.params=\
cannot use raw constructor reference with explicit type parameters for constructor
@@ -2266,7 +2294,7 @@
auxiliary class {0} in {1} should not be accessed from outside its own source file
## The first argument ({0}) is a "kindname".
-# 0: symbol kind, 1: symbol, 2: symbol
+# 0: kind name, 1: symbol, 2: symbol
compiler.err.abstract.cant.be.accessed.directly=\
abstract {0} {1} in {2} cannot be accessed directly
@@ -2289,6 +2317,7 @@
## Both arguments ({0}, {1}) are "kindname"s. {0} is a comma-separated list
## of kindnames (the list should be identical to that provided in source.
+# 0: set of kind name, 1: set of kind name
compiler.err.unexpected.type=\
unexpected type\n\
required: {0}\n\
@@ -2304,36 +2333,36 @@
## The second argument {1} is the non-resolved symbol
## The third argument {2} is a list of type parameters (non-empty if {1} is a method)
## The fourth argument {3} is a list of argument types (non-empty if {1} is a method)
-# 0: symbol kind, 1: name, 2: unused, 3: unused
+# 0: kind name, 1: name, 2: unused, 3: unused
compiler.err.cant.resolve=\
cannot find symbol\n\
symbol: {0} {1}
-# 0: symbol kind, 1: name, 2: unused, 3: list of type
+# 0: kind name, 1: name, 2: unused, 3: list of type
compiler.err.cant.resolve.args=\
cannot find symbol\n\
symbol: {0} {1}({3})
-# 0: symbol kind, 1: name, 2: list of type, 3: list of type
+# 0: kind name, 1: name, 2: list of type, 3: list of type
compiler.err.cant.resolve.args.params=\
cannot find symbol\n\
symbol: {0} <{2}>{1}({3})
## arguments from {0} to {3} have the same meaning as above
## The fifth argument {4} is a location subdiagnostic (see below)
-# 0: symbol kind, 1: name, 2: unused, 3: unused, 4: message segment
+# 0: kind name, 1: name, 2: unused, 3: unused, 4: message segment
compiler.err.cant.resolve.location=\
cannot find symbol\n\
symbol: {0} {1}\n\
location: {4}
-# 0: symbol kind, 1: name, 2: unused, 3: list of type, 4: message segment
+# 0: kind name, 1: name, 2: unused, 3: list of type, 4: message segment
compiler.err.cant.resolve.location.args=\
cannot find symbol\n\
symbol: {0} {1}({3})\n\
location: {4}
-# 0: symbol kind, 1: name, 2: list of type, 3: list, 4: message segment
+# 0: kind name, 1: name, 2: list of type, 3: list, 4: message segment
compiler.err.cant.resolve.location.args.params=\
cannot find symbol\n\
symbol: {0} <{2}>{1}({3})\n\
@@ -2341,13 +2370,13 @@
### Following are replicated/used for method reference diagnostics
-# 0: symbol kind, 1: name, 2: unused, 3: list of type, 4: message segment
+# 0: kind name, 1: name, 2: unused, 3: list of type, 4: message segment
compiler.misc.cant.resolve.location.args=\
cannot find symbol\n\
symbol: {0} {1}({3})\n\
location: {4}
-# 0: symbol kind, 1: name, 2: list of type, 3: list, 4: message segment
+# 0: kind name, 1: name, 2: list of type, 3: list, 4: message segment
compiler.misc.cant.resolve.location.args.params=\
cannot find symbol\n\
symbol: {0} <{2}>{1}({3})\n\
@@ -2358,11 +2387,11 @@
## The second argument {1} is the location name
## The third argument {2} is the location type (only when {1} is a variable name)
-# 0: symbol kind, 1: type or symbol, 2: unused
+# 0: kind name, 1: type or symbol, 2: unused
compiler.misc.location=\
{0} {1}
-# 0: symbol kind, 1: symbol, 2: type
+# 0: kind name, 1: symbol, 2: type
compiler.misc.location.1=\
{0} {1} of type {2}
@@ -2426,7 +2455,7 @@
{0}\n\
overriding method is static
-# 0: message segment, 1: set of modifier
+# 0: message segment, 1: set of flag
compiler.err.override.meth=\
{0}\n\
overridden method is {1}
@@ -2438,7 +2467,7 @@
# In the following string {1} is a space separated list of Java Keywords, as
# they would have been declared in the source code
-# 0: message segment, 1: set of modifier
+# 0: message segment, 1: set of flag or string
compiler.err.override.weaker.access=\
{0}\n\
attempting to assign weaker access privileges; was {1}
@@ -2504,7 +2533,7 @@
compiler.misc.varargs.clash.with=\
{0} in {1} overrides {2} in {3}
-# 0: symbol kind, 1: symbol, 2: symbol, 3: message segment
+# 0: kind name, 1: symbol, 2: symbol, 3: message segment
compiler.misc.inapplicable.method=\
{0} {1}.{2} is not applicable\n\
({3})
@@ -2563,17 +2592,16 @@
compiler.err.this.as.identifier=\
as of release 8, ''this'' is allowed as the parameter name for the receiver type only, which has to be the first parameter
-# 0: symbol
compiler.err.receiver.parameter.not.applicable.constructor.toplevel.class=\
receiver parameter not applicable for constructor of top-level class
# TODO 308: make a better error message
-# 0: symbol
+# 0: annotation
compiler.err.cant.type.annotate.scoping.1=\
scoping construct cannot be annotated with type-use annotation: {0}
# TODO 308: make a better error message
-# 0: list of symbol
+# 0: list of annotation
compiler.err.cant.type.annotate.scoping=\
scoping construct cannot be annotated with type-use annotations: {0}
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/RichDiagnosticFormatter.java Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/RichDiagnosticFormatter.java Thu Jun 15 13:44:42 2017 +0200
@@ -40,6 +40,7 @@
import com.sun.tools.javac.code.Type;
import com.sun.tools.javac.code.Type.*;
import com.sun.tools.javac.code.Types;
+import com.sun.tools.javac.resources.CompilerProperties.Fragments;
import static com.sun.tools.javac.code.Flags.*;
import static com.sun.tools.javac.code.TypeTag.*;
@@ -520,7 +521,7 @@
if (indexOf(t, WhereClauseKind.INTERSECTION) == -1) {
Type supertype = types.supertype(t);
List<Type> interfaces = types.interfaces(t);
- JCDiagnostic d = diags.fragment("where.intersection", t, interfaces.prepend(supertype));
+ JCDiagnostic d = diags.fragment(Fragments.WhereIntersection(t, interfaces.prepend(supertype)));
whereClauses.get(WhereClauseKind.INTERSECTION).put(t, d);
visit(supertype);
visit(interfaces);
@@ -575,7 +576,7 @@
} else {
Assert.check(!boundErroneous);
//this is a fresh (synthetic) tvar
- JCDiagnostic d = diags.fragment("where.fresh.typevar", t, bounds);
+ JCDiagnostic d = diags.fragment(Fragments.WhereFreshTypevar(t, bounds));
whereClauses.get(WhereClauseKind.TYPEVAR).put(t, d);
visit(bounds);
}
--- a/langtools/test/tools/javac/T5024091/T5024091.out Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/test/tools/javac/T5024091/T5024091.out Thu Jun 15 13:44:42 2017 +0200
@@ -1,2 +1,2 @@
-T5024091.java:12:29: compiler.err.cant.access: java.lang.StringBuilder, user-selected completion failure by class name
+T5024091.java:12:29: compiler.err.cant.access: java.lang.StringBuilder, (compiler.misc.user.selected.completion.failure)
1 error
--- a/langtools/test/tools/javac/annotations/neg/Cycle1.out Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/test/tools/javac/annotations/neg/Cycle1.out Thu Jun 15 13:44:42 2017 +0200
@@ -1,2 +1,2 @@
-Cycle1.java:13:9: compiler.err.cyclic.annotation.element
+Cycle1.java:13:9: compiler.err.cyclic.annotation.element: cycle1.Foo
1 error
--- a/langtools/test/tools/javac/annotations/neg/Cycle2.out Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/test/tools/javac/annotations/neg/Cycle2.out Thu Jun 15 13:44:42 2017 +0200
@@ -1,2 +1,2 @@
-Cycle2.java:13:9: compiler.err.cyclic.annotation.element
+Cycle2.java:13:9: compiler.err.cyclic.annotation.element: cycle2.Bar
1 error
--- a/langtools/test/tools/javac/annotations/neg/Cycle3.out Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/test/tools/javac/annotations/neg/Cycle3.out Thu Jun 15 13:44:42 2017 +0200
@@ -1,2 +1,2 @@
-Cycle3.java:17:9: compiler.err.cyclic.annotation.element
+Cycle3.java:17:9: compiler.err.cyclic.annotation.element: cycle3.A
1 error
--- a/langtools/test/tools/javac/annotations/neg/Dup.out Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/test/tools/javac/annotations/neg/Dup.out Thu Jun 15 13:44:42 2017 +0200
@@ -1,2 +1,2 @@
-Dup.java:11:1: compiler.err.duplicate.annotation.missing.container: Dup, java.lang.annotation.Repeatable
+Dup.java:11:1: compiler.err.duplicate.annotation.missing.container: Dup
1 error
--- a/langtools/test/tools/javac/annotations/neg/Z14.out Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/test/tools/javac/annotations/neg/Z14.out Thu Jun 15 13:44:42 2017 +0200
@@ -1,2 +1,2 @@
-Z14.java:10:15: compiler.err.intf.annotation.cant.have.type.params
+Z14.java:10:15: compiler.err.intf.annotation.cant.have.type.params: An
1 error
--- a/langtools/test/tools/javac/annotations/repeatingAnnotations/BaseAnnoAsContainerAnno.out Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/test/tools/javac/annotations/repeatingAnnotations/BaseAnnoAsContainerAnno.out Thu Jun 15 13:44:42 2017 +0200
@@ -1,2 +1,2 @@
-BaseAnnoAsContainerAnno.java:13:11: compiler.err.cyclic.annotation.element
+BaseAnnoAsContainerAnno.java:13:11: compiler.err.cyclic.annotation.element: Foo
1 error
--- a/langtools/test/tools/javac/annotations/repeatingAnnotations/CyclicAnnotation.out Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/test/tools/javac/annotations/repeatingAnnotations/CyclicAnnotation.out Thu Jun 15 13:44:42 2017 +0200
@@ -1,2 +1,2 @@
-CyclicAnnotation.java:13:11: compiler.err.cyclic.annotation.element
+CyclicAnnotation.java:13:11: compiler.err.cyclic.annotation.element: Baz
1 error
--- a/langtools/test/tools/javac/annotations/repeatingAnnotations/DuplicateErrors.out Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/test/tools/javac/annotations/repeatingAnnotations/DuplicateErrors.out Thu Jun 15 13:44:42 2017 +0200
@@ -1,3 +1,3 @@
-DuplicateErrors.java:34:1: compiler.err.duplicate.annotation.missing.container: Foo, java.lang.annotation.Repeatable
-DuplicateErrors.java:35:1: compiler.err.duplicate.annotation.missing.container: Foo, java.lang.annotation.Repeatable
+DuplicateErrors.java:34:1: compiler.err.duplicate.annotation.missing.container: Foo
+DuplicateErrors.java:35:1: compiler.err.duplicate.annotation.missing.container: Foo
2 errors
--- a/langtools/test/tools/javac/annotations/repeatingAnnotations/NoRepeatableAnno.out Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/test/tools/javac/annotations/repeatingAnnotations/NoRepeatableAnno.out Thu Jun 15 13:44:42 2017 +0200
@@ -1,2 +1,2 @@
-NoRepeatableAnno.java:11:6: compiler.err.duplicate.annotation.missing.container: Foo, java.lang.annotation.Repeatable
+NoRepeatableAnno.java:11:6: compiler.err.duplicate.annotation.missing.container: Foo
1 error
--- a/langtools/test/tools/javac/annotations/typeAnnotations/failures/common/arrays/DuplicateTypeAnnotation.out Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/failures/common/arrays/DuplicateTypeAnnotation.out Thu Jun 15 13:44:42 2017 +0200
@@ -1,2 +1,2 @@
-DuplicateTypeAnnotation.java:11:15: compiler.err.duplicate.annotation.missing.container: A, java.lang.annotation.Repeatable
+DuplicateTypeAnnotation.java:11:15: compiler.err.duplicate.annotation.missing.container: A
1 error
--- a/langtools/test/tools/javac/annotations/typeAnnotations/failures/common/innertypeparams/DuplicateTypeAnnotation.out Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/failures/common/innertypeparams/DuplicateTypeAnnotation.out Thu Jun 15 13:44:42 2017 +0200
@@ -1,2 +1,2 @@
-DuplicateTypeAnnotation.java:11:20: compiler.err.duplicate.annotation.missing.container: A, java.lang.annotation.Repeatable
+DuplicateTypeAnnotation.java:11:20: compiler.err.duplicate.annotation.missing.container: A
1 error
--- a/langtools/test/tools/javac/annotations/typeAnnotations/failures/common/newarray/DuplicateTypeAnnotation.out Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/failures/common/newarray/DuplicateTypeAnnotation.out Thu Jun 15 13:44:42 2017 +0200
@@ -1,2 +1,2 @@
-DuplicateTypeAnnotation.java:11:32: compiler.err.duplicate.annotation.missing.container: A, java.lang.annotation.Repeatable
+DuplicateTypeAnnotation.java:11:32: compiler.err.duplicate.annotation.missing.container: A
1 error
--- a/langtools/test/tools/javac/annotations/typeAnnotations/failures/common/parambounds/DuplicateTypeAnnotation.out Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/failures/common/parambounds/DuplicateTypeAnnotation.out Thu Jun 15 13:44:42 2017 +0200
@@ -1,2 +1,2 @@
-DuplicateTypeAnnotation.java:9:38: compiler.err.duplicate.annotation.missing.container: A, java.lang.annotation.Repeatable
+DuplicateTypeAnnotation.java:9:38: compiler.err.duplicate.annotation.missing.container: A
1 error
--- a/langtools/test/tools/javac/annotations/typeAnnotations/failures/common/receiver/DuplicateTypeAnnotation.out Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/failures/common/receiver/DuplicateTypeAnnotation.out Thu Jun 15 13:44:42 2017 +0200
@@ -1,2 +1,2 @@
-DuplicateTypeAnnotation.java:10:16: compiler.err.duplicate.annotation.missing.container: A, java.lang.annotation.Repeatable
+DuplicateTypeAnnotation.java:10:16: compiler.err.duplicate.annotation.missing.container: A
1 error
--- a/langtools/test/tools/javac/annotations/typeAnnotations/failures/common/rest/DuplicateTypeAnnotation.out Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/failures/common/rest/DuplicateTypeAnnotation.out Thu Jun 15 13:44:42 2017 +0200
@@ -1,2 +1,2 @@
-DuplicateTypeAnnotation.java:11:12: compiler.err.duplicate.annotation.missing.container: A, java.lang.annotation.Repeatable
+DuplicateTypeAnnotation.java:11:12: compiler.err.duplicate.annotation.missing.container: A
1 error
--- a/langtools/test/tools/javac/annotations/typeAnnotations/failures/common/typeArgs/DuplicateTypeAnnotation.out Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/failures/common/typeArgs/DuplicateTypeAnnotation.out Thu Jun 15 13:44:42 2017 +0200
@@ -1,2 +1,2 @@
-DuplicateTypeAnnotation.java:10:24: compiler.err.duplicate.annotation.missing.container: A, java.lang.annotation.Repeatable
+DuplicateTypeAnnotation.java:10:24: compiler.err.duplicate.annotation.missing.container: A
1 error
--- a/langtools/test/tools/javac/annotations/typeAnnotations/failures/common/typeparams/DuplicateTypeAnnotation.out Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/failures/common/typeparams/DuplicateTypeAnnotation.out Thu Jun 15 13:44:42 2017 +0200
@@ -1,2 +1,2 @@
-DuplicateTypeAnnotation.java:9:28: compiler.err.duplicate.annotation.missing.container: A, java.lang.annotation.Repeatable
+DuplicateTypeAnnotation.java:9:28: compiler.err.duplicate.annotation.missing.container: A
1 error
--- a/langtools/test/tools/javac/annotations/typeAnnotations/failures/common/wildcards/DuplicateTypeAnnotation.out Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/failures/common/wildcards/DuplicateTypeAnnotation.out Thu Jun 15 13:44:42 2017 +0200
@@ -1,2 +1,2 @@
-DuplicateTypeAnnotation.java:10:24: compiler.err.duplicate.annotation.missing.container: A, java.lang.annotation.Repeatable
+DuplicateTypeAnnotation.java:10:24: compiler.err.duplicate.annotation.missing.container: A
1 error
--- a/langtools/test/tools/javac/annotations/typeAnnotations/newlocations/RepeatingTypeAnnotations.out Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/test/tools/javac/annotations/typeAnnotations/newlocations/RepeatingTypeAnnotations.out Thu Jun 15 13:44:42 2017 +0200
@@ -1,28 +1,28 @@
-RepeatingTypeAnnotations.java:39:25: compiler.err.duplicate.annotation.missing.container: TA, java.lang.annotation.Repeatable
-RepeatingTypeAnnotations.java:41:25: compiler.err.duplicate.annotation.missing.container: TA, java.lang.annotation.Repeatable
-RepeatingTypeAnnotations.java:42:25: compiler.err.duplicate.annotation.missing.container: TA, java.lang.annotation.Repeatable
-RepeatingTypeAnnotations.java:50:31: compiler.err.duplicate.annotation.missing.container: TA, java.lang.annotation.Repeatable
-RepeatingTypeAnnotations.java:52:24: compiler.err.duplicate.annotation.missing.container: TA, java.lang.annotation.Repeatable
-RepeatingTypeAnnotations.java:61:21: compiler.err.duplicate.annotation.missing.container: TA, java.lang.annotation.Repeatable
-RepeatingTypeAnnotations.java:63:38: compiler.err.duplicate.annotation.missing.container: TA, java.lang.annotation.Repeatable
-RepeatingTypeAnnotations.java:65:24: compiler.err.duplicate.annotation.missing.container: TA, java.lang.annotation.Repeatable
-RepeatingTypeAnnotations.java:72:21: compiler.err.duplicate.annotation.missing.container: TA, java.lang.annotation.Repeatable
-RepeatingTypeAnnotations.java:77:28: compiler.err.duplicate.annotation.missing.container: TA, java.lang.annotation.Repeatable
-RepeatingTypeAnnotations.java:79:21: compiler.err.duplicate.annotation.missing.container: TA, java.lang.annotation.Repeatable
-RepeatingTypeAnnotations.java:79:36: compiler.err.duplicate.annotation.missing.container: TA, java.lang.annotation.Repeatable
-RepeatingTypeAnnotations.java:81:19: compiler.err.duplicate.annotation.missing.container: TA, java.lang.annotation.Repeatable
-RepeatingTypeAnnotations.java:85:19: compiler.err.duplicate.annotation.missing.container: TA, java.lang.annotation.Repeatable
-RepeatingTypeAnnotations.java:85:34: compiler.err.duplicate.annotation.missing.container: TA, java.lang.annotation.Repeatable
-RepeatingTypeAnnotations.java:89:18: compiler.err.duplicate.annotation.missing.container: TA, java.lang.annotation.Repeatable
-RepeatingTypeAnnotations.java:89:33: compiler.err.duplicate.annotation.missing.container: TA, java.lang.annotation.Repeatable
-RepeatingTypeAnnotations.java:93:19: compiler.err.duplicate.annotation.missing.container: TA, java.lang.annotation.Repeatable
-RepeatingTypeAnnotations.java:93:35: compiler.err.duplicate.annotation.missing.container: TA, java.lang.annotation.Repeatable
-RepeatingTypeAnnotations.java:97:19: compiler.err.duplicate.annotation.missing.container: TA, java.lang.annotation.Repeatable
-RepeatingTypeAnnotations.java:97:34: compiler.err.duplicate.annotation.missing.container: TA, java.lang.annotation.Repeatable
-RepeatingTypeAnnotations.java:101:37: compiler.err.duplicate.annotation.missing.container: TA, java.lang.annotation.Repeatable
-RepeatingTypeAnnotations.java:101:26: compiler.err.duplicate.annotation.missing.container: TA, java.lang.annotation.Repeatable
-RepeatingTypeAnnotations.java:101:56: compiler.err.duplicate.annotation.missing.container: TA, java.lang.annotation.Repeatable
-RepeatingTypeAnnotations.java:101:72: compiler.err.duplicate.annotation.missing.container: TA, java.lang.annotation.Repeatable
+RepeatingTypeAnnotations.java:39:25: compiler.err.duplicate.annotation.missing.container: TA
+RepeatingTypeAnnotations.java:41:25: compiler.err.duplicate.annotation.missing.container: TA
+RepeatingTypeAnnotations.java:42:25: compiler.err.duplicate.annotation.missing.container: TA
+RepeatingTypeAnnotations.java:50:31: compiler.err.duplicate.annotation.missing.container: TA
+RepeatingTypeAnnotations.java:52:24: compiler.err.duplicate.annotation.missing.container: TA
+RepeatingTypeAnnotations.java:61:21: compiler.err.duplicate.annotation.missing.container: TA
+RepeatingTypeAnnotations.java:63:38: compiler.err.duplicate.annotation.missing.container: TA
+RepeatingTypeAnnotations.java:65:24: compiler.err.duplicate.annotation.missing.container: TA
+RepeatingTypeAnnotations.java:72:21: compiler.err.duplicate.annotation.missing.container: TA
+RepeatingTypeAnnotations.java:77:28: compiler.err.duplicate.annotation.missing.container: TA
+RepeatingTypeAnnotations.java:79:21: compiler.err.duplicate.annotation.missing.container: TA
+RepeatingTypeAnnotations.java:79:36: compiler.err.duplicate.annotation.missing.container: TA
+RepeatingTypeAnnotations.java:81:19: compiler.err.duplicate.annotation.missing.container: TA
+RepeatingTypeAnnotations.java:85:19: compiler.err.duplicate.annotation.missing.container: TA
+RepeatingTypeAnnotations.java:85:34: compiler.err.duplicate.annotation.missing.container: TA
+RepeatingTypeAnnotations.java:89:18: compiler.err.duplicate.annotation.missing.container: TA
+RepeatingTypeAnnotations.java:89:33: compiler.err.duplicate.annotation.missing.container: TA
+RepeatingTypeAnnotations.java:93:19: compiler.err.duplicate.annotation.missing.container: TA
+RepeatingTypeAnnotations.java:93:35: compiler.err.duplicate.annotation.missing.container: TA
+RepeatingTypeAnnotations.java:97:19: compiler.err.duplicate.annotation.missing.container: TA
+RepeatingTypeAnnotations.java:97:34: compiler.err.duplicate.annotation.missing.container: TA
+RepeatingTypeAnnotations.java:101:37: compiler.err.duplicate.annotation.missing.container: TA
+RepeatingTypeAnnotations.java:101:26: compiler.err.duplicate.annotation.missing.container: TA
+RepeatingTypeAnnotations.java:101:56: compiler.err.duplicate.annotation.missing.container: TA
+RepeatingTypeAnnotations.java:101:72: compiler.err.duplicate.annotation.missing.container: TA
- compiler.note.unchecked.filename: RepeatingTypeAnnotations.java
- compiler.note.unchecked.recompile
25 errors
--- a/langtools/test/tools/javac/diags/examples.not-yet.txt Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/test/tools/javac/diags/examples.not-yet.txt Thu Jun 15 13:44:42 2017 +0200
@@ -56,6 +56,7 @@
compiler.misc.base.membership # UNUSED
compiler.misc.class.file.not.found # ClassReader
compiler.misc.class.file.wrong.class
+compiler.misc.exception.message # uncommon completion failure based on a string
compiler.misc.fatal.err.cant.locate.ctor # Resolve, from Lower
compiler.misc.fatal.err.cant.locate.field # Resolve, from Lower
compiler.misc.fatal.err.cant.locate.meth # Resolve, from Lower
@@ -94,6 +95,7 @@
compiler.misc.unable.to.access.file # ClassFile
compiler.misc.undecl.type.var # ClassReader
compiler.misc.unicode.str.not.supported # ClassReader
+compiler.misc.user.selected.completion.failure # manual completion failure
compiler.misc.malformed.vararg.method # ClassReader
compiler.misc.version.not.available # JavaCompiler; implies build error
compiler.misc.where.description.captured
--- a/langtools/test/tools/javac/importChecks/NoImportedNoClasses.out Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/test/tools/javac/importChecks/NoImportedNoClasses.out Thu Jun 15 13:44:42 2017 +0200
@@ -1,2 +1,2 @@
-NoImportedNoClasses.java:10:1: compiler.err.cant.resolve.location: kindname.static, UNKNOWN, , , kindname.interface, java.lang.Runnable
+NoImportedNoClasses.java:10:1: compiler.err.cant.resolve.location: kindname.static, UNKNOWN, null, null, (compiler.misc.location: kindname.interface, java.lang.Runnable, null)
1 error
\ No newline at end of file
--- a/langtools/test/tools/javac/staticImport/ImportPrivate.out Wed Jun 14 20:05:01 2017 +0000
+++ b/langtools/test/tools/javac/staticImport/ImportPrivate.out Thu Jun 15 13:44:42 2017 +0200
@@ -1,3 +1,3 @@
-ImportPrivate.java:12:1: compiler.err.cant.resolve.location: kindname.static, m, , , kindname.class, importPrivate.A
+ImportPrivate.java:12:1: compiler.err.cant.resolve.location: kindname.static, m, null, null, (compiler.misc.location: kindname.class, importPrivate.A, null)
ImportPrivate.java:22:9: compiler.err.cant.resolve.location.args: kindname.method, m, , , (compiler.misc.location: kindname.class, importPrivate.MyTest, null)
2 errors