Skip to content

Commit fcd06c7

Browse files
authored
Include range of parameter names and attributes in topTupleType SynType.Tuple (#13850)
* Tests added for range of SynType.Tuple
1 parent e782148 commit fcd06c7

File tree

2 files changed

+54
-0
lines changed

2 files changed

+54
-0
lines changed

tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,9 @@
119119
<Compile Include="..\service\SyntaxTreeTests\SynIdentTests.fs">
120120
<Link>SyntaxTree\SynIdentTests.fs</Link>
121121
</Compile>
122+
<Compile Include="..\service\SyntaxTreeTests\SynTypeTests.fs">
123+
<Link>SyntaxTree\SynTypeTests.fs</Link>
124+
</Compile>
122125
<Compile Include="..\service\SyntaxTreeTests\AttributeTests.fs">
123126
<Link>SyntaxTree\AttributeTests.fs</Link>
124127
</Compile>
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
module FSharp.Compiler.Service.Tests.SyntaxTreeTests.SynTypeTests
2+
3+
open FSharp.Compiler.Service.Tests.Common
4+
open FSharp.Compiler.Syntax
5+
open NUnit.Framework
6+
7+
[<Test>]
8+
let ``SynType.Tuple does include leading parameter name`` () =
9+
let parseResults =
10+
getParseResultsOfSignatureFile
11+
"""
12+
type T =
13+
member M: p1: a * p2: b -> int
14+
"""
15+
16+
match parseResults with
17+
| ParsedInput.SigFile(ParsedSigFileInput(contents = [
18+
SynModuleOrNamespaceSig(decls = [
19+
SynModuleSigDecl.Types(types = [
20+
SynTypeDefnSig(typeRepr = SynTypeDefnSigRepr.ObjectModel(memberSigs = [
21+
SynMemberSig.Member(memberSig = SynValSig(synType =
22+
SynType.Fun(argType = SynType.Tuple(_, _, mTuple))))
23+
]))
24+
])
25+
])
26+
])) ->
27+
assertRange (3, 14) (3, 27) mTuple
28+
| _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
29+
30+
[<Test>]
31+
let ``SynType.Tuple does include leading parameter attributes`` () =
32+
let parseResults =
33+
getParseResultsOfSignatureFile
34+
"""
35+
type T =
36+
member M: [<SomeAttribute>] a * [<OtherAttribute>] b -> int
37+
"""
38+
39+
match parseResults with
40+
| ParsedInput.SigFile(ParsedSigFileInput(contents = [
41+
SynModuleOrNamespaceSig(decls = [
42+
SynModuleSigDecl.Types(types = [
43+
SynTypeDefnSig(typeRepr = SynTypeDefnSigRepr.ObjectModel(memberSigs = [
44+
SynMemberSig.Member(memberSig = SynValSig(synType =
45+
SynType.Fun(argType = SynType.Tuple(_, _, mTuple))))
46+
]))
47+
])
48+
])
49+
])) ->
50+
assertRange (3, 14) (3, 56) mTuple
51+
| _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"

0 commit comments

Comments
 (0)