Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge release/dev16.2 to release/dev16.3 #6990

Merged
merged 40 commits into from
Jun 12, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
dbccb1c
Merge pull request #6641 from Microsoft/merges/dev16.1-to-dev16.2
Apr 27, 2019
e3e148c
update vs minor version (#6649)
brettfo Apr 29, 2019
046491a
Merge pull request #6642 from Microsoft/merges/master-to-dev16.2
brettfo Apr 29, 2019
34c27d3
Merge pull request #6651 from Microsoft/merges/master-to-dev16.2
Apr 30, 2019
ef3fc2e
Merge remote-tracking branch 'upstream/master' into merges/master-to-…
brettfo Apr 30, 2019
35c5f78
Merge pull request #6658 from Microsoft/merges/master-to-dev16.2
May 1, 2019
267fa06
Merge pull request #6663 from Microsoft/merges/master-to-dev16.2
May 2, 2019
1185538
Merge pull request #6670 from Microsoft/merges/master-to-dev16.2
May 3, 2019
0f93a32
Merge pull request #6683 from Microsoft/merges/master-to-dev16.2
May 3, 2019
485db82
Merge pull request #6682 from Microsoft/merges/dev16.1-to-dev16.2
May 4, 2019
8cc3c7e
Merge pull request #6692 from microsoft/merges/master-to-dev16.2
May 7, 2019
bdf1bec
Merge pull request #6696 from microsoft/merges/master-to-dev16.2
May 7, 2019
2f7ce9e
Merge pull request #6704 from microsoft/merges/master-to-dev16.2
May 10, 2019
1e6bb28
Merge pull request #6708 from microsoft/merges/master-to-dev16.2
May 10, 2019
732b6d0
Merge pull request #6713 from microsoft/merges/master-to-dev16.2
May 13, 2019
5ade74b
Merge pull request #6719 from microsoft/merges/master-to-dev16.2
May 13, 2019
d697eac
Merge pull request #6720 from microsoft/merges/master-to-dev16.2
May 13, 2019
e8102e4
Merge pull request #6726 from microsoft/merges/master-to-dev16.2
May 14, 2019
52c75b3
Update Versions.props
KevinRansom May 14, 2019
90895fd
Merge remote-tracking branch 'upstream/master' into merges/master-to-…
brettfo May 15, 2019
62e9d32
Merge pull request #6736 from microsoft/merges/master-to-release/dev16.2
May 15, 2019
a45d839
Merge pull request #6743 from dotnet/merges/master-to-release/dev16.2
May 16, 2019
eab5ba5
Merge pull request #6757 from dotnet/merges/master-to-release/dev16.2
May 17, 2019
c865d96
Merge pull request #6762 from dotnet/merges/master-to-release/dev16.2
May 17, 2019
0b12961
Merge pull request #6773 from dotnet/merges/master-to-release/dev16.2
May 18, 2019
12313b2
Merge pull request #6787 from dotnet/merges/master-to-release/dev16.2
May 21, 2019
22ecba8
Merge pull request #6792 from dotnet/merges/master-to-release/dev16.2
brettfo May 21, 2019
ca554b0
Merge pull request #6798 from dotnet/merges/master-to-release/dev16.2
May 22, 2019
d6da7ce
Merge pull request #6821 from dotnet/merges/master-to-release/dev16.2
May 23, 2019
808f232
Merge pull request #6834 from dotnet/merges/master-to-release/dev16.2
May 24, 2019
6b02b74
Merge pull request #6852 from dotnet/merges/master-to-release/dev16.2
May 25, 2019
cb51737
Merge branch 'release/dev16.2' into merges/master-to-release/dev16.2
KevinRansom May 27, 2019
42c125e
Merge pull request #6878 from dotnet/merges/master-to-release/dev16.2
May 27, 2019
00cbd3f
Fixed uninitialized mutable locals inside loops (#6899)
TIHan May 31, 2019
f96a2f6
Merge branch 'release/dev16.2' into merges/master-to-release/dev16.2
brettfo Jun 1, 2019
c31566c
Merge pull request #6894 from dotnet/merges/master-to-release/dev16.2
Jun 1, 2019
431fdea
Merge pull request #6918 from dotnet/merges/master-to-release/dev16.2
Jun 2, 2019
3de631a
Stop calling GetHierarchy in FSharpProjectOptionsReactor (#6946)
TIHan Jun 6, 2019
3040aa2
Merge pull request #6982 from dotnet/merges/master-to-release/dev16.2
brettfo Jun 12, 2019
bff4fff
don't ship LSP in VS in `release/dev16.2` (#6983)
brettfo Jun 12, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions eng/Versions.props
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,14 @@
<FSharpCorePreviewPackageVersion>$(FSCorePackageVersion)-$(PreReleaseVersionLabel).*</FSharpCorePreviewPackageVersion>
</PropertyGroup>
<PropertyGroup>
<FSPackageMajorVersion>10.4</FSPackageMajorVersion>
<FSPackageVersion>$(FSPackageMajorVersion).3</FSPackageVersion>
<FSPackageMajorVersion>10.5</FSPackageMajorVersion>
<FSPackageVersion>$(FSPackageMajorVersion).0</FSPackageVersion>
<FSProductVersionPrefix>$(FSPackageVersion)</FSProductVersionPrefix>
<FSProductVersion>$(FSPackageVersion).0</FSProductVersion>
</PropertyGroup>
<PropertyGroup>
<VSMajorVersion>16</VSMajorVersion>
<VSMinorVersion>1</VSMinorVersion>
<VSMinorVersion>2</VSMinorVersion>
<VSGeneralVersion>$(VSMajorVersion).0</VSGeneralVersion>
<VSAssemblyVersionPrefix>$(VSMajorVersion).$(VSMinorVersion).0</VSAssemblyVersionPrefix>
<VSAssemblyVersion>$(VSAssemblyVersionPrefix).0</VSAssemblyVersion>
Expand Down
3 changes: 2 additions & 1 deletion eng/targets/Settings.props
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
</PropertyGroup>

<PropertyGroup>
<IncludeVsLanguageServer>true</IncludeVsLanguageServer>
<!-- this should be false for branch `release/dev16.2`, true otherwise -->
<IncludeVsLanguageServer>false</IncludeVsLanguageServer>
</PropertyGroup>

</Project>
17 changes: 14 additions & 3 deletions src/fsharp/IlxGen.fs
Original file line number Diff line number Diff line change
Expand Up @@ -826,8 +826,15 @@ and IlxGenEnv =

/// Are we under the scope of a try, catch or finally? If so we can't tailcall. SEH = structured exception handling
withinSEH: bool

/// Are we inside of a recursive let binding, while loop, or a for loop?
isInLoop: bool
}

let SetIsInLoop isInLoop eenv =
if eenv.isInLoop = isInLoop then eenv
else { eenv with isInLoop = isInLoop }

let ReplaceTyenv tyenv (eenv: IlxGenEnv) = {eenv with tyenv = tyenv }

let EnvForTypars tps eenv = {eenv with tyenv = TypeReprEnv.ForTypars tps }
Expand Down Expand Up @@ -3369,6 +3376,7 @@ and GenTryFinally cenv cgbuf eenv (bodyExpr, handlerExpr, m, resty, spTry, spFin
//--------------------------------------------------------------------------

and GenForLoop cenv cgbuf eenv (spFor, v, e1, dir, e2, loopBody, m) sequel =
let eenv = SetIsInLoop true eenv
let g = cenv.g

// The JIT/NGen eliminate array-bounds checks for C# loops of form:
Expand Down Expand Up @@ -3459,6 +3467,7 @@ and GenForLoop cenv cgbuf eenv (spFor, v, e1, dir, e2, loopBody, m) sequel =
//--------------------------------------------------------------------------

and GenWhileLoop cenv cgbuf eenv (spWhile, e1, e2, m) sequel =
let eenv = SetIsInLoop true eenv
let finish = CG.GenerateDelayMark cgbuf "while_finish"
let startTest = CG.GenerateMark cgbuf "startTest"

Expand Down Expand Up @@ -5083,6 +5092,7 @@ and GenLetRecFixup cenv cgbuf eenv (ilxCloSpec: IlxClosureSpec, e, ilField: ILFi

/// Generate letrec bindings
and GenLetRecBindings cenv (cgbuf: CodeGenBuffer) eenv (allBinds: Bindings, m) =
let eenv = SetIsInLoop true eenv
// Fix up recursion for non-toplevel recursive bindings
let bindsPossiblyRequiringFixup =
allBinds |> List.filter (fun b ->
Expand Down Expand Up @@ -5324,8 +5334,8 @@ and GenBindingAfterSequencePoint cenv cgbuf eenv sp (TBind(vspec, rhsExpr, _)) s
| _ ->
let storage = StorageForVal cenv.g m vspec eenv
match storage, rhsExpr with
// locals are zero-init, no need to initialize them
| Local (_, realloc, _), Expr.Const (Const.Zero, _, _) when not realloc ->
// locals are zero-init, no need to initialize them, except if you are in a loop and the local is mutable.
| Local (_, realloc, _), Expr.Const (Const.Zero, _, _) when not realloc && not (eenv.isInLoop && vspec.IsMutable) ->
CommitStartScope cgbuf startScopeMarkOpt
| _ ->
GenBindingRhs cenv cgbuf eenv SPSuppress vspec rhsExpr
Expand Down Expand Up @@ -7463,7 +7473,8 @@ let GetEmptyIlxGenEnv (ilg: ILGlobals) ccu =
liveLocals=IntMap.empty()
innerVals = []
sigToImplRemapInfo = [] (* "module remap info" *)
withinSEH = false }
withinSEH = false
isInLoop = false }

type IlxGenResults =
{ ilTypeDefs: ILTypeDef list
Expand Down
3 changes: 3 additions & 0 deletions src/fsharp/fsi/fsi.fsproj
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@
<ProjectReference Include="$(MSBuildThisFileDirectory)..\FSharp.Compiler.Private\FSharp.Compiler.Private.fsproj" />
<ProjectReference Include="$(MSBuildThisFileDirectory)..\FSharp.Compiler.Interactive.Settings\FSharp.Compiler.Interactive.Settings.fsproj" />

<!-- only used when '$(TargetFramework)' == 'netstandard2.0' -->
<ProjectReference Include="..\FSharp.Build\FSharp.Build.fsproj" Condition="'$(TargetFramework)' == 'netstandard2.0'" />

<!-- only used when '$(TargetFramework)' == 'net472' -->
<ProjectReference Include="$(MSBuildThisFileDirectory)..\FSharp.Compiler.Server.Shared\FSharp.Compiler.Server.Shared.fsproj" Condition="'$(TargetFramework)' == 'net472'" />
</ItemGroup>
Expand Down
73 changes: 73 additions & 0 deletions tests/fsharp/Compiler/Regressions/ForInDoMutableRegressionTest.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
// Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.

namespace FSharp.Compiler.UnitTests

open System
open NUnit.Framework

[<TestFixture()>]
module ForInDoMutableRegressionTest =

/// This test is to ensure we initialize locals inside loops.
[<Test>]
let Script_ForInDoMutableRegressionTest() =
let script =
"""
open System.Collections.Generic

let bug() =
for a in [1;2;3;4] do
let mutable x = null
if x = null then
x <- HashSet<int>()
x.Add a |> ignore
let expected = [a]
let actual = List.ofSeq x
if expected <> actual then
failwith "Bug"

let not_a_bug() =
for a in [1;2;3;4] do
let x = ref null
if (!x) = null then
x := HashSet<int>()
(!x).Add a |> ignore
let expected = [a]
let actual = List.ofSeq (!x)
if expected <> actual then
failwith "Bug"

let rec test_rec xs =
let mutable x = null
match xs with
| [] -> ()
| a :: xs ->
if x = null then
x <- HashSet<int>()
x.Add a |> ignore
let expected = [a]
let actual = List.ofSeq x
if expected <> actual then
failwith "Bug"
test_rec xs

let test_for_loop () =
let xs = [|1;2;3;4|]
for i = 0 to xs.Length - 1 do
let a = xs.[i]
let mutable x = null
if x = null then
x <- HashSet<int>()
x.Add a |> ignore
let expected = [a]
let actual = List.ofSeq x
if expected <> actual then
failwith "Bug"

bug ()
not_a_bug ()
test_rec [1;2;3;4]
test_for_loop ()
"""

CompilerAssert.RunScript script []
1 change: 1 addition & 0 deletions tests/fsharp/FSharpSuite.Tests.fsproj
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
<Compile Include="Compiler\Language\SpanOptimizationTests.fs" />
<Compile Include="Compiler\Language\SpanTests.fs" />
<Compile Include="Compiler\Language\StringConcatOptimizationTests.fs" />
<Compile Include="Compiler\Regressions\ForInDoMutableRegressionTest.fs" />
<Content Include="packages.config" />
<None Include="app.config" />
<None Include="update.base.line.with.actuals.fsx" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,10 @@
<Action Type="Ngen" Path="FSharp.ProjectSystem.FSharp.dll" />
<Action Type="Ngen" Path="FSharp.ProjectSystem.PropertyPages.dll" />
<Action Type="Ngen" Path="FSharp.VS.FSI.dll" />
<!-- this Ngen action should be disabled in branch `release/dev16.2`, enabled otherwise -->
<!--
<Action Type="Ngen" Path="Agent\FSharp.Compiler.LanguageServer.exe" />
-->
</Actions>
</Installer>
<Dependencies>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,58 +24,30 @@ open Microsoft.CodeAnalysis.ExternalAccess.FSharp.LanguageServices
[<AutoOpen>]
module private FSharpProjectOptionsHelpers =

let mapCpsProjectToSite(workspace:VisualStudioWorkspace, project:Project, serviceProvider:System.IServiceProvider, cpsCommandLineOptions: IDictionary<ProjectId, string[] * string[]>) =
let hier = workspace.GetHierarchy(project.Id)
let mapCpsProjectToSite(project:Project, cpsCommandLineOptions: IDictionary<ProjectId, string[] * string[]>) =
let sourcePaths, referencePaths, options =
match cpsCommandLineOptions.TryGetValue(project.Id) with
| true, (sourcePaths, options) -> sourcePaths, [||], options
| false, _ -> [||], [||], [||]
let mutable errorReporter = Unchecked.defaultof<_>
{
new IProvideProjectSite with
member x.GetProjectSite() =
let mutable errorReporter =
let reporter = ProjectExternalErrorReporter(project.Id, "FS", serviceProvider)
Some(reporter:> IVsLanguageServiceBuildErrorReporter2)

{
new IProjectSite with
member __.Description = project.Name
member __.CompilationSourceFiles = sourcePaths
member __.CompilationOptions =
Array.concat [options; referencePaths |> Array.map(fun r -> "-r:" + r)]
member __.CompilationReferences = referencePaths
member site.CompilationBinOutputPath = site.CompilationOptions |> Array.tryPick (fun s -> if s.StartsWith("-o:") then Some s.[3..] else None)
member __.ProjectFileName = project.FilePath
member __.AdviseProjectSiteChanges(_,_) = ()
member __.AdviseProjectSiteCleaned(_,_) = ()
member __.AdviseProjectSiteClosed(_,_) = ()
member __.IsIncompleteTypeCheckEnvironment = false
member __.TargetFrameworkMoniker = ""
member __.ProjectGuid = project.Id.Id.ToString()
member __.LoadTime = System.DateTime.Now
member __.ProjectProvider = Some (x)
member __.BuildErrorReporter with get () = errorReporter and set (v) = errorReporter <- v
}
interface IVsHierarchy with
member __.SetSite(psp) = hier.SetSite(psp)
member __.GetSite(psp) = hier.GetSite(ref psp)
member __.QueryClose(pfCanClose)= hier.QueryClose(ref pfCanClose)
member __.Close() = hier.Close()
member __.GetGuidProperty(itemid, propid, pguid) = hier.GetGuidProperty(itemid, propid, ref pguid)
member __.SetGuidProperty(itemid, propid, rguid) = hier.SetGuidProperty(itemid, propid, ref rguid)
member __.GetProperty(itemid, propid, pvar) = hier.GetProperty(itemid, propid, ref pvar)
member __.SetProperty(itemid, propid, var) = hier.SetProperty(itemid, propid, var)
member __.GetNestedHierarchy(itemid, iidHierarchyNested, ppHierarchyNested, pitemidNested) =
hier.GetNestedHierarchy(itemid, ref iidHierarchyNested, ref ppHierarchyNested, ref pitemidNested)
member __.GetCanonicalName(itemid, pbstrName) = hier.GetCanonicalName(itemid, ref pbstrName)
member __.ParseCanonicalName(pszName, pitemid) = hier.ParseCanonicalName(pszName, ref pitemid)
member __.Unused0() = hier.Unused0()
member __.AdviseHierarchyEvents(pEventSink, pdwCookie) = hier.AdviseHierarchyEvents(pEventSink, ref pdwCookie)
member __.UnadviseHierarchyEvents(dwCookie) = hier.UnadviseHierarchyEvents(dwCookie)
member __.Unused1() = hier.Unused1()
member __.Unused2() = hier.Unused2()
member __.Unused3() = hier.Unused3()
member __.Unused4() = hier.Unused4()
new IProjectSite with
member __.Description = project.Name
member __.CompilationSourceFiles = sourcePaths
member __.CompilationOptions =
Array.concat [options; referencePaths |> Array.map(fun r -> "-r:" + r)]
member __.CompilationReferences = referencePaths
member site.CompilationBinOutputPath = site.CompilationOptions |> Array.tryPick (fun s -> if s.StartsWith("-o:") then Some s.[3..] else None)
member __.ProjectFileName = project.FilePath
member __.AdviseProjectSiteChanges(_,_) = ()
member __.AdviseProjectSiteCleaned(_,_) = ()
member __.AdviseProjectSiteClosed(_,_) = ()
member __.IsIncompleteTypeCheckEnvironment = false
member __.TargetFrameworkMoniker = ""
member __.ProjectGuid = project.Id.Id.ToString()
member __.LoadTime = System.DateTime.Now
member __.ProjectProvider = None
member __.BuildErrorReporter with get () = errorReporter and set (v) = errorReporter <- v
}

let hasProjectVersionChanged (oldProject: Project) (newProject: Project) =
Expand Down Expand Up @@ -108,11 +80,13 @@ type private FSharpProjectOptionsMessage =
| ClearSingleFileOptionsCache of DocumentId

[<Sealed>]
type private FSharpProjectOptionsReactor (workspace: VisualStudioWorkspace, settings: EditorOptions, serviceProvider, checkerProvider: FSharpCheckerProvider) =
type private FSharpProjectOptionsReactor (_workspace: VisualStudioWorkspace, settings: EditorOptions, _serviceProvider, checkerProvider: FSharpCheckerProvider) =
let cancellationTokenSource = new CancellationTokenSource()

// Hack to store command line options from HandleCommandLineChanges
let cpsCommandLineOptions = new ConcurrentDictionary<ProjectId, string[] * string[]>()
let cpsCommandLineOptions = ConcurrentDictionary<ProjectId, string[] * string[]>()

let legacyProjectSites = ConcurrentDictionary<ProjectId, IProjectSite>()

let cache = Dictionary<ProjectId, Project * FSharpParsingOptions * FSharpProjectOptions>()
let singleFileCache = Dictionary<DocumentId, VersionStamp * FSharpParsingOptions * FSharpProjectOptions>()
Expand Down Expand Up @@ -158,6 +132,16 @@ type private FSharpProjectOptionsReactor (workspace: VisualStudioWorkspace, sett
else
return Some(parsingOptions, projectOptions)
}

let tryGetProjectSite (project: Project) =
// Cps
if cpsCommandLineOptions.ContainsKey project.Id then
Some (mapCpsProjectToSite(project, cpsCommandLineOptions))
else
// Legacy
match legacyProjectSites.TryGetValue project.Id with
| true, site -> Some site
| _ -> None

let rec tryComputeOptions (project: Project) =
async {
Expand All @@ -183,15 +167,9 @@ type private FSharpProjectOptionsReactor (workspace: VisualStudioWorkspace, sett
return None
else

let hier = workspace.GetHierarchy(projectId)
let projectSite =
match hier with
// Legacy
| (:? IProvideProjectSite as provideSite) -> provideSite.GetProjectSite()
// Cps
| _ ->
let provideSite = mapCpsProjectToSite(workspace, project, serviceProvider, cpsCommandLineOptions)
provideSite.GetProjectSite()
match tryGetProjectSite project with
| None -> return None
| Some projectSite ->

let otherOptions =
project.ProjectReferences
Expand Down Expand Up @@ -283,6 +261,7 @@ type private FSharpProjectOptionsReactor (workspace: VisualStudioWorkspace, sett

| FSharpProjectOptionsMessage.ClearOptions(projectId) ->
cache.Remove(projectId) |> ignore
legacyProjectSites.TryRemove(projectId) |> ignore
| FSharpProjectOptionsMessage.ClearSingleFileOptionsCache(documentId) ->
singleFileCache.Remove(documentId) |> ignore
}
Expand All @@ -304,6 +283,9 @@ type private FSharpProjectOptionsReactor (workspace: VisualStudioWorkspace, sett
member __.SetCpsCommandLineOptions(projectId, sourcePaths, options) =
cpsCommandLineOptions.[projectId] <- (sourcePaths, options)

member __.SetLegacyProjectSite (projectId, projectSite) =
legacyProjectSites.[projectId] <- projectSite

member __.TryGetCachedOptionsByProjectId(projectId) =
match cache.TryGetValue(projectId) with
| true, result -> Some(result)
Expand Down Expand Up @@ -344,6 +326,9 @@ type internal FSharpProjectOptionsManager
| _ -> ()
)

member __.SetLegacyProjectSite (projectId, projectSite) =
reactor.SetLegacyProjectSite (projectId, projectSite)

/// Clear a project from the project table
member this.ClearInfoForProject(projectId:ProjectId) =
reactor.ClearOptionsByProjectId(projectId)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ open Microsoft.VisualStudio.LanguageServices.ProjectSystem
open Microsoft.VisualStudio.Shell
open Microsoft.VisualStudio.Shell.Interop
open Microsoft.VisualStudio.Text.Outlining
open FSharp.NativeInterop
open Microsoft.CodeAnalysis.ExternalAccess.FSharp

#nowarn "9" // NativePtr.toNativeInt
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ type internal LegacyProjectWorkspaceMap(solution: IVsSolution,

let projectId = projectContext.Id

projectInfoManager.SetLegacyProjectSite (projectId, site)

// Sync the source files in projectContext. Note that these source files are __not__ maintained in order in projectContext
// as edits are made. It seems this is ok because the source file list is only used to drive roslyn per-file checking.
let updatedFiles = site.CompilationSourceFiles |> wellFormedFilePathSetIgnoreCase
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ type internal FSharpAsyncQuickInfoSource
checkerProvider:FSharpCheckerProvider,
projectInfoManager:FSharpProjectOptionsManager,
textBuffer:ITextBuffer,
settings: EditorOptions
_settings: EditorOptions
) =

static let joinWithLineBreaks segments =
Expand Down Expand Up @@ -206,9 +206,10 @@ type internal FSharpAsyncQuickInfoSource
// This method can be called from the background thread.
// Do not call IServiceProvider.GetService here.
override __.GetQuickInfoItemAsync(session:IAsyncQuickInfoSession, cancellationToken:CancellationToken) : Task<QuickInfoItem> =
// if using LSP, just bail early
if settings.Advanced.UsePreviewTextHover then Task.FromResult<QuickInfoItem>(null)
else
// The following lines should be disabled for branch `release/dev16.2`, enabled otherwise
//// if using LSP, just bail early
//if settings.Advanced.UsePreviewTextHover then Task.FromResult<QuickInfoItem>(null)
//else
let triggerPoint = session.GetTriggerPoint(textBuffer.CurrentSnapshot)
match triggerPoint.HasValue with
| false -> Task.FromResult<QuickInfoItem>(null)
Expand Down
Loading