Skip to content

Commit 0f12b7e

Browse files
committed
Merge branch 'fix-symbol-types' of https://github.com/7sharp9/FSharp.Compiler.Service into 7sharp9-fix-symbol-types
2 parents fba477a + 6fcb790 commit 0f12b7e

File tree

1 file changed

+28
-13
lines changed

1 file changed

+28
-13
lines changed

src/fsharp/vs/Symbols.fs

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1197,7 +1197,8 @@ and FSharpMemberOrFunctionOrValue(cenv, d:FSharpMemberOrValData, item) =
11971197
let rty = m.GetFSharpReturnTy(cenv.amap,range0,m.FormalMethodInst)
11981198
let argtysl = m.GetParamTypes(cenv.amap,range0,m.FormalMethodInst)
11991199
mkIteratedFunTy (List.map (mkTupledTy cenv.g) argtysl) rty
1200-
| V v -> v.TauType
1200+
| V v -> let _, typ, _ = PrettyTypes.PrettifyTypes1 cenv.g v.TauType
1201+
typ
12011202
FSharpType(cenv, ty)
12021203

12031204
member __.HasGetterMethod =
@@ -1532,17 +1533,25 @@ and FSharpMemberOrFunctionOrValue(cenv, d:FSharpMemberOrValData, item) =
15321533
[ [ for (ParamData(isParamArrayArg,isOutArg,optArgInfo,nmOpt,_reflArgInfo,pty)) in p.GetParamDatas(cenv.amap,range0) do
15331534
// INCOMPLETENESS: Attribs is empty here, so we can't look at attributes for
15341535
// either .NET or F# parameters
1536+
let _, prettyTyp, _cxs = PrettyTypes.PrettifyTypes1 cenv.g pty
15351537
let argInfo : ArgReprInfo = { Name=nmOpt; Attribs= [] }
1536-
yield FSharpParameter(cenv, pty, argInfo, x.DeclarationLocationOpt, isParamArrayArg, isOutArg, optArgInfo.IsOptional) ]
1538+
yield FSharpParameter(cenv,prettyTyp , argInfo, x.DeclarationLocationOpt, isParamArrayArg, isOutArg, optArgInfo.IsOptional) ]
15371539
|> makeReadOnlyCollection ]
15381540
|> makeReadOnlyCollection
15391541

15401542
| E _ -> [] |> makeReadOnlyCollection
15411543
| M m ->
15421544

15431545
[ for argtys in m.GetParamDatas(cenv.amap,range0,m.FormalMethodInst) do
1544-
yield
1545-
[ for (ParamData(isParamArrayArg,isOutArg,optArgInfo,nmOpt,_reflArgInfo,pty)) in argtys do
1546+
let _, prettyTyps, _cxs =
1547+
argtys
1548+
|> List.map (function ParamData(isParamArrayArg,isOutArg,optArgInfo,nmOpt,_reflArgInfo,pty) -> pty)
1549+
|> PrettyTypes.PrettifyTypesN cenv.g
1550+
let combined =
1551+
List.map2 (fun pty (ParamData(isParamArrayArg,isOutArg,optArgInfo,nmOpt,reflArgInfo,_pty)) ->
1552+
isParamArrayArg,isOutArg,optArgInfo,nmOpt,reflArgInfo,pty) prettyTyps argtys
1553+
yield
1554+
[ for (isParamArrayArg,isOutArg,optArgInfo,nmOpt,_reflArgInfo,pty) in combined do
15461555
// INCOMPLETENESS: Attribs is empty here, so we can't look at attributes for
15471556
// either .NET or F# parameters
15481557
let argInfo : ArgReprInfo = { Name=nmOpt; Attribs= [] }
@@ -1561,8 +1570,9 @@ and FSharpMemberOrFunctionOrValue(cenv, d:FSharpMemberOrValData, item) =
15611570
if isTupleTy cenv.g typ
15621571
then tryDestTupleTy cenv.g typ
15631572
else [typ]
1573+
let _, prettyTyps, _cxs = allArguments |> PrettyTypes.PrettifyTypesN cenv.g
15641574
yield
1565-
allArguments
1575+
prettyTyps
15661576
|> List.map (fun arg -> FSharpParameter(cenv, arg, { Name=None; Attribs= [] }, x.DeclarationLocationOpt, false, false, false))
15671577
|> makeReadOnlyCollection ]
15681578
|> makeReadOnlyCollection
@@ -1571,8 +1581,8 @@ and FSharpMemberOrFunctionOrValue(cenv, d:FSharpMemberOrValData, item) =
15711581
let tau = v.TauType
15721582
let argtysl,_ = GetTopTauTypeInFSharpForm cenv.g curriedArgInfos tau range0
15731583
let argtysl = if v.IsInstanceMember then argtysl.Tail else argtysl
1574-
1575-
[ for argtys in argtysl do
1584+
let prettyArgtysl = argtysl |> List.map (fun a -> PrettyTypes.PrettifyTypesN1 cenv.g (a, tau))
1585+
[ for (_, (argtys,_),_cxs) in prettyArgtysl do
15761586
yield
15771587
[ for argty, argInfo in argtys do
15781588
let isParamArrayArg = HasFSharpAttribute cenv.g cenv.g.attrib_ParamArrayAttribute argInfo.Attribs
@@ -1601,27 +1611,32 @@ and FSharpMemberOrFunctionOrValue(cenv, d:FSharpMemberOrValData, item) =
16011611
// INCOMPLETENESS: Attribs is empty here, so we can't look at return attributes for .NET or F# methods
16021612
let retInfo : ArgReprInfo = { Name=None; Attribs= [] }
16031613
let rty = p.GetPropertyType(cenv.amap,range0)
1614+
let _, rty, _cxs = PrettyTypes.PrettifyTypes1 cenv.g rty
16041615
FSharpParameter(cenv, rty, retInfo, x.DeclarationLocationOpt, isParamArrayArg=false, isOutArg=false, isOptionalArg=false)
16051616
| M m ->
16061617
// INCOMPLETENESS: Attribs is empty here, so we can't look at return attributes for .NET or F# methods
16071618
let retInfo : ArgReprInfo = { Name=None; Attribs= [] }
16081619
let rty = m.GetFSharpReturnTy(cenv.amap,range0,m.FormalMethodInst)
1620+
let _, rty, _cxs = PrettyTypes.PrettifyTypes1 cenv.g rty
16091621
FSharpParameter(cenv, rty, retInfo, x.DeclarationLocationOpt, isParamArrayArg=false, isOutArg=false, isOptionalArg=false)
16101622
| V v ->
16111623
match v.ValReprInfo with
16121624
| None ->
16131625
let _, tau = v.TypeScheme
16141626
if isFunTy cenv.g tau then
1615-
let _typeArguments, rty = stripFunTy cenv.g tau
1616-
FSharpParameter(cenv, rty, { Name=None; Attribs= [] }, x.DeclarationLocationOpt, isParamArrayArg=false, isOutArg=false, isOptionalArg=false)
1627+
let typeArguments, rty = stripFunTy cenv.g tau
1628+
let empty : ArgReprInfo = { Name=None; Attribs= [] }
1629+
let uncurriedArgInfos = typeArguments |> List.map (fun t -> (t, empty ) )
1630+
let _, (_argtys, rty), _csx = PrettyTypes.PrettifyTypesN1 cenv.g (uncurriedArgInfos, rty)
1631+
FSharpParameter(cenv, rty, empty, x.DeclarationLocationOpt, isParamArrayArg=false, isOutArg=false, isOptionalArg=false)
16171632
else
16181633
failwith "not a module let binding or member"
1619-
| Some (ValReprInfo(_typars,argInfos,retInfo)) ->
1634+
| Some (ValReprInfo(typars,argInfos,retInfo)) ->
16201635

16211636
let tau = v.TauType
1622-
let _,rty = GetTopTauTypeInFSharpForm cenv.g argInfos tau range0
1623-
1624-
FSharpParameter(cenv, rty, retInfo, x.DeclarationLocationOpt, isParamArrayArg=false, isOutArg=false, isOptionalArg=false)
1637+
let c,rty = GetTopTauTypeInFSharpForm cenv.g argInfos tau range0
1638+
let (typar, (_types, _, prettyReturn), _cxs) = PrettyTypes.PrettifyTypesNM1 cenv.g ([tau], c, rty)
1639+
FSharpParameter(cenv, prettyReturn, retInfo, x.DeclarationLocationOpt, isParamArrayArg=false, isOutArg=false, isOptionalArg=false)
16251640

16261641

16271642
member __.Attributes =

0 commit comments

Comments
 (0)