From d2b1b2e549f2ce39fb8d83cd111a2555201fb287 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Thu, 11 Jul 2013 22:13:59 +0400 Subject: [PATCH] Allow newline before : as as? ?: || && --- .../lang/parsing/JetExpressionParsing.java | 9 ++- .../testData/psi/NewLinesValidOperations.jet | 25 +++++++ .../testData/psi/NewLinesValidOperations.txt | 66 +++++++++++++++++++ 3 files changed, 99 insertions(+), 1 deletion(-) 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 7fb709deed9..691836bc753 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java @@ -214,7 +214,14 @@ public class JetExpressionParsing extends AbstractJetParsing { } } - public static final TokenSet ALLOW_NEWLINE_OPERATIONS = TokenSet.create(DOT, SAFE_ACCESS); + public static final TokenSet ALLOW_NEWLINE_OPERATIONS = TokenSet.create( + DOT, SAFE_ACCESS, + COLON, AS_KEYWORD, AS_SAFE, + ELVIS, + // Can't allow `is` and `!is` because of when entry conditions: IS_KEYWORD, NOT_IS, + ANDAND, + OROR + ); public static final TokenSet ALL_OPERATIONS; diff --git a/compiler/testData/psi/NewLinesValidOperations.jet b/compiler/testData/psi/NewLinesValidOperations.jet index 1a9483d7f62..7d4c30511cc 100644 --- a/compiler/testData/psi/NewLinesValidOperations.jet +++ b/compiler/testData/psi/NewLinesValidOperations.jet @@ -8,4 +8,29 @@ fun test() { str ?.length + + str + + : String + + str + + as String + + str + + as? String + + str + + ?: foo + + true + + || false + + + false + + && true } \ No newline at end of file diff --git a/compiler/testData/psi/NewLinesValidOperations.txt b/compiler/testData/psi/NewLinesValidOperations.txt index a340c1270ef..8c64b13a7e0 100644 --- a/compiler/testData/psi/NewLinesValidOperations.txt +++ b/compiler/testData/psi/NewLinesValidOperations.txt @@ -38,5 +38,71 @@ JetFile: NewLinesValidOperations.jet PsiElement(SAFE_ACCESS)('?.') REFERENCE_EXPRESSION PsiElement(IDENTIFIER)('length') + PsiWhiteSpace('\n\n ') + BINARY_WITH_TYPE + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('str') + PsiWhiteSpace('\n\n ') + OPERATION_REFERENCE + PsiElement(COLON)(':') + PsiWhiteSpace(' ') + TYPE_REFERENCE + USER_TYPE + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('String') + PsiWhiteSpace('\n\n ') + BINARY_WITH_TYPE + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('str') + PsiWhiteSpace('\n\n ') + OPERATION_REFERENCE + PsiElement(as)('as') + PsiWhiteSpace(' ') + TYPE_REFERENCE + USER_TYPE + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('String') + PsiWhiteSpace('\n\n ') + BINARY_WITH_TYPE + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('str') + PsiWhiteSpace('\n\n ') + OPERATION_REFERENCE + PsiElement(AS_SAFE)('as?') + PsiWhiteSpace(' ') + TYPE_REFERENCE + USER_TYPE + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('String') + PsiWhiteSpace('\n\n ') + BINARY_EXPRESSION + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('str') + PsiWhiteSpace('\n\n ') + OPERATION_REFERENCE + PsiElement(ELVIS)('?:') + PsiWhiteSpace(' ') + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foo') + PsiWhiteSpace('\n\n ') + BINARY_EXPRESSION + BOOLEAN_CONSTANT + PsiElement(true)('true') ยช + PsiWhiteSpace('\n\n ') + OPERATION_REFERENCE + PsiElement(OROR)('||') + PsiWhiteSpace(' ') + BOOLEAN_CONSTANT + PsiElement(false)('false') + PsiWhiteSpace('\n\n\n ') + BINARY_EXPRESSION + BOOLEAN_CONSTANT + PsiElement(false)('false') + PsiWhiteSpace('\n\n ') + OPERATION_REFERENCE + PsiElement(ANDAND)('&&') + PsiWhiteSpace(' ') + BOOLEAN_CONSTANT + PsiElement(true)('true') PsiWhiteSpace('\n') PsiElement(RBRACE)('}') \ No newline at end of file