Labels
This commit is contained in:
@@ -82,7 +82,7 @@ atomicExpression
|
|||||||
: literalConstant
|
: literalConstant
|
||||||
: functionLiteral
|
: functionLiteral
|
||||||
: tupleLiteral
|
: tupleLiteral
|
||||||
: "this" ("<" type ">")?
|
: "this" label? ("<" type ">")?
|
||||||
: if
|
: if
|
||||||
: when
|
: when
|
||||||
: try
|
: try
|
||||||
@@ -97,6 +97,12 @@ atomicExpression
|
|||||||
: "namespace" // for the root namespace
|
: "namespace" // for the root namespace
|
||||||
;
|
;
|
||||||
|
|
||||||
|
label
|
||||||
|
: "@"
|
||||||
|
: "@@"
|
||||||
|
: LabelName
|
||||||
|
;
|
||||||
|
|
||||||
literalConstant
|
literalConstant
|
||||||
: "true" | "false"
|
: "true" | "false"
|
||||||
: StringWithTemplates
|
: StringWithTemplates
|
||||||
@@ -163,12 +169,13 @@ prefixUnaryOperation
|
|||||||
: "++" : "--"
|
: "++" : "--"
|
||||||
: "!" // No ~
|
: "!" // No ~
|
||||||
: attributes // mandatory
|
: attributes // mandatory
|
||||||
|
: label
|
||||||
;
|
;
|
||||||
|
|
||||||
postfixUnaryOperation
|
postfixUnaryOperation
|
||||||
: "++" : "--"
|
: "++" : "--"
|
||||||
: typeArguments? valueArguments
|
: typeArguments? valueArguments (label? functionLiteral)
|
||||||
: typeArguments
|
: typeArguments (label? functionLiteral)
|
||||||
: arrayAccess
|
: arrayAccess
|
||||||
: memberAccessOperation postfixUnaryOperation // TODO: Review
|
: memberAccessOperation postfixUnaryOperation // TODO: Review
|
||||||
;
|
;
|
||||||
@@ -187,9 +194,9 @@ valueArguments
|
|||||||
|
|
||||||
jump
|
jump
|
||||||
: "throw" expression
|
: "throw" expression
|
||||||
: "return" expression?
|
: "return" label? expression?
|
||||||
: "continue" stringLiteral?
|
: "continue" label?
|
||||||
: "break" stringLiteral?
|
: "break" label?
|
||||||
// yield ?
|
// yield ?
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
SimpleName : /*java identifier*/;
|
SimpleName : /*java identifier*/;
|
||||||
FieldName : "$" SimpleName;
|
FieldName : "$" SimpleName;
|
||||||
|
LabelName : "@" SimpleName;
|
||||||
[helper] Digit : ["0".."9"];
|
[helper] Digit : ["0".."9"];
|
||||||
IntegerLiteral : Digit+ "L"?
|
IntegerLiteral : Digit+ "L"?
|
||||||
[helper] HexDigit : Digit | ["A"-"F", "a"-"f"];
|
[helper] HexDigit : Digit | ["A"-"F", "a"-"f"];
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
<lang.parserDefinition language="jet" implementationClass="org.jetbrains.jet.lang.parsing.JetParserDefinition"/>
|
<lang.parserDefinition language="jet" implementationClass="org.jetbrains.jet.lang.parsing.JetParserDefinition"/>
|
||||||
<lang.commenter language="jet" implementationClass="org.jetbrains.jet.plugin.JetCommenter"/>
|
<lang.commenter language="jet" implementationClass="org.jetbrains.jet.plugin.JetCommenter"/>
|
||||||
<annotator language="jet" implementationClass="org.jetbrains.jet.lang.annotations.SoftKeywordsAnnotator"/>
|
<annotator language="jet" implementationClass="org.jetbrains.jet.lang.annotations.SoftKeywordsAnnotator"/>
|
||||||
|
<annotator language="jet" implementationClass="org.jetbrains.jet.lang.annotations.LabelsAnnotator"/>
|
||||||
<annotator language="jet" implementationClass="org.jetbrains.jet.lang.annotations.JetPsiChecker"/>
|
<annotator language="jet" implementationClass="org.jetbrains.jet.lang.annotations.JetPsiChecker"/>
|
||||||
</extensions>
|
</extensions>
|
||||||
</idea-plugin>
|
</idea-plugin>
|
||||||
|
|||||||
@@ -37,6 +37,12 @@ public class JetHighlighter extends SyntaxHighlighterBase {
|
|||||||
SyntaxHighlighterColors.KEYWORD.getDefaultAttributes()
|
SyntaxHighlighterColors.KEYWORD.getDefaultAttributes()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
public static final TextAttributesKey JET_LABEL_IDENTIFIER = TextAttributesKey.createTextAttributesKey(
|
||||||
|
"JET.LABEL.IDENTIFIER",
|
||||||
|
// TODO: proper attributes
|
||||||
|
SyntaxHighlighterColors.NUMBER.getDefaultAttributes()
|
||||||
|
);
|
||||||
|
|
||||||
private static final TextAttributesKey JET_NUMBER = TextAttributesKey.createTextAttributesKey(
|
private static final TextAttributesKey JET_NUMBER = TextAttributesKey.createTextAttributesKey(
|
||||||
"JET.NUMBER",
|
"JET.NUMBER",
|
||||||
SyntaxHighlighterColors.NUMBER.getDefaultAttributes()
|
SyntaxHighlighterColors.NUMBER.getDefaultAttributes()
|
||||||
@@ -74,6 +80,8 @@ public class JetHighlighter extends SyntaxHighlighterBase {
|
|||||||
|
|
||||||
fillMap(keys1, JetTokens.KEYWORDS, JET_KEYWORD);
|
fillMap(keys1, JetTokens.KEYWORDS, JET_KEYWORD);
|
||||||
|
|
||||||
|
keys1.put(JetTokens.LABEL_IDENTIFIER, JET_LABEL_IDENTIFIER);
|
||||||
|
keys1.put(JetTokens.ATAT, JET_LABEL_IDENTIFIER);
|
||||||
keys1.put(JetTokens.FIELD_IDENTIFIER, JET_FIELD_IDENTIFIER);
|
keys1.put(JetTokens.FIELD_IDENTIFIER, JET_FIELD_IDENTIFIER);
|
||||||
keys1.put(JetTokens.INTEGER_LITERAL, JET_NUMBER);
|
keys1.put(JetTokens.INTEGER_LITERAL, JET_NUMBER);
|
||||||
keys1.put(JetTokens.LONG_LITERAL, JET_NUMBER);
|
keys1.put(JetTokens.LONG_LITERAL, JET_NUMBER);
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* @author max
|
||||||
|
*/
|
||||||
|
package org.jetbrains.jet.lang.annotations;
|
||||||
|
|
||||||
|
import com.intellij.lang.ASTNode;
|
||||||
|
import com.intellij.lang.annotation.AnnotationHolder;
|
||||||
|
import com.intellij.lang.annotation.Annotator;
|
||||||
|
import com.intellij.psi.PsiElement;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.jet.lang.JetHighlighter;
|
||||||
|
import org.jetbrains.jet.lang.psi.*;
|
||||||
|
import org.jetbrains.jet.lexer.JetTokens;
|
||||||
|
|
||||||
|
public class LabelsAnnotator implements Annotator {
|
||||||
|
public void annotate(@NotNull PsiElement element, @NotNull final AnnotationHolder holder) {
|
||||||
|
element.accept(new JetVisitor() {
|
||||||
|
@Override
|
||||||
|
public void visitPrefixExpression(JetPrefixExpression expression) {
|
||||||
|
ASTNode operationTokenNode = expression.getOperationTokenNode();
|
||||||
|
if (JetTokens.LABELS.contains(operationTokenNode.getElementType())) {
|
||||||
|
holder.createInfoAnnotation(operationTokenNode, null).setTextAttributes(JetHighlighter.JET_LABEL_IDENTIFIER);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void visitLabelQualifiedExpression(JetLabelQualifiedExpression expression) {
|
||||||
|
ASTNode targetLabelNode = expression.getTargetLabelNode();
|
||||||
|
if (targetLabelNode != null) {
|
||||||
|
holder.createInfoAnnotation(targetLabelNode, null).setTextAttributes(JetHighlighter.JET_LABEL_IDENTIFIER);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -34,7 +34,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
|
|
||||||
private static final TokenSet EXPRESSION_FIRST = TokenSet.orSet(TokenSet.create(
|
private static final TokenSet EXPRESSION_FIRST = TokenSet.orSet(TokenSet.create(
|
||||||
// Prefix
|
// Prefix
|
||||||
MINUS, PLUS, MINUSMINUS, PLUSPLUS, EXCL, LBRACKET,
|
MINUS, PLUS, MINUSMINUS, PLUSPLUS, EXCL, LBRACKET, LABEL_IDENTIFIER, AT, ATAT,
|
||||||
// Atomic
|
// Atomic
|
||||||
|
|
||||||
LPAR, // parenthesized
|
LPAR, // parenthesized
|
||||||
@@ -91,7 +91,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
private enum Precedence {
|
private enum Precedence {
|
||||||
POSTFIX(PLUSPLUS, MINUSMINUS), // typeArguments? valueArguments : typeArguments : arrayAccess
|
POSTFIX(PLUSPLUS, MINUSMINUS), // typeArguments? valueArguments : typeArguments : arrayAccess
|
||||||
|
|
||||||
PREFIX(MINUS, PLUS, MINUSMINUS, PLUSPLUS, EXCL) { // attributes
|
PREFIX(MINUS, PLUS, MINUSMINUS, PLUSPLUS, EXCL, LABEL_IDENTIFIER, AT, ATAT) { // attributes
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void parseHigherPrecedence(JetExpressionParsing parser) {
|
public void parseHigherPrecedence(JetExpressionParsing parser) {
|
||||||
@@ -278,8 +278,8 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
*
|
*
|
||||||
* postfixUnaryOperation
|
* postfixUnaryOperation
|
||||||
* : "++" : "--"
|
* : "++" : "--"
|
||||||
* : typeArguments? valueArguments
|
* : typeArguments? valueArguments (label? functionLiteral)
|
||||||
* : typeArguments
|
* : typeArguments (label? functionLiteral)
|
||||||
* : arrayAccess
|
* : arrayAccess
|
||||||
* : memberAccessOperation postfixUnaryOperation // TODO: Review
|
* : memberAccessOperation postfixUnaryOperation // TODO: Review
|
||||||
* ;
|
* ;
|
||||||
@@ -354,12 +354,19 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* expression functionLiteral?
|
* expression (label? functionLiteral)?
|
||||||
*/
|
*/
|
||||||
protected boolean parseCallWithClosure() {
|
protected boolean parseCallWithClosure() {
|
||||||
boolean success = false;
|
boolean success = false;
|
||||||
while (!myBuilder.newlineBeforeCurrentToken() && at(LBRACE)) {
|
while (!myBuilder.newlineBeforeCurrentToken()
|
||||||
parseFunctionLiteral();
|
&& (at(LBRACE)
|
||||||
|
|| atSet(LABELS) && lookahead(1) == LBRACE)) {
|
||||||
|
if (!at(LBRACE)) {
|
||||||
|
assert _atSet(LABELS);
|
||||||
|
parsePrefixExpression();
|
||||||
|
} else {
|
||||||
|
parseFunctionLiteral();
|
||||||
|
}
|
||||||
success = true;
|
success = true;
|
||||||
}
|
}
|
||||||
return success;
|
return success;
|
||||||
@@ -368,7 +375,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
/*
|
/*
|
||||||
* atomicExpression
|
* atomicExpression
|
||||||
* : tupleLiteral // or parenthesized expression
|
* : tupleLiteral // or parenthesized expression
|
||||||
* : "this" ("<" type ">")?
|
* : "this" label? ("<" type ">")?
|
||||||
* : "typeof" "(" expression ")"
|
* : "typeof" "(" expression ")"
|
||||||
* : "new" constructorInvocation
|
* : "new" constructorInvocation
|
||||||
* : objectLiteral
|
* : objectLiteral
|
||||||
@@ -1231,13 +1238,8 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* : "continue" stringLiteral?
|
* : "continue" label?
|
||||||
* : "break" stringLiteral?
|
* : "break" label?
|
||||||
*
|
|
||||||
* stringLiteral
|
|
||||||
* : StringWithTemplates
|
|
||||||
* : NoEscapeString
|
|
||||||
* ;
|
|
||||||
*/
|
*/
|
||||||
private void parseJump(JetNodeType type) {
|
private void parseJump(JetNodeType type) {
|
||||||
assert _at(BREAK_KEYWORD) || _at(CONTINUE_KEYWORD);
|
assert _at(BREAK_KEYWORD) || _at(CONTINUE_KEYWORD);
|
||||||
@@ -1246,13 +1248,13 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
|
|
||||||
advance(); // BREAK_KEYWORD or CONTINUE_KEYWORD
|
advance(); // BREAK_KEYWORD or CONTINUE_KEYWORD
|
||||||
|
|
||||||
if (!eol() && (at(RAW_STRING_LITERAL) || at(STRING_LITERAL))) advance(); // RAW_STRING_LITERAL or STRING_LITERAL
|
if (!eol() && atSet(LABELS)) advance(); // LABELS
|
||||||
|
|
||||||
marker.done(type);
|
marker.done(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* "return" expression?
|
* "return" label? expression?
|
||||||
*/
|
*/
|
||||||
private void parseReturn() {
|
private void parseReturn() {
|
||||||
assert _at(RETURN_KEYWORD);
|
assert _at(RETURN_KEYWORD);
|
||||||
@@ -1261,6 +1263,10 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
|
|
||||||
advance(); // RETURN_KEYWORD
|
advance(); // RETURN_KEYWORD
|
||||||
|
|
||||||
|
if (atSet(LABELS)) {
|
||||||
|
advance(); // LABELS
|
||||||
|
}
|
||||||
|
|
||||||
if (atSet(EXPRESSION_FIRST) && !at(EOL_OR_SEMICOLON)) parseExpression();
|
if (atSet(EXPRESSION_FIRST) && !at(EOL_OR_SEMICOLON)) parseExpression();
|
||||||
|
|
||||||
returnExpression.done(RETURN);
|
returnExpression.done(RETURN);
|
||||||
@@ -1379,12 +1385,17 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* "this" ("<" type ">")?
|
* "this" label? ("<" type ">")?
|
||||||
*/
|
*/
|
||||||
private void parseThisExpression() {
|
private void parseThisExpression() {
|
||||||
assert _at(THIS_KEYWORD);
|
assert _at(THIS_KEYWORD);
|
||||||
PsiBuilder.Marker mark = mark();
|
PsiBuilder.Marker mark = mark();
|
||||||
advance(); // THIS_KEYWORD
|
advance(); // THIS_KEYWORD
|
||||||
|
|
||||||
|
if (atSet(LABELS)) {
|
||||||
|
advance(); // LABELS
|
||||||
|
}
|
||||||
|
|
||||||
if (at(LT)) {
|
if (at(LT)) {
|
||||||
// This may be "this < foo" or "this<foo>", thus the backtracking
|
// This may be "this < foo" or "this<foo>", thus the backtracking
|
||||||
PsiBuilder.Marker supertype = mark();
|
PsiBuilder.Marker supertype = mark();
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import org.jetbrains.jet.lexer.JetTokens;
|
|||||||
/**
|
/**
|
||||||
* @author max
|
* @author max
|
||||||
*/
|
*/
|
||||||
public class JetBreakExpression extends JetExpression {
|
public class JetBreakExpression extends JetLabelQualifiedExpression {
|
||||||
public JetBreakExpression(@NotNull ASTNode node) {
|
public JetBreakExpression(@NotNull ASTNode node) {
|
||||||
super(node);
|
super(node);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import org.jetbrains.jet.lexer.JetTokens;
|
|||||||
/**
|
/**
|
||||||
* @author max
|
* @author max
|
||||||
*/
|
*/
|
||||||
public class JetContinueExpression extends JetExpression {
|
public class JetContinueExpression extends JetLabelQualifiedExpression {
|
||||||
public JetContinueExpression(@NotNull ASTNode node) {
|
public JetContinueExpression(@NotNull ASTNode node) {
|
||||||
super(node);
|
super(node);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package org.jetbrains.jet.lang.psi;
|
||||||
|
|
||||||
|
import com.intellij.lang.ASTNode;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
import org.jetbrains.jet.lexer.JetToken;
|
||||||
|
import org.jetbrains.jet.lexer.JetTokens;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author abreslav
|
||||||
|
*/
|
||||||
|
public class JetLabelQualifiedExpression extends JetExpression {
|
||||||
|
|
||||||
|
public JetLabelQualifiedExpression(@NotNull ASTNode node) {
|
||||||
|
super(node);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public JetToken getTargetLabel() {
|
||||||
|
ASTNode targetLabelNode = getTargetLabelNode();
|
||||||
|
if (targetLabelNode == null) return null;
|
||||||
|
return (JetToken) targetLabelNode.getElementType();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public ASTNode getTargetLabelNode() {
|
||||||
|
return getNode().findChildByType(JetTokens.LABELS);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -7,7 +7,7 @@ import org.jetbrains.annotations.Nullable;
|
|||||||
/**
|
/**
|
||||||
* @author max
|
* @author max
|
||||||
*/
|
*/
|
||||||
public class JetReturnExpression extends JetExpression {
|
public class JetReturnExpression extends JetLabelQualifiedExpression {
|
||||||
public JetReturnExpression(@NotNull ASTNode node) {
|
public JetReturnExpression(@NotNull ASTNode node) {
|
||||||
super(node);
|
super(node);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import org.jetbrains.jet.JetNodeTypes;
|
|||||||
/**
|
/**
|
||||||
* @author max
|
* @author max
|
||||||
*/
|
*/
|
||||||
public class JetThisExpression extends JetExpression {
|
public class JetThisExpression extends JetLabelQualifiedExpression {
|
||||||
public JetThisExpression(@NotNull ASTNode node) {
|
public JetThisExpression(@NotNull ASTNode node) {
|
||||||
super(node);
|
super(node);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -171,6 +171,10 @@ public class JetVisitor extends PsiElementVisitor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void visitReturnExpression(JetReturnExpression expression) {
|
public void visitReturnExpression(JetReturnExpression expression) {
|
||||||
|
visitLabelQualifiedExpression(expression);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void visitLabelQualifiedExpression(JetLabelQualifiedExpression expression) {
|
||||||
visitExpression(expression);
|
visitExpression(expression);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -179,11 +183,11 @@ public class JetVisitor extends PsiElementVisitor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void visitBreakExpression(JetBreakExpression expression) {
|
public void visitBreakExpression(JetBreakExpression expression) {
|
||||||
visitExpression(expression);
|
visitLabelQualifiedExpression(expression);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void visitContinueExpression(JetContinueExpression expression) {
|
public void visitContinueExpression(JetContinueExpression expression) {
|
||||||
visitExpression(expression);
|
visitLabelQualifiedExpression(expression);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void visitIfExpression(JetIfExpression expression) {
|
public void visitIfExpression(JetIfExpression expression) {
|
||||||
@@ -271,7 +275,7 @@ public class JetVisitor extends PsiElementVisitor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void visitThisExpression(JetThisExpression expression) {
|
public void visitThisExpression(JetThisExpression expression) {
|
||||||
visitExpression(expression);
|
visitLabelQualifiedExpression(expression);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void visitParenthesizedExpression(JetParenthesizedExpression expression) {
|
public void visitParenthesizedExpression(JetParenthesizedExpression expression) {
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ PLAIN_IDENTIFIER=[:jletter:] [:jletterdigit:]*
|
|||||||
ESCAPED_IDENTIFIER = `{PLAIN_IDENTIFIER}`
|
ESCAPED_IDENTIFIER = `{PLAIN_IDENTIFIER}`
|
||||||
IDENTIFIER = {PLAIN_IDENTIFIER}|{ESCAPED_IDENTIFIER}
|
IDENTIFIER = {PLAIN_IDENTIFIER}|{ESCAPED_IDENTIFIER}
|
||||||
FIELD_IDENTIFIER = \${IDENTIFIER}
|
FIELD_IDENTIFIER = \${IDENTIFIER}
|
||||||
|
LABEL_IDENTIFIER = \@{IDENTIFIER}
|
||||||
|
|
||||||
BLOCK_COMMENT=("/*"[^"*"]{COMMENT_TAIL})|"/*"
|
BLOCK_COMMENT=("/*"[^"*"]{COMMENT_TAIL})|"/*"
|
||||||
// TODO: Wiki markup for doc comments?
|
// TODO: Wiki markup for doc comments?
|
||||||
@@ -119,6 +120,7 @@ RAW_STRING_LITERAL = {THREE_QUO} {QUO_STRING_CHAR}* {THREE_QUO}?
|
|||||||
|
|
||||||
<YYINITIAL> {FIELD_IDENTIFIER} { return JetTokens.FIELD_IDENTIFIER; }
|
<YYINITIAL> {FIELD_IDENTIFIER} { return JetTokens.FIELD_IDENTIFIER; }
|
||||||
<YYINITIAL> {IDENTIFIER} { return JetTokens.IDENTIFIER; }
|
<YYINITIAL> {IDENTIFIER} { return JetTokens.IDENTIFIER; }
|
||||||
|
<YYINITIAL> {LABEL_IDENTIFIER} { return JetTokens.LABEL_IDENTIFIER; }
|
||||||
|
|
||||||
<YYINITIAL> "===" { return JetTokens.EQEQEQ ; }
|
<YYINITIAL> "===" { return JetTokens.EQEQEQ ; }
|
||||||
<YYINITIAL> "!==" { return JetTokens.EXCLEQEQEQ; }
|
<YYINITIAL> "!==" { return JetTokens.EXCLEQEQEQ; }
|
||||||
@@ -144,6 +146,7 @@ RAW_STRING_LITERAL = {THREE_QUO} {QUO_STRING_CHAR}* {THREE_QUO}?
|
|||||||
<YYINITIAL> "->" { return JetTokens.ARROW ; }
|
<YYINITIAL> "->" { return JetTokens.ARROW ; }
|
||||||
<YYINITIAL> "=>" { return JetTokens.DOUBLE_ARROW; }
|
<YYINITIAL> "=>" { return JetTokens.DOUBLE_ARROW; }
|
||||||
<YYINITIAL> ".." { return JetTokens.RANGE ; }
|
<YYINITIAL> ".." { return JetTokens.RANGE ; }
|
||||||
|
<YYINITIAL> "@@" { return JetTokens.ATAT ; }
|
||||||
<YYINITIAL> "[" { return JetTokens.LBRACKET ; }
|
<YYINITIAL> "[" { return JetTokens.LBRACKET ; }
|
||||||
<YYINITIAL> "]" { return JetTokens.RBRACKET ; }
|
<YYINITIAL> "]" { return JetTokens.RBRACKET ; }
|
||||||
<YYINITIAL> "{" { return JetTokens.LBRACE ; }
|
<YYINITIAL> "{" { return JetTokens.LBRACE ; }
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ public interface JetTokens {
|
|||||||
|
|
||||||
|
|
||||||
JetToken IDENTIFIER = new JetToken("IDENTIFIER");
|
JetToken IDENTIFIER = new JetToken("IDENTIFIER");
|
||||||
|
JetToken LABEL_IDENTIFIER = new JetToken("LABEL_IDENTIFIER");
|
||||||
JetToken FIELD_IDENTIFIER = new JetToken("FIELD_IDENTIFIER");
|
JetToken FIELD_IDENTIFIER = new JetToken("FIELD_IDENTIFIER");
|
||||||
|
|
||||||
JetToken LBRACKET = new JetToken("LBRACKET");
|
JetToken LBRACKET = new JetToken("LBRACKET");
|
||||||
@@ -103,6 +104,8 @@ public interface JetTokens {
|
|||||||
JetToken NOT_IS = JetKeywordToken.keyword("NOT_IS");
|
JetToken NOT_IS = JetKeywordToken.keyword("NOT_IS");
|
||||||
JetToken HASH = new JetToken("HASH");
|
JetToken HASH = new JetToken("HASH");
|
||||||
JetToken AT = new JetToken("AT");
|
JetToken AT = new JetToken("AT");
|
||||||
|
JetToken ATAT = new JetToken("ATAT");
|
||||||
|
TokenSet LABELS = TokenSet.create(AT, ATAT, LABEL_IDENTIFIER);
|
||||||
|
|
||||||
JetToken COMMA = new JetToken("COMMA");
|
JetToken COMMA = new JetToken("COMMA");
|
||||||
|
|
||||||
@@ -158,5 +161,5 @@ public interface JetTokens {
|
|||||||
TokenSet OPERATIONS = TokenSet.create(AS_KEYWORD, IS_KEYWORD, IN_KEYWORD, DOT, PLUSPLUS, MINUSMINUS, MUL, PLUS,
|
TokenSet OPERATIONS = TokenSet.create(AS_KEYWORD, IS_KEYWORD, IN_KEYWORD, DOT, PLUSPLUS, MINUSMINUS, MUL, PLUS,
|
||||||
MINUS, EXCL, DIV, PERC, LT, GT, LTEQ, GTEQ, EQEQEQ, ARROW, EXCLEQEQEQ, EQEQ, EXCLEQ, ANDAND, OROR,
|
MINUS, EXCL, DIV, PERC, LT, GT, LTEQ, GTEQ, EQEQEQ, ARROW, EXCLEQEQEQ, EQEQ, EXCLEQ, ANDAND, OROR,
|
||||||
SAFE_ACCESS, ELVIS, MAP, FILTER, QUEST, COLON, SEMICOLON, RANGE, EQ, MULTEQ, DIVEQ, PERCEQ, PLUSEQ, MINUSEQ,
|
SAFE_ACCESS, ELVIS, MAP, FILTER, QUEST, COLON, SEMICOLON, RANGE, EQ, MULTEQ, DIVEQ, PERCEQ, PLUSEQ, MINUSEQ,
|
||||||
NOT_IN, NOT_IS, HASH, IDENTIFIER);
|
NOT_IN, NOT_IS, HASH, IDENTIFIER, LABEL_IDENTIFIER, ATAT, AT);
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -3,9 +3,9 @@ fun a(
|
|||||||
a : foo = throw new Foo,
|
a : foo = throw new Foo,
|
||||||
a : foo = return 10,
|
a : foo = return 10,
|
||||||
a : foo = break,
|
a : foo = break,
|
||||||
a : foo = break "la",
|
a : foo = break @la,
|
||||||
a : foo = continue,
|
a : foo = continue,
|
||||||
a : foo = continue "la",
|
a : foo = continue @la,
|
||||||
a : foo = if (10) foo else bar,
|
a : foo = if (10) foo else bar,
|
||||||
a : foo = if (10) foo
|
a : foo = if (10) foo
|
||||||
) {
|
) {
|
||||||
@@ -13,11 +13,11 @@ fun a(
|
|||||||
return
|
return
|
||||||
10
|
10
|
||||||
break
|
break
|
||||||
"la"
|
@la
|
||||||
break "la"
|
break @la
|
||||||
continue
|
continue
|
||||||
"la"
|
@la
|
||||||
continue "la"
|
continue @la
|
||||||
if (foo)
|
if (foo)
|
||||||
if (foo)
|
if (foo)
|
||||||
bar
|
bar
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ JetFile: ControlStructures.jet
|
|||||||
BREAK
|
BREAK
|
||||||
PsiElement(break)('break')
|
PsiElement(break)('break')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(STRING_LITERAL)('"la"')
|
PsiElement(LABEL_IDENTIFIER)('@la')
|
||||||
PsiElement(COMMA)(',')
|
PsiElement(COMMA)(',')
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
VALUE_PARAMETER
|
VALUE_PARAMETER
|
||||||
@@ -117,7 +117,7 @@ JetFile: ControlStructures.jet
|
|||||||
CONTINUE
|
CONTINUE
|
||||||
PsiElement(continue)('continue')
|
PsiElement(continue)('continue')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(STRING_LITERAL)('"la"')
|
PsiElement(LABEL_IDENTIFIER)('@la')
|
||||||
PsiElement(COMMA)(',')
|
PsiElement(COMMA)(',')
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
VALUE_PARAMETER
|
VALUE_PARAMETER
|
||||||
@@ -197,24 +197,24 @@ JetFile: ControlStructures.jet
|
|||||||
BREAK
|
BREAK
|
||||||
PsiElement(break)('break')
|
PsiElement(break)('break')
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
STRING_CONSTANT
|
PREFIX_EXPRESSION
|
||||||
PsiElement(STRING_LITERAL)('"la"')
|
PsiElement(LABEL_IDENTIFIER)('@la')
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
BREAK
|
BREAK
|
||||||
PsiElement(break)('break')
|
PsiElement(break)('break')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(STRING_LITERAL)('"la"')
|
PsiElement(LABEL_IDENTIFIER)('@la')
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
CONTINUE
|
CONTINUE
|
||||||
PsiElement(continue)('continue')
|
PsiElement(continue)('continue')
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
STRING_CONSTANT
|
PREFIX_EXPRESSION
|
||||||
PsiElement(STRING_LITERAL)('"la"')
|
PsiElement(LABEL_IDENTIFIER)('@la')
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
CONTINUE
|
CONTINUE
|
||||||
PsiElement(continue)('continue')
|
PsiElement(continue)('continue')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(STRING_LITERAL)('"la"')
|
PsiElement(LABEL_IDENTIFIER)('@la')
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
IF
|
IF
|
||||||
PsiElement(if)('if')
|
PsiElement(if)('if')
|
||||||
|
|||||||
@@ -0,0 +1,60 @@
|
|||||||
|
fun foo() {
|
||||||
|
return
|
||||||
|
return 1
|
||||||
|
return (@a 1)
|
||||||
|
|
||||||
|
return@
|
||||||
|
return@ 1
|
||||||
|
return@ (@ 1)
|
||||||
|
return@ @ 1
|
||||||
|
|
||||||
|
return@a
|
||||||
|
return@a 1
|
||||||
|
return@a (@a 1)
|
||||||
|
return@a @a 1
|
||||||
|
|
||||||
|
return@@
|
||||||
|
return@@ 1
|
||||||
|
return@@ (@@ 1)
|
||||||
|
return@@ @@ 1
|
||||||
|
|
||||||
|
@a return@@
|
||||||
|
@a return@@ 1
|
||||||
|
@a return@@ (@@ 1)
|
||||||
|
@a return@@ @@ 1
|
||||||
|
|
||||||
|
break
|
||||||
|
break@
|
||||||
|
break@a
|
||||||
|
break@@
|
||||||
|
|
||||||
|
continue
|
||||||
|
continue@
|
||||||
|
continue@a
|
||||||
|
continue@@
|
||||||
|
|
||||||
|
a.filter @f{
|
||||||
|
if (1) return
|
||||||
|
return@f true
|
||||||
|
}
|
||||||
|
|
||||||
|
a.filter @{
|
||||||
|
if (1) return
|
||||||
|
return@ true
|
||||||
|
}
|
||||||
|
|
||||||
|
a.filter @@{
|
||||||
|
if (1) return
|
||||||
|
return@@ true
|
||||||
|
}
|
||||||
|
|
||||||
|
this
|
||||||
|
this@
|
||||||
|
this@a
|
||||||
|
this@@
|
||||||
|
|
||||||
|
this<A>
|
||||||
|
this@<A>
|
||||||
|
this@a<A>
|
||||||
|
this@@<A>
|
||||||
|
}
|
||||||
@@ -0,0 +1,377 @@
|
|||||||
|
JetFile: Labels.jet
|
||||||
|
NAMESPACE
|
||||||
|
FUN
|
||||||
|
PsiElement(fun)('fun')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PsiElement(IDENTIFIER)('foo')
|
||||||
|
TYPE_PARAMETER_LIST
|
||||||
|
<empty list>
|
||||||
|
VALUE_PARAMETER_LIST
|
||||||
|
PsiElement(LPAR)('(')
|
||||||
|
PsiElement(RPAR)(')')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
BLOCK
|
||||||
|
PsiElement(LBRACE)('{')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
RETURN
|
||||||
|
PsiElement(return)('return')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
RETURN
|
||||||
|
PsiElement(return)('return')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
INTEGER_CONSTANT
|
||||||
|
PsiElement(INTEGER_LITERAL)('1')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
RETURN
|
||||||
|
PsiElement(return)('return')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PARENTHESIZED
|
||||||
|
PsiElement(LPAR)('(')
|
||||||
|
PREFIX_EXPRESSION
|
||||||
|
PsiElement(LABEL_IDENTIFIER)('@a')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
INTEGER_CONSTANT
|
||||||
|
PsiElement(INTEGER_LITERAL)('1')
|
||||||
|
PsiElement(RPAR)(')')
|
||||||
|
PsiWhiteSpace('\n\n ')
|
||||||
|
RETURN
|
||||||
|
PsiElement(return)('return')
|
||||||
|
PsiElement(AT)('@')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
RETURN
|
||||||
|
PsiElement(return)('return')
|
||||||
|
PsiElement(AT)('@')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
INTEGER_CONSTANT
|
||||||
|
PsiElement(INTEGER_LITERAL)('1')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
RETURN
|
||||||
|
PsiElement(return)('return')
|
||||||
|
PsiElement(AT)('@')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PARENTHESIZED
|
||||||
|
PsiElement(LPAR)('(')
|
||||||
|
PREFIX_EXPRESSION
|
||||||
|
PsiElement(AT)('@')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
INTEGER_CONSTANT
|
||||||
|
PsiElement(INTEGER_LITERAL)('1')
|
||||||
|
PsiElement(RPAR)(')')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
RETURN
|
||||||
|
PsiElement(return)('return')
|
||||||
|
PsiElement(AT)('@')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PREFIX_EXPRESSION
|
||||||
|
PsiElement(AT)('@')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
INTEGER_CONSTANT
|
||||||
|
PsiElement(INTEGER_LITERAL)('1')
|
||||||
|
PsiWhiteSpace('\n\n ')
|
||||||
|
RETURN
|
||||||
|
PsiElement(return)('return')
|
||||||
|
PsiElement(LABEL_IDENTIFIER)('@a')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
RETURN
|
||||||
|
PsiElement(return)('return')
|
||||||
|
PsiElement(LABEL_IDENTIFIER)('@a')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
INTEGER_CONSTANT
|
||||||
|
PsiElement(INTEGER_LITERAL)('1')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
RETURN
|
||||||
|
PsiElement(return)('return')
|
||||||
|
PsiElement(LABEL_IDENTIFIER)('@a')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PARENTHESIZED
|
||||||
|
PsiElement(LPAR)('(')
|
||||||
|
PREFIX_EXPRESSION
|
||||||
|
PsiElement(LABEL_IDENTIFIER)('@a')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
INTEGER_CONSTANT
|
||||||
|
PsiElement(INTEGER_LITERAL)('1')
|
||||||
|
PsiElement(RPAR)(')')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
RETURN
|
||||||
|
PsiElement(return)('return')
|
||||||
|
PsiElement(LABEL_IDENTIFIER)('@a')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PREFIX_EXPRESSION
|
||||||
|
PsiElement(LABEL_IDENTIFIER)('@a')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
INTEGER_CONSTANT
|
||||||
|
PsiElement(INTEGER_LITERAL)('1')
|
||||||
|
PsiWhiteSpace('\n\n ')
|
||||||
|
RETURN
|
||||||
|
PsiElement(return)('return')
|
||||||
|
PsiElement(ATAT)('@@')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
RETURN
|
||||||
|
PsiElement(return)('return')
|
||||||
|
PsiElement(ATAT)('@@')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
INTEGER_CONSTANT
|
||||||
|
PsiElement(INTEGER_LITERAL)('1')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
RETURN
|
||||||
|
PsiElement(return)('return')
|
||||||
|
PsiElement(ATAT)('@@')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PARENTHESIZED
|
||||||
|
PsiElement(LPAR)('(')
|
||||||
|
PREFIX_EXPRESSION
|
||||||
|
PsiElement(ATAT)('@@')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
INTEGER_CONSTANT
|
||||||
|
PsiElement(INTEGER_LITERAL)('1')
|
||||||
|
PsiElement(RPAR)(')')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
RETURN
|
||||||
|
PsiElement(return)('return')
|
||||||
|
PsiElement(ATAT)('@@')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PREFIX_EXPRESSION
|
||||||
|
PsiElement(ATAT)('@@')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
INTEGER_CONSTANT
|
||||||
|
PsiElement(INTEGER_LITERAL)('1')
|
||||||
|
PsiWhiteSpace('\n\n ')
|
||||||
|
PREFIX_EXPRESSION
|
||||||
|
PsiElement(LABEL_IDENTIFIER)('@a')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
RETURN
|
||||||
|
PsiElement(return)('return')
|
||||||
|
PsiElement(ATAT)('@@')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
PREFIX_EXPRESSION
|
||||||
|
PsiElement(LABEL_IDENTIFIER)('@a')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
RETURN
|
||||||
|
PsiElement(return)('return')
|
||||||
|
PsiElement(ATAT)('@@')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
INTEGER_CONSTANT
|
||||||
|
PsiElement(INTEGER_LITERAL)('1')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
PREFIX_EXPRESSION
|
||||||
|
PsiElement(LABEL_IDENTIFIER)('@a')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
RETURN
|
||||||
|
PsiElement(return)('return')
|
||||||
|
PsiElement(ATAT)('@@')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PARENTHESIZED
|
||||||
|
PsiElement(LPAR)('(')
|
||||||
|
PREFIX_EXPRESSION
|
||||||
|
PsiElement(ATAT)('@@')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
INTEGER_CONSTANT
|
||||||
|
PsiElement(INTEGER_LITERAL)('1')
|
||||||
|
PsiElement(RPAR)(')')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
PREFIX_EXPRESSION
|
||||||
|
PsiElement(LABEL_IDENTIFIER)('@a')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
RETURN
|
||||||
|
PsiElement(return)('return')
|
||||||
|
PsiElement(ATAT)('@@')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PREFIX_EXPRESSION
|
||||||
|
PsiElement(ATAT)('@@')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
INTEGER_CONSTANT
|
||||||
|
PsiElement(INTEGER_LITERAL)('1')
|
||||||
|
PsiWhiteSpace('\n\n ')
|
||||||
|
BREAK
|
||||||
|
PsiElement(break)('break')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
BREAK
|
||||||
|
PsiElement(break)('break')
|
||||||
|
PsiElement(AT)('@')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
BREAK
|
||||||
|
PsiElement(break)('break')
|
||||||
|
PsiElement(LABEL_IDENTIFIER)('@a')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
BREAK
|
||||||
|
PsiElement(break)('break')
|
||||||
|
PsiElement(ATAT)('@@')
|
||||||
|
PsiWhiteSpace('\n\n ')
|
||||||
|
CONTINUE
|
||||||
|
PsiElement(continue)('continue')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
CONTINUE
|
||||||
|
PsiElement(continue)('continue')
|
||||||
|
PsiElement(AT)('@')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
CONTINUE
|
||||||
|
PsiElement(continue)('continue')
|
||||||
|
PsiElement(LABEL_IDENTIFIER)('@a')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
CONTINUE
|
||||||
|
PsiElement(continue)('continue')
|
||||||
|
PsiElement(ATAT)('@@')
|
||||||
|
PsiWhiteSpace('\n\n ')
|
||||||
|
CALL_EXPRESSION
|
||||||
|
DOT_QIALIFIED_EXPRESSION
|
||||||
|
REFERENCE_EXPRESSION
|
||||||
|
PsiElement(IDENTIFIER)('a')
|
||||||
|
PsiElement(DOT)('.')
|
||||||
|
REFERENCE_EXPRESSION
|
||||||
|
PsiElement(IDENTIFIER)('filter')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PREFIX_EXPRESSION
|
||||||
|
PsiElement(LABEL_IDENTIFIER)('@f')
|
||||||
|
FUNCTION_LITERAL
|
||||||
|
PsiElement(LBRACE)('{')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
BODY
|
||||||
|
IF
|
||||||
|
PsiElement(if)('if')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PsiElement(LPAR)('(')
|
||||||
|
CONDITION
|
||||||
|
INTEGER_CONSTANT
|
||||||
|
PsiElement(INTEGER_LITERAL)('1')
|
||||||
|
PsiElement(RPAR)(')')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
THEN
|
||||||
|
RETURN
|
||||||
|
PsiElement(return)('return')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
RETURN
|
||||||
|
PsiElement(return)('return')
|
||||||
|
PsiElement(LABEL_IDENTIFIER)('@f')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
BOOLEAN_CONSTANT
|
||||||
|
PsiElement(true)('true')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
PsiElement(RBRACE)('}')
|
||||||
|
PsiWhiteSpace('\n\n ')
|
||||||
|
CALL_EXPRESSION
|
||||||
|
DOT_QIALIFIED_EXPRESSION
|
||||||
|
REFERENCE_EXPRESSION
|
||||||
|
PsiElement(IDENTIFIER)('a')
|
||||||
|
PsiElement(DOT)('.')
|
||||||
|
REFERENCE_EXPRESSION
|
||||||
|
PsiElement(IDENTIFIER)('filter')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PREFIX_EXPRESSION
|
||||||
|
PsiElement(AT)('@')
|
||||||
|
FUNCTION_LITERAL
|
||||||
|
PsiElement(LBRACE)('{')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
BODY
|
||||||
|
IF
|
||||||
|
PsiElement(if)('if')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PsiElement(LPAR)('(')
|
||||||
|
CONDITION
|
||||||
|
INTEGER_CONSTANT
|
||||||
|
PsiElement(INTEGER_LITERAL)('1')
|
||||||
|
PsiElement(RPAR)(')')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
THEN
|
||||||
|
RETURN
|
||||||
|
PsiElement(return)('return')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
RETURN
|
||||||
|
PsiElement(return)('return')
|
||||||
|
PsiElement(AT)('@')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
BOOLEAN_CONSTANT
|
||||||
|
PsiElement(true)('true')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
PsiElement(RBRACE)('}')
|
||||||
|
PsiWhiteSpace('\n\n ')
|
||||||
|
CALL_EXPRESSION
|
||||||
|
DOT_QIALIFIED_EXPRESSION
|
||||||
|
REFERENCE_EXPRESSION
|
||||||
|
PsiElement(IDENTIFIER)('a')
|
||||||
|
PsiElement(DOT)('.')
|
||||||
|
REFERENCE_EXPRESSION
|
||||||
|
PsiElement(IDENTIFIER)('filter')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PREFIX_EXPRESSION
|
||||||
|
PsiElement(ATAT)('@@')
|
||||||
|
FUNCTION_LITERAL
|
||||||
|
PsiElement(LBRACE)('{')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
BODY
|
||||||
|
IF
|
||||||
|
PsiElement(if)('if')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PsiElement(LPAR)('(')
|
||||||
|
CONDITION
|
||||||
|
INTEGER_CONSTANT
|
||||||
|
PsiElement(INTEGER_LITERAL)('1')
|
||||||
|
PsiElement(RPAR)(')')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
THEN
|
||||||
|
RETURN
|
||||||
|
PsiElement(return)('return')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
RETURN
|
||||||
|
PsiElement(return)('return')
|
||||||
|
PsiElement(ATAT)('@@')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
BOOLEAN_CONSTANT
|
||||||
|
PsiElement(true)('true')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
PsiElement(RBRACE)('}')
|
||||||
|
PsiWhiteSpace('\n\n ')
|
||||||
|
THIS_EXPRESSION
|
||||||
|
PsiElement(this)('this')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
THIS_EXPRESSION
|
||||||
|
PsiElement(this)('this')
|
||||||
|
PsiElement(AT)('@')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
THIS_EXPRESSION
|
||||||
|
PsiElement(this)('this')
|
||||||
|
PsiElement(LABEL_IDENTIFIER)('@a')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
THIS_EXPRESSION
|
||||||
|
PsiElement(this)('this')
|
||||||
|
PsiElement(ATAT)('@@')
|
||||||
|
PsiWhiteSpace('\n\n ')
|
||||||
|
THIS_EXPRESSION
|
||||||
|
PsiElement(this)('this')
|
||||||
|
PsiElement(LT)('<')
|
||||||
|
TYPE_REFERENCE
|
||||||
|
USER_TYPE
|
||||||
|
REFERENCE_EXPRESSION
|
||||||
|
PsiElement(IDENTIFIER)('A')
|
||||||
|
PsiElement(GT)('>')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
THIS_EXPRESSION
|
||||||
|
PsiElement(this)('this')
|
||||||
|
PsiElement(AT)('@')
|
||||||
|
PsiElement(LT)('<')
|
||||||
|
TYPE_REFERENCE
|
||||||
|
USER_TYPE
|
||||||
|
REFERENCE_EXPRESSION
|
||||||
|
PsiElement(IDENTIFIER)('A')
|
||||||
|
PsiElement(GT)('>')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
THIS_EXPRESSION
|
||||||
|
PsiElement(this)('this')
|
||||||
|
PsiElement(LABEL_IDENTIFIER)('@a')
|
||||||
|
PsiElement(LT)('<')
|
||||||
|
TYPE_REFERENCE
|
||||||
|
USER_TYPE
|
||||||
|
REFERENCE_EXPRESSION
|
||||||
|
PsiElement(IDENTIFIER)('A')
|
||||||
|
PsiElement(GT)('>')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
THIS_EXPRESSION
|
||||||
|
PsiElement(this)('this')
|
||||||
|
PsiElement(ATAT)('@@')
|
||||||
|
PsiElement(LT)('<')
|
||||||
|
TYPE_REFERENCE
|
||||||
|
USER_TYPE
|
||||||
|
REFERENCE_EXPRESSION
|
||||||
|
PsiElement(IDENTIFIER)('A')
|
||||||
|
PsiElement(GT)('>')
|
||||||
|
PsiWhiteSpace('\n')
|
||||||
|
PsiElement(RBRACE)('}')
|
||||||
@@ -27,9 +27,9 @@ fun a(
|
|||||||
a : foo = throw new Foo,
|
a : foo = throw new Foo,
|
||||||
a : foo = return 10,
|
a : foo = return 10,
|
||||||
a : foo = break,
|
a : foo = break,
|
||||||
a : foo = break "la",
|
a : foo = break @la,
|
||||||
a : foo = continue,
|
a : foo = continue,
|
||||||
a : foo = continue "la",
|
a : foo = continue @la,
|
||||||
a : foo = 10,
|
a : foo = 10,
|
||||||
a : foo = 10,
|
a : foo = 10,
|
||||||
a : foo = 10,
|
a : foo = 10,
|
||||||
@@ -39,9 +39,9 @@ fun a(
|
|||||||
return
|
return
|
||||||
10
|
10
|
||||||
break
|
break
|
||||||
"la"
|
@la
|
||||||
break "la"
|
break @la
|
||||||
continue
|
continue
|
||||||
"la"
|
@la
|
||||||
continue "la"
|
continue @la
|
||||||
}
|
}
|
||||||
@@ -550,7 +550,7 @@ JetFile: SimpleExpressions.jet
|
|||||||
BREAK
|
BREAK
|
||||||
PsiElement(break)('break')
|
PsiElement(break)('break')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(STRING_LITERAL)('"la"')
|
PsiElement(LABEL_IDENTIFIER)('@la')
|
||||||
PsiElement(COMMA)(',')
|
PsiElement(COMMA)(',')
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
VALUE_PARAMETER
|
VALUE_PARAMETER
|
||||||
@@ -584,7 +584,7 @@ JetFile: SimpleExpressions.jet
|
|||||||
CONTINUE
|
CONTINUE
|
||||||
PsiElement(continue)('continue')
|
PsiElement(continue)('continue')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(STRING_LITERAL)('"la"')
|
PsiElement(LABEL_IDENTIFIER)('@la')
|
||||||
PsiElement(COMMA)(',')
|
PsiElement(COMMA)(',')
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
VALUE_PARAMETER
|
VALUE_PARAMETER
|
||||||
@@ -670,23 +670,23 @@ JetFile: SimpleExpressions.jet
|
|||||||
BREAK
|
BREAK
|
||||||
PsiElement(break)('break')
|
PsiElement(break)('break')
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
STRING_CONSTANT
|
PREFIX_EXPRESSION
|
||||||
PsiElement(STRING_LITERAL)('"la"')
|
PsiElement(LABEL_IDENTIFIER)('@la')
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
BREAK
|
BREAK
|
||||||
PsiElement(break)('break')
|
PsiElement(break)('break')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(STRING_LITERAL)('"la"')
|
PsiElement(LABEL_IDENTIFIER)('@la')
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
CONTINUE
|
CONTINUE
|
||||||
PsiElement(continue)('continue')
|
PsiElement(continue)('continue')
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
STRING_CONSTANT
|
PREFIX_EXPRESSION
|
||||||
PsiElement(STRING_LITERAL)('"la"')
|
PsiElement(LABEL_IDENTIFIER)('@la')
|
||||||
PsiWhiteSpace('\n ')
|
PsiWhiteSpace('\n ')
|
||||||
CONTINUE
|
CONTINUE
|
||||||
PsiElement(continue)('continue')
|
PsiElement(continue)('continue')
|
||||||
PsiWhiteSpace(' ')
|
PsiWhiteSpace(' ')
|
||||||
PsiElement(STRING_LITERAL)('"la"')
|
PsiElement(LABEL_IDENTIFIER)('@la')
|
||||||
PsiWhiteSpace('\n')
|
PsiWhiteSpace('\n')
|
||||||
PsiElement(RBRACE)('}')
|
PsiElement(RBRACE)('}')
|
||||||
Reference in New Issue
Block a user