Removed special support for parsing annotations for multi-declaration in for

This commit is contained in:
Valentin Kipyatkov
2015-10-12 19:50:57 +03:00
parent 98dc8f234e
commit d84020b1f3
5 changed files with 2 additions and 136 deletions
@@ -1342,7 +1342,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
PsiBuilder.Marker parameter = mark();
if (!at(IN_KEYWORD)) {
myJetParsing.parseModifierListWithLookForStopAt(TokenSet.create(IDENTIFIER, LPAR), TokenSet.create(IN_KEYWORD, RPAR, COLON));
myJetParsing.parseModifierList(ONLY_ESCAPED_REGULAR_ANNOTATIONS, TokenSet.create(IN_KEYWORD, RPAR, COLON));
}
if (at(VAL_KEYWORD) || at(VAR_KEYWORD)) advance(); // VAL_KEYWORD or VAR_KEYWORD
@@ -2084,38 +2084,6 @@ public class JetParsing extends AbstractJetParsing {
return atGT;
}
public void parseModifierListWithLookForStopAt(TokenSet lookFor, TokenSet stopAt) {
int lastId = matchTokenStreamPredicate(new LastBefore(new AtSet(lookFor), new AnnotationTargetStop(stopAt, ANNOTATION_TARGETS), false));
createTruncatedBuilder(lastId).parseModifierList(ONLY_ESCAPED_REGULAR_ANNOTATIONS, null);
}
private class AnnotationTargetStop extends AbstractTokenStreamPredicate {
private final TokenSet stopAt;
private final TokenSet annotationTargets;
private IElementType previousToken;
private IElementType tokenBeforePrevious;
public AnnotationTargetStop(TokenSet stopAt, TokenSet annotationTargets) {
this.stopAt = stopAt;
this.annotationTargets = annotationTargets;
}
@Override
public boolean matching(boolean topLevel) {
if (atSet(stopAt)) return true;
if (at(COLON) && !(tokenBeforePrevious == AT && (previousToken == IDENTIFIER || annotationTargets.contains(previousToken)))) {
return true;
}
tokenBeforePrevious = previousToken;
previousToken = tt();
return false;
}
}
/*
* functionType
* : "(" (parameter | modifiers type){","}? ")" "->" type?