Merge branch 'master' into upsource-master

This commit is contained in:
Dmitry Lomov
2012-05-14 11:38:01 +02:00
492 changed files with 38232 additions and 1650 deletions
@@ -671,15 +671,14 @@ public class ExpressionParser {
final PsiBuilder.Marker newExpr = (start != null ? start.precede() : builder.mark());
builder.advanceLexer();
final boolean parseDiamonds = areDiamondsSupported(builder);
myReferenceParser.parseReferenceParameterList(builder, false, parseDiamonds);
myReferenceParser.parseReferenceParameterList(builder, false, true);
final PsiBuilder.Marker refOrType;
final boolean parseAnnotations = areTypeAnnotationsSupported(builder) && builder.getTokenType() == JavaTokenType.AT;
final IElementType tokenType = builder.getTokenType();
if (tokenType == JavaTokenType.IDENTIFIER || parseAnnotations) {
refOrType = myReferenceParser.parseJavaCodeReference(builder, true, true, parseAnnotations, true, parseDiamonds);
refOrType = myReferenceParser.parseJavaCodeReference(builder, true, true, parseAnnotations, true, true);
if (refOrType == null) {
error(builder, JavaErrorMessages.message("expected.identifier"));
newExpr.done(JavaElementType.NEW_EXPRESSION);
@@ -133,17 +133,6 @@ public class JavaParserUtil {
builder.putUserDataUnprotected(LANG_LEVEL_KEY, level);
}
// todo[r.sh] join all JDK 7 check clauses into single method (IDEA 11)
public static boolean areDiamondsSupported(final PsiBuilder builder) {
return getLanguageLevel(builder).isAtLeast(LanguageLevel.JDK_1_7);
}
public static boolean areMultiCatchSupported(final PsiBuilder builder) {
return getLanguageLevel(builder).isAtLeast(LanguageLevel.JDK_1_7);
}
public static boolean areTryWithResourcesSupported(final PsiBuilder builder) {
return getLanguageLevel(builder).isAtLeast(LanguageLevel.JDK_1_7);
}
public static boolean areTypeAnnotationsSupported(final PsiBuilder builder) {
return getLanguageLevel(builder).isAtLeast(LanguageLevel.JDK_1_8);
}
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2011 JetBrains s.r.o.
* Copyright 2000-2012 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -622,9 +622,8 @@ public class StatementParser {
final PsiBuilder.Marker statement = builder.mark();
builder.advanceLexer();
boolean hasResourceList = false;
if (areTryWithResourcesSupported(builder) && builder.getTokenType() == JavaTokenType.LPARENTH) {
hasResourceList = true;
final boolean hasResourceList = builder.getTokenType() == JavaTokenType.LPARENTH;
if (hasResourceList) {
myDeclarationParser.parseResourceList(builder);
}
@@ -667,7 +666,7 @@ public class StatementParser {
return false;
}
final PsiBuilder.Marker param = myDeclarationParser.parseParameter(builder, false, areMultiCatchSupported(builder));
final PsiBuilder.Marker param = myDeclarationParser.parseParameter(builder, false, true);
if (param == null) {
error(builder, JavaErrorMessages.message("expected.parameter"));
}
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2009 JetBrains s.r.o.
* Copyright 2000-2012 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -23,50 +23,51 @@ import com.intellij.psi.impl.source.tree.JavaDocElementType;
import com.intellij.psi.tree.IElementType;
import com.intellij.util.text.CharArrayUtil;
import gnu.trove.THashSet;
import org.jetbrains.annotations.NotNull;
import java.io.IOException;
import java.util.Set;
public class JavaLexer extends LexerBase {
private JavaLexer(boolean isAssertKeywordEnabled, boolean isJDK15) {
myTable = getTable(isAssertKeywordEnabled, isJDK15);
myFlexLexer = new _JavaLexer(isAssertKeywordEnabled, isJDK15);
}
private static final HashTable[] TABLES = new HashTable[]{
new HashTable(LanguageLevel.JDK_1_8),
new HashTable(LanguageLevel.JDK_1_5),
new HashTable(LanguageLevel.JDK_1_4),
new HashTable(LanguageLevel.JDK_1_3)
};
public JavaLexer(LanguageLevel level) {
this(level.hasAssertKeyword(), level.hasEnumKeywordAndAutoboxing());
private static HashTable getTable(final LanguageLevel level) {
for (HashTable table : TABLES) {
if (level.isAtLeast(table.myLevel)) {
return table;
}
}
throw new IllegalArgumentException("Unsupported level: " + level);
}
private static HashTable getTable(boolean isAssertKeywordEnabled, boolean isJDK15) {
return isAssertKeywordEnabled
? isJDK15 ? ourTableWithAssertAndJDK15 : ourTableWithAssert
: isJDK15 ? ourTableWithJDK15 : ourTableWithoutAssert;
}
private static HashTable getTable(LanguageLevel level) {
return getTable(level.hasAssertKeyword(), level.hasEnumKeywordAndAutoboxing());
}
public static boolean isKeyword(String id, LanguageLevel level) {
return getTable(level).contains(id);
}
private final _JavaLexer myFlexLexer;
private final HashTable myTable;
private CharSequence myBuffer;
private char[] myBufferArray;
private int myBufferIndex;
private int myBufferEndOffset;
private int myTokenEndOffset; // positioned after the last symbol of the current token
private IElementType myTokenType;
private _JavaLexer myFlexLexer;
//Positioned after the last symbol of the current token
private int myTokenEndOffset;
public JavaLexer(@NotNull final LanguageLevel level) {
myFlexLexer = new _JavaLexer(level);
myTable = getTable(level);
}
private static final class HashTable {
private static final int NUM_ENTRIES = 999;
private static final Logger LOG = Logger.getInstance("com.intellij.Lexer.JavaLexer");
private final LanguageLevel myLevel;
private final char[][] myTable = new char[NUM_ENTRIES][];
private final IElementType[] myKeywords = new IElementType[NUM_ENTRIES];
private final Set<String> myKeywordsInSet = new THashSet<String>();
@@ -111,12 +112,16 @@ public class JavaLexer extends LexerBase {
}
@SuppressWarnings({"HardCodedStringLiteral"})
private HashTable(boolean isAssertKeywordEnabled, boolean isJDK15) {
if (isAssertKeywordEnabled) {
private HashTable(final LanguageLevel level) {
myLevel = level;
if (level.isAtLeast(LanguageLevel.JDK_1_4)) {
add("assert", JavaTokenType.ASSERT_KEYWORD);
}
if (isJDK15) {
add("enum", JavaTokenType.ENUM_KEYWORD);
if (level.isAtLeast(LanguageLevel.JDK_1_5)) {
add("enum", JavaTokenType.ENUM_KEYWORD);
if (level.isAtLeast(LanguageLevel.JDK_1_8)) {
add("none", JavaTokenType.NONE_KEYWORD);
}
}
}
add("abstract", JavaTokenType.ABSTRACT_KEYWORD);
add("default", JavaTokenType.DEFAULT_KEYWORD);
@@ -172,12 +177,6 @@ public class JavaLexer extends LexerBase {
}
}
private final HashTable myTable;
private static final HashTable ourTableWithoutAssert = new HashTable(false, false);
private static final HashTable ourTableWithAssert = new HashTable(true, false);
private static final HashTable ourTableWithAssertAndJDK15 = new HashTable(true, true);
private static final HashTable ourTableWithJDK15 = new HashTable(false, true);
@Override
public final void start(CharSequence buffer, int startOffset, int endOffset, int initialState) {
myBuffer = buffer;
@@ -0,0 +1,212 @@
/* It's an automatically generated code. Do not modify it. */
package com.intellij.lexer;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.JavaTokenType;
import com.intellij.psi.impl.source.tree.JavaDocElementType;
import com.intellij.psi.tree.IElementType;
@SuppressWarnings({"ALL"})
%%
%{
private boolean myAssertKeyword;
private boolean myEnumKeyword;
private boolean myNoneKeyword;
public _JavaLexer(LanguageLevel level) {
this((java.io.Reader)null);
myAssertKeyword = level.isAtLeast(LanguageLevel.JDK_1_4);
myEnumKeyword = level.isAtLeast(LanguageLevel.JDK_1_5);
myNoneKeyword = level.isAtLeast(LanguageLevel.JDK_1_8);
}
public void goTo(int offset) {
zzCurrentPos = zzMarkedPos = zzStartRead = offset;
zzPushbackPos = 0;
zzAtEOF = offset < zzEndRead;
}
%}
%unicode
%class _JavaLexer
%implements FlexLexer
%function advance
%type IElementType
%eof{ return;
%eof}
WHITE_SPACE_CHAR=[\ \n\r\t\f]
IDENTIFIER=[:jletter:] [:jletterdigit:]*
C_STYLE_COMMENT=("/*"[^"*"]{COMMENT_TAIL})|"/*"
DOC_COMMENT="/*""*"+("/"|([^"/""*"]{COMMENT_TAIL}))?
COMMENT_TAIL=([^"*"]*("*"+[^"*""/"])?)*("*"+"/")?
END_OF_LINE_COMMENT="/""/"[^\r\n]*
DIGIT=[0-9]
DIGIT_OR_UNDERSCORE=[_0-9]
OCTAL_DIGIT=[0-7]
OCTAL_DIGIT_OR_UNDERSCORE=[_0-7]
HEX_DIGIT=[0-9A-Fa-f]
HEX_DIGIT_OR_UNDERSCORE=[_0-9A-Fa-f]
BINARY_DIGIT=[01]
BINARY_DIGIT_OR_UNDERSCORE=[_01]
DIGITS={DIGIT}|({DIGIT}{DIGIT_OR_UNDERSCORE}*{DIGIT})
HEX_DIGITS={HEX_DIGIT}|({HEX_DIGIT}{HEX_DIGIT_OR_UNDERSCORE}*{HEX_DIGIT})
BINARY_DIGITS={BINARY_DIGIT}|({BINARY_DIGIT}{BINARY_DIGIT_OR_UNDERSCORE}*{BINARY_DIGIT})
INTEGER_LITERAL={DECIMAL_INTEGER_LITERAL}|{OCTAL_INTEGER_LITERAL}|{HEX_INTEGER_LITERAL}|{BINARY_INTEGER_LITERAL}
DECIMAL_INTEGER_LITERAL=0|([1-9]({DIGIT_OR_UNDERSCORE}*{DIGIT})?)
OCTAL_INTEGER_LITERAL=0{OCTAL_DIGIT_OR_UNDERSCORE}*{OCTAL_DIGIT}
HEX_INTEGER_LITERAL=0[Xx]{HEX_DIGITS}?
BINARY_INTEGER_LITERAL=0[Bb]{BINARY_DIGITS}?
LONG_LITERAL={INTEGER_LITERAL}[Ll]
FLOAT_LITERAL=({FLOATING_POINT_LITERAL1}|{FLOATING_POINT_LITERAL2}|{FLOATING_POINT_LITERAL3}|{FLOATING_POINT_LITERAL4})[Ff]
DOUBLE_LITERAL=(({FLOATING_POINT_LITERAL1}|{FLOATING_POINT_LITERAL2}|{FLOATING_POINT_LITERAL3})[Dd]?)|({FLOATING_POINT_LITERAL4}[Dd])
FLOATING_POINT_LITERAL1={DIGITS}"."{DIGITS}?{EXPONENT_PART}?
FLOATING_POINT_LITERAL2="."{DIGITS}{EXPONENT_PART}?
FLOATING_POINT_LITERAL3={DIGITS}{EXPONENT_PART}
FLOATING_POINT_LITERAL4={DIGITS}
EXPONENT_PART=[Ee]["+""-"]?{DIGITS}?
HEX_FLOAT_LITERAL={HEX_SIGNIFICAND}{BINARY_EXPONENT}[Ff]
HEX_DOUBLE_LITERAL={HEX_SIGNIFICAND}{BINARY_EXPONENT}[Dd]?
BINARY_EXPONENT=[Pp][+-]?{DIGITS}
HEX_SIGNIFICAND={HEX_INTEGER_LITERAL}|{HEX_INTEGER_LITERAL}.|0[Xx]{HEX_DIGITS}?.{HEX_DIGITS}
CHARACTER_LITERAL="'"([^\\\'\r\n]|{ESCAPE_SEQUENCE})*("'"|\\)?
STRING_LITERAL=\"([^\\\"\r\n]|{ESCAPE_SEQUENCE})*(\"|\\)?
ESCAPE_SEQUENCE=\\[^\r\n]
%%
<YYINITIAL> {WHITE_SPACE_CHAR}+ { return JavaTokenType.WHITE_SPACE; }
<YYINITIAL> {C_STYLE_COMMENT} { return JavaTokenType.C_STYLE_COMMENT; }
<YYINITIAL> {END_OF_LINE_COMMENT} { return JavaTokenType.END_OF_LINE_COMMENT; }
<YYINITIAL> {DOC_COMMENT} { return JavaDocElementType.DOC_COMMENT; }
<YYINITIAL> {LONG_LITERAL} { return JavaTokenType.LONG_LITERAL; }
<YYINITIAL> {INTEGER_LITERAL} { return JavaTokenType.INTEGER_LITERAL; }
<YYINITIAL> {FLOAT_LITERAL} { return JavaTokenType.FLOAT_LITERAL; }
<YYINITIAL> {HEX_FLOAT_LITERAL} { return JavaTokenType.FLOAT_LITERAL; }
<YYINITIAL> {DOUBLE_LITERAL} { return JavaTokenType.DOUBLE_LITERAL; }
<YYINITIAL> {HEX_DOUBLE_LITERAL} { return JavaTokenType.DOUBLE_LITERAL; }
<YYINITIAL> {CHARACTER_LITERAL} { return JavaTokenType.CHARACTER_LITERAL; }
<YYINITIAL> {STRING_LITERAL} { return JavaTokenType.STRING_LITERAL; }
<YYINITIAL> "true" { return JavaTokenType.TRUE_KEYWORD; }
<YYINITIAL> "false" { return JavaTokenType.FALSE_KEYWORD; }
<YYINITIAL> "null" { return JavaTokenType.NULL_KEYWORD; }
<YYINITIAL> "abstract" { return JavaTokenType.ABSTRACT_KEYWORD; }
<YYINITIAL> "assert" { return myAssertKeyword ? JavaTokenType.ASSERT_KEYWORD : JavaTokenType.IDENTIFIER; }
<YYINITIAL> "boolean" { return JavaTokenType.BOOLEAN_KEYWORD; }
<YYINITIAL> "break" { return JavaTokenType.BREAK_KEYWORD; }
<YYINITIAL> "byte" { return JavaTokenType.BYTE_KEYWORD; }
<YYINITIAL> "case" { return JavaTokenType.CASE_KEYWORD; }
<YYINITIAL> "catch" { return JavaTokenType.CATCH_KEYWORD; }
<YYINITIAL> "char" { return JavaTokenType.CHAR_KEYWORD; }
<YYINITIAL> "class" { return JavaTokenType.CLASS_KEYWORD; }
<YYINITIAL> "const" { return JavaTokenType.CONST_KEYWORD; }
<YYINITIAL> "continue" { return JavaTokenType.CONTINUE_KEYWORD; }
<YYINITIAL> "default" { return JavaTokenType.DEFAULT_KEYWORD; }
<YYINITIAL> "do" { return JavaTokenType.DO_KEYWORD; }
<YYINITIAL> "double" { return JavaTokenType.DOUBLE_KEYWORD; }
<YYINITIAL> "else" { return JavaTokenType.ELSE_KEYWORD; }
<YYINITIAL> "enum" { return myEnumKeyword ? JavaTokenType.ENUM_KEYWORD : JavaTokenType.IDENTIFIER; }
<YYINITIAL> "extends" { return JavaTokenType.EXTENDS_KEYWORD; }
<YYINITIAL> "final" { return JavaTokenType.FINAL_KEYWORD; }
<YYINITIAL> "finally" { return JavaTokenType.FINALLY_KEYWORD; }
<YYINITIAL> "float" { return JavaTokenType.FLOAT_KEYWORD; }
<YYINITIAL> "for" { return JavaTokenType.FOR_KEYWORD; }
<YYINITIAL> "goto" { return JavaTokenType.GOTO_KEYWORD; }
<YYINITIAL> "if" { return JavaTokenType.IF_KEYWORD; }
<YYINITIAL> "implements" { return JavaTokenType.IMPLEMENTS_KEYWORD; }
<YYINITIAL> "import" { return JavaTokenType.IMPORT_KEYWORD; }
<YYINITIAL> "instanceof" { return JavaTokenType.INSTANCEOF_KEYWORD; }
<YYINITIAL> "int" { return JavaTokenType.INT_KEYWORD; }
<YYINITIAL> "interface" { return JavaTokenType.INTERFACE_KEYWORD; }
<YYINITIAL> "long" { return JavaTokenType.LONG_KEYWORD; }
<YYINITIAL> "native" { return JavaTokenType.NATIVE_KEYWORD; }
<YYINITIAL> "new" { return JavaTokenType.NEW_KEYWORD; }
<YYINITIAL> "package" { return JavaTokenType.PACKAGE_KEYWORD; }
<YYINITIAL> "private" { return JavaTokenType.PRIVATE_KEYWORD; }
<YYINITIAL> "public" { return JavaTokenType.PUBLIC_KEYWORD; }
<YYINITIAL> "short" { return JavaTokenType.SHORT_KEYWORD; }
<YYINITIAL> "super" { return JavaTokenType.SUPER_KEYWORD; }
<YYINITIAL> "switch" { return JavaTokenType.SWITCH_KEYWORD; }
<YYINITIAL> "synchronized" { return JavaTokenType.SYNCHRONIZED_KEYWORD; }
<YYINITIAL> "this" { return JavaTokenType.THIS_KEYWORD; }
<YYINITIAL> "throw" { return JavaTokenType.THROW_KEYWORD; }
<YYINITIAL> "protected" { return JavaTokenType.PROTECTED_KEYWORD; }
<YYINITIAL> "transient" { return JavaTokenType.TRANSIENT_KEYWORD; }
<YYINITIAL> "return" { return JavaTokenType.RETURN_KEYWORD; }
<YYINITIAL> "void" { return JavaTokenType.VOID_KEYWORD; }
<YYINITIAL> "static" { return JavaTokenType.STATIC_KEYWORD; }
<YYINITIAL> "strictfp" { return JavaTokenType.STRICTFP_KEYWORD; }
<YYINITIAL> "while" { return JavaTokenType.WHILE_KEYWORD; }
<YYINITIAL> "try" { return JavaTokenType.TRY_KEYWORD; }
<YYINITIAL> "volatile" { return JavaTokenType.VOLATILE_KEYWORD; }
<YYINITIAL> "throws" { return JavaTokenType.THROWS_KEYWORD; }
<YYINITIAL> "none" { return myNoneKeyword ? JavaTokenType.NONE_KEYWORD : JavaTokenType.IDENTIFIER; }
<YYINITIAL> {IDENTIFIER} { return JavaTokenType.IDENTIFIER; }
<YYINITIAL> "==" { return JavaTokenType.EQEQ; }
<YYINITIAL> "!=" { return JavaTokenType.NE; }
<YYINITIAL> "||" { return JavaTokenType.OROR; }
<YYINITIAL> "++" { return JavaTokenType.PLUSPLUS; }
<YYINITIAL> "--" { return JavaTokenType.MINUSMINUS; }
<YYINITIAL> "<" { return JavaTokenType.LT; }
<YYINITIAL> "<=" { return JavaTokenType.LE; }
<YYINITIAL> "<<=" { return JavaTokenType.LTLTEQ; }
<YYINITIAL> "<<" { return JavaTokenType.LTLT; }
<YYINITIAL> ">" { return JavaTokenType.GT; }
<YYINITIAL> "&" { return JavaTokenType.AND; }
<YYINITIAL> "&&" { return JavaTokenType.ANDAND; }
<YYINITIAL> "+=" { return JavaTokenType.PLUSEQ; }
<YYINITIAL> "-=" { return JavaTokenType.MINUSEQ; }
<YYINITIAL> "*=" { return JavaTokenType.ASTERISKEQ; }
<YYINITIAL> "/=" { return JavaTokenType.DIVEQ; }
<YYINITIAL> "&=" { return JavaTokenType.ANDEQ; }
<YYINITIAL> "|=" { return JavaTokenType.OREQ; }
<YYINITIAL> "^=" { return JavaTokenType.XOREQ; }
<YYINITIAL> "%=" { return JavaTokenType.PERCEQ; }
<YYINITIAL> "(" { return JavaTokenType.LPARENTH; }
<YYINITIAL> ")" { return JavaTokenType.RPARENTH; }
<YYINITIAL> "{" { return JavaTokenType.LBRACE; }
<YYINITIAL> "}" { return JavaTokenType.RBRACE; }
<YYINITIAL> "[" { return JavaTokenType.LBRACKET; }
<YYINITIAL> "]" { return JavaTokenType.RBRACKET; }
<YYINITIAL> ";" { return JavaTokenType.SEMICOLON; }
<YYINITIAL> "," { return JavaTokenType.COMMA; }
<YYINITIAL> "..." { return JavaTokenType.ELLIPSIS; }
<YYINITIAL> "." { return JavaTokenType.DOT; }
<YYINITIAL> "=" { return JavaTokenType.EQ; }
<YYINITIAL> "!" { return JavaTokenType.EXCL; }
<YYINITIAL> "~" { return JavaTokenType.TILDE; }
<YYINITIAL> "?" { return JavaTokenType.QUEST; }
<YYINITIAL> ":" { return JavaTokenType.COLON; }
<YYINITIAL> "+" { return JavaTokenType.PLUS; }
<YYINITIAL> "-" { return JavaTokenType.MINUS; }
<YYINITIAL> "*" { return JavaTokenType.ASTERISK; }
<YYINITIAL> "/" { return JavaTokenType.DIV; }
<YYINITIAL> "|" { return JavaTokenType.OR; }
<YYINITIAL> "^" { return JavaTokenType.XOR; }
<YYINITIAL> "%" { return JavaTokenType.PERC; }
<YYINITIAL> "@" { return JavaTokenType.AT; }
<YYINITIAL> "::" { return JavaTokenType.DOUBLE_COLON; }
<YYINITIAL> "->" { return JavaTokenType.ARROW; }
<YYINITIAL> . { return JavaTokenType.BAD_CHARACTER; }
File diff suppressed because it is too large Load Diff
@@ -41,7 +41,6 @@ annotation.target.PACKAGE=package
generics.holder.type=Type
generics.holder.method=Method
generics.are.not.supported=Generics are not supported at this language level
generics.inferred.type.for.type.parameter.is.not.within.its.bound.extend=Inferred type ''{2}'' for type parameter ''{0}'' is not within its bound; should extend ''{1}''
generics.inferred.type.for.type.parameter.is.not.within.its.bound.implement=Inferred type ''{2}'' for type parameter ''{0}'' is not within its bound; should implement ''{1}''
generics.type.parameter.is.not.within.its.bound.extend=Type parameter ''{0}'' is not within its bound; should extend ''{1}''
@@ -83,7 +82,6 @@ generics.type.arguments.on.raw.type=Type arguments given on a raw type
generics.type.arguments.on.raw.method=Type arguments given on a raw method
classes.extends.enum=Classes cannot directly extend 'java.lang.Enum'
unchecked.overriding.incompatible.return.type=Unchecked overriding: return type requires unchecked conversion. Found ''{0}'', required ''{1}''
unchecked.overriding=Unchecked overriding
local.enum=Enum must not be local
interface.expected=Interface expected here
@@ -237,10 +235,6 @@ static.member.accessed.via.instance.reference=Static member ''{0}.{1}'' accessed
unresolved.label=Undefined label: ''{0}''
deprecated.symbol=''{0}'' is deprecated
cannot.resolve.symbol=Cannot resolve symbol ''{0}''
static.imports.prior.15=Static imports are not supported at this language level
varargs.prior.15=Variable arity methods are not supported at this language level
foreach.prior.15=Foreach loops are not supported at this language level
annotations.prior.15=Annotations are not supported at this language level
class.is.already.defined.in.single.static.import=Class ''{0}'' is already defined in a single static import
class.is.ambiguous.in.single.static.import=Class ''{0}'' is ambiguous in a single static import
field.is.already.defined.in.single.static.import=Field ''{0}'' is already defined in a single static import
@@ -264,8 +258,6 @@ private.inner.interface.is.not.used=Private inner interface ''{0}'' is never use
type.parameter.is.not.used=Type parameter ''{0}'' is never used
local.class.is.not.used=Local class ''{0}'' is never used
class.is.not.used=Class ''{0}'' is never used
uidesigned.field.is.overwritten.by.generated.code=Field ''{0}'' is overwritten by generated code
uidesigner.bound.field.type.mismatch=Types of GUI component (''{0}'') and bound field (''{1}'') do not match
hexadecimal.numbers.must.contain.at.least.one.hexadecimal.digit=Hexadecimal numbers must contain at least one hexadecimal digit
binary.numbers.must.contain.at.least.one.hexadecimal.digit=Binary numbers must contain at least one binary digit
@@ -322,7 +314,6 @@ expected.resource=Resource definition expected
expected.type.parameter=Type parameter expected
expected.comma=',' expected
expected.comma.or.rparen=',' or ')' expected
unexpected.tokens.beyond.the.end.of.expression=Unexpected token(s) beyond the end of expression
expected.colon=':' expected
expected.type=Type expected
expected.lbracket='[' expected
@@ -352,3 +343,13 @@ cannot.resolve.package=Cannot resolve package {0}
override.not.allowed.in.interfaces=@Override is not allowed when implementing interface method
wildcard.not.expected=Unexpected wildcard
bound.not.expected=Unexpected bound
feature.generics=Generics
feature.annotations=Annotations
feature.static.imports=Static imports
feature.for.each=For-each loops
feature.varargs=Variable arity methods
feature.diamond.types=Diamond types
feature.try.with.resources=Try-with-resources
feature.multi.catch=Multi-catches
insufficient.language.level={0} are not supported at this language level