Skip to content

Commit d697eac

Browse files
author
dotnet-automerge-bot
authored
Merge pull request #6720 from microsoft/merges/master-to-dev16.2
Merge master to dev16.2
2 parents 5ade74b + 8d4f150 commit d697eac

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

src/fsharp/symbols/Symbols.fs

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
1+
// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
22

33
namespace FSharp.Compiler.SourceCodeServices
44

@@ -1393,7 +1393,12 @@ and FSharpMemberOrFunctionOrValue(cenv, d:FSharpMemberOrValData, item) =
13931393
let mkEventSym einfo = FSharpMemberOrFunctionOrValue(cenv, E einfo, Item.Event einfo)
13941394

13951395
new (cenv, vref) = FSharpMemberFunctionOrValue(cenv, V vref, Item.Value vref)
1396-
new (cenv, minfo) = FSharpMemberFunctionOrValue(cenv, M minfo, Item.MethodGroup(minfo.LogicalName, [minfo], None))
1396+
1397+
new (cenv, minfo: MethInfo) =
1398+
if minfo.IsConstructor || minfo.IsClassConstructor then
1399+
FSharpMemberFunctionOrValue(cenv, C minfo, Item.CtorGroup(minfo.LogicalName, [minfo]))
1400+
else
1401+
FSharpMemberFunctionOrValue(cenv, M minfo, Item.MethodGroup(minfo.LogicalName, [minfo], None))
13971402

13981403
member __.IsUnresolved =
13991404
isUnresolved()
@@ -1407,16 +1412,22 @@ and FSharpMemberOrFunctionOrValue(cenv, d:FSharpMemberOrValData, item) =
14071412
member x.Overloads matchParameterNumber =
14081413
checkIsResolved()
14091414
match d with
1410-
| M m ->
1415+
| M m | C m ->
14111416
match item with
1412-
| Item.MethodGroup (_name, methodInfos, _) ->
1417+
| Item.MethodGroup (_, methodInfos, _)
1418+
| Item.CtorGroup (_, methodInfos) ->
1419+
let isConstructor = x.IsConstructor
14131420
let methods =
14141421
if matchParameterNumber then
14151422
methodInfos
14161423
|> List.filter (fun methodInfo -> not (methodInfo.NumArgs = m.NumArgs) )
14171424
else methodInfos
14181425
methods
1419-
|> List.map (fun mi -> FSharpMemberOrFunctionOrValue(cenv, M mi, item))
1426+
|> List.map (fun mi ->
1427+
if isConstructor then
1428+
FSharpMemberOrFunctionOrValue(cenv, C mi, item)
1429+
else
1430+
FSharpMemberOrFunctionOrValue(cenv, M mi, item))
14201431
|> makeReadOnlyCollection
14211432
|> Some
14221433
| _ -> None
@@ -1997,7 +2008,8 @@ and FSharpMemberOrFunctionOrValue(cenv, d:FSharpMemberOrValData, item) =
19972008
match d, other.Data with
19982009
| E evt1, E evt2 -> EventInfo.EventInfosUseIdenticalDefintions evt1 evt2
19992010
| P p1, P p2 -> PropInfo.PropInfosUseIdenticalDefinitions p1 p2
2000-
| M m1, M m2 -> MethInfo.MethInfosUseIdenticalDefinitions m1 m2
2011+
| M m1, M m2
2012+
| C m1, C m2 -> MethInfo.MethInfosUseIdenticalDefinitions m1 m2
20012013
| V v1, V v2 -> valRefEq cenv.g v1 v2
20022014
| _ -> false
20032015
| _ -> false

0 commit comments

Comments
 (0)