From ef9a963ebd46b3814fa78858aac6afad68e0b01f Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Mon, 27 Dec 2010 19:12:21 +0300 Subject: [PATCH] A few basic expressions, no tests --- grammar/src/control.grm | 12 + grammar/src/expressions.grm | 7 +- grammar/src/lexical.grm | 3 + idea/src/org/jetbrains/jet/JetNodeTypes.java | 14 ++ .../jetbrains/jet/lang/JetHighlighter.java | 1 + .../jet/lang/parsing/AbstractJetParsing.java | 60 +++++ .../lang/parsing/JetExpressionParsing.java | 232 +++++++++++++++--- .../jet/lang/parsing/JetParsing.java | 61 +---- .../jet/lang/parsing/PsiBuilderAdapter.java | 10 + idea/src/org/jetbrains/jet/lexer/Jet.flex | 1 + .../org/jetbrains/jet/lexer/JetTokens.java | 11 +- idea/testData/psi/BabySteps.txt | 6 +- idea/testData/psi/BabySteps_ERR.txt | 6 +- idea/testData/psi/Enums.txt | 12 +- 14 files changed, 333 insertions(+), 103 deletions(-) diff --git a/grammar/src/control.grm b/grammar/src/control.grm index 0a80375a059..25e0d893b18 100644 --- a/grammar/src/control.grm +++ b/grammar/src/control.grm @@ -2,6 +2,18 @@ if : "if" "(" expression ")" expression ("else" expression)? ; +try + : "try" block catchBlock* finallyBlock? + ; + +catchBlock + : "catch" valueParameters block + ; + +finallyBlock + : "finally" block + ; + loop : for : while diff --git a/grammar/src/expressions.grm b/grammar/src/expressions.grm index 8f86ad38834..4ebdfecb65f 100644 --- a/grammar/src/expressions.grm +++ b/grammar/src/expressions.grm @@ -11,7 +11,8 @@ expression : expressionWithPrecedences : match : if - : "typeof" // TODO: another keyword + : try + : "typeof" "(" expression ")" : "new" constructorInvocation // TODO: Do we need "new"?, see factory methods : objectLiteral : declaration @@ -165,11 +166,11 @@ listLiteral ; mapLiteral - : "[" mapEntryLiteral{","} "]" + : "[" mapLiteralEntry{","} "]" : "[" ":" "]" ; -mapEntryLiteral +mapLiteralEntry : expression ":" expression ; diff --git a/grammar/src/lexical.grm b/grammar/src/lexical.grm index 2c776cd2519..ca45e033378 100644 --- a/grammar/src/lexical.grm +++ b/grammar/src/lexical.grm @@ -61,6 +61,7 @@ do match out ref +try Soft: wraps -- in a class header @@ -79,4 +80,6 @@ private public internal protected +catch +finally */ \ No newline at end of file diff --git a/idea/src/org/jetbrains/jet/JetNodeTypes.java b/idea/src/org/jetbrains/jet/JetNodeTypes.java index 913b100ede7..f3a0f81f5bf 100644 --- a/idea/src/org/jetbrains/jet/JetNodeTypes.java +++ b/idea/src/org/jetbrains/jet/JetNodeTypes.java @@ -55,6 +55,20 @@ public interface JetNodeTypes { JetNodeType TYPE_CONSTRAINT_LIST = new JetNodeType("TYPE_CONSTRAINT_LIST"); JetNodeType TYPE_CONSTRAINT = new JetNodeType("TYPE_CONSTRAINT"); JetNodeType ENUM_ENTRY = new JetNodeType("ENUM_ENTRY"); + JetNodeType NULL = new JetNodeType("NULL"); + JetNodeType BOOLEAN_CONSTANT = new JetNodeType("BOOLEAN_CONSTANT"); + JetNodeType FLOAT_CONSTANT = new JetNodeType("FLOAT_CONSTANT"); + JetNodeType CHARACTER_CONSTANT = new JetNodeType("CHARACTER_CONSTANT"); + JetNodeType STRING_CONSTANT = new JetNodeType("STRING_CONSTANT"); + JetNodeType INTEGER_CONSTANT = new JetNodeType("INTEGER_CONSTANT"); + JetNodeType SUPERTYE_QUALIFIER = new JetNodeType("SUPERTYE_QUALIFIER"); + JetNodeType LONG_CONSTANT = new JetNodeType("LONG_CONSTANT"); + JetNodeType TUPLE = new JetNodeType("TUPLE"); + JetNodeType MAP_LITERAL_ENTRY = new JetNodeType("MAP_LITERAL_ENTRY"); + JetNodeType MAP_LITERAL = new JetNodeType("MAP_LITERAL"); + JetNodeType RANGE_LITERAL = new JetNodeType("RANGE_LITERAL"); + JetNodeType LIST_LITERAL = new JetNodeType("LIST_LITERAL"); + JetNodeType TYPEOF = new JetNodeType("TYPEOF"); IElementType NAMESPACE_NAME = new JetNodeType("NAMESPACE_NAME"); } diff --git a/idea/src/org/jetbrains/jet/lang/JetHighlighter.java b/idea/src/org/jetbrains/jet/lang/JetHighlighter.java index a146560346a..fe413552848 100644 --- a/idea/src/org/jetbrains/jet/lang/JetHighlighter.java +++ b/idea/src/org/jetbrains/jet/lang/JetHighlighter.java @@ -73,6 +73,7 @@ public class JetHighlighter extends SyntaxHighlighterBase { fillMap(keys1, JetTokens.KEYWORDS, JET_KEYWORD); keys1.put(JetTokens.INTEGER_LITERAL, JET_NUMBER); + keys1.put(JetTokens.LONG_LITERAL, JET_NUMBER); keys1.put(JetTokens.FLOAT_LITERAL, JET_NUMBER); keys1.put(JetTokens.STRING_LITERAL, JET_STRING); diff --git a/idea/src/org/jetbrains/jet/lang/parsing/AbstractJetParsing.java b/idea/src/org/jetbrains/jet/lang/parsing/AbstractJetParsing.java index 9f10278ae33..140cd4bbddd 100644 --- a/idea/src/org/jetbrains/jet/lang/parsing/AbstractJetParsing.java +++ b/idea/src/org/jetbrains/jet/lang/parsing/AbstractJetParsing.java @@ -144,4 +144,64 @@ import static org.jetbrains.jet.lexer.JetTokens.*; error.error(mesage); } + /* + * Looks for a the last top-level (not inside any {} [] () <>) '.' occurring before a + * top-level occurrence of a token from the stopSet + * + * Returns -1 if no occurrence is found + */ + protected int findLastBefore(TokenSet lookFor, TokenSet stopAt, boolean dontStopRightAfterOccurrence) { + PsiBuilder.Marker currentPosition = mark(); + int lastOccurrence = -1; + int openAngleBrackets = 0; + int openBraces = 0; + int openParentheses = 0; + int openBrackets = 0; + IElementType previousToken = null; + while (!eof()) { + if (atSet(stopAt)) { + if (openAngleBrackets == 0 + && openBrackets == 0 + && openBraces == 0 + && openParentheses == 0 + && (!dontStopRightAfterOccurrence + || !lookFor.contains(previousToken))) break; + } + if (at(LPAR)) { + openParentheses++; + } + else if (at(LT)) { + openAngleBrackets++; + } + else if (at(LBRACE)) { + openBraces++; + } + else if (at(LBRACKET)) { + openBrackets++; + } + else if (at(RPAR)) { + openParentheses--; + } + else if (at(GT)) { + openAngleBrackets--; + } + else if (at(RBRACE)) { + openBraces--; + } + else if (at(RBRACKET)) { + openBrackets--; + } + else if (atSet(lookFor) + && openAngleBrackets == 0 + && openBrackets == 0 + && openBraces == 0 + && openParentheses == 0) { + lastOccurrence = myBuilder.getCurrentOffset(); + } + previousToken = tt(); + advance(); // skip token + } + currentPosition.rollbackTo(); + return lastOccurrence; + } } diff --git a/idea/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java b/idea/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java index 83b3e9b3826..3fa3785a21a 100644 --- a/idea/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java +++ b/idea/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java @@ -29,11 +29,11 @@ public class JetExpressionParsing extends AbstractJetParsing { * : range * : "null" * : "this" ("<" type ">")? - * : memberAccessExpression * : expressionWithPrecedences * : match * : if - * : "typeof" + * : try + * : "typeof" "(" expression ")" * : "new" constructorInvocation * : objectLiteral * : declaration @@ -44,41 +44,23 @@ public class JetExpressionParsing extends AbstractJetParsing { */ public void parseExpression() { if (at(LPAR)) { - // TODO (expression) or tuple - } - else if (at(INTEGER_LITERAL)) { - // TODO - } - else if (at(CHARACTER_LITERAL)) { - // TODO - } - else if (at(FLOAT_LITERAL)) { - // TODO - } - else if (at(STRING_LITERAL)) { - // TODO - } - else if (at(TRUE_KEYWORD)) { - // TODO - } - else if (at(FALSE_KEYWORD)) { - // TODO + parseParenthesizedExpressionOrTuple(); } else if (at(LBRACKET)) { - // TODO: map, list or range - } - else if (at(NULL_KEYWORD)) { - // TODO + parseMapListOrRange(); } else if (at(THIS_KEYWORD)) { - // TODO + parseThisExpression(); } else if (at(IF_KEYWORD)) { // TODO } - else if (at(TYPEOF_KEYWORD)) { + else if (at(TRY_KEYWORD)) { // TODO } + else if (at(TYPEOF_KEYWORD)) { + parseTypeOf(); + } else if (at(NEW_KEYWORD)) { // TODO } @@ -106,10 +88,195 @@ public class JetExpressionParsing extends AbstractJetParsing { else if (at(DO_KEYWORD)) { // TODO } - else if (atSet(TokenSet.create(CLASS_KEYWORD, EXTENSION_KEYWORD, FUN_KEYWORD, VAL_KEYWORD, VAR_KEYWORD, TYPE_KEYWORD))) { + else if (atSet(TokenSet.create( + CLASS_KEYWORD, + EXTENSION_KEYWORD, + FUN_KEYWORD, + VAL_KEYWORD, + VAR_KEYWORD, + TYPE_KEYWORD))) { // TODO } - advance(); // TODO + else if (at(IDENTIFIER)) { + advance(); // TODO + } + else if (at(INTEGER_LITERAL)) { + parseOneTokenExpression(INTEGER_CONSTANT); + } + else if (at(LONG_LITERAL)) { + parseOneTokenExpression(LONG_CONSTANT); + } + else if (at(CHARACTER_LITERAL)) { + parseOneTokenExpression(CHARACTER_CONSTANT); + } + else if (at(FLOAT_LITERAL)) { + parseOneTokenExpression(FLOAT_CONSTANT); + } + else if (at(STRING_LITERAL) || at(RAW_STRING_LITERAL)) { + parseOneTokenExpression(STRING_CONSTANT); + } + else if (at(TRUE_KEYWORD)) { + parseOneTokenExpression(BOOLEAN_CONSTANT); + } + else if (at(FALSE_KEYWORD)) { + parseOneTokenExpression(BOOLEAN_CONSTANT); + } + else if (at(NULL_KEYWORD)) { + parseOneTokenExpression(NULL); + } + } + + /* + * "typeof" "(" expression ")" + */ + private void parseTypeOf() { + assert at(TYPEOF_KEYWORD); + + PsiBuilder.Marker typeof = mark(); + advance(); // TYPEOF_KEYWORD + + expect(LPAR, "Expecting '('"); + parseExpression(); + expect(RPAR, "Expecting ')'"); + typeof.done(TYPEOF); + } + + /* + * listLiteral + * : "[" expression{","}? "]" + * ; + * + * mapLiteral + * : "[" mapEntryLiteral{","} "]" + * : "[" ":" "]" + * ; + * + * mapEntryLiteral + * : expression ":" expression + * ; + * + * range + * : "[" expression ".." expression "]" + * ; + */ + private void parseMapListOrRange() { + assert at(LBRACKET); + + PsiBuilder.Marker literal = mark(); + + advance(); // LBRACKET + + // If this is an emty map "[:]" + if (at(COLON)) { + advance(); // COLON + expect(RBRACKET, "Expecting ']' to close an empty map literal '[:]'"); + literal.done(MAP_LITERAL); + return; + } + + PsiBuilder.Marker item = mark(); + parseExpression(); + + // If it is a map "[e:e, e:e]" + if (at(COLON)) { + advance(); // COLON + + parseExpression(); + item.done(MAP_LITERAL_ENTRY); + + while (at(COMMA)) { + advance(); // COMMA + if (at(COMMA)) error("Expecting a map entry"); + parseMapLiteralEntry(); + } + expect(RBRACKET, "Expecting ']' to close a map literal"); + literal.done(MAP_LITERAL); + return; + } + + // If it is a range "[a..b]" + if (at(RANGE)) { + item.drop(); + advance(); // RANGE + + parseExpression(); + + expect(RBRACKET, "Expecting ']' to close the range"); + literal.done(RANGE_LITERAL); + return; + } + + // Else: it must be a list literal "[a, b, c]" + item.drop(); + while (at(COMMA)) { + advance(); // COMMA + if (at(COMMA)) error("Expecting a list entry"); + parseExpression(); + } + + expect(RBRACKET, "Expecting a ']' to close a list"); + literal.done(LIST_LITERAL); + } + + /* + * mapLiteralEntry + * : expression ":" expression + * ; + */ + private void parseMapLiteralEntry() { + PsiBuilder.Marker entry = mark(); + parseExpression(); + expect(COLON, "Expecting ':'"); + parseExpression(); + entry.done(MAP_LITERAL_ENTRY); + } + + /* + * "(" expression ")" // see tupleLiteral + * "(" expression{","} ")" + * TODO: Labels in tuple literals? + */ + private void parseParenthesizedExpressionOrTuple() { + assert at(LPAR); + + PsiBuilder.Marker mark = mark(); + + advance(); // LPAR + + while (true) { + if (at(COMMA)) errorAndAdvance("Expecting a tuple entry (expression)"); + parseExpression(); + if (!at(COMMA)) break; + advance(); // COMMA + } + + expect(RPAR, "Expecting ')'"); + + mark.done(TUPLE); + } + + /* + * "this" ("<" type ">")? + */ + private void parseThisExpression() { + assert at(THIS_KEYWORD); + advance(); // THIS_KEYWORD + if (at(LT)) { + // This may be "this < foo" or "this", thus the backtracking + PsiBuilder.Marker supertype = mark(); + + advance(); // LT + + myJetParsing.parseTypeRef(); + + if (at(GT)) { + advance(); // GT + supertype.done(SUPERTYE_QUALIFIER); + } + else { + supertype.rollbackTo(); + } + } } /* @@ -172,4 +339,11 @@ public class JetExpressionParsing extends AbstractJetParsing { } } } + + private void parseOneTokenExpression(JetNodeType type) { + PsiBuilder.Marker mark = mark(); + advance(); + mark.done(type); + } + } diff --git a/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java b/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java index f96fdde2cb6..d13a942f985 100644 --- a/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java +++ b/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java @@ -828,65 +828,6 @@ public class JetParsing extends AbstractJetParsing { return FUN; } - /* - * Looks for a the last top-level (not inside any {} [] () <>) '.' occurring before a - * top-level occurrence of a token from the stopSet - */ - private int findLastBefore(TokenSet lookFor, TokenSet stopAt, boolean dontStopRightAfterOccurrence) { - PsiBuilder.Marker currentPosition = mark(); - int lastOccurrence = -1; - int openAngleBrackets = 0; - int openBraces = 0; - int openParentheses = 0; - int openBrackets = 0; - IElementType previousToken = null; - while (!eof()) { - if (atSet(stopAt)) { - if (openAngleBrackets == 0 - && openBrackets == 0 - && openBraces == 0 - && openParentheses == 0 - && (!dontStopRightAfterOccurrence - || !lookFor.contains(previousToken))) break; - } - if (at(LPAR)) { - openParentheses++; - } - else if (at(LT)) { - openAngleBrackets++; - } - else if (at(LBRACE)) { - openBraces++; - } - else if (at(LBRACKET)) { - openBrackets++; - } - else if (at(RPAR)) { - openParentheses--; - } - else if (at(GT)) { - openAngleBrackets--; - } - else if (at(RBRACE)) { - openBraces--; - } - else if (at(RBRACKET)) { - openBrackets--; - } - else if (atSet(lookFor) - && openAngleBrackets == 0 - && openBrackets == 0 - && openBraces == 0 - && openParentheses == 0) { - lastOccurrence = myBuilder.getCurrentOffset(); - } - previousToken = tt(); - advance(); // skip token - } - currentPosition.rollbackTo(); - return lastOccurrence ; - } - /* * functionBody * : block @@ -1188,7 +1129,7 @@ public class JetParsing extends AbstractJetParsing { * : attributes (userType | functionType | tupleType) * ; */ - private void parseTypeRef() { + public void parseTypeRef() { PsiBuilder.Marker type = mark(); parseAttributeList(); diff --git a/idea/src/org/jetbrains/jet/lang/parsing/PsiBuilderAdapter.java b/idea/src/org/jetbrains/jet/lang/parsing/PsiBuilderAdapter.java index 2edba4a3cb8..e577572f5a6 100644 --- a/idea/src/org/jetbrains/jet/lang/parsing/PsiBuilderAdapter.java +++ b/idea/src/org/jetbrains/jet/lang/parsing/PsiBuilderAdapter.java @@ -58,6 +58,16 @@ public class PsiBuilderAdapter implements PsiBuilder { return myDelegate.lookAhead(steps); } +// @Override +// public IElementType rawLookup(int steps) { +// return myDelegate.rawLookup(steps); +// } +// +// @Override +// public int rawTokenTypeStart(int steps) { +// return myDelegate.rawTokenTypeStart(steps); +// } + @Nullable @NonNls public String getTokenText() { diff --git a/idea/src/org/jetbrains/jet/lexer/Jet.flex b/idea/src/org/jetbrains/jet/lexer/Jet.flex index 2411d498238..0d5ae811c67 100644 --- a/idea/src/org/jetbrains/jet/lexer/Jet.flex +++ b/idea/src/org/jetbrains/jet/lexer/Jet.flex @@ -109,6 +109,7 @@ RAW_STRING_LITERAL = {THREE_QUO} {QUO_STRING_CHAR}* {THREE_QUO}? "while" { return JetTokens.WHILE_KEYWORD ;} "do" { return JetTokens.DO_KEYWORD ;} "match" { return JetTokens.MATCH_KEYWORD ;} + "try" { return JetTokens.TRY_KEYWORD ;} {IDENTIFIER} { return JetTokens.IDENTIFIER; } diff --git a/idea/src/org/jetbrains/jet/lexer/JetTokens.java b/idea/src/org/jetbrains/jet/lexer/JetTokens.java index 4491624ef9d..64d95d8001c 100644 --- a/idea/src/org/jetbrains/jet/lexer/JetTokens.java +++ b/idea/src/org/jetbrains/jet/lexer/JetTokens.java @@ -17,7 +17,8 @@ public interface JetTokens { IElementType WHITE_SPACE = TokenType.WHITE_SPACE; JetToken INTEGER_LITERAL = new JetToken("INTEGER_LITERAL"); - JetToken FLOAT_LITERAL = new JetToken("FLOAT_LITERAL"); + JetToken LONG_LITERAL = new JetToken("LONG_LITERAL"); + JetToken FLOAT_LITERAL = new JetToken("FLOAT_CONSTANT"); JetToken CHARACTER_LITERAL = new JetToken("CHARACTER_LITERAL"); JetToken STRING_LITERAL = new JetToken("STRING_LITERAL"); JetToken RAW_STRING_LITERAL = new JetToken("RAW_STRING_LITERAL"); @@ -47,6 +48,7 @@ public interface JetTokens { JetKeywordToken CONTINUE_KEYWORD = JetKeywordToken.keyword("continue"); JetKeywordToken OBJECT_KEYWORD = JetKeywordToken.keyword("object"); JetKeywordToken IF_KEYWORD = JetKeywordToken.keyword("if"); + JetKeywordToken TRY_KEYWORD = JetKeywordToken.keyword("try"); JetKeywordToken ELSE_KEYWORD = JetKeywordToken.keyword("else"); JetKeywordToken WHILE_KEYWORD = JetKeywordToken.keyword("while"); JetKeywordToken DO_KEYWORD = JetKeywordToken.keyword("do"); @@ -116,17 +118,20 @@ public interface JetTokens { JetKeywordToken PROTECTED_KEYWORD = JetKeywordToken.softKeyword("protected"); JetKeywordToken OUT_KEYWORD = JetKeywordToken.softKeyword("out"); JetKeywordToken REF_KEYWORD = JetKeywordToken.softKeyword("ref"); + JetKeywordToken CATCH_KEYWORD = JetKeywordToken.softKeyword("catch"); + JetKeywordToken FINALLY_KEYWORD = JetKeywordToken.softKeyword("finally"); TokenSet KEYWORDS = TokenSet.create(NAMESPACE_KEYWORD, AS_KEYWORD, TYPE_KEYWORD, CLASS_KEYWORD, THIS_KEYWORD, VAL_KEYWORD, VAR_KEYWORD, FUN_KEYWORD, DECOMPOSER_KEYWORD, EXTENSION_KEYWORD, FOR_KEYWORD, NULL_KEYWORD, TYPEOF_KEYWORD, NEW_KEYWORD, TRUE_KEYWORD, FALSE_KEYWORD, IS_KEYWORD, ISNOT_KEYWORD, IN_KEYWORD, THROW_KEYWORD, RETURN_KEYWORD, BREAK_KEYWORD, CONTINUE_KEYWORD, OBJECT_KEYWORD, IF_KEYWORD, - ELSE_KEYWORD, WHILE_KEYWORD, DO_KEYWORD, MATCH_KEYWORD, REF_KEYWORD, OUT_KEYWORD + ELSE_KEYWORD, WHILE_KEYWORD, DO_KEYWORD, MATCH_KEYWORD, REF_KEYWORD, OUT_KEYWORD, TRY_KEYWORD ); TokenSet SOFT_KEYWORDS = TokenSet.create(WRAPS_KEYWORD, IMPORT_KEYWORD, WHERE_KEYWORD, BY_KEYWORD, LAZY_KEYWORD, GET_KEYWORD, SET_KEYWORD, ABSTRACT_KEYWORD, VIRTUAL_KEYWORD, ENUM_KEYWORD, OPEN_KEYWORD, ATTRIBUTE_KEYWORD, - OVERRIDE_KEYWORD, PRIVATE_KEYWORD, PUBLIC_KEYWORD, INTERNAL_KEYWORD, PROTECTED_KEYWORD + OVERRIDE_KEYWORD, PRIVATE_KEYWORD, PUBLIC_KEYWORD, INTERNAL_KEYWORD, PROTECTED_KEYWORD, + CATCH_KEYWORD, FINALLY_KEYWORD ); TokenSet MODIFIER_KEYWORDS = TokenSet.create(LAZY_KEYWORD, ABSTRACT_KEYWORD, VIRTUAL_KEYWORD, ENUM_KEYWORD, diff --git a/idea/testData/psi/BabySteps.txt b/idea/testData/psi/BabySteps.txt index 34c4173963c..a3f00b3f6ef 100644 --- a/idea/testData/psi/BabySteps.txt +++ b/idea/testData/psi/BabySteps.txt @@ -30,7 +30,8 @@ JetFile: BabySteps.jet PsiWhiteSpace(' ') PsiElement(EQ)('=') PsiWhiteSpace(' ') - PsiElement(INTEGER_LITERAL)('0') + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('0') PsiElement(RPAR)(')') PsiWhiteSpace(' ') PsiElement(COLON)(':') @@ -46,7 +47,8 @@ JetFile: BabySteps.jet NAMED_ARGUMENT PsiElement(IDENTIFIER)('d') PsiElement(EQ)('=') - PsiElement(INTEGER_LITERAL)('0') + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('0') PsiElement(RPAR)(')') PsiElement(COMMA)(',') PsiWhiteSpace(' ') diff --git a/idea/testData/psi/BabySteps_ERR.txt b/idea/testData/psi/BabySteps_ERR.txt index e12f89e6b59..8ec37656257 100644 --- a/idea/testData/psi/BabySteps_ERR.txt +++ b/idea/testData/psi/BabySteps_ERR.txt @@ -30,7 +30,8 @@ JetFile: BabySteps_ERR.jet PsiWhiteSpace(' ') PsiElement(EQ)('=') PsiWhiteSpace(' ') - PsiElement(INTEGER_LITERAL)('0') + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('0') PsiElement(RPAR)(')') PsiWhiteSpace(' ') PsiElement(COLON)(':') @@ -46,7 +47,8 @@ JetFile: BabySteps_ERR.jet NAMED_ARGUMENT PsiElement(IDENTIFIER)('d') PsiElement(EQ)('=') - PsiElement(INTEGER_LITERAL)('0') + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('0') PsiElement(RPAR)(')') PsiElement(COMMA)(',') PsiWhiteSpace(' ') diff --git a/idea/testData/psi/Enums.txt b/idea/testData/psi/Enums.txt index b986eb53436..3a2fe921aea 100644 --- a/idea/testData/psi/Enums.txt +++ b/idea/testData/psi/Enums.txt @@ -41,7 +41,8 @@ JetFile: Enums.jet VALUE_ARGUMENT_LIST PsiElement(LPAR)('(') VALUE_ARGUMENT - PsiElement(INTEGER_LITERAL)('0xFF000') + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('0xFF000') PsiElement(RPAR)(')') PsiWhiteSpace('\n ') ENUM_ENTRY @@ -59,7 +60,8 @@ JetFile: Enums.jet VALUE_ARGUMENT_LIST PsiElement(LPAR)('(') VALUE_ARGUMENT - PsiElement(INTEGER_LITERAL)('0x00FF00') + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('0x00FF00') PsiElement(RPAR)(')') PsiWhiteSpace('\n ') ENUM_ENTRY @@ -77,7 +79,8 @@ JetFile: Enums.jet VALUE_ARGUMENT_LIST PsiElement(LPAR)('(') VALUE_ARGUMENT - PsiElement(INTEGER_LITERAL)('0x0000FF') + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('0x0000FF') PsiElement(RPAR)(')') PsiWhiteSpace('\n') PsiElement(RBRACE)('}') @@ -135,7 +138,8 @@ JetFile: Enums.jet VALUE_ARGUMENT_LIST PsiElement(LPAR)('(') VALUE_ARGUMENT - PsiElement(INTEGER_LITERAL)('0') + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('0') PsiElement(RPAR)(')') PsiWhiteSpace('\n\n ') ENUM_ENTRY