Removing grammar/parsing support for complext patterns
#KT-2359 In progress
This commit is contained in:
@@ -129,7 +129,7 @@ public interface JetNodeTypes {
|
|||||||
JetNodeType SUPER_EXPRESSION = new JetNodeType("SUPER_EXPRESSION", JetSuperExpression.class);
|
JetNodeType SUPER_EXPRESSION = new JetNodeType("SUPER_EXPRESSION", JetSuperExpression.class);
|
||||||
JetNodeType BINARY_EXPRESSION = new JetNodeType("BINARY_EXPRESSION", JetBinaryExpression.class);
|
JetNodeType BINARY_EXPRESSION = new JetNodeType("BINARY_EXPRESSION", JetBinaryExpression.class);
|
||||||
JetNodeType BINARY_WITH_TYPE = new JetNodeType("BINARY_WITH_TYPE", JetBinaryExpressionWithTypeRHS.class);
|
JetNodeType BINARY_WITH_TYPE = new JetNodeType("BINARY_WITH_TYPE", JetBinaryExpressionWithTypeRHS.class);
|
||||||
JetNodeType BINARY_WITH_PATTERN = new JetNodeType("BINARY_WITH_PATTERN", JetIsExpression.class); // TODO:
|
JetNodeType IS_EXPRESSION = new JetNodeType("IS_EXPRESSION", JetIsExpression.class); // TODO:
|
||||||
JetNodeType PREFIX_EXPRESSION = new JetNodeType("PREFIX_EXPRESSION", JetPrefixExpression.class);
|
JetNodeType PREFIX_EXPRESSION = new JetNodeType("PREFIX_EXPRESSION", JetPrefixExpression.class);
|
||||||
JetNodeType POSTFIX_EXPRESSION = new JetNodeType("POSTFIX_EXPRESSION", JetPostfixExpression.class);
|
JetNodeType POSTFIX_EXPRESSION = new JetNodeType("POSTFIX_EXPRESSION", JetPostfixExpression.class);
|
||||||
JetNodeType CALL_EXPRESSION = new JetNodeType("CALL_EXPRESSION", JetCallExpression.class);
|
JetNodeType CALL_EXPRESSION = new JetNodeType("CALL_EXPRESSION", JetCallExpression.class);
|
||||||
@@ -143,16 +143,6 @@ public interface JetNodeTypes {
|
|||||||
JetNodeType OBJECT_LITERAL = new JetNodeType("OBJECT_LITERAL", JetObjectLiteralExpression.class);
|
JetNodeType OBJECT_LITERAL = new JetNodeType("OBJECT_LITERAL", JetObjectLiteralExpression.class);
|
||||||
JetNodeType ROOT_NAMESPACE = new JetNodeType("ROOT_NAMESPACE", JetRootNamespaceExpression.class);
|
JetNodeType ROOT_NAMESPACE = new JetNodeType("ROOT_NAMESPACE", JetRootNamespaceExpression.class);
|
||||||
|
|
||||||
JetNodeType EXPRESSION_PATTERN = new JetNodeType("EXPRESSION_PATTERN", JetExpressionPattern.class);
|
|
||||||
JetNodeType TYPE_PATTERN = new JetNodeType("TYPE_PATTERN", JetTypePattern.class);
|
|
||||||
JetNodeType WILDCARD_PATTERN = new JetNodeType("WILDCARD_PATTERN", JetWildcardPattern.class);
|
|
||||||
JetNodeType BINDING_PATTERN = new JetNodeType("BINDING_PATTERN", JetBindingPattern.class);
|
|
||||||
JetNodeType TUPLE_PATTERN = new JetNodeType("TUPLE_PATTERN", JetTuplePattern.class);
|
|
||||||
JetNodeType TUPLE_PATTERN_ENTRY = new JetNodeType("TUPLE_PATTERN_ENTRY", JetTuplePatternEntry.class);
|
|
||||||
JetNodeType DECOMPOSER_PATTERN = new JetNodeType("DECOMPOSER_PATTERN", JetDecomposerPattern.class);
|
|
||||||
JetNodeType DECOMPOSER_ARGUMENT_LIST = new JetNodeType("DECOMPOSER_ARGUMENT_LIST", JetTuplePattern.class);
|
|
||||||
JetNodeType DECOMPOSER_ARGUMENT = TUPLE_PATTERN_ENTRY;
|
|
||||||
|
|
||||||
JetNodeType WHEN = new JetNodeType("WHEN", JetWhenExpression.class);
|
JetNodeType WHEN = new JetNodeType("WHEN", JetWhenExpression.class);
|
||||||
JetNodeType WHEN_ENTRY = new JetNodeType("WHEN_ENTRY", JetWhenEntry.class);
|
JetNodeType WHEN_ENTRY = new JetNodeType("WHEN_ENTRY", JetWhenEntry.class);
|
||||||
|
|
||||||
|
|||||||
@@ -162,9 +162,8 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
@Override
|
@Override
|
||||||
public JetNodeType parseRightHandSide(IElementType operation, JetExpressionParsing parser) {
|
public JetNodeType parseRightHandSide(IElementType operation, JetExpressionParsing parser) {
|
||||||
if (operation == IS_KEYWORD || operation == NOT_IS) {
|
if (operation == IS_KEYWORD || operation == NOT_IS) {
|
||||||
parser.parsePattern();
|
parser.myJetParsing.parseTypeRef();
|
||||||
|
return IS_EXPRESSION;
|
||||||
return BINARY_WITH_PATTERN;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return super.parseRightHandSide(operation, parser);
|
return super.parseRightHandSide(operation, parser);
|
||||||
@@ -850,186 +849,25 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
advance(); // IS_KEYWORD or NOT_IS
|
advance(); // IS_KEYWORD or NOT_IS
|
||||||
|
|
||||||
if (atSet(WHEN_CONDITION_RECOVERY_SET_WITH_ARROW)) {
|
if (atSet(WHEN_CONDITION_RECOVERY_SET_WITH_ARROW)) {
|
||||||
error("Expecting a type or a decomposer pattern");
|
error("Expecting a type");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
parsePattern();
|
myJetParsing.parseTypeRef();
|
||||||
}
|
}
|
||||||
condition.done(WHEN_CONDITION_IS_PATTERN);
|
condition.done(WHEN_CONDITION_IS_PATTERN);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
PsiBuilder.Marker expressionPattern = mark();
|
|
||||||
if (atSet(WHEN_CONDITION_RECOVERY_SET_WITH_ARROW)) {
|
if (atSet(WHEN_CONDITION_RECOVERY_SET_WITH_ARROW)) {
|
||||||
error("Expecting an expression, is-condition or in-condition");
|
error("Expecting an expression, is-condition or in-condition");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
parseExpression();
|
parseExpression();
|
||||||
}
|
}
|
||||||
expressionPattern.done(EXPRESSION_PATTERN);
|
|
||||||
condition.done(WHEN_CONDITION_EXPRESSION);
|
condition.done(WHEN_CONDITION_EXPRESSION);
|
||||||
}
|
}
|
||||||
myBuilder.restoreNewlinesState();
|
myBuilder.restoreNewlinesState();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* pattern
|
|
||||||
* : attributes pattern
|
|
||||||
* : type // '[a] T' is a type-pattern 'T' with an attribute '[a]', not a type-pattern '[a] T'
|
|
||||||
* // this makes sense because is-check may be different for a type with attributes
|
|
||||||
* : tuplePattern
|
|
||||||
* : decomposerPattern
|
|
||||||
* : constantPattern
|
|
||||||
* : bindingPattern
|
|
||||||
* : "*" // wildcard pattern
|
|
||||||
* ;
|
|
||||||
*/
|
|
||||||
private void parsePattern() {
|
|
||||||
PsiBuilder.Marker pattern = mark();
|
|
||||||
|
|
||||||
myJetParsing.parseAnnotations(false);
|
|
||||||
|
|
||||||
if (at(PACKAGE_KEYWORD) || at(IDENTIFIER) || at(FUN_KEYWORD) || at(THIS_KEYWORD)) {
|
|
||||||
PsiBuilder.Marker rollbackMarker = mark();
|
|
||||||
parseBinaryExpression(Precedence.ELVIS);
|
|
||||||
if (at(HASH)) {
|
|
||||||
rollbackMarker.drop();
|
|
||||||
PsiBuilder.Marker list = mark();
|
|
||||||
parseTuplePattern(DECOMPOSER_ARGUMENT);
|
|
||||||
list.done(DECOMPOSER_ARGUMENT_LIST);
|
|
||||||
pattern.done(DECOMPOSER_PATTERN);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
int expressionEndOffset = myBuilder.getCurrentOffset();
|
|
||||||
rollbackMarker.rollbackTo();
|
|
||||||
rollbackMarker = mark();
|
|
||||||
|
|
||||||
myJetParsing.parseTypeRef();
|
|
||||||
// if (at(AT)) {
|
|
||||||
// errorAndAdvance("'@' is allowed only after a decomposer element, not after a type");
|
|
||||||
// }
|
|
||||||
if (myBuilder.getCurrentOffset() < expressionEndOffset) {
|
|
||||||
rollbackMarker.rollbackTo();
|
|
||||||
parseBinaryExpression(Precedence.ELVIS);
|
|
||||||
pattern.done(DECOMPOSER_PATTERN);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
rollbackMarker.drop();
|
|
||||||
pattern.done(TYPE_PATTERN);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (at(HASH)) {
|
|
||||||
parseTuplePattern(TUPLE_PATTERN_ENTRY);
|
|
||||||
pattern.done(TUPLE_PATTERN);
|
|
||||||
}
|
|
||||||
else if (at(MUL)) {
|
|
||||||
advance(); // MUL
|
|
||||||
pattern.done(WILDCARD_PATTERN);
|
|
||||||
}
|
|
||||||
else if (at(VAL_KEYWORD)) {
|
|
||||||
parseBindingPattern();
|
|
||||||
pattern.done(BINDING_PATTERN);
|
|
||||||
}
|
|
||||||
else if (at(OPEN_QUOTE)) {
|
|
||||||
parseStringTemplate();
|
|
||||||
pattern.done(EXPRESSION_PATTERN);
|
|
||||||
}
|
|
||||||
else if (parseLiteralConstant()) {
|
|
||||||
pattern.done(EXPRESSION_PATTERN);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
errorUntil("Pattern expected", TokenSet.create(RBRACE, ARROW));
|
|
||||||
pattern.drop();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* tuplePattern
|
|
||||||
* : "#" "(" ((SimpleName "=")? pattern){","}? ")"
|
|
||||||
* ;
|
|
||||||
*/
|
|
||||||
private void parseTuplePattern(JetNodeType entryType) {
|
|
||||||
|
|
||||||
myBuilder.disableNewlines();
|
|
||||||
expect(HASH, "Expecting a tuple pattern of the form '#(...)'", getDecomposerExpressionFollow());
|
|
||||||
expect(LPAR, "Expecting a tuple pattern of the form '#(...)'", getDecomposerExpressionFollow());
|
|
||||||
|
|
||||||
if (!at(RPAR)) {
|
|
||||||
while (true) {
|
|
||||||
while (at(COMMA)) errorAndAdvance("Expecting a pattern");
|
|
||||||
if (at(RPAR)) {
|
|
||||||
error("Expecting a pattern");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
PsiBuilder.Marker entry = mark();
|
|
||||||
if (at(IDENTIFIER) && lookahead(1) == EQ) {
|
|
||||||
advance(); // IDENTIFIER
|
|
||||||
advance(); // EQ
|
|
||||||
}
|
|
||||||
parsePattern();
|
|
||||||
entry.done(entryType);
|
|
||||||
if (!at(COMMA)) break;
|
|
||||||
|
|
||||||
advance(); // COMMA
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
expect(RPAR, "Expecting ')'");
|
|
||||||
myBuilder.restoreNewlinesState();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* bindingPattern
|
|
||||||
* : "val" SimpleName binding?
|
|
||||||
* ;
|
|
||||||
*
|
|
||||||
* binding
|
|
||||||
* : "is" pattern
|
|
||||||
* : "!is" pattern
|
|
||||||
* : "in" element
|
|
||||||
* : "!in" element
|
|
||||||
* : ":" type
|
|
||||||
* ;
|
|
||||||
*/
|
|
||||||
private void parseBindingPattern() {
|
|
||||||
assert _at(VAL_KEYWORD);
|
|
||||||
|
|
||||||
PsiBuilder.Marker declaration = mark();
|
|
||||||
|
|
||||||
advance(); // VAL_KEYWORD
|
|
||||||
|
|
||||||
expect(IDENTIFIER, "Expecting an identifier");
|
|
||||||
|
|
||||||
if (at(COLON)) {
|
|
||||||
advance(); // EQ
|
|
||||||
|
|
||||||
myJetParsing.parseTypeRef();
|
|
||||||
declaration.done(PROPERTY);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
declaration.done(PROPERTY);
|
|
||||||
PsiBuilder.Marker subCondition = mark();
|
|
||||||
if (at(IS_KEYWORD) || at(NOT_IS)) {
|
|
||||||
|
|
||||||
advance(); // IS_KEYWORD or NOT_IS
|
|
||||||
|
|
||||||
parsePattern();
|
|
||||||
subCondition.done(WHEN_CONDITION_IS_PATTERN);
|
|
||||||
}
|
|
||||||
else if (at(IN_KEYWORD) || at(NOT_IN)) {
|
|
||||||
PsiBuilder.Marker mark = mark();
|
|
||||||
advance(); // IN_KEYWORD ot NOT_IN
|
|
||||||
mark.done(OPERATION_REFERENCE);
|
|
||||||
|
|
||||||
parseExpression();
|
|
||||||
subCondition.done(WHEN_CONDITION_IN_RANGE);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
subCondition.drop();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* arrayAccess
|
* arrayAccess
|
||||||
* : "[" element{","} "]"
|
* : "[" element{","} "]"
|
||||||
|
|||||||
@@ -1,11 +1,6 @@
|
|||||||
fun foo() {
|
fun foo() {
|
||||||
|
|
||||||
when (e) {
|
when (e) {
|
||||||
is [a] val a -> d
|
|
||||||
is [a] val a is foo -> d
|
|
||||||
is [a] * -> d
|
|
||||||
is [a] 2 -> d
|
|
||||||
is [a] T -> d
|
is [a] T -> d
|
||||||
is [a] T #() -> d
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ JetFile: AttributesOnPatterns.jet
|
|||||||
WHEN_CONDITION_IS_PATTERN
|
WHEN_CONDITION_IS_PATTERN
|
||||||
PsiElement(is)('is')
|
PsiElement(is)('is')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
BINDING_PATTERN
|
TYPE_REFERENCE
|
||||||
ANNOTATION
|
ANNOTATION
|
||||||
PsiElement(LBRACKET)('[')
|
PsiElement(LBRACKET)('[')
|
||||||
ANNOTATION_ENTRY
|
ANNOTATION_ENTRY
|
||||||
@@ -37,142 +37,9 @@ JetFile: AttributesOnPatterns.jet
|
|||||||
PsiElement(IDENTIFIER)('a')
|
PsiElement(IDENTIFIER)('a')
|
||||||
PsiElement(RBRACKET)(']')
|
PsiElement(RBRACKET)(']')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PROPERTY
|
USER_TYPE
|
||||||
PsiElement(val)('val')
|
REFERENCE_EXPRESSION
|
||||||
PsiWhiteSpace(' ')
|
PsiElement(IDENTIFIER)('T')
|
||||||
PsiElement(IDENTIFIER)('a')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
PsiElement(ARROW)('->')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('d')
|
|
||||||
PsiWhiteSpace('\n ')
|
|
||||||
WHEN_ENTRY
|
|
||||||
WHEN_CONDITION_IS_PATTERN
|
|
||||||
PsiElement(is)('is')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
BINDING_PATTERN
|
|
||||||
ANNOTATION
|
|
||||||
PsiElement(LBRACKET)('[')
|
|
||||||
ANNOTATION_ENTRY
|
|
||||||
CONSTRUCTOR_CALLEE
|
|
||||||
TYPE_REFERENCE
|
|
||||||
USER_TYPE
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('a')
|
|
||||||
PsiElement(RBRACKET)(']')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
PROPERTY
|
|
||||||
PsiElement(val)('val')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
PsiElement(IDENTIFIER)('a')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
WHEN_CONDITION_IS_PATTERN
|
|
||||||
PsiElement(is)('is')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
TYPE_PATTERN
|
|
||||||
TYPE_REFERENCE
|
|
||||||
USER_TYPE
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('foo')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
PsiElement(ARROW)('->')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('d')
|
|
||||||
PsiWhiteSpace('\n ')
|
|
||||||
WHEN_ENTRY
|
|
||||||
WHEN_CONDITION_IS_PATTERN
|
|
||||||
PsiElement(is)('is')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
WILDCARD_PATTERN
|
|
||||||
ANNOTATION
|
|
||||||
PsiElement(LBRACKET)('[')
|
|
||||||
ANNOTATION_ENTRY
|
|
||||||
CONSTRUCTOR_CALLEE
|
|
||||||
TYPE_REFERENCE
|
|
||||||
USER_TYPE
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('a')
|
|
||||||
PsiElement(RBRACKET)(']')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
PsiElement(MUL)('*')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
PsiElement(ARROW)('->')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('d')
|
|
||||||
PsiWhiteSpace('\n ')
|
|
||||||
WHEN_ENTRY
|
|
||||||
WHEN_CONDITION_IS_PATTERN
|
|
||||||
PsiElement(is)('is')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
EXPRESSION_PATTERN
|
|
||||||
ANNOTATION
|
|
||||||
PsiElement(LBRACKET)('[')
|
|
||||||
ANNOTATION_ENTRY
|
|
||||||
CONSTRUCTOR_CALLEE
|
|
||||||
TYPE_REFERENCE
|
|
||||||
USER_TYPE
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('a')
|
|
||||||
PsiElement(RBRACKET)(']')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
INTEGER_CONSTANT
|
|
||||||
PsiElement(INTEGER_LITERAL)('2')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
PsiElement(ARROW)('->')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('d')
|
|
||||||
PsiWhiteSpace('\n ')
|
|
||||||
WHEN_ENTRY
|
|
||||||
WHEN_CONDITION_IS_PATTERN
|
|
||||||
PsiElement(is)('is')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
TYPE_PATTERN
|
|
||||||
ANNOTATION
|
|
||||||
PsiElement(LBRACKET)('[')
|
|
||||||
ANNOTATION_ENTRY
|
|
||||||
CONSTRUCTOR_CALLEE
|
|
||||||
TYPE_REFERENCE
|
|
||||||
USER_TYPE
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('a')
|
|
||||||
PsiElement(RBRACKET)(']')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
TYPE_REFERENCE
|
|
||||||
USER_TYPE
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('T')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
PsiElement(ARROW)('->')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('d')
|
|
||||||
PsiWhiteSpace('\n ')
|
|
||||||
WHEN_ENTRY
|
|
||||||
WHEN_CONDITION_IS_PATTERN
|
|
||||||
PsiElement(is)('is')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
DECOMPOSER_PATTERN
|
|
||||||
ANNOTATION
|
|
||||||
PsiElement(LBRACKET)('[')
|
|
||||||
ANNOTATION_ENTRY
|
|
||||||
CONSTRUCTOR_CALLEE
|
|
||||||
TYPE_REFERENCE
|
|
||||||
USER_TYPE
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('a')
|
|
||||||
PsiElement(RBRACKET)(']')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('T')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
DECOMPOSER_ARGUMENT_LIST
|
|
||||||
PsiElement(HASH)('#')
|
|
||||||
PsiElement(LPAR)('(')
|
|
||||||
PsiElement(RPAR)(')')
|
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
|
|||||||
@@ -24,13 +24,30 @@ JetFile: CallsInWhen.jet
|
|||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_WITH_EXPRESSION
|
WHEN_CONDITION_WITH_EXPRESSION
|
||||||
EXPRESSION_PATTERN
|
DOT_QUALIFIED_EXPRESSION
|
||||||
DOT_QUALIFIED_EXPRESSION
|
REFERENCE_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(IDENTIFIER)('a')
|
||||||
PsiElement(IDENTIFIER)('a')
|
PsiElement(DOT)('.')
|
||||||
PsiElement(DOT)('.')
|
REFERENCE_EXPRESSION
|
||||||
|
PsiElement(IDENTIFIER)('foo')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PsiElement(ARROW)('->')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
REFERENCE_EXPRESSION
|
||||||
|
PsiElement(IDENTIFIER)('a')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
WHEN_ENTRY
|
||||||
|
WHEN_CONDITION_WITH_EXPRESSION
|
||||||
|
DOT_QUALIFIED_EXPRESSION
|
||||||
|
REFERENCE_EXPRESSION
|
||||||
|
PsiElement(IDENTIFIER)('a')
|
||||||
|
PsiElement(DOT)('.')
|
||||||
|
CALL_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
REFERENCE_EXPRESSION
|
||||||
PsiElement(IDENTIFIER)('foo')
|
PsiElement(IDENTIFIER)('foo')
|
||||||
|
VALUE_ARGUMENT_LIST
|
||||||
|
PsiElement(LPAR)('(')
|
||||||
|
PsiElement(RPAR)(')')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
@@ -39,17 +56,21 @@ JetFile: CallsInWhen.jet
|
|||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_WITH_EXPRESSION
|
WHEN_CONDITION_WITH_EXPRESSION
|
||||||
EXPRESSION_PATTERN
|
DOT_QUALIFIED_EXPRESSION
|
||||||
DOT_QUALIFIED_EXPRESSION
|
REFERENCE_EXPRESSION
|
||||||
|
PsiElement(IDENTIFIER)('a')
|
||||||
|
PsiElement(DOT)('.')
|
||||||
|
CALL_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
REFERENCE_EXPRESSION
|
||||||
PsiElement(IDENTIFIER)('a')
|
PsiElement(IDENTIFIER)('foo')
|
||||||
PsiElement(DOT)('.')
|
TYPE_ARGUMENT_LIST
|
||||||
CALL_EXPRESSION
|
PsiElement(LT)('<')
|
||||||
REFERENCE_EXPRESSION
|
TYPE_PROJECTION
|
||||||
PsiElement(IDENTIFIER)('foo')
|
TYPE_REFERENCE
|
||||||
VALUE_ARGUMENT_LIST
|
USER_TYPE
|
||||||
PsiElement(LPAR)('(')
|
REFERENCE_EXPRESSION
|
||||||
PsiElement(RPAR)(')')
|
PsiElement(IDENTIFIER)('T')
|
||||||
|
PsiElement(GT)('>')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
@@ -58,22 +79,27 @@ JetFile: CallsInWhen.jet
|
|||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_WITH_EXPRESSION
|
WHEN_CONDITION_WITH_EXPRESSION
|
||||||
EXPRESSION_PATTERN
|
DOT_QUALIFIED_EXPRESSION
|
||||||
DOT_QUALIFIED_EXPRESSION
|
REFERENCE_EXPRESSION
|
||||||
|
PsiElement(IDENTIFIER)('a')
|
||||||
|
PsiElement(DOT)('.')
|
||||||
|
CALL_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
REFERENCE_EXPRESSION
|
||||||
PsiElement(IDENTIFIER)('a')
|
PsiElement(IDENTIFIER)('foo')
|
||||||
PsiElement(DOT)('.')
|
TYPE_ARGUMENT_LIST
|
||||||
CALL_EXPRESSION
|
PsiElement(LT)('<')
|
||||||
REFERENCE_EXPRESSION
|
TYPE_PROJECTION
|
||||||
PsiElement(IDENTIFIER)('foo')
|
TYPE_REFERENCE
|
||||||
TYPE_ARGUMENT_LIST
|
USER_TYPE
|
||||||
PsiElement(LT)('<')
|
REFERENCE_EXPRESSION
|
||||||
TYPE_PROJECTION
|
PsiElement(IDENTIFIER)('T')
|
||||||
TYPE_REFERENCE
|
PsiElement(GT)('>')
|
||||||
USER_TYPE
|
VALUE_ARGUMENT_LIST
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(LPAR)('(')
|
||||||
PsiElement(IDENTIFIER)('T')
|
VALUE_ARGUMENT
|
||||||
PsiElement(GT)('>')
|
REFERENCE_EXPRESSION
|
||||||
|
PsiElement(IDENTIFIER)('a')
|
||||||
|
PsiElement(RPAR)(')')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
@@ -82,28 +108,32 @@ JetFile: CallsInWhen.jet
|
|||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_WITH_EXPRESSION
|
WHEN_CONDITION_WITH_EXPRESSION
|
||||||
EXPRESSION_PATTERN
|
DOT_QUALIFIED_EXPRESSION
|
||||||
DOT_QUALIFIED_EXPRESSION
|
REFERENCE_EXPRESSION
|
||||||
|
PsiElement(IDENTIFIER)('a')
|
||||||
|
PsiElement(DOT)('.')
|
||||||
|
CALL_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
REFERENCE_EXPRESSION
|
||||||
PsiElement(IDENTIFIER)('a')
|
PsiElement(IDENTIFIER)('foo')
|
||||||
PsiElement(DOT)('.')
|
TYPE_ARGUMENT_LIST
|
||||||
CALL_EXPRESSION
|
PsiElement(LT)('<')
|
||||||
REFERENCE_EXPRESSION
|
TYPE_PROJECTION
|
||||||
PsiElement(IDENTIFIER)('foo')
|
TYPE_REFERENCE
|
||||||
TYPE_ARGUMENT_LIST
|
USER_TYPE
|
||||||
PsiElement(LT)('<')
|
REFERENCE_EXPRESSION
|
||||||
TYPE_PROJECTION
|
PsiElement(IDENTIFIER)('T')
|
||||||
TYPE_REFERENCE
|
PsiElement(GT)('>')
|
||||||
USER_TYPE
|
VALUE_ARGUMENT_LIST
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(LPAR)('(')
|
||||||
PsiElement(IDENTIFIER)('T')
|
VALUE_ARGUMENT
|
||||||
PsiElement(GT)('>')
|
REFERENCE_EXPRESSION
|
||||||
VALUE_ARGUMENT_LIST
|
PsiElement(IDENTIFIER)('a')
|
||||||
PsiElement(LPAR)('(')
|
PsiElement(COMMA)(',')
|
||||||
VALUE_ARGUMENT
|
PsiWhiteSpace(' ')
|
||||||
REFERENCE_EXPRESSION
|
VALUE_ARGUMENT
|
||||||
PsiElement(IDENTIFIER)('a')
|
REFERENCE_EXPRESSION
|
||||||
PsiElement(RPAR)(')')
|
PsiElement(IDENTIFIER)('d')
|
||||||
|
PsiElement(RPAR)(')')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
@@ -112,33 +142,17 @@ JetFile: CallsInWhen.jet
|
|||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_WITH_EXPRESSION
|
WHEN_CONDITION_WITH_EXPRESSION
|
||||||
EXPRESSION_PATTERN
|
DOT_QUALIFIED_EXPRESSION
|
||||||
DOT_QUALIFIED_EXPRESSION
|
REFERENCE_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(IDENTIFIER)('a')
|
||||||
PsiElement(IDENTIFIER)('a')
|
PsiElement(DOT)('.')
|
||||||
PsiElement(DOT)('.')
|
FUNCTION_LITERAL_EXPRESSION
|
||||||
CALL_EXPRESSION
|
FUNCTION_LITERAL
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(LBRACE)('{')
|
||||||
PsiElement(IDENTIFIER)('foo')
|
BLOCK
|
||||||
TYPE_ARGUMENT_LIST
|
REFERENCE_EXPRESSION
|
||||||
PsiElement(LT)('<')
|
PsiElement(IDENTIFIER)('bar')
|
||||||
TYPE_PROJECTION
|
PsiElement(RBRACE)('}')
|
||||||
TYPE_REFERENCE
|
|
||||||
USER_TYPE
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('T')
|
|
||||||
PsiElement(GT)('>')
|
|
||||||
VALUE_ARGUMENT_LIST
|
|
||||||
PsiElement(LPAR)('(')
|
|
||||||
VALUE_ARGUMENT
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('a')
|
|
||||||
PsiElement(COMMA)(',')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
VALUE_ARGUMENT
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('d')
|
|
||||||
PsiElement(RPAR)(')')
|
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
@@ -147,18 +161,20 @@ JetFile: CallsInWhen.jet
|
|||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_WITH_EXPRESSION
|
WHEN_CONDITION_WITH_EXPRESSION
|
||||||
EXPRESSION_PATTERN
|
DOT_QUALIFIED_EXPRESSION
|
||||||
DOT_QUALIFIED_EXPRESSION
|
REFERENCE_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(IDENTIFIER)('a')
|
||||||
PsiElement(IDENTIFIER)('a')
|
PsiElement(DOT)('.')
|
||||||
PsiElement(DOT)('.')
|
FUNCTION_LITERAL_EXPRESSION
|
||||||
FUNCTION_LITERAL_EXPRESSION
|
FUNCTION_LITERAL
|
||||||
FUNCTION_LITERAL
|
PsiElement(LBRACE)('{')
|
||||||
PsiElement(LBRACE)('{')
|
BLOCK
|
||||||
BLOCK
|
PREFIX_EXPRESSION
|
||||||
|
OPERATION_REFERENCE
|
||||||
|
PsiElement(EXCL)('!')
|
||||||
REFERENCE_EXPRESSION
|
REFERENCE_EXPRESSION
|
||||||
PsiElement(IDENTIFIER)('bar')
|
PsiElement(IDENTIFIER)('bar')
|
||||||
PsiElement(RBRACE)('}')
|
PsiElement(RBRACE)('}')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
@@ -167,50 +183,26 @@ JetFile: CallsInWhen.jet
|
|||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_WITH_EXPRESSION
|
WHEN_CONDITION_WITH_EXPRESSION
|
||||||
EXPRESSION_PATTERN
|
DOT_QUALIFIED_EXPRESSION
|
||||||
DOT_QUALIFIED_EXPRESSION
|
REFERENCE_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(IDENTIFIER)('a')
|
||||||
PsiElement(IDENTIFIER)('a')
|
PsiElement(DOT)('.')
|
||||||
PsiElement(DOT)('.')
|
FUNCTION_LITERAL_EXPRESSION
|
||||||
FUNCTION_LITERAL_EXPRESSION
|
FUNCTION_LITERAL
|
||||||
FUNCTION_LITERAL
|
PsiElement(LBRACE)('{')
|
||||||
PsiElement(LBRACE)('{')
|
VALUE_PARAMETER_LIST
|
||||||
BLOCK
|
PsiElement(LPAR)('(')
|
||||||
PREFIX_EXPRESSION
|
PsiElement(RPAR)(')')
|
||||||
OPERATION_REFERENCE
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(EXCL)('!')
|
PsiElement(ARROW)('->')
|
||||||
REFERENCE_EXPRESSION
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(IDENTIFIER)('bar')
|
BLOCK
|
||||||
PsiElement(RBRACE)('}')
|
PREFIX_EXPRESSION
|
||||||
PsiWhiteSpace(' ')
|
OPERATION_REFERENCE
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(EXCL)('!')
|
||||||
PsiWhiteSpace(' ')
|
REFERENCE_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(IDENTIFIER)('bar')
|
||||||
PsiElement(IDENTIFIER)('a')
|
PsiElement(RBRACE)('}')
|
||||||
PsiWhiteSpace('\n ')
|
|
||||||
WHEN_ENTRY
|
|
||||||
WHEN_CONDITION_WITH_EXPRESSION
|
|
||||||
EXPRESSION_PATTERN
|
|
||||||
DOT_QUALIFIED_EXPRESSION
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('a')
|
|
||||||
PsiElement(DOT)('.')
|
|
||||||
FUNCTION_LITERAL_EXPRESSION
|
|
||||||
FUNCTION_LITERAL
|
|
||||||
PsiElement(LBRACE)('{')
|
|
||||||
VALUE_PARAMETER_LIST
|
|
||||||
PsiElement(LPAR)('(')
|
|
||||||
PsiElement(RPAR)(')')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
PsiElement(ARROW)('->')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
BLOCK
|
|
||||||
PREFIX_EXPRESSION
|
|
||||||
OPERATION_REFERENCE
|
|
||||||
PsiElement(EXCL)('!')
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('bar')
|
|
||||||
PsiElement(RBRACE)('}')
|
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
|
|||||||
@@ -21,17 +21,18 @@ fun foo() {
|
|||||||
+ d]
|
+ d]
|
||||||
|
|
||||||
when (e) {
|
when (e) {
|
||||||
is T
|
is T
|
||||||
#() -> a
|
<X>
|
||||||
|
-> a
|
||||||
in f
|
in f
|
||||||
() -> a
|
() -> a
|
||||||
!is T
|
!is T
|
||||||
#() -> a
|
<X> -> a
|
||||||
!in f
|
!in f
|
||||||
() -> a
|
() -> a
|
||||||
f
|
f
|
||||||
() -> a
|
() -> a
|
||||||
}
|
}
|
||||||
val f = a is T
|
val f = a is T
|
||||||
#()
|
<X>
|
||||||
}
|
}
|
||||||
@@ -240,15 +240,20 @@ JetFile: NewlinesInParentheses.jet
|
|||||||
WHEN_CONDITION_IS_PATTERN
|
WHEN_CONDITION_IS_PATTERN
|
||||||
PsiElement(is)('is')
|
PsiElement(is)('is')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
DECOMPOSER_PATTERN
|
TYPE_REFERENCE
|
||||||
REFERENCE_EXPRESSION
|
USER_TYPE
|
||||||
PsiElement(IDENTIFIER)('T')
|
REFERENCE_EXPRESSION
|
||||||
PsiWhiteSpace(' \n ')
|
PsiElement(IDENTIFIER)('T')
|
||||||
DECOMPOSER_ARGUMENT_LIST
|
PsiWhiteSpace('\n ')
|
||||||
PsiElement(HASH)('#')
|
TYPE_ARGUMENT_LIST
|
||||||
PsiElement(LPAR)('(')
|
PsiElement(LT)('<')
|
||||||
PsiElement(RPAR)(')')
|
TYPE_PROJECTION
|
||||||
PsiWhiteSpace(' ')
|
TYPE_REFERENCE
|
||||||
|
USER_TYPE
|
||||||
|
REFERENCE_EXPRESSION
|
||||||
|
PsiElement(IDENTIFIER)('X')
|
||||||
|
PsiElement(GT)('>')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
REFERENCE_EXPRESSION
|
REFERENCE_EXPRESSION
|
||||||
@@ -276,14 +281,19 @@ JetFile: NewlinesInParentheses.jet
|
|||||||
WHEN_CONDITION_IS_PATTERN
|
WHEN_CONDITION_IS_PATTERN
|
||||||
PsiElement(NOT_IS)('!is')
|
PsiElement(NOT_IS)('!is')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
DECOMPOSER_PATTERN
|
TYPE_REFERENCE
|
||||||
REFERENCE_EXPRESSION
|
USER_TYPE
|
||||||
PsiElement(IDENTIFIER)('T')
|
REFERENCE_EXPRESSION
|
||||||
PsiWhiteSpace('\n ')
|
PsiElement(IDENTIFIER)('T')
|
||||||
DECOMPOSER_ARGUMENT_LIST
|
PsiWhiteSpace('\n ')
|
||||||
PsiElement(HASH)('#')
|
TYPE_ARGUMENT_LIST
|
||||||
PsiElement(LPAR)('(')
|
PsiElement(LT)('<')
|
||||||
PsiElement(RPAR)(')')
|
TYPE_PROJECTION
|
||||||
|
TYPE_REFERENCE
|
||||||
|
USER_TYPE
|
||||||
|
REFERENCE_EXPRESSION
|
||||||
|
PsiElement(IDENTIFIER)('X')
|
||||||
|
PsiElement(GT)('>')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
@@ -310,14 +320,13 @@ JetFile: NewlinesInParentheses.jet
|
|||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_WITH_EXPRESSION
|
WHEN_CONDITION_WITH_EXPRESSION
|
||||||
EXPRESSION_PATTERN
|
CALL_EXPRESSION
|
||||||
CALL_EXPRESSION
|
REFERENCE_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(IDENTIFIER)('f')
|
||||||
PsiElement(IDENTIFIER)('f')
|
PsiWhiteSpace('\n ')
|
||||||
PsiWhiteSpace('\n ')
|
VALUE_ARGUMENT_LIST
|
||||||
VALUE_ARGUMENT_LIST
|
PsiElement(LPAR)('(')
|
||||||
PsiElement(LPAR)('(')
|
PsiElement(RPAR)(')')
|
||||||
PsiElement(RPAR)(')')
|
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
@@ -333,20 +342,25 @@ JetFile: NewlinesInParentheses.jet
|
|||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(EQ)('=')
|
PsiElement(EQ)('=')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
BINARY_WITH_PATTERN
|
IS_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
REFERENCE_EXPRESSION
|
||||||
PsiElement(IDENTIFIER)('a')
|
PsiElement(IDENTIFIER)('a')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
OPERATION_REFERENCE
|
OPERATION_REFERENCE
|
||||||
PsiElement(is)('is')
|
PsiElement(is)('is')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
DECOMPOSER_PATTERN
|
TYPE_REFERENCE
|
||||||
REFERENCE_EXPRESSION
|
USER_TYPE
|
||||||
PsiElement(IDENTIFIER)('T')
|
REFERENCE_EXPRESSION
|
||||||
PsiWhiteSpace('\n ')
|
PsiElement(IDENTIFIER)('T')
|
||||||
DECOMPOSER_ARGUMENT_LIST
|
PsiWhiteSpace('\n ')
|
||||||
PsiElement(HASH)('#')
|
TYPE_ARGUMENT_LIST
|
||||||
PsiElement(LPAR)('(')
|
PsiElement(LT)('<')
|
||||||
PsiElement(RPAR)(')')
|
TYPE_PROJECTION
|
||||||
|
TYPE_REFERENCE
|
||||||
|
USER_TYPE
|
||||||
|
REFERENCE_EXPRESSION
|
||||||
|
PsiElement(IDENTIFIER)('X')
|
||||||
|
PsiElement(GT)('>')
|
||||||
PsiWhiteSpace('\n')
|
PsiWhiteSpace('\n')
|
||||||
PsiElement(RBRACE)('}')
|
PsiElement(RBRACE)('}')
|
||||||
@@ -12,18 +12,17 @@ JetFile: NotIsAndNotIn.jet
|
|||||||
BLOCK
|
BLOCK
|
||||||
PsiElement(LBRACE)('{')
|
PsiElement(LBRACE)('{')
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
BINARY_WITH_PATTERN
|
IS_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
REFERENCE_EXPRESSION
|
||||||
PsiElement(IDENTIFIER)('a')
|
PsiElement(IDENTIFIER)('a')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
OPERATION_REFERENCE
|
OPERATION_REFERENCE
|
||||||
PsiElement(NOT_IS)('!is')
|
PsiElement(NOT_IS)('!is')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
TYPE_PATTERN
|
TYPE_REFERENCE
|
||||||
TYPE_REFERENCE
|
USER_TYPE
|
||||||
USER_TYPE
|
REFERENCE_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(IDENTIFIER)('B')
|
||||||
PsiElement(IDENTIFIER)('B')
|
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
BINARY_EXPRESSION
|
BINARY_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
REFERENCE_EXPRESSION
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ package foo.bar {
|
|||||||
package.foo.bar.X
|
package.foo.bar.X
|
||||||
package.foo.bar.X()
|
package.foo.bar.X()
|
||||||
when (e) {
|
when (e) {
|
||||||
is package.foo.bar.X #(x) -> {}
|
is package.foo.bar.X<package.Y> -> {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -93,12 +93,11 @@ JetFile: RootNamespace.jet
|
|||||||
WHEN_CONDITION_IS_PATTERN
|
WHEN_CONDITION_IS_PATTERN
|
||||||
PsiElement(is)('is')
|
PsiElement(is)('is')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
DECOMPOSER_PATTERN
|
TYPE_REFERENCE
|
||||||
DOT_QUALIFIED_EXPRESSION
|
USER_TYPE
|
||||||
DOT_QUALIFIED_EXPRESSION
|
USER_TYPE
|
||||||
DOT_QUALIFIED_EXPRESSION
|
USER_TYPE
|
||||||
ROOT_NAMESPACE
|
PsiElement(package)('package')
|
||||||
PsiElement(package)('package')
|
|
||||||
PsiElement(DOT)('.')
|
PsiElement(DOT)('.')
|
||||||
REFERENCE_EXPRESSION
|
REFERENCE_EXPRESSION
|
||||||
PsiElement(IDENTIFIER)('foo')
|
PsiElement(IDENTIFIER)('foo')
|
||||||
@@ -108,17 +107,16 @@ JetFile: RootNamespace.jet
|
|||||||
PsiElement(DOT)('.')
|
PsiElement(DOT)('.')
|
||||||
REFERENCE_EXPRESSION
|
REFERENCE_EXPRESSION
|
||||||
PsiElement(IDENTIFIER)('X')
|
PsiElement(IDENTIFIER)('X')
|
||||||
PsiWhiteSpace(' ')
|
TYPE_ARGUMENT_LIST
|
||||||
DECOMPOSER_ARGUMENT_LIST
|
PsiElement(LT)('<')
|
||||||
PsiElement(HASH)('#')
|
TYPE_PROJECTION
|
||||||
PsiElement(LPAR)('(')
|
|
||||||
TUPLE_PATTERN_ENTRY
|
|
||||||
TYPE_PATTERN
|
|
||||||
TYPE_REFERENCE
|
TYPE_REFERENCE
|
||||||
USER_TYPE
|
USER_TYPE
|
||||||
|
PsiElement(package)('package')
|
||||||
|
PsiElement(DOT)('.')
|
||||||
REFERENCE_EXPRESSION
|
REFERENCE_EXPRESSION
|
||||||
PsiElement(IDENTIFIER)('x')
|
PsiElement(IDENTIFIER)('Y')
|
||||||
PsiElement(RPAR)(')')
|
PsiElement(GT)('>')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
|
|||||||
@@ -992,9 +992,8 @@ JetFile: ShortAnnotations.jet
|
|||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_WITH_EXPRESSION
|
WHEN_CONDITION_WITH_EXPRESSION
|
||||||
EXPRESSION_PATTERN
|
INTEGER_CONSTANT
|
||||||
INTEGER_CONSTANT
|
PsiElement(INTEGER_LITERAL)('1')
|
||||||
PsiElement(INTEGER_LITERAL)('1')
|
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
|
|||||||
@@ -320,28 +320,27 @@ JetFile: TypeExpressionAmbiguities_ERR.jet
|
|||||||
PsiErrorElement:Expecting a '>'
|
PsiErrorElement:Expecting a '>'
|
||||||
<empty list>
|
<empty list>
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
BINARY_WITH_PATTERN
|
IS_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
REFERENCE_EXPRESSION
|
||||||
PsiElement(IDENTIFIER)('x')
|
PsiElement(IDENTIFIER)('x')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
OPERATION_REFERENCE
|
OPERATION_REFERENCE
|
||||||
PsiElement(is)('is')
|
PsiElement(is)('is')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
TYPE_PATTERN
|
TYPE_REFERENCE
|
||||||
TYPE_REFERENCE
|
USER_TYPE
|
||||||
USER_TYPE
|
REFERENCE_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(IDENTIFIER)('Foo')
|
||||||
PsiElement(IDENTIFIER)('Foo')
|
PsiWhiteSpace(' ')
|
||||||
|
TYPE_ARGUMENT_LIST
|
||||||
|
PsiElement(LT)('<')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
TYPE_ARGUMENT_LIST
|
TYPE_PROJECTION
|
||||||
PsiElement(LT)('<')
|
TYPE_REFERENCE
|
||||||
PsiWhiteSpace(' ')
|
USER_TYPE
|
||||||
TYPE_PROJECTION
|
REFERENCE_EXPRESSION
|
||||||
TYPE_REFERENCE
|
PsiElement(IDENTIFIER)('bar')
|
||||||
USER_TYPE
|
PsiErrorElement:Expecting a '>'
|
||||||
REFERENCE_EXPRESSION
|
<empty list>
|
||||||
PsiElement(IDENTIFIER)('bar')
|
|
||||||
PsiErrorElement:Expecting a '>'
|
|
||||||
<empty list>
|
|
||||||
PsiWhiteSpace('\n')
|
PsiWhiteSpace('\n')
|
||||||
PsiElement(RBRACE)('}')
|
PsiElement(RBRACE)('}')
|
||||||
@@ -16,17 +16,14 @@ fun foo() {
|
|||||||
is a -> foo
|
is a -> foo
|
||||||
}
|
}
|
||||||
when (e) {
|
when (e) {
|
||||||
is Tree #(a, b) -> foo
|
is Tree<a, b> -> foo
|
||||||
is null -> foo
|
null -> foo
|
||||||
is 1 -> foo
|
1 -> foo
|
||||||
is A.b -> foo
|
A.b -> foo
|
||||||
is 1.0 -> foo
|
1.0 -> foo
|
||||||
is 'c' -> foo
|
'c' -> foo
|
||||||
is "sadfsa" -> foo
|
"sadfsa" -> foo
|
||||||
is """ddd""" -> foo
|
"""ddd""" -> foo
|
||||||
is * -> foo
|
|
||||||
is val a is Foo -> foo
|
|
||||||
is #(val a is Foo, b) -> foo
|
|
||||||
}
|
}
|
||||||
when (when(when (e) {
|
when (when(when (e) {
|
||||||
|
|
||||||
@@ -40,22 +37,13 @@ fun foo() {
|
|||||||
fun foo() {
|
fun foo() {
|
||||||
when (val a = e) {
|
when (val a = e) {
|
||||||
is Tree -> c
|
is Tree -> c
|
||||||
is Tree #(null, val r) -> c
|
is a.a<a, b> -> c
|
||||||
is a #(a, b) -> c
|
is package.a.a<a, b> -> c
|
||||||
is a #(a, b) -> c
|
|
||||||
is a.a #(a, b) -> c
|
|
||||||
is a.a #(foo = a, bar = b) -> c
|
|
||||||
is package.a.a #(a, b) -> c
|
|
||||||
is a #(val a is T, b) -> c
|
|
||||||
is a #(b, 1) -> c
|
|
||||||
in 1..2 -> dsf
|
in 1..2 -> dsf
|
||||||
!in 2 -> sd
|
!in 2 -> sd
|
||||||
!is t -> d
|
!is t -> d
|
||||||
is (foo) -> Bar -> fgpp
|
(foo) -> Bar -> fgpp
|
||||||
is #(1, val a is Foo, *, Foo, bar) -> d
|
|
||||||
is #(Foo, val a in 1..2, *, val _ !is Foo, val bar is foo.bar<a> #(a)) -> d
|
|
||||||
is #(Int, Int) -> 2
|
is #(Int, Int) -> 2
|
||||||
is val a : Foo -> 2
|
|
||||||
else -> foo
|
else -> foo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -63,11 +51,9 @@ fun foo() {
|
|||||||
fun foo() {
|
fun foo() {
|
||||||
when (val a = e) {
|
when (val a = e) {
|
||||||
is Tree,
|
is Tree,
|
||||||
is Tree #(null, val r),
|
is a<a, b> -> c
|
||||||
is a #(a, b) -> c
|
|
||||||
1, foo(), bar, 2 + 3,
|
1, foo(), bar, 2 + 3,
|
||||||
is a #(a, b) -> c
|
is a<a, b> -> c
|
||||||
is a.a #(val b, b) -> c
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+208
-790
File diff suppressed because it is too large
Load Diff
@@ -20,7 +20,7 @@ fun foo() {
|
|||||||
else ->
|
else ->
|
||||||
}
|
}
|
||||||
when (e) {
|
when (e) {
|
||||||
is - -> foo
|
- -> foo
|
||||||
is #(, , 1, , ) -> foo
|
#(, , 1, , ) -> foo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -37,7 +37,7 @@ JetFile: When_ERR.jet
|
|||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_IS_PATTERN
|
WHEN_CONDITION_IS_PATTERN
|
||||||
PsiElement(is)('is')
|
PsiElement(is)('is')
|
||||||
PsiErrorElement:Expecting a type or a decomposer pattern
|
PsiErrorElement:Expecting a type
|
||||||
<empty list>
|
<empty list>
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
@@ -48,7 +48,7 @@ JetFile: When_ERR.jet
|
|||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_IS_PATTERN
|
WHEN_CONDITION_IS_PATTERN
|
||||||
PsiElement(NOT_IS)('!is')
|
PsiElement(NOT_IS)('!is')
|
||||||
PsiErrorElement:Expecting a type or a decomposer pattern
|
PsiErrorElement:Expecting a type
|
||||||
<empty list>
|
<empty list>
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
@@ -82,9 +82,8 @@ JetFile: When_ERR.jet
|
|||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_WITH_EXPRESSION
|
WHEN_CONDITION_WITH_EXPRESSION
|
||||||
EXPRESSION_PATTERN
|
PsiErrorElement:Expecting an expression, is-condition or in-condition
|
||||||
PsiErrorElement:Expecting an expression, is-condition or in-condition
|
<empty list>
|
||||||
<empty list>
|
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
REFERENCE_EXPRESSION
|
REFERENCE_EXPRESSION
|
||||||
@@ -110,7 +109,7 @@ JetFile: When_ERR.jet
|
|||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_IS_PATTERN
|
WHEN_CONDITION_IS_PATTERN
|
||||||
PsiElement(is)('is')
|
PsiElement(is)('is')
|
||||||
PsiErrorElement:Expecting a type or a decomposer pattern
|
PsiErrorElement:Expecting a type
|
||||||
<empty list>
|
<empty list>
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
@@ -120,7 +119,7 @@ JetFile: When_ERR.jet
|
|||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_IS_PATTERN
|
WHEN_CONDITION_IS_PATTERN
|
||||||
PsiElement(NOT_IS)('!is')
|
PsiElement(NOT_IS)('!is')
|
||||||
PsiErrorElement:Expecting a type or a decomposer pattern
|
PsiErrorElement:Expecting a type
|
||||||
<empty list>
|
<empty list>
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
@@ -164,9 +163,8 @@ JetFile: When_ERR.jet
|
|||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_WITH_EXPRESSION
|
WHEN_CONDITION_WITH_EXPRESSION
|
||||||
EXPRESSION_PATTERN
|
PsiErrorElement:Expecting an expression, is-condition or in-condition
|
||||||
PsiErrorElement:Expecting an expression, is-condition or in-condition
|
<empty list>
|
||||||
<empty list>
|
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiErrorElement:Expecting an element
|
PsiErrorElement:Expecting an element
|
||||||
<empty list>
|
<empty list>
|
||||||
@@ -196,11 +194,12 @@ JetFile: When_ERR.jet
|
|||||||
PsiElement(LBRACE)('{')
|
PsiElement(LBRACE)('{')
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_IS_PATTERN
|
WHEN_CONDITION_WITH_EXPRESSION
|
||||||
PsiElement(is)('is')
|
PREFIX_EXPRESSION
|
||||||
PsiWhiteSpace(' ')
|
OPERATION_REFERENCE
|
||||||
PsiErrorElement:Pattern expected
|
PsiElement(MINUS)('-')
|
||||||
PsiElement(MINUS)('-')
|
PsiErrorElement:Expecting an element
|
||||||
|
<empty list>
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
@@ -208,27 +207,23 @@ JetFile: When_ERR.jet
|
|||||||
PsiElement(IDENTIFIER)('foo')
|
PsiElement(IDENTIFIER)('foo')
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_IS_PATTERN
|
WHEN_CONDITION_WITH_EXPRESSION
|
||||||
PsiElement(is)('is')
|
TUPLE
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
TUPLE_PATTERN
|
|
||||||
PsiElement(HASH)('#')
|
PsiElement(HASH)('#')
|
||||||
PsiElement(LPAR)('(')
|
PsiElement(LPAR)('(')
|
||||||
PsiErrorElement:Expecting a pattern
|
PsiErrorElement:Expecting a tuple entry (element)
|
||||||
PsiElement(COMMA)(',')
|
PsiElement(COMMA)(',')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiErrorElement:Expecting a pattern
|
PsiErrorElement:Expecting a tuple entry (element)
|
||||||
PsiElement(COMMA)(',')
|
PsiElement(COMMA)(',')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
TUPLE_PATTERN_ENTRY
|
INTEGER_CONSTANT
|
||||||
EXPRESSION_PATTERN
|
PsiElement(INTEGER_LITERAL)('1')
|
||||||
INTEGER_CONSTANT
|
|
||||||
PsiElement(INTEGER_LITERAL)('1')
|
|
||||||
PsiElement(COMMA)(',')
|
PsiElement(COMMA)(',')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiErrorElement:Expecting a pattern
|
PsiErrorElement:Expecting a tuple entry (element)
|
||||||
PsiElement(COMMA)(',')
|
PsiElement(COMMA)(',')
|
||||||
PsiErrorElement:Expecting a pattern
|
PsiErrorElement:Expecting an expression
|
||||||
<empty list>
|
<empty list>
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(RPAR)(')')
|
PsiElement(RPAR)(')')
|
||||||
@@ -240,4 +235,4 @@ JetFile: When_ERR.jet
|
|||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
PsiElement(RBRACE)('}')
|
PsiElement(RBRACE)('}')
|
||||||
PsiWhiteSpace('\n')
|
PsiWhiteSpace('\n')
|
||||||
PsiElement(RBRACE)('}')
|
PsiElement(RBRACE)('}')
|
||||||
@@ -99,14 +99,14 @@ class BinaryTree<T> : IMutableSet<T> {
|
|||||||
|
|
||||||
private fun remove(node : TreeNode) {
|
private fun remove(node : TreeNode) {
|
||||||
when (node) {
|
when (node) {
|
||||||
is TreeNode #(null, null) -> replace(node, null)
|
//is TreeNode #(null, null) -> replace(node, null)
|
||||||
is TreeNode #(null, right) -> replace(node, right)
|
//is TreeNode #(null, right) -> replace(node, right)
|
||||||
is TreeNode #(left, null) -> replace(node, left)
|
//is TreeNode #(left, null) -> replace(node, left)
|
||||||
is TreeNode #(left, right) -> {
|
//is TreeNode #(left, right) -> {
|
||||||
val min = min(node.right)
|
// val min = min(node.right)
|
||||||
node.value = min.value
|
// node.value = min.value
|
||||||
remove(min)
|
// remove(min)
|
||||||
}
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun replace(node : TreeNode, replace : TreeNode) {
|
fun replace(node : TreeNode, replace : TreeNode) {
|
||||||
|
|||||||
@@ -450,9 +450,8 @@ JetFile: BinaryTree.jet
|
|||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_WITH_EXPRESSION
|
WHEN_CONDITION_WITH_EXPRESSION
|
||||||
EXPRESSION_PATTERN
|
REFERENCE_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(IDENTIFIER)('EQ')
|
||||||
PsiElement(IDENTIFIER)('EQ')
|
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
@@ -461,9 +460,8 @@ JetFile: BinaryTree.jet
|
|||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_WITH_EXPRESSION
|
WHEN_CONDITION_WITH_EXPRESSION
|
||||||
EXPRESSION_PATTERN
|
REFERENCE_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(IDENTIFIER)('LS')
|
||||||
PsiElement(IDENTIFIER)('LS')
|
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
@@ -488,9 +486,8 @@ JetFile: BinaryTree.jet
|
|||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_WITH_EXPRESSION
|
WHEN_CONDITION_WITH_EXPRESSION
|
||||||
EXPRESSION_PATTERN
|
REFERENCE_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(IDENTIFIER)('GT')
|
||||||
PsiElement(IDENTIFIER)('GT')
|
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
@@ -749,9 +746,8 @@ JetFile: BinaryTree.jet
|
|||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_WITH_EXPRESSION
|
WHEN_CONDITION_WITH_EXPRESSION
|
||||||
EXPRESSION_PATTERN
|
REFERENCE_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(IDENTIFIER)('EQ')
|
||||||
PsiElement(IDENTIFIER)('EQ')
|
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
@@ -760,9 +756,8 @@ JetFile: BinaryTree.jet
|
|||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_WITH_EXPRESSION
|
WHEN_CONDITION_WITH_EXPRESSION
|
||||||
EXPRESSION_PATTERN
|
REFERENCE_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(IDENTIFIER)('LS')
|
||||||
PsiElement(IDENTIFIER)('LS')
|
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
@@ -799,9 +794,8 @@ JetFile: BinaryTree.jet
|
|||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_WITH_EXPRESSION
|
WHEN_CONDITION_WITH_EXPRESSION
|
||||||
EXPRESSION_PATTERN
|
REFERENCE_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(IDENTIFIER)('GT')
|
||||||
PsiElement(IDENTIFIER)('GT')
|
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
@@ -947,9 +941,8 @@ JetFile: BinaryTree.jet
|
|||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_WITH_EXPRESSION
|
WHEN_CONDITION_WITH_EXPRESSION
|
||||||
EXPRESSION_PATTERN
|
REFERENCE_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(IDENTIFIER)('EQ')
|
||||||
PsiElement(IDENTIFIER)('EQ')
|
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
@@ -961,9 +954,8 @@ JetFile: BinaryTree.jet
|
|||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_WITH_EXPRESSION
|
WHEN_CONDITION_WITH_EXPRESSION
|
||||||
EXPRESSION_PATTERN
|
REFERENCE_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(IDENTIFIER)('LS')
|
||||||
PsiElement(IDENTIFIER)('LS')
|
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
@@ -1047,9 +1039,8 @@ JetFile: BinaryTree.jet
|
|||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_WITH_EXPRESSION
|
WHEN_CONDITION_WITH_EXPRESSION
|
||||||
EXPRESSION_PATTERN
|
REFERENCE_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(IDENTIFIER)('GT')
|
||||||
PsiElement(IDENTIFIER)('GT')
|
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
@@ -1318,9 +1309,8 @@ JetFile: BinaryTree.jet
|
|||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_WITH_EXPRESSION
|
WHEN_CONDITION_WITH_EXPRESSION
|
||||||
EXPRESSION_PATTERN
|
REFERENCE_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(IDENTIFIER)('EQ')
|
||||||
PsiElement(IDENTIFIER)('EQ')
|
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
@@ -1329,9 +1319,8 @@ JetFile: BinaryTree.jet
|
|||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_WITH_EXPRESSION
|
WHEN_CONDITION_WITH_EXPRESSION
|
||||||
EXPRESSION_PATTERN
|
REFERENCE_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(IDENTIFIER)('LS')
|
||||||
PsiElement(IDENTIFIER)('LS')
|
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
@@ -1351,9 +1340,8 @@ JetFile: BinaryTree.jet
|
|||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
WHEN_ENTRY
|
||||||
WHEN_CONDITION_WITH_EXPRESSION
|
WHEN_CONDITION_WITH_EXPRESSION
|
||||||
EXPRESSION_PATTERN
|
REFERENCE_EXPRESSION
|
||||||
REFERENCE_EXPRESSION
|
PsiElement(IDENTIFIER)('GT')
|
||||||
PsiElement(IDENTIFIER)('GT')
|
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(ARROW)('->')
|
PsiElement(ARROW)('->')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
@@ -1410,212 +1398,21 @@ JetFile: BinaryTree.jet
|
|||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(LBRACE)('{')
|
PsiElement(LBRACE)('{')
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
PsiComment(EOL_COMMENT)('//is TreeNode #(null, null) -> replace(node, null)')
|
||||||
WHEN_CONDITION_IS_PATTERN
|
|
||||||
PsiElement(is)('is')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
DECOMPOSER_PATTERN
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('TreeNode')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
DECOMPOSER_ARGUMENT_LIST
|
|
||||||
PsiElement(HASH)('#')
|
|
||||||
PsiElement(LPAR)('(')
|
|
||||||
TUPLE_PATTERN_ENTRY
|
|
||||||
EXPRESSION_PATTERN
|
|
||||||
NULL
|
|
||||||
PsiElement(null)('null')
|
|
||||||
PsiElement(COMMA)(',')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
TUPLE_PATTERN_ENTRY
|
|
||||||
EXPRESSION_PATTERN
|
|
||||||
NULL
|
|
||||||
PsiElement(null)('null')
|
|
||||||
PsiElement(RPAR)(')')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
PsiElement(ARROW)('->')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
CALL_EXPRESSION
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('replace')
|
|
||||||
VALUE_ARGUMENT_LIST
|
|
||||||
PsiElement(LPAR)('(')
|
|
||||||
VALUE_ARGUMENT
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('node')
|
|
||||||
PsiElement(COMMA)(',')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
VALUE_ARGUMENT
|
|
||||||
NULL
|
|
||||||
PsiElement(null)('null')
|
|
||||||
PsiElement(RPAR)(')')
|
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
PsiComment(EOL_COMMENT)('//is TreeNode #(null, right) -> replace(node, right)')
|
||||||
WHEN_CONDITION_IS_PATTERN
|
|
||||||
PsiElement(is)('is')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
DECOMPOSER_PATTERN
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('TreeNode')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
DECOMPOSER_ARGUMENT_LIST
|
|
||||||
PsiElement(HASH)('#')
|
|
||||||
PsiElement(LPAR)('(')
|
|
||||||
TUPLE_PATTERN_ENTRY
|
|
||||||
EXPRESSION_PATTERN
|
|
||||||
NULL
|
|
||||||
PsiElement(null)('null')
|
|
||||||
PsiElement(COMMA)(',')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
TUPLE_PATTERN_ENTRY
|
|
||||||
TYPE_PATTERN
|
|
||||||
TYPE_REFERENCE
|
|
||||||
USER_TYPE
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('right')
|
|
||||||
PsiElement(RPAR)(')')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
PsiElement(ARROW)('->')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
CALL_EXPRESSION
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('replace')
|
|
||||||
VALUE_ARGUMENT_LIST
|
|
||||||
PsiElement(LPAR)('(')
|
|
||||||
VALUE_ARGUMENT
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('node')
|
|
||||||
PsiElement(COMMA)(',')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
VALUE_ARGUMENT
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('right')
|
|
||||||
PsiElement(RPAR)(')')
|
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
PsiComment(EOL_COMMENT)('//is TreeNode #(left, null) -> replace(node, left)')
|
||||||
WHEN_CONDITION_IS_PATTERN
|
|
||||||
PsiElement(is)('is')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
DECOMPOSER_PATTERN
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('TreeNode')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
DECOMPOSER_ARGUMENT_LIST
|
|
||||||
PsiElement(HASH)('#')
|
|
||||||
PsiElement(LPAR)('(')
|
|
||||||
TUPLE_PATTERN_ENTRY
|
|
||||||
TYPE_PATTERN
|
|
||||||
TYPE_REFERENCE
|
|
||||||
USER_TYPE
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('left')
|
|
||||||
PsiElement(COMMA)(',')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
TUPLE_PATTERN_ENTRY
|
|
||||||
EXPRESSION_PATTERN
|
|
||||||
NULL
|
|
||||||
PsiElement(null)('null')
|
|
||||||
PsiElement(RPAR)(')')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
PsiElement(ARROW)('->')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
CALL_EXPRESSION
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('replace')
|
|
||||||
VALUE_ARGUMENT_LIST
|
|
||||||
PsiElement(LPAR)('(')
|
|
||||||
VALUE_ARGUMENT
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('node')
|
|
||||||
PsiElement(COMMA)(',')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
VALUE_ARGUMENT
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('left')
|
|
||||||
PsiElement(RPAR)(')')
|
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
WHEN_ENTRY
|
PsiComment(EOL_COMMENT)('//is TreeNode #(left, right) -> {')
|
||||||
WHEN_CONDITION_IS_PATTERN
|
PsiWhiteSpace('\n ')
|
||||||
PsiElement(is)('is')
|
PsiComment(EOL_COMMENT)('// val min = min(node.right)')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace('\n ')
|
||||||
DECOMPOSER_PATTERN
|
PsiComment(EOL_COMMENT)('// node.value = min.value')
|
||||||
REFERENCE_EXPRESSION
|
PsiWhiteSpace('\n ')
|
||||||
PsiElement(IDENTIFIER)('TreeNode')
|
PsiComment(EOL_COMMENT)('// remove(min)')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace('\n ')
|
||||||
DECOMPOSER_ARGUMENT_LIST
|
PsiComment(EOL_COMMENT)('//}')
|
||||||
PsiElement(HASH)('#')
|
|
||||||
PsiElement(LPAR)('(')
|
|
||||||
TUPLE_PATTERN_ENTRY
|
|
||||||
TYPE_PATTERN
|
|
||||||
TYPE_REFERENCE
|
|
||||||
USER_TYPE
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('left')
|
|
||||||
PsiElement(COMMA)(',')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
TUPLE_PATTERN_ENTRY
|
|
||||||
TYPE_PATTERN
|
|
||||||
TYPE_REFERENCE
|
|
||||||
USER_TYPE
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('right')
|
|
||||||
PsiElement(RPAR)(')')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
PsiElement(ARROW)('->')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
BLOCK
|
|
||||||
PsiElement(LBRACE)('{')
|
|
||||||
PsiWhiteSpace('\n ')
|
|
||||||
PROPERTY
|
|
||||||
PsiElement(val)('val')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
PsiElement(IDENTIFIER)('min')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
PsiElement(EQ)('=')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
CALL_EXPRESSION
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('min')
|
|
||||||
VALUE_ARGUMENT_LIST
|
|
||||||
PsiElement(LPAR)('(')
|
|
||||||
VALUE_ARGUMENT
|
|
||||||
DOT_QUALIFIED_EXPRESSION
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('node')
|
|
||||||
PsiElement(DOT)('.')
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('right')
|
|
||||||
PsiElement(RPAR)(')')
|
|
||||||
PsiWhiteSpace('\n ')
|
|
||||||
BINARY_EXPRESSION
|
|
||||||
DOT_QUALIFIED_EXPRESSION
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('node')
|
|
||||||
PsiElement(DOT)('.')
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('value')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
OPERATION_REFERENCE
|
|
||||||
PsiElement(EQ)('=')
|
|
||||||
PsiWhiteSpace(' ')
|
|
||||||
DOT_QUALIFIED_EXPRESSION
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('min')
|
|
||||||
PsiElement(DOT)('.')
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('value')
|
|
||||||
PsiWhiteSpace('\n ')
|
|
||||||
CALL_EXPRESSION
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('remove')
|
|
||||||
VALUE_ARGUMENT_LIST
|
|
||||||
PsiElement(LPAR)('(')
|
|
||||||
VALUE_ARGUMENT
|
|
||||||
REFERENCE_EXPRESSION
|
|
||||||
PsiElement(IDENTIFIER)('min')
|
|
||||||
PsiElement(RPAR)(')')
|
|
||||||
PsiWhiteSpace('\n ')
|
|
||||||
PsiElement(RBRACE)('}')
|
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
PsiElement(RBRACE)('}')
|
PsiElement(RBRACE)('}')
|
||||||
PsiWhiteSpace('\n\n ')
|
PsiWhiteSpace('\n\n ')
|
||||||
|
|||||||
@@ -153,7 +153,7 @@ longTemplate
|
|||||||
;
|
;
|
||||||
|
|
||||||
isRHS
|
isRHS
|
||||||
: pattern
|
: type
|
||||||
;
|
;
|
||||||
|
|
||||||
declaration
|
declaration
|
||||||
|
|||||||
+3
-40
@@ -10,51 +10,14 @@ when
|
|||||||
"}"
|
"}"
|
||||||
;
|
;
|
||||||
|
|
||||||
|
// TODO : consider empty after ->
|
||||||
whenEntry
|
whenEntry
|
||||||
// TODO : consider empty after =>
|
: whenCondition{","} "->" expression SEMI
|
||||||
: whenCondition{","} "=>" expression SEMI
|
: "else" "->" expression SEMI
|
||||||
: "else" "=>" expression SEMI
|
|
||||||
;
|
;
|
||||||
|
|
||||||
whenCondition
|
whenCondition
|
||||||
: expression
|
: expression
|
||||||
: ("in" | "!in") expression
|
: ("in" | "!in") expression
|
||||||
: ("is" | "!is") isRHS
|
: ("is" | "!is") isRHS
|
||||||
;
|
|
||||||
|
|
||||||
pattern
|
|
||||||
: annotations pattern
|
|
||||||
: type // '[a] T' is a type-pattern 'T' with an attribute '[a]', not a type-pattern '[a] T'
|
|
||||||
// this makes sense because is-check may be different for a type with attributes
|
|
||||||
: tuplePattern
|
|
||||||
: decomposerPattern
|
|
||||||
: constantPattern
|
|
||||||
: bindingPattern
|
|
||||||
: "*" // wildcard pattern
|
|
||||||
;
|
|
||||||
|
|
||||||
decomposerPattern
|
|
||||||
: type
|
|
||||||
// TODO : typeArguments will be consumed by the expression
|
|
||||||
: elvisExpression typeArguments? tuplePattern
|
|
||||||
;
|
|
||||||
|
|
||||||
constantPattern
|
|
||||||
: literalConstant
|
|
||||||
;
|
|
||||||
|
|
||||||
tuplePattern
|
|
||||||
: "(" (((SimpleName "=")? pattern){","})? ")"
|
|
||||||
;
|
|
||||||
|
|
||||||
bindingPattern
|
|
||||||
: "val" SimpleName binding?
|
|
||||||
;
|
|
||||||
|
|
||||||
binding
|
|
||||||
: "is" pattern
|
|
||||||
: "!is" pattern
|
|
||||||
: "in" expression
|
|
||||||
: "!in" expression
|
|
||||||
: ":" type
|
|
||||||
;
|
;
|
||||||
Reference in New Issue
Block a user