From adb44244b52d601e85ff9ee326ffa68b2ce04977 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Fri, 16 Sep 2011 13:32:13 +0400 Subject: [PATCH] Elvis split --- .../lang/parsing/JetExpressionParsing.java | 2 + idea/testData/psi/ElvisSplit.jet | 2 + idea/testData/psi/ElvisSplit.txt | 48 +++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 idea/testData/psi/ElvisSplit.jet create mode 100644 idea/testData/psi/ElvisSplit.txt diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java index 2da63a0e2d6..3a99064cff3 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java @@ -106,7 +106,9 @@ public class JetExpressionParsing extends AbstractJetParsing { COLON_AS(COLON, AS_KEYWORD, AS_SAFE) { @Override public JetNodeType parseRightHandSide(IElementType operation, JetExpressionParsing parser) { + parser.myBuilder.disableJoiningComplexTokens(); parser.myJetParsing.parseTypeRef(); + parser.myBuilder.enableJoiningComplexTokens(); return BINARY_WITH_TYPE; } diff --git a/idea/testData/psi/ElvisSplit.jet b/idea/testData/psi/ElvisSplit.jet new file mode 100644 index 00000000000..1651641d1d5 --- /dev/null +++ b/idea/testData/psi/ElvisSplit.jet @@ -0,0 +1,2 @@ +val x = 1 : Int?:Any? +val y = null ?: 1 \ No newline at end of file diff --git a/idea/testData/psi/ElvisSplit.txt b/idea/testData/psi/ElvisSplit.txt new file mode 100644 index 00000000000..1048f76cd2e --- /dev/null +++ b/idea/testData/psi/ElvisSplit.txt @@ -0,0 +1,48 @@ +JetFile: ElvisSplit.jet + NAMESPACE + PROPERTY + PsiElement(val)('val') + PsiWhiteSpace(' ') + PsiElement(IDENTIFIER)('x') + PsiWhiteSpace(' ') + PsiElement(EQ)('=') + PsiWhiteSpace(' ') + BINARY_WITH_TYPE + BINARY_WITH_TYPE + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('1') + PsiWhiteSpace(' ') + OPERATION_REFERENCE + PsiElement(COLON)(':') + PsiWhiteSpace(' ') + TYPE_REFERENCE + NULLABLE_TYPE + USER_TYPE + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('Int') + PsiElement(QUEST)('?') + OPERATION_REFERENCE + PsiElement(COLON)(':') + TYPE_REFERENCE + NULLABLE_TYPE + USER_TYPE + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('Any') + PsiElement(QUEST)('?') + PsiWhiteSpace('\n') + PROPERTY + PsiElement(val)('val') + PsiWhiteSpace(' ') + PsiElement(IDENTIFIER)('y') + PsiWhiteSpace(' ') + PsiElement(EQ)('=') + PsiWhiteSpace(' ') + BINARY_EXPRESSION + NULL + PsiElement(null)('null') + PsiWhiteSpace(' ') + OPERATION_REFERENCE + PsiElement(ELVIS)('?:') + PsiWhiteSpace(' ') + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('1') \ No newline at end of file