@@ -72,46 +72,61 @@ module internal PrintUtilities =
7272 //
7373 // val SampleFunctionTupledAllBreakA:
7474 // longLongLongArgName1: string * longLongLongArgName2: TType *
75- // longLongLongArgName3: TType * longLongLongArgName4: TType
76- // -> TType list
75+ // longLongLongArgName3: TType * longLongLongArgName4: TType ->
76+ // TType list
7777 //
7878 // val SampleFunctionTupledAllBreakA:
7979 // longLongLongArgName1: string *
8080 // longLongLongArgName2: TType *
8181 // longLongLongArgName3: TType *
82- // longLongLongArgName4: TType
83- // -> TType list
82+ // longLongLongArgName4: TType ->
83+ // TType list
8484 //
8585 // val SampleFunctionCurriedOneBreakA:
86- // arg1: string -> arg2: TType -> arg3: TType
87- // -> arg4: TType -> TType list
86+ // arg1: string -> arg2: TType -> arg3: TType ->
87+ // arg4: TType -> TType list
8888 //
8989 // val SampleFunctionCurriedAllBreaksA:
90- // longLongLongArgName1: string
91- // -> longLongLongArgName2: TType
92- // -> longLongLongArgName3: TType
93- // -> longLongLongArgName4: TType
94- // -> TType list
90+ // longLongLongArgName1: string ->
91+ // longLongLongArgName2: TType ->
92+ // longLongLongArgName3: TType ->
93+ // longLongLongArgName4: TType ->
94+ // TType list
9595 //
9696 // val SampleFunctionMixedA:
9797 // longLongLongArgName1: string *
98- // longLongLongArgName2: string
99- // -> longLongLongArgName3: string *
100- // longLongLongArgName4: string *
101- // longLongLongArgName5: TType
102- // -> longLongLongArgName6: TType *
103- // longLongLongArgName7: TType *
104- // -> longLongLongArgName8: TType *
105- // longLongLongArgName9: TType *
106- // longLongLongArgName10: TType
107- // -> TType list
98+ // longLongLongArgName2: string ->
99+ // longLongLongArgName3: string *
100+ // longLongLongArgName4: string *
101+ // longLongLongArgName5: TType ->
102+ // longLongLongArgName6: TType *
103+ // longLongLongArgName7: TType ->
104+ // longLongLongArgName8: TType *
105+ // longLongLongArgName9: TType *
106+ // longLongLongArgName10: TType ->
107+ // TType list
108108 let curriedLayoutsL retTyDelim ( argTysL : Layout list ) ( retTyL : Layout ) =
109- let arrowAndRetyL = wordL ( tagPunctuation retTyDelim) ^^ retTyL
110- let argTysL =
111- argTysL
112- |> List.mapi ( fun i argTyL -> if i = 0 then argTyL else wordL ( tagPunctuation " ->" ) ^^ argTyL)
113- |> List.reduce (++)
114- argTysL --- arrowAndRetyL
109+ let lastIndex = List.length argTysL - 1
110+
111+ argTysL
112+ |> List.mapi ( fun idx argTyL ->
113+ let isTupled =
114+ idx = 0 ||
115+ match argTyL with
116+ | Node( leftLayout = Node( rightLayout = Leaf ( text = starText))) -> starText.Text = " *"
117+ | _ -> false
118+
119+ let layout =
120+ argTyL
121+ ^^ ( if idx = lastIndex then
122+ wordL ( tagPunctuation retTyDelim)
123+ else
124+ wordL ( tagPunctuation " ->" ))
125+
126+ isTupled, layout)
127+ |> List.rev
128+ |> fun reversedArgs -> ( true , retTyL) :: reversedArgs
129+ |> List.fold ( fun acc ( shouldBreak , layout ) -> ( if shouldBreak then (---) else (++)) layout acc) emptyL
115130
116131 let tagNavArbValRef ( valRefOpt : ValRef option ) tag =
117132 match valRefOpt with
0 commit comments