Parser invalid error advancing for postfix type parameters list #KT-30835 Fixed

This commit is contained in:
Igor Yakovlev
2019-04-05 15:44:10 +03:00
parent 0e716fd528
commit da4d8a8c90
4 changed files with 10 additions and 5 deletions
@@ -1576,10 +1576,10 @@ public class KotlinParsing extends AbstractKotlinParsing {
PsiBuilder.Marker error = mark();
parseTypeParameterList(TokenSet.orSet(TokenSet.create(LPAR), valueParametersFollow));
if (typeParameterListOccurred) {
int offset = myBuilder.getCurrentOffset();
int finishIndex = myBuilder.rawTokenIndex();
error.rollbackTo();
error = mark();
advance(offset - myBuilder.getCurrentOffset());
advance(finishIndex - myBuilder.rawTokenIndex());
error.error("Only one type parameter list is allowed for a function");
}
else {
+2 -3
View File
@@ -370,7 +370,6 @@ KtFile: Functions_ERR.kt
PsiErrorElement:Only one type parameter list is allowed for a function
PsiElement(LT)('<')
PsiElement(IDENTIFIER)('foo')
VALUE_PARAMETER_LIST
PsiElement(LPAR)('(')
PsiElement(RPAR)(')')
PsiErrorElement:Expecting '('
<empty list>
PsiElement(RPAR)(')')
@@ -0,0 +1 @@
fun <T> foo<error><SOME_TYPE></error> () {}
@@ -126,6 +126,11 @@ public class PsiCheckerTestGenerated extends AbstractPsiCheckerTest {
runTest("idea/testData/checker/ForRangeConventions.kt");
}
@TestMetadata("FunctionOnlyOneTypeParametersList.kt")
public void testFunctionOnlyOneTypeParametersList() throws Exception {
runTest("idea/testData/checker/FunctionOnlyOneTypeParametersList.kt");
}
@TestMetadata("FunctionReturnTypes.kt")
public void testFunctionReturnTypes() throws Exception {
runTest("idea/testData/checker/FunctionReturnTypes.kt");