diff --git a/src/fsharp/vs/service.fs b/src/fsharp/vs/service.fs
index 5c2fc8f544..d699833ac8 100644
--- a/src/fsharp/vs/service.fs
+++ b/src/fsharp/vs/service.fs
@@ -900,6 +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(cursorPos, plid, symbol.Item)
/// Get the auto-complete items at a location
member __.GetDeclarations (ctok, parseResultsOpt, line, lineStr, colAtEndOfNamesAndResidue, qualifyingNames, partialName, getAllSymbols, hasTextChangedSinceLastTypecheck) =
@@ -2012,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"
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