@@ -349,14 +349,11 @@ type
349349 |]
350350
351351 match parseResults.ParseTree with
352- | Types( range, [ TypeRange( typeRange, synComponentRange)]) ->
352+ | Types( range, [ TypeRange( typeRange, synComponentRange)])
353+ | TypeSigs( range, [ TypeSigRange( typeRange, synComponentRange)]) ->
353354 assertRange ( 4 , 0 ) ( 10 , 14 ) range
354355 assertRange ( 4 , 0 ) ( 10 , 14 ) typeRange
355356 assertRange ( 10 , 13 ) ( 10 , 14 ) synComponentRange
356- | TypeSigs( range, [ TypeSigRange( typeRange, synComponentRange)]) ->
357- assertRange ( 4 , 0 ) ( 11 , 0 ) range
358- assertRange ( 4 , 0 ) ( 11 , 0 ) typeRange
359- assertRange ( 10 , 13 ) ( 10 , 14 ) synComponentRange
360357 | x ->
361358 failwith $" Unexpected ParsedInput %A {x}" )
362359
@@ -484,6 +481,29 @@ type A = class end
484481 | x ->
485482 failwith $" Unexpected ParsedInput %A {x}" )
486483
484+ [<Test>]
485+ let ``types 07`` (): unit =
486+ let parseResults , checkResults = getParseAndCheckResultsOfSignatureFile """
487+ module Test
488+
489+ type A
490+
491+ ///B
492+ and B = int -> int
493+ """
494+ checkResults
495+ |> checkXmls [ " B" , [| " B" |]]
496+
497+ parseResults
498+ |> checkParsingErrors [||]
499+
500+ match parseResults.ParseTree with
501+ | TypeSigs(_, [ SynTypeDefnSig( range = range1); SynTypeDefnSig( range = range2)]) ->
502+ assertRange ( 4 , 5 ) ( 4 , 6 ) range1
503+ assertRange ( 6 , 0 ) ( 7 , 18 ) range2
504+ | x ->
505+ failwith $" Unexpected ParsedInput %A {x}"
506+
487507[<Test>]
488508let ``let bindings 01 - allowed positions`` (): unit =
489509 let parseResults , checkResults = getParseAndCheckResults """
@@ -865,9 +885,11 @@ type B =
865885 |]
866886
867887 match parseResults.ParseTree with
868- | Members( SynMemberDefn.Member( range = range; memberDefn = binding) :: _) ->
888+ | Members( SynMemberDefn.Member( range = range; memberDefn = SynBinding ( xmlDoc = xmlDoc ) as binding) :: _) ->
869889 assertRange ( 3 , 4 ) ( 10 , 37 ) range
870890 assertRange ( 3 , 4 ) ( 8 , 37 ) binding.RangeOfBindingWithRhs
891+ assertRange ( 3 , 4 ) ( 4 , 9 ) xmlDoc.Range
892+ assertRange ( 3 , 4 ) ( 4 , 9 ) ( xmlDoc.ToXmlDoc( false , None) .Range)
871893 | x ->
872894 failwith $" Unexpected ParsedInput %A {x}"
873895
@@ -917,6 +939,30 @@ type A ///CTOR1
917939 | x ->
918940 failwith $" Unexpected ParsedInput %A {x}"
919941
942+ [<Test>]
943+ let ``type members 07 - explicit ctor`` (): unit =
944+ let parseResults , checkResults = getParseAndCheckResultsOfSignatureFile """
945+ module Test
946+
947+ type A =
948+ ///ctor
949+ new: unit -> A
950+ """
951+ checkResults
952+ |> checkXmls [
953+ " A" , [||]
954+ " .ctor" , [| " ctor" |]
955+ ]
956+
957+ parseResults
958+ |> checkParsingErrors [||]
959+
960+ match parseResults.ParseTree with
961+ | MemberSigs([ SynMemberSig.Member( range = range)]) ->
962+ assertRange ( 5 , 4 ) ( 6 , 18 ) range
963+ | x ->
964+ failwith $" Unexpected ParsedInput %A {x}"
965+
920966[<Test>]
921967let record (): unit =
922968 checkSignatureAndImplementation """
@@ -1008,7 +1054,7 @@ module M2 = type A
10081054 match parseResults.ParseTree with
10091055 | NestedModulesSigs( range1, range2) ->
10101056 assertRange ( 2 , 0 ) ( 6 , 30 ) range1
1011- assertRange ( 8 , 0 ) ( 11 , 0 ) range2
1057+ assertRange ( 8 , 0 ) ( 10 , 18 ) range2
10121058 | x ->
10131059 failwith $" Unexpected ParsedInput: %A {x}"
10141060
0 commit comments