From 3de2fa7fccefe336cbec556a7da3642b0657b015 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20Cie=C5=9Blak?= Date: Tue, 10 Oct 2017 10:34:16 +0200 Subject: [PATCH 1/2] Add `IsRelativeNameResolvableFromSymbol` --- src/fsharp/vs/service.fs | 3 +++ src/fsharp/vs/service.fsi | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/src/fsharp/vs/service.fs b/src/fsharp/vs/service.fs index 5c2fc8f544..38fc7ccfa6 100644 --- a/src/fsharp/vs/service.fs +++ b/src/fsharp/vs/service.fs @@ -900,6 +900,9 @@ type TypeCheckInfo (fun msg -> Trace.TraceInformation(sprintf "FCS: recovering from error in IsRelativeNameResolvable: '%s'" msg) false) + /// Determines if a long ident is resolvable at a specific point. + member scope.IsRelativeNameResolvableFromSymbol(cursorPos: pos, plid: string list, symbol: FSharpSymbol) : bool = + scope.IsRelativeNameResolvable(pos, plid, symbol.Item) /// Get the auto-complete items at a location member __.GetDeclarations (ctok, parseResultsOpt, line, lineStr, colAtEndOfNamesAndResidue, qualifyingNames, partialName, getAllSymbols, hasTextChangedSinceLastTypecheck) = diff --git a/src/fsharp/vs/service.fsi b/src/fsharp/vs/service.fsi index 986b9a0e4c..52e48fac39 100755 --- a/src/fsharp/vs/service.fsi +++ b/src/fsharp/vs/service.fsi @@ -262,6 +262,10 @@ type internal FSharpCheckFileResults = /// 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 + /// Determines if a long ident is resolvable at a specific point. + /// An optional string used for tracing compiler operations associated with this request. + member IsRelativeNameResolvableFromSymbol: cursorPos : pos * plid : string list * symbol: FSharpSymbol * ?userOpName: string -> Async + /// Represents complete typechecked implementation files, including thier typechecked signatures if any. member ImplementationFiles: FSharpImplementationFileContents list option From f61da8a6298e21045e8dd9128590038b4139c738 Mon Sep 17 00:00:00 2001 From: Vasily Kirichenko Date: Tue, 10 Oct 2017 13:48:19 +0300 Subject: [PATCH 2/2] fix compilation --- src/fsharp/vs/service.fs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/fsharp/vs/service.fs b/src/fsharp/vs/service.fs index 38fc7ccfa6..d699833ac8 100644 --- a/src/fsharp/vs/service.fs +++ b/src/fsharp/vs/service.fs @@ -900,9 +900,10 @@ type TypeCheckInfo (fun msg -> Trace.TraceInformation(sprintf "FCS: recovering from error in IsRelativeNameResolvable: '%s'" msg) false) + /// Determines if a long ident is resolvable at a specific point. member scope.IsRelativeNameResolvableFromSymbol(cursorPos: pos, plid: string list, symbol: FSharpSymbol) : bool = - scope.IsRelativeNameResolvable(pos, plid, symbol.Item) + scope.IsRelativeNameResolvable(cursorPos, plid, symbol.Item) /// Get the auto-complete items at a location member __.GetDeclarations (ctok, parseResultsOpt, line, lineStr, colAtEndOfNamesAndResidue, qualifyingNames, partialName, getAllSymbols, hasTextChangedSinceLastTypecheck) = @@ -2015,6 +2016,12 @@ type FSharpCheckFileResults(filename: string, errors: FSharpErrorInfo[], scopeOp reactorOp userOpName "IsRelativeNameResolvable" true (fun ctok scope -> RequireCompilationThread ctok scope.IsRelativeNameResolvable(pos, plid, item)) + + member info.IsRelativeNameResolvableFromSymbol(pos: pos, plid: string list, symbol: FSharpSymbol, ?userOpName: string) = + let userOpName = defaultArg userOpName "Unknown" + reactorOp userOpName "IsRelativeNameResolvableFromSymbol" true (fun ctok scope -> + RequireCompilationThread ctok + scope.IsRelativeNameResolvableFromSymbol(pos, plid, symbol)) member info.ImplementationFiles = if not keepAssemblyContents then invalidOp "The 'keepAssemblyContents' flag must be set to true on the FSharpChecker in order to access the checked contents of assemblies"