mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-21 05:51:25 +07:00
[java, parser] more specific error in argument list IDEA-256731
GitOrigin-RevId: 66c114bf41f27833279eca995c831af0d43628bb
This commit is contained in:
committed by
intellij-monorepo-bot
parent
0478550d2a
commit
ed25641608
@@ -948,7 +948,15 @@ public class ExpressionParser {
|
||||
}
|
||||
}
|
||||
|
||||
final boolean closed = expectOrError(builder, JavaTokenType.RPARENTH, "expected.rparen");
|
||||
boolean closed = true;
|
||||
if (!expect(builder, JavaTokenType.RPARENTH)) {
|
||||
if (first) {
|
||||
error(builder, JavaPsiBundle.message("expected.rparen"));
|
||||
} else {
|
||||
error(builder, JavaPsiBundle.message("expected.comma.or.rparen"));
|
||||
}
|
||||
closed = false;
|
||||
}
|
||||
|
||||
list.done(JavaElementType.EXPRESSION_LIST);
|
||||
if (!closed) {
|
||||
|
||||
@@ -7,7 +7,7 @@ class Test {
|
||||
try {
|
||||
return cells.collect(Collectors.toMap(c -> c, null));
|
||||
} finally {
|
||||
System.out.println(<error descr="')' expected"><error descr="Expression expected">;</error></error><error descr="Unexpected token">)</error>;
|
||||
System.out.println(<error descr="',' or ')' expected"><error descr="Expression expected">;</error></error><error descr="Unexpected token">)</error>;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ PsiJavaFile:ExprList2.java
|
||||
PsiJavaToken:LPARENTH('(')
|
||||
PsiLiteralExpression:1
|
||||
PsiJavaToken:INTEGER_LITERAL('1')
|
||||
PsiErrorElement:')' expected
|
||||
PsiErrorElement:',' or ')' expected
|
||||
<empty list>
|
||||
PsiWhiteSpace('\n ')
|
||||
PsiErrorElement:';' expected
|
||||
|
||||
@@ -37,7 +37,7 @@ PsiJavaFile:ExprList3.java
|
||||
<empty list>
|
||||
PsiExpression(empty)
|
||||
<empty list>
|
||||
PsiErrorElement:')' expected
|
||||
PsiErrorElement:',' or ')' expected
|
||||
<empty list>
|
||||
PsiWhiteSpace('\n ')
|
||||
PsiErrorElement:';' expected
|
||||
|
||||
@@ -8,5 +8,5 @@ PsiJavaFile:ExprList2.java
|
||||
PsiJavaToken:LPARENTH('(')
|
||||
PsiLiteralExpression:1
|
||||
PsiJavaToken:INTEGER_LITERAL('1')
|
||||
PsiErrorElement:')' expected
|
||||
PsiErrorElement:',' or ')' expected
|
||||
<empty list>
|
||||
@@ -13,5 +13,5 @@ PsiJavaFile:ExprList3.java
|
||||
<empty list>
|
||||
PsiExpression(empty)
|
||||
<empty list>
|
||||
PsiErrorElement:')' expected
|
||||
PsiErrorElement:',' or ')' expected
|
||||
<empty list>
|
||||
@@ -0,0 +1,23 @@
|
||||
PsiJavaFile:New19.java
|
||||
PsiNewExpression:new A(f
|
||||
PsiKeyword:new('new')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaCodeReferenceElement:A
|
||||
PsiIdentifier:A('A')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiExpressionList
|
||||
PsiJavaToken:LPARENTH('(')
|
||||
PsiReferenceExpression:f
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiIdentifier:f('f')
|
||||
PsiErrorElement:',' or ')' expected
|
||||
<empty list>
|
||||
PsiErrorElement:Unparsed tokens
|
||||
PsiJavaToken:SEMICOLON(';')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiIdentifier:o('o')
|
||||
PsiJavaToken:RPARENTH(')')
|
||||
@@ -72,6 +72,7 @@ public class ExpressionParserTest extends JavaParsingTestCase {
|
||||
public void testNew16() { doParserTest("new C<>()"); }
|
||||
public void testNew17() { doParserTest("new Map<String, >()"); }
|
||||
public void testNew18() { doParserTest("new int @A [2] @B"); }
|
||||
public void testNew19() { doParserTest("new A(f; o)"); }
|
||||
|
||||
public void testExprList0() { doParserTest("f(1,2)"); }
|
||||
public void testExprList1() { doParserTest("f("); }
|
||||
|
||||
@@ -31,7 +31,7 @@ public class SuspiciousIndentAfterControlStatement {
|
||||
|
||||
public int get(Class baseClass) {
|
||||
// "interesting" parse tree.
|
||||
if (baseClass.equals(<error descr="')' expected"><error descr="Expression expected">.</error></error><error descr="')' expected"><error descr="Identifier expected">c</error></error>lass<error descr="Identifier expected"><error descr="Unexpected token">)</error></error><error descr="Unexpected token">)</error> {
|
||||
if (baseClass.equals(<error descr="',' or ')' expected"><error descr="Expression expected">.</error></error><error descr="')' expected"><error descr="Identifier expected">c</error></error>lass<error descr="Identifier expected"><error descr="Unexpected token">)</error></error><error descr="Unexpected token">)</error> {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
|
||||
@@ -22,7 +22,7 @@ public class ConstantOnRHS
|
||||
class C {
|
||||
void t() {
|
||||
<error descr="Cannot resolve method 'method' in 'C'">method</error>(String.format("", <error descr="Expression expected">StringBuffer</error>)<error descr="',' or ')' expected">"</error>" +<EOLError descr="Expression expected"></EOLError>
|
||||
<<error descr="')' expected"><error descr="Expression expected">/</error></error><error descr="Cannot resolve symbol 'plugin'">plugin</error>><error descr="Illegal line end in string literal">" +</error>
|
||||
<<error descr="',' or ')' expected"><error descr="Expression expected">/</error></error><error descr="Cannot resolve symbol 'plugin'">plugin</error>><error descr="Illegal line end in string literal">" +</error>
|
||||
<error descr="Not a statement">""</error><error descr="Unexpected token">)</error>;
|
||||
}
|
||||
}
|
||||
@@ -18,5 +18,5 @@ public class CachedNumberConstructorCallInspectionTest extends LightJavaInspecti
|
||||
public void testSimple() { doStatementTest("new /*Number constructor call with primitive argument*/Integer/**/(1);"); }
|
||||
public void testStringArgument() { doStatementTest("new /*Number constructor call with primitive argument*/Byte/**/(\"1\");"); }
|
||||
public void testNoWarn() { doStatementTest("Long.valueOf(1L);"); }
|
||||
public void testNoAssertionError() { doStatementTest("Integer i = new Integer(new String/*!'(' or '[' expected*//*!')' expected*/{/*!*//*!*/}/*!';' expected*//*!Unexpected token*/)/*!*//*!*/;"); }
|
||||
public void testNoAssertionError() { doStatementTest("Integer i = new Integer(new String/*!'(' or '[' expected*//*!',' or ')' expected*/{/*!*//*!*/}/*!';' expected*//*!Unexpected token*/)/*!*//*!*/;"); }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user