Parse local interfaces in expression position
This commit is contained in:
@@ -669,7 +669,7 @@ public class KotlinExpressionParsing extends AbstractKotlinParsing {
|
|||||||
else if (at(DO_KEYWORD)) {
|
else if (at(DO_KEYWORD)) {
|
||||||
parseDoWhile();
|
parseDoWhile();
|
||||||
}
|
}
|
||||||
else if (atSet(CLASS_KEYWORD, FUN_KEYWORD, VAL_KEYWORD,
|
else if (atSet(CLASS_KEYWORD, INTERFACE_KEYWORD, FUN_KEYWORD, VAL_KEYWORD,
|
||||||
VAR_KEYWORD, TYPE_ALIAS_KEYWORD)) {
|
VAR_KEYWORD, TYPE_ALIAS_KEYWORD)) {
|
||||||
parseLocalDeclaration();
|
parseLocalDeclaration();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
val p = 1 < interface I {
|
||||||
|
fun f() {}
|
||||||
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
JetFile: InterfaceInExpressionPosition.kt
|
||||||
|
PACKAGE_DIRECTIVE
|
||||||
|
<empty list>
|
||||||
|
IMPORT_LIST
|
||||||
|
<empty list>
|
||||||
|
PROPERTY
|
||||||
|
PsiElement(val)('val')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PsiElement(IDENTIFIER)('p')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PsiElement(EQ)('=')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
BINARY_EXPRESSION
|
||||||
|
INTEGER_CONSTANT
|
||||||
|
PsiElement(INTEGER_LITERAL)('1')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
OPERATION_REFERENCE
|
||||||
|
PsiElement(LT)('<')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
CLASS
|
||||||
|
PsiElement(interface)('interface')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PsiElement(IDENTIFIER)('I')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
CLASS_BODY
|
||||||
|
PsiElement(LBRACE)('{')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
FUN
|
||||||
|
PsiElement(fun)('fun')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PsiElement(IDENTIFIER)('f')
|
||||||
|
VALUE_PARAMETER_LIST
|
||||||
|
PsiElement(LPAR)('(')
|
||||||
|
PsiElement(RPAR)(')')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
BLOCK
|
||||||
|
PsiElement(LBRACE)('{')
|
||||||
|
PsiElement(RBRACE)('}')
|
||||||
|
PsiWhiteSpace('\n')
|
||||||
|
PsiElement(RBRACE)('}')
|
||||||
@@ -2160,6 +2160,12 @@ public class ParsingTestGenerated extends AbstractParsingTest {
|
|||||||
doParsingTest(fileName);
|
doParsingTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("InterfaceInExpressionPosition.kt")
|
||||||
|
public void testInterfaceInExpressionPosition() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/psi/recovery/InterfaceInExpressionPosition.kt");
|
||||||
|
doParsingTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("InvalidCharAfterPropertyName.kt")
|
@TestMetadata("InvalidCharAfterPropertyName.kt")
|
||||||
public void testInvalidCharAfterPropertyName() throws Exception {
|
public void testInvalidCharAfterPropertyName() throws Exception {
|
||||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/psi/recovery/InvalidCharAfterPropertyName.kt");
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/psi/recovery/InvalidCharAfterPropertyName.kt");
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
val p = 1 < <error>interface A {
|
||||||
|
fun f() {
|
||||||
|
f()
|
||||||
|
}
|
||||||
|
}</error>
|
||||||
@@ -454,6 +454,12 @@ public class PsiCheckerTestGenerated extends AbstractPsiCheckerTest {
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("InterfaceDeclarationAsExpression.kt")
|
||||||
|
public void testInterfaceDeclarationAsExpression() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/checker/regression/InterfaceDeclarationAsExpression.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("javaStyleClassLiteralInAnnotationArguments.kt")
|
@TestMetadata("javaStyleClassLiteralInAnnotationArguments.kt")
|
||||||
public void testJavaStyleClassLiteralInAnnotationArguments() throws Exception {
|
public void testJavaStyleClassLiteralInAnnotationArguments() throws Exception {
|
||||||
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/checker/regression/javaStyleClassLiteralInAnnotationArguments.kt");
|
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/checker/regression/javaStyleClassLiteralInAnnotationArguments.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user