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