Add new token COLONCOLON (::) for callable reference

#KT-1183 In Progress
This commit is contained in:
Alexander Udalov
2013-03-12 20:14:17 +04:00
parent d566250b18
commit a6e242d166
5 changed files with 378 additions and 371 deletions
@@ -57,7 +57,8 @@ public class JetExpressionParsing extends AbstractJetParsing {
PLUS, MINUS, EXCL, DIV, PERC, LTEQ,
// TODO GTEQ, foo<bar, baz>=x
EQEQEQ, EXCLEQEQEQ, EQEQ, EXCLEQ, ANDAND, OROR, SAFE_ACCESS, ELVIS,
SEMICOLON, RANGE, EQ, MULTEQ, DIVEQ, PERCEQ, PLUSEQ, MINUSEQ, NOT_IN, NOT_IS, //HASH,
SEMICOLON, RANGE, EQ, MULTEQ, DIVEQ, PERCEQ, PLUSEQ, MINUSEQ, NOT_IN, NOT_IS,
COLONCOLON,
COLON
);
@@ -68,6 +69,8 @@ public class JetExpressionParsing extends AbstractJetParsing {
LBRACKET, LABEL_IDENTIFIER, AT, ATAT,
// Atomic
COLONCOLON, // callable reference
LPAR, // parenthesized
HASH, // Tuple
@@ -128,7 +131,6 @@ public class JetExpressionParsing extends AbstractJetParsing {
@SuppressWarnings({"UnusedDeclaration"})
public enum Precedence {
POSTFIX(PLUSPLUS, MINUSMINUS, EXCLEXCL,
// HASH,
DOT, SAFE_ACCESS), // typeArguments? valueArguments : typeArguments : arrayAccess
PREFIX(MINUS, PLUS, MINUSMINUS, PLUSPLUS, EXCL, LABEL_IDENTIFIER, AT, ATAT) { // attributes
@@ -35,7 +35,7 @@ public class JetCallableReferenceExpression extends JetExpressionImpl {
@NotNull
public JetSimpleNameExpression getCallableReference() {
ASTNode node = getNode().findChildByType(JetTokens.OPERATIONS /* TODO: COLONCOLON */);
ASTNode node = getNode().findChildByType(JetTokens.COLONCOLON);
while (node != null) {
PsiElement psi = node.getPsi();
if (psi instanceof JetSimpleNameExpression) {
@@ -297,6 +297,7 @@ LONG_TEMPLATE_ENTRY_END=\}
"=>" { return JetTokens.DOUBLE_ARROW; }
".." { return JetTokens.RANGE ; }
"@@" { return JetTokens.ATAT ; }
"::" { return JetTokens.COLONCOLON; }
"[" { return JetTokens.LBRACKET ; }
"]" { return JetTokens.RBRACKET ; }
"{" { return JetTokens.LBRACE ; }
@@ -113,6 +113,7 @@ public interface JetTokens {
// JetToken MAP = new JetToken("MAP");
// JetToken FILTER = new JetToken("FILTER");
JetToken QUEST = new JetToken("QUEST");
JetToken COLONCOLON = new JetToken("COLONCOLON");
JetToken COLON = new JetToken("COLON");
JetToken SEMICOLON = new JetToken("SEMICOLON");
JetToken RANGE = new JetToken("RANGE");
@@ -191,7 +192,6 @@ public interface JetTokens {
COLON,
RANGE, EQ, MULTEQ, DIVEQ, PERCEQ, PLUSEQ, MINUSEQ,
NOT_IN, NOT_IS,
// HASH,
IDENTIFIER, LABEL_IDENTIFIER, ATAT, AT);
TokenSet AUGMENTED_ASSIGNMENTS = TokenSet.create(PLUSEQ, MINUSEQ, MULTEQ, PERCEQ, DIVEQ);
File diff suppressed because it is too large Load Diff