Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Ward <matt.ward@xamarin.com>2019-03-29 18:26:39 +0300
committerMatt Ward <matt.ward@xamarin.com>2019-04-02 11:18:32 +0300
commit6d2b32a011f39b16710e1697b30dcd55a871f61d (patch)
tree5397e4ab7ec79134094692250b663ee12910499e /main/src/core/MonoDevelop.Ide
parent140275b8578f3e2bc3023e935e59ac8942c290c8 (diff)
[Ide] Use type system project info cache on changing active config
If the active configuration is changed in the IDE then the solution info was being reloaded without using the project info cache.
Diffstat (limited to 'main/src/core/MonoDevelop.Ide')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopWorkspace.ProjectSystemHandler.cs7
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopWorkspace.cs3
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService_WorkspaceHandling.cs7
3 files changed, 15 insertions, 2 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopWorkspace.ProjectSystemHandler.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopWorkspace.ProjectSystemHandler.cs
index 757f60bcc0..d806814c03 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopWorkspace.ProjectSystemHandler.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopWorkspace.ProjectSystemHandler.cs
@@ -50,7 +50,7 @@ namespace MonoDevelop.Ide.TypeSystem
readonly ProjectionData projections;
readonly Lazy<MetadataReferenceHandler> metadataHandler;
readonly Lazy<HostDiagnosticUpdateSource> hostDiagnosticUpdateSource;
- readonly HackyWorkspaceFilesCache hackyCache;
+ HackyWorkspaceFilesCache hackyCache;
readonly List<MonoDevelopAnalyzer> analyzersToDispose = new List<MonoDevelopAnalyzer> ();
IDisposable persistentStorageLocationServiceRegistration;
@@ -567,6 +567,11 @@ namespace MonoDevelop.Ide.TypeSystem
return new [] { projectName }.Concat (f.ProjectVirtualPath.ParentDirectory.ToString ().Split (Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar));
}
+ internal void ReloadProjectCache ()
+ {
+ hackyCache = new HackyWorkspaceFilesCache (workspace.MonoDevelopSolution);
+ }
+
public void Dispose ()
{
persistentStorageLocationServiceRegistration?.Dispose ();
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopWorkspace.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopWorkspace.cs
index eb5244977a..734387e725 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopWorkspace.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopWorkspace.cs
@@ -352,7 +352,8 @@ namespace MonoDevelop.Ide.TypeSystem
var token = src.Token;
try {
- var (solution, si) = await ProjectHandler.CreateSolutionInfo (MonoDevelopSolution, token).ConfigureAwait (false);
+ ProjectHandler.ReloadProjectCache ();
+ var (solution, si) = await TypeSystemService.Load (this, token).ConfigureAwait (false);
if (si != null)
OnSolutionReloaded (si);
} catch (OperationCanceledException) {
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService_WorkspaceHandling.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService_WorkspaceHandling.cs
index 6ee117b0b6..ca2ad94713 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService_WorkspaceHandling.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService_WorkspaceHandling.cs
@@ -170,6 +170,13 @@ namespace MonoDevelop.Ide.TypeSystem
}
}
+ internal static Task<(MonoDevelop.Projects.Solution, SolutionInfo)> Load (MonoDevelopWorkspace workspace, CancellationToken cancellationToken)
+ {
+ return Task.Run (() => {
+ return InternalLoad (workspace, cancellationToken);
+ });
+ }
+
static async Task<(MonoDevelop.Projects.Solution, SolutionInfo)> InternalLoad (MonoDevelopWorkspace workspace, CancellationToken cancellationToken)
{
// Try the cache first.