mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-06 03:21:12 +07:00
Java parser: parse var.Foo like types: IDEA-245625
GitOrigin-RevId: 5578e851b72cbb0040597563681d59eaec4b3793
This commit is contained in:
committed by
intellij-monorepo-bot
parent
70bd695866
commit
587d13ea9e
@@ -90,6 +90,7 @@ public class ReferenceParser {
|
||||
IElementType tokenType = builder.getTokenType();
|
||||
if (tokenType == JavaTokenType.IDENTIFIER &&
|
||||
isSet(flags, VAR_TYPE) &&
|
||||
builder.lookAhead(1) != JavaTokenType.DOT &&
|
||||
PsiKeyword.VAR.equals(builder.getTokenText()) &&
|
||||
getLanguageLevel(builder).isAtLeast(LanguageLevel.JDK_10)) {
|
||||
builder.remapCurrentToken(tokenType = JavaTokenType.VAR_KEYWORD);
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
class Test {
|
||||
{
|
||||
var.Foo x = f();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
PsiJavaFile:VarPackage.java
|
||||
PsiImportList
|
||||
<empty list>
|
||||
PsiClass:Test
|
||||
PsiModifierList:
|
||||
<empty list>
|
||||
PsiKeyword:class('class')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiIdentifier:Test('Test')
|
||||
PsiTypeParameterList
|
||||
<empty list>
|
||||
PsiReferenceList
|
||||
<empty list>
|
||||
PsiReferenceList
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:LBRACE('{')
|
||||
PsiWhiteSpace('\n ')
|
||||
PsiClassInitializer
|
||||
PsiModifierList:
|
||||
<empty list>
|
||||
PsiCodeBlock
|
||||
PsiJavaToken:LBRACE('{')
|
||||
PsiWhiteSpace('\n ')
|
||||
PsiDeclarationStatement
|
||||
PsiLocalVariable:x
|
||||
PsiModifierList:
|
||||
<empty list>
|
||||
PsiTypeElement:var.Foo
|
||||
PsiJavaCodeReferenceElement:var.Foo
|
||||
PsiJavaCodeReferenceElement:var
|
||||
PsiIdentifier:var('var')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiJavaToken:DOT('.')
|
||||
PsiIdentifier:Foo('Foo')
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiWhiteSpace(' ')
|
||||
PsiIdentifier:x('x')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiJavaToken:EQ('=')
|
||||
PsiWhiteSpace(' ')
|
||||
PsiMethodCallExpression:f()
|
||||
PsiReferenceExpression:f
|
||||
PsiReferenceParameterList
|
||||
<empty list>
|
||||
PsiIdentifier:f('f')
|
||||
PsiExpressionList
|
||||
PsiJavaToken:LPARENTH('(')
|
||||
PsiJavaToken:RPARENTH(')')
|
||||
PsiJavaToken:SEMICOLON(';')
|
||||
PsiWhiteSpace('\n ')
|
||||
PsiJavaToken:RBRACE('}')
|
||||
PsiWhiteSpace('\n')
|
||||
PsiJavaToken:RBRACE('}')
|
||||
@@ -0,0 +1,7 @@
|
||||
import java.util.*;
|
||||
class Test {
|
||||
void test(var.X foo) {
|
||||
var.X temp = foo;
|
||||
test(temp);
|
||||
}
|
||||
}
|
||||
@@ -26,4 +26,5 @@ public class CommonJavaParsingTest extends JavaParsingTestCase{
|
||||
public void testRefParamsAfterError() { doTest(true); }
|
||||
public void testUnclosedComment() { doTest(true); }
|
||||
public void testIncompleteFor() { doTest(true); }
|
||||
public void testVarPackage() { doTest(true); }
|
||||
}
|
||||
@@ -159,15 +159,8 @@ public class IntroduceVariableTest extends LightJavaCodeInsightTestCase {
|
||||
doTestWithVarType(new MockIntroduceVariableHandler("temp", true, false, false, "java.util.ArrayList<java.lang.String>"));
|
||||
}
|
||||
|
||||
public void testInvalidTypeContainingVarJava11() {
|
||||
try {
|
||||
doTest("temp", true, false, false, "var.X");
|
||||
}
|
||||
catch (Exception e) {
|
||||
assertEquals("Error message:Cannot perform refactoring.\nUnknown expression type.", e.getMessage());
|
||||
return;
|
||||
}
|
||||
fail("Should not be able to perform refactoring");
|
||||
public void testTypeContainingVarJava11() {
|
||||
doTest("temp", true, false, false, "var.X");
|
||||
}
|
||||
|
||||
public void testDeclareTernary() { doTest("temp", true, false, false, JAVA_LANG_STRING); }
|
||||
|
||||
Reference in New Issue
Block a user