From 0a85fa7a740efb2b7160f2707086978680d7f2e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20Cie=C5=9Blak?= Date: Tue, 10 Oct 2017 00:02:24 +0200 Subject: [PATCH 1/3] Make `IsRelativeNameResolvable` public --- src/fsharp/vs/service.fsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fsharp/vs/service.fsi b/src/fsharp/vs/service.fsi index 986b9a0e4c..0c3a445d4d 100755 --- a/src/fsharp/vs/service.fsi +++ b/src/fsharp/vs/service.fsi @@ -260,7 +260,7 @@ type internal FSharpCheckFileResults = /// Determines if a long ident is resolvable at a specific point. /// An optional string used for tracing compiler operations associated with this request. - member internal IsRelativeNameResolvable: cursorPos : pos * plid : string list * item: Item * ?userOpName: string -> Async + member IsRelativeNameResolvable: cursorPos : pos * plid : string list * item: Item * ?userOpName: string -> Async /// Represents complete typechecked implementation files, including thier typechecked signatures if any. member ImplementationFiles: FSharpImplementationFileContents list option From 71d73ac7a0ba1d0ef210e6ccbfeddf2062e15402 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20Cie=C5=9Blak?= Date: Tue, 10 Oct 2017 00:31:01 +0200 Subject: [PATCH 2/3] Add `IsRelativeNameResolvable` overload using `FSharpSymbolUse` --- src/fsharp/vs/service.fs | 12 ++++++++++++ src/fsharp/vs/service.fsi | 6 +++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/fsharp/vs/service.fs b/src/fsharp/vs/service.fs index 5c2fc8f544..349e5c9c12 100755 --- a/src/fsharp/vs/service.fs +++ b/src/fsharp/vs/service.fs @@ -901,6 +901,18 @@ type TypeCheckInfo Trace.TraceInformation(sprintf "FCS: recovering from error in IsRelativeNameResolvable: '%s'" msg) false) + /// Determines if a long ident is resolvable at a specific point. + member __.IsRelativeNameResolvable(cursorPos: pos, plid: string list, symbolUse: FSharpSymbolUse) : bool = + ErrorScope.Protect + Range.range0 + (fun () -> + /// Find items in the best naming environment. + let (nenv, ad), m = GetBestEnvForPos cursorPos + NameResolution.IsItemResolvable ncenv nenv m ad plid symbolUse.Item) + (fun msg -> + Trace.TraceInformation(sprintf "FCS: recovering from error in IsRelativeNameResolvable: '%s'" msg) + false) + /// Get the auto-complete items at a location member __.GetDeclarations (ctok, parseResultsOpt, line, lineStr, colAtEndOfNamesAndResidue, qualifyingNames, partialName, getAllSymbols, hasTextChangedSinceLastTypecheck) = let isInterfaceFile = SourceFileImpl.IsInterfaceFile mainInputFileName diff --git a/src/fsharp/vs/service.fsi b/src/fsharp/vs/service.fsi index 0c3a445d4d..aca216e5c2 100755 --- a/src/fsharp/vs/service.fsi +++ b/src/fsharp/vs/service.fsi @@ -260,7 +260,11 @@ type internal FSharpCheckFileResults = /// Determines if a long ident is resolvable at a specific point. /// An optional string used for tracing compiler operations associated with this request. - member IsRelativeNameResolvable: cursorPos : pos * plid : string list * item: Item * ?userOpName: string -> Async + member internal IsRelativeNameResolvable: cursorPos : pos * plid : string list * item: Item * ?userOpName: string -> Async + + /// Determines if a long ident is resolvable at a specific point. + /// An optional string used for tracing compiler operations associated with this request. + member IsRelativeNameResolvable: cursorPos : pos * plid : string list * symbolUse: FSharpSymbolUse * ?userOpName: string -> Async /// Represents complete typechecked implementation files, including thier typechecked signatures if any. member ImplementationFiles: FSharpImplementationFileContents list option From 3a4156efe3760b093e4f67fb8c71aa3f82b61fd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20Cie=C5=9Blak?= Date: Tue, 10 Oct 2017 00:47:02 +0200 Subject: [PATCH 3/3] Update service.fs --- src/fsharp/vs/service.fs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fsharp/vs/service.fs b/src/fsharp/vs/service.fs index 349e5c9c12..8aab8bad58 100755 --- a/src/fsharp/vs/service.fs +++ b/src/fsharp/vs/service.fs @@ -908,7 +908,7 @@ type TypeCheckInfo (fun () -> /// Find items in the best naming environment. let (nenv, ad), m = GetBestEnvForPos cursorPos - NameResolution.IsItemResolvable ncenv nenv m ad plid symbolUse.Item) + NameResolution.IsItemResolvable ncenv nenv m ad plid symbolUse.Symbol.Item) (fun msg -> Trace.TraceInformation(sprintf "FCS: recovering from error in IsRelativeNameResolvable: '%s'" msg) false)