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
33namespace 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