@@ -1005,23 +1005,13 @@ and genExpr astContext synExpr ctx =
1005
1005
| Tuple ( es, _) -> genTuple astContext es
1006
1006
| StructTuple es -> !- " struct " +> sepOpenT +> genTuple astContext es +> sepCloseT
1007
1007
| ArrayOrList ( sr, isArray, [], er, _) ->
1008
- ifElse
1009
- isArray
1010
- ( genTriviaFor SynExpr_ ArrayOrList_ OpeningDelimiter sr sepOpenAFixed
1011
- +> genTriviaFor SynExpr_ ArrayOrList_ ClosingDelimiter er sepCloseAFixed)
1012
- ( genTriviaFor SynExpr_ ArrayOrList_ OpeningDelimiter sr sepOpenLFixed
1013
- +> genTriviaFor SynExpr_ ArrayOrList_ ClosingDelimiter er sepCloseLFixed)
1008
+ genArrayOrListOpeningToken isArray true sr
1009
+ +> genArrayOrListClosingToken isArray true er
1014
1010
| ArrayOrList ( openingTokenRange, isArray, xs, closingTokenRange, _) ->
1015
1011
let smallExpression =
1016
- ifElse
1017
- isArray
1018
- ( genTriviaFor SynExpr_ ArrayOrList_ OpeningDelimiter openingTokenRange sepOpenA)
1019
- ( genTriviaFor SynExpr_ ArrayOrList_ OpeningDelimiter openingTokenRange sepOpenL)
1012
+ genArrayOrListOpeningToken isArray false openingTokenRange
1020
1013
+> col sepSemi xs ( genExpr astContext)
1021
- +> ifElse
1022
- isArray
1023
- ( genTriviaFor SynExpr_ ArrayOrList_ ClosingDelimiter closingTokenRange sepCloseA)
1024
- ( genTriviaFor SynExpr_ ArrayOrList_ ClosingDelimiter closingTokenRange sepCloseL)
1014
+ +> genArrayOrListClosingToken isArray false closingTokenRange
1025
1015
1026
1016
let multilineExpression =
1027
1017
ifAlignBrackets
@@ -1927,7 +1917,7 @@ and genExpr astContext synExpr ctx =
1927
1917
| OptVar ( isOpt, sli, _) -> ifElse isOpt (!- " ?" ) sepNone +> genSynLongIdent false sli
1928
1918
| LongIdentSet ( sli, e, _) ->
1929
1919
genSynLongIdent false sli
1930
- +> !- " <- "
1920
+ +> sepArrowRev
1931
1921
+> autoIndentAndNlnIfExpressionExceedsPageWidthUnlessStroustrup ( genExpr astContext) e
1932
1922
| DotIndexedGet ( App ( e, [ ConstExpr ( SynConst.Unit, _) as ux ]), indexArgs) ->
1933
1923
genExpr astContext e
@@ -1996,6 +1986,16 @@ and genExpr astContext synExpr ctx =
1996
1986
+> genExpr astContext indexArgs
1997
1987
+> !- " ] <- "
1998
1988
+> autoIndentAndNlnIfExpressionExceedsPageWidthUnlessStroustrup ( genExpr astContext) valueExpr
1989
+
1990
+ // a.b[c] <- d
1991
+ | NamedIndexedPropertySet ( sli, ArrayOrList ( sr, isArray, [ e1 ], er, range), e2) ->
1992
+ genSynLongIdent false sli
1993
+ +> genArrayOrListOpeningToken isArray true sr
1994
+ +> genExpr astContext e1
1995
+ +> genArrayOrListClosingToken isArray true er
1996
+ +> sepArrowRev
1997
+ +> autoIndentAndNlnIfExpressionExceedsPageWidth ( genExpr astContext e2)
1998
+
1999
1999
| NamedIndexedPropertySet ( sli, e1, e2) ->
2000
2000
let sep =
2001
2001
match e1 with
@@ -2006,14 +2006,15 @@ and genExpr astContext synExpr ctx =
2006
2006
genSynLongIdent false sli
2007
2007
+> sep
2008
2008
+> genExpr astContext e1
2009
- +> !- " <- "
2009
+ +> sepArrowRev
2010
2010
+> autoIndentAndNlnIfExpressionExceedsPageWidth ( genExpr astContext e2)
2011
+
2011
2012
| DotNamedIndexedPropertySet ( e, sli, e1, e2) ->
2012
2013
genExpr astContext e
2013
2014
+> sepDot
2014
2015
+> genSynLongIdent false sli
2015
2016
+> genExpr astContext e1
2016
- +> !- " <- "
2017
+ +> sepArrowRev
2017
2018
+> autoIndentAndNlnIfExpressionExceedsPageWidth ( genExpr astContext e2)
2018
2019
2019
2020
// typeof<System.Collections.IEnumerable>.FullName
@@ -2037,12 +2038,12 @@ and genExpr astContext synExpr ctx =
2037
2038
addParenIfAutoNln e1 ( genExpr astContext)
2038
2039
+> sepDot
2039
2040
+> genSynLongIdent false sli
2040
- +> !- " <- "
2041
+ +> sepArrowRev
2041
2042
+> autoIndentAndNlnIfExpressionExceedsPageWidthUnlessStroustrup ( genExpr astContext) e2
2042
2043
2043
2044
| SynExpr.Set ( e1, e2, _) ->
2044
2045
addParenIfAutoNln e1 ( genExpr astContext)
2045
- +> !- " <- "
2046
+ +> sepArrowRev
2046
2047
+> autoIndentAndNlnIfExpressionExceedsPageWidthUnlessStroustrup ( genExpr astContext) e2
2047
2048
2048
2049
| ParsingError r ->
@@ -2237,6 +2238,24 @@ and genExpr astContext synExpr ctx =
2237
2238
2238
2239
expr ctx
2239
2240
2241
+ and genArrayOrListOpeningToken isArray isFixed openingTokenRange =
2242
+ if isArray then
2243
+ genTriviaFor SynExpr_ ArrayOrList_ OpeningDelimiter openingTokenRange ( ifElse isFixed sepOpenAFixed sepOpenA)
2244
+ else
2245
+ genTriviaFor SynExpr_ ArrayOrList_ OpeningDelimiter openingTokenRange ( ifElse isFixed sepOpenLFixed sepOpenL)
2246
+
2247
+ and genArrayOrListClosingTokenAux closingTokenRange f =
2248
+ genTriviaFor SynExpr_ ArrayOrList_ ClosingDelimiter closingTokenRange f
2249
+
2250
+ and genArrayOrListClosingToken isArray isFixed closingTokenRange =
2251
+ let f =
2252
+ if isArray then
2253
+ ( ifElse isFixed sepCloseAFixed sepCloseA)
2254
+ else
2255
+ ( ifElse isFixed sepCloseLFixed sepCloseL)
2256
+
2257
+ genArrayOrListClosingTokenAux closingTokenRange f
2258
+
2240
2259
and genOnelinerInfixExpr astContext e1 operatorSli e2 =
2241
2260
let genExpr astContext e =
2242
2261
match e with
@@ -2625,48 +2644,28 @@ and genMultiLineArrayOrList
2625
2644
( openingTokenRange : Range )
2626
2645
( closingTokenRange : Range )
2627
2646
( astContext : ASTContext )
2628
- ctx
2629
2647
=
2630
- if isArray then
2631
- ( genTriviaFor SynExpr_ ArrayOrList_ OpeningDelimiter openingTokenRange sepOpenA
2632
- +> atCurrentColumnIndent (
2633
- sepNlnWhenWriteBeforeNewlineNotEmpty
2634
- +> col sepNln xs ( genExpr astContext)
2635
- +> genTriviaFor
2636
- SynExpr_ ArrayOrList_ ClosingDelimiter
2637
- closingTokenRange
2638
- ( ifElseCtx lastWriteEventIsNewline sepCloseAFixed sepCloseA)
2639
- ))
2640
- ctx
2641
- else
2642
- ( genTriviaFor SynExpr_ ArrayOrList_ OpeningDelimiter openingTokenRange sepOpenL
2643
- +> atCurrentColumnIndent (
2644
- sepNlnWhenWriteBeforeNewlineNotEmpty
2645
- +> col sepNln xs ( genExpr astContext)
2646
- +> genTriviaFor
2647
- SynExpr_ ArrayOrList_ ClosingDelimiter
2648
- closingTokenRange
2649
- ( ifElseCtx lastWriteEventIsNewline sepCloseLFixed sepCloseL)
2650
- ))
2651
- ctx
2648
+ genArrayOrListOpeningToken isArray false openingTokenRange
2649
+ +> atCurrentColumnIndent (
2650
+ sepNlnWhenWriteBeforeNewlineNotEmpty
2651
+ +> col sepNln xs ( genExpr astContext)
2652
+ +> ( genArrayOrListClosingTokenAux closingTokenRange ( fun ctx ->
2653
+ let isFixed = lastWriteEventIsNewline ctx
2654
+
2655
+ if isArray && isFixed then sepCloseAFixed ctx
2656
+ elif isArray then sepCloseA ctx
2657
+ elif isFixed then sepCloseLFixed ctx
2658
+ else sepCloseL ctx))
2659
+ )
2652
2660
2653
2661
and genMultiLineArrayOrListAlignBrackets ( isArray : bool ) xs openingTokenRange closingTokenRange astContext =
2654
- if isArray then
2655
- genTriviaFor SynExpr_ ArrayOrList_ OpeningDelimiter openingTokenRange sepOpenAFixed
2656
- +> indent
2657
- +> sepNlnUnlessLastEventIsNewline
2658
- +> col sepNln xs ( genExpr astContext)
2659
- +> unindent
2660
- +> sepNlnUnlessLastEventIsNewline
2661
- +> genTriviaFor SynExpr_ ArrayOrList_ ClosingDelimiter closingTokenRange sepCloseAFixed
2662
- else
2663
- genTriviaFor SynExpr_ ArrayOrList_ OpeningDelimiter openingTokenRange sepOpenLFixed
2664
- +> indent
2665
- +> sepNlnUnlessLastEventIsNewline
2666
- +> col sepNln xs ( genExpr astContext)
2667
- +> unindent
2668
- +> sepNlnUnlessLastEventIsNewline
2669
- +> genTriviaFor SynExpr_ ArrayOrList_ ClosingDelimiter closingTokenRange sepCloseLFixed
2662
+ genArrayOrListOpeningToken isArray true openingTokenRange
2663
+ +> indent
2664
+ +> sepNlnUnlessLastEventIsNewline
2665
+ +> col sepNln xs ( genExpr astContext)
2666
+ +> unindent
2667
+ +> sepNlnUnlessLastEventIsNewline
2668
+ +> genArrayOrListClosingToken isArray true closingTokenRange
2670
2669
2671
2670
and genApp astContext e es ctx =
2672
2671
let shortExpression =
0 commit comments