diff --git a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj
index 202bd49532e..c5b206ed9e6 100644
--- a/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj
+++ b/tests/FSharp.Compiler.Service.Tests/FSharp.Compiler.Service.Tests.fsproj
@@ -119,6 +119,9 @@
SyntaxTree\SynIdentTests.fs
+
+ SyntaxTree\SynTypeTests.fs
+
SyntaxTree\AttributeTests.fs
diff --git a/tests/service/SyntaxTreeTests/SynTypeTests.fs b/tests/service/SyntaxTreeTests/SynTypeTests.fs
new file mode 100644
index 00000000000..1ab5ed12e94
--- /dev/null
+++ b/tests/service/SyntaxTreeTests/SynTypeTests.fs
@@ -0,0 +1,51 @@
+module FSharp.Compiler.Service.Tests.SyntaxTreeTests.SynTypeTests
+
+open FSharp.Compiler.Service.Tests.Common
+open FSharp.Compiler.Syntax
+open NUnit.Framework
+
+[]
+let ``SynType.Tuple does include leading parameter name`` () =
+ let parseResults =
+ getParseResultsOfSignatureFile
+ """
+type T =
+ member M: p1: a * p2: b -> int
+ """
+
+ match parseResults with
+ | ParsedInput.SigFile(ParsedSigFileInput(contents = [
+ SynModuleOrNamespaceSig(decls = [
+ SynModuleSigDecl.Types(types = [
+ SynTypeDefnSig(typeRepr = SynTypeDefnSigRepr.ObjectModel(memberSigs = [
+ SynMemberSig.Member(memberSig = SynValSig(synType =
+ SynType.Fun(argType = SynType.Tuple(_, _, mTuple))))
+ ]))
+ ])
+ ])
+ ])) ->
+ assertRange (3, 14) (3, 27) mTuple
+ | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"
+
+[]
+let ``SynType.Tuple does include leading parameter attributes`` () =
+ let parseResults =
+ getParseResultsOfSignatureFile
+ """
+type T =
+ member M: [] a * [] b -> int
+ """
+
+ match parseResults with
+ | ParsedInput.SigFile(ParsedSigFileInput(contents = [
+ SynModuleOrNamespaceSig(decls = [
+ SynModuleSigDecl.Types(types = [
+ SynTypeDefnSig(typeRepr = SynTypeDefnSigRepr.ObjectModel(memberSigs = [
+ SynMemberSig.Member(memberSig = SynValSig(synType =
+ SynType.Fun(argType = SynType.Tuple(_, _, mTuple))))
+ ]))
+ ])
+ ])
+ ])) ->
+ assertRange (3, 14) (3, 56) mTuple
+ | _ -> Assert.Fail $"Could not get valid AST, got {parseResults}"