@@ -1011,23 +1011,13 @@ and genExpr astContext synExpr ctx =
1011
1011
| Tuple ( es, _) -> genTuple astContext es
1012
1012
| StructTuple es -> !- " struct " +> sepOpenT +> genTuple astContext es +> sepCloseT
1013
1013
| ArrayOrList ( sr, isArray, [], er, _) ->
1014
- ifElse
1015
- isArray
1016
- ( genTriviaFor SynExpr_ ArrayOrList_ OpeningDelimiter sr sepOpenAFixed
1017
- +> genTriviaFor SynExpr_ ArrayOrList_ ClosingDelimiter er sepCloseAFixed)
1018
- ( genTriviaFor SynExpr_ ArrayOrList_ OpeningDelimiter sr sepOpenLFixed
1019
- +> genTriviaFor SynExpr_ ArrayOrList_ ClosingDelimiter er sepCloseLFixed)
1014
+ genArrayOrListOpeningToken isArray true sr
1015
+ +> genArrayOrListClosingToken isArray true er
1020
1016
| ArrayOrList ( openingTokenRange, isArray, xs, closingTokenRange, _) ->
1021
1017
let smallExpression =
1022
- ifElse
1023
- isArray
1024
- ( genTriviaFor SynExpr_ ArrayOrList_ OpeningDelimiter openingTokenRange sepOpenA)
1025
- ( genTriviaFor SynExpr_ ArrayOrList_ OpeningDelimiter openingTokenRange sepOpenL)
1018
+ genArrayOrListOpeningToken isArray false openingTokenRange
1026
1019
+> col sepSemi xs ( genExpr astContext)
1027
- +> ifElse
1028
- isArray
1029
- ( genTriviaFor SynExpr_ ArrayOrList_ ClosingDelimiter closingTokenRange sepCloseA)
1030
- ( genTriviaFor SynExpr_ ArrayOrList_ ClosingDelimiter closingTokenRange sepCloseL)
1020
+ +> genArrayOrListClosingToken isArray false closingTokenRange
1031
1021
1032
1022
let multilineExpression =
1033
1023
ifAlignBrackets
@@ -1933,7 +1923,7 @@ and genExpr astContext synExpr ctx =
1933
1923
| OptVar ( isOpt, sli, _) -> ifElse isOpt (!- " ?" ) sepNone +> genSynLongIdent false sli
1934
1924
| LongIdentSet ( sli, e, _) ->
1935
1925
genSynLongIdent false sli
1936
- +> !- " <- "
1926
+ +> sepArrowRev
1937
1927
+> autoIndentAndNlnIfExpressionExceedsPageWidthUnlessStroustrup ( genExpr astContext) e
1938
1928
| DotIndexedGet ( App ( e, [ ConstExpr ( SynConst.Unit, _) as ux ]), indexArgs) ->
1939
1929
genExpr astContext e
@@ -2002,6 +1992,16 @@ and genExpr astContext synExpr ctx =
2002
1992
+> genExpr astContext indexArgs
2003
1993
+> !- " ] <- "
2004
1994
+> autoIndentAndNlnIfExpressionExceedsPageWidthUnlessStroustrup ( genExpr astContext) valueExpr
1995
+
1996
+ // a.b[c] <- d
1997
+ | NamedIndexedPropertySet ( sli, ArrayOrList ( sr, isArray, [ e1 ], er, range), e2) ->
1998
+ genSynLongIdent false sli
1999
+ +> genArrayOrListOpeningToken isArray true sr
2000
+ +> genExpr astContext e1
2001
+ +> genArrayOrListClosingToken isArray true er
2002
+ +> sepArrowRev
2003
+ +> autoIndentAndNlnIfExpressionExceedsPageWidth ( genExpr astContext e2)
2004
+
2005
2005
| NamedIndexedPropertySet ( sli, e1, e2) ->
2006
2006
let sep =
2007
2007
match e1 with
@@ -2012,14 +2012,15 @@ and genExpr astContext synExpr ctx =
2012
2012
genSynLongIdent false sli
2013
2013
+> sep
2014
2014
+> genExpr astContext e1
2015
- +> !- " <- "
2015
+ +> sepArrowRev
2016
2016
+> autoIndentAndNlnIfExpressionExceedsPageWidth ( genExpr astContext e2)
2017
+
2017
2018
| DotNamedIndexedPropertySet ( e, sli, e1, e2) ->
2018
2019
genExpr astContext e
2019
2020
+> sepDot
2020
2021
+> genSynLongIdent false sli
2021
2022
+> genExpr astContext e1
2022
- +> !- " <- "
2023
+ +> sepArrowRev
2023
2024
+> autoIndentAndNlnIfExpressionExceedsPageWidth ( genExpr astContext e2)
2024
2025
2025
2026
// typeof<System.Collections.IEnumerable>.FullName
@@ -2043,12 +2044,12 @@ and genExpr astContext synExpr ctx =
2043
2044
addParenIfAutoNln e1 ( genExpr astContext)
2044
2045
+> sepDot
2045
2046
+> genSynLongIdent false sli
2046
- +> !- " <- "
2047
+ +> sepArrowRev
2047
2048
+> autoIndentAndNlnIfExpressionExceedsPageWidthUnlessStroustrup ( genExpr astContext) e2
2048
2049
2049
2050
| SynExpr.Set ( e1, e2, _) ->
2050
2051
addParenIfAutoNln e1 ( genExpr astContext)
2051
- +> !- " <- "
2052
+ +> sepArrowRev
2052
2053
+> autoIndentAndNlnIfExpressionExceedsPageWidthUnlessStroustrup ( genExpr astContext) e2
2053
2054
2054
2055
| ParsingError r ->
@@ -2245,6 +2246,24 @@ and genExpr astContext synExpr ctx =
2245
2246
2246
2247
expr ctx
2247
2248
2249
+ and genArrayOrListOpeningToken isArray isFixed openingTokenRange =
2250
+ if isArray then
2251
+ genTriviaFor SynExpr_ ArrayOrList_ OpeningDelimiter openingTokenRange ( ifElse isFixed sepOpenAFixed sepOpenA)
2252
+ else
2253
+ genTriviaFor SynExpr_ ArrayOrList_ OpeningDelimiter openingTokenRange ( ifElse isFixed sepOpenLFixed sepOpenL)
2254
+
2255
+ and genArrayOrListClosingTokenAux closingTokenRange f =
2256
+ genTriviaFor SynExpr_ ArrayOrList_ ClosingDelimiter closingTokenRange f
2257
+
2258
+ and genArrayOrListClosingToken isArray isFixed closingTokenRange =
2259
+ let f =
2260
+ if isArray then
2261
+ ( ifElse isFixed sepCloseAFixed sepCloseA)
2262
+ else
2263
+ ( ifElse isFixed sepCloseLFixed sepCloseL)
2264
+
2265
+ genArrayOrListClosingTokenAux closingTokenRange f
2266
+
2248
2267
and genOnelinerInfixExpr astContext e1 operatorSli e2 =
2249
2268
let genExpr astContext e =
2250
2269
match e with
@@ -2627,48 +2646,28 @@ and genMultiLineArrayOrList
2627
2646
( openingTokenRange : Range )
2628
2647
( closingTokenRange : Range )
2629
2648
( astContext : ASTContext )
2630
- ctx
2631
2649
=
2632
- if isArray then
2633
- ( genTriviaFor SynExpr_ ArrayOrList_ OpeningDelimiter openingTokenRange sepOpenA
2634
- +> atCurrentColumnIndent (
2635
- sepNlnWhenWriteBeforeNewlineNotEmpty
2636
- +> col sepNln xs ( genExpr astContext)
2637
- +> genTriviaFor
2638
- SynExpr_ ArrayOrList_ ClosingDelimiter
2639
- closingTokenRange
2640
- ( ifElseCtx lastWriteEventIsNewline sepCloseAFixed sepCloseA)
2641
- ))
2642
- ctx
2643
- else
2644
- ( genTriviaFor SynExpr_ ArrayOrList_ OpeningDelimiter openingTokenRange sepOpenL
2645
- +> atCurrentColumnIndent (
2646
- sepNlnWhenWriteBeforeNewlineNotEmpty
2647
- +> col sepNln xs ( genExpr astContext)
2648
- +> genTriviaFor
2649
- SynExpr_ ArrayOrList_ ClosingDelimiter
2650
- closingTokenRange
2651
- ( ifElseCtx lastWriteEventIsNewline sepCloseLFixed sepCloseL)
2652
- ))
2653
- ctx
2650
+ genArrayOrListOpeningToken isArray false openingTokenRange
2651
+ +> atCurrentColumnIndent (
2652
+ sepNlnWhenWriteBeforeNewlineNotEmpty
2653
+ +> col sepNln xs ( genExpr astContext)
2654
+ +> ( genArrayOrListClosingTokenAux closingTokenRange ( fun ctx ->
2655
+ let isFixed = lastWriteEventIsNewline ctx
2656
+
2657
+ if isArray && isFixed then sepCloseAFixed ctx
2658
+ elif isArray then sepCloseA ctx
2659
+ elif isFixed then sepCloseLFixed ctx
2660
+ else sepCloseL ctx))
2661
+ )
2654
2662
2655
2663
and genMultiLineArrayOrListAlignBrackets ( isArray : bool ) xs openingTokenRange closingTokenRange astContext =
2656
- if isArray then
2657
- genTriviaFor SynExpr_ ArrayOrList_ OpeningDelimiter openingTokenRange sepOpenAFixed
2658
- +> indent
2659
- +> sepNlnUnlessLastEventIsNewline
2660
- +> col sepNln xs ( genExpr astContext)
2661
- +> unindent
2662
- +> sepNlnUnlessLastEventIsNewline
2663
- +> genTriviaFor SynExpr_ ArrayOrList_ ClosingDelimiter closingTokenRange sepCloseAFixed
2664
- else
2665
- genTriviaFor SynExpr_ ArrayOrList_ OpeningDelimiter openingTokenRange sepOpenLFixed
2666
- +> indent
2667
- +> sepNlnUnlessLastEventIsNewline
2668
- +> col sepNln xs ( genExpr astContext)
2669
- +> unindent
2670
- +> sepNlnUnlessLastEventIsNewline
2671
- +> genTriviaFor SynExpr_ ArrayOrList_ ClosingDelimiter closingTokenRange sepCloseLFixed
2664
+ genArrayOrListOpeningToken isArray true openingTokenRange
2665
+ +> indent
2666
+ +> sepNlnUnlessLastEventIsNewline
2667
+ +> col sepNln xs ( genExpr astContext)
2668
+ +> unindent
2669
+ +> sepNlnUnlessLastEventIsNewline
2670
+ +> genArrayOrListClosingToken isArray true closingTokenRange
2672
2671
2673
2672
and genApp astContext e es ctx =
2674
2673
let shortExpression =
0 commit comments