From 17f4d3ffab9921cdba8df52ebce7c3a69fd2c4de Mon Sep 17 00:00:00 2001 From: Ivan Serdiuk Date: Sun, 27 Jun 2021 00:13:18 +0300 Subject: [PATCH] Compatibility with ReSharper 2021.1 --- .../AgentMulder.Containers.AspNetCore.csproj | 2 +- .../AgentMulder.Containers.Autofac.csproj | 2 +- ...gentMulder.Containers.CastleWindsor.csproj | 2 +- .../AgentMulder.Containers.Catel.csproj | 2 +- .../AgentMulder.Containers.LightInject.csproj | 2 +- .../AgentMulder.Containers.Ninject.csproj | 2 +- ...entMulder.Containers.SimpleInjector.csproj | 2 +- ...AgentMulder.Containers.StructureMap.csproj | 2 +- .../AgentMulder.Containers.Unity.csproj | 2 +- .../AgentMulder.ReSharper.Domain.csproj | 2 +- .../AgentMulder.ReSharper.Plugin.csproj | 6 ++-- .../Components/PatternManagerCache.cs | 27 ++++++++--------- .../Components/RegisteredTypeCollector.cs | 30 +++++++++---------- .../Highlighting/ContainerGutterMark.cs | 12 ++++---- .../RegisteredByContainerHighlighting.cs | 2 +- .../AgentMulder.ReSharper.Tests.csproj | 19 ++++++------ src/AgentMulder.nuspec | 2 +- src/Test/Data/NuGet.config | 1 + 18 files changed, 61 insertions(+), 58 deletions(-) diff --git a/src/AgentMulder.Containers.AspNetCore/AgentMulder.Containers.AspNetCore.csproj b/src/AgentMulder.Containers.AspNetCore/AgentMulder.Containers.AspNetCore.csproj index 002983f8..e35afb8b 100644 --- a/src/AgentMulder.Containers.AspNetCore/AgentMulder.Containers.AspNetCore.csproj +++ b/src/AgentMulder.Containers.AspNetCore/AgentMulder.Containers.AspNetCore.csproj @@ -6,7 +6,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/AgentMulder.Containers.Autofac/AgentMulder.Containers.Autofac.csproj b/src/AgentMulder.Containers.Autofac/AgentMulder.Containers.Autofac.csproj index e01b9d25..04950c9d 100644 --- a/src/AgentMulder.Containers.Autofac/AgentMulder.Containers.Autofac.csproj +++ b/src/AgentMulder.Containers.Autofac/AgentMulder.Containers.Autofac.csproj @@ -6,7 +6,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/AgentMulder.Containers.CastleWindsor/AgentMulder.Containers.CastleWindsor.csproj b/src/AgentMulder.Containers.CastleWindsor/AgentMulder.Containers.CastleWindsor.csproj index 002983f8..e35afb8b 100644 --- a/src/AgentMulder.Containers.CastleWindsor/AgentMulder.Containers.CastleWindsor.csproj +++ b/src/AgentMulder.Containers.CastleWindsor/AgentMulder.Containers.CastleWindsor.csproj @@ -6,7 +6,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/AgentMulder.Containers.Catel/AgentMulder.Containers.Catel.csproj b/src/AgentMulder.Containers.Catel/AgentMulder.Containers.Catel.csproj index 002983f8..e35afb8b 100644 --- a/src/AgentMulder.Containers.Catel/AgentMulder.Containers.Catel.csproj +++ b/src/AgentMulder.Containers.Catel/AgentMulder.Containers.Catel.csproj @@ -6,7 +6,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/AgentMulder.Containers.LightInject/AgentMulder.Containers.LightInject.csproj b/src/AgentMulder.Containers.LightInject/AgentMulder.Containers.LightInject.csproj index 002983f8..e35afb8b 100644 --- a/src/AgentMulder.Containers.LightInject/AgentMulder.Containers.LightInject.csproj +++ b/src/AgentMulder.Containers.LightInject/AgentMulder.Containers.LightInject.csproj @@ -6,7 +6,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/AgentMulder.Containers.Ninject/AgentMulder.Containers.Ninject.csproj b/src/AgentMulder.Containers.Ninject/AgentMulder.Containers.Ninject.csproj index 002983f8..e35afb8b 100644 --- a/src/AgentMulder.Containers.Ninject/AgentMulder.Containers.Ninject.csproj +++ b/src/AgentMulder.Containers.Ninject/AgentMulder.Containers.Ninject.csproj @@ -6,7 +6,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/AgentMulder.Containers.SimpleInjector/AgentMulder.Containers.SimpleInjector.csproj b/src/AgentMulder.Containers.SimpleInjector/AgentMulder.Containers.SimpleInjector.csproj index 002983f8..e35afb8b 100644 --- a/src/AgentMulder.Containers.SimpleInjector/AgentMulder.Containers.SimpleInjector.csproj +++ b/src/AgentMulder.Containers.SimpleInjector/AgentMulder.Containers.SimpleInjector.csproj @@ -6,7 +6,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/AgentMulder.Containers.StructureMap/AgentMulder.Containers.StructureMap.csproj b/src/AgentMulder.Containers.StructureMap/AgentMulder.Containers.StructureMap.csproj index 002983f8..e35afb8b 100644 --- a/src/AgentMulder.Containers.StructureMap/AgentMulder.Containers.StructureMap.csproj +++ b/src/AgentMulder.Containers.StructureMap/AgentMulder.Containers.StructureMap.csproj @@ -6,7 +6,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/AgentMulder.Containers.Unity/AgentMulder.Containers.Unity.csproj b/src/AgentMulder.Containers.Unity/AgentMulder.Containers.Unity.csproj index 002983f8..e35afb8b 100644 --- a/src/AgentMulder.Containers.Unity/AgentMulder.Containers.Unity.csproj +++ b/src/AgentMulder.Containers.Unity/AgentMulder.Containers.Unity.csproj @@ -6,7 +6,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/AgentMulder.ReSharper.Domain/AgentMulder.ReSharper.Domain.csproj b/src/AgentMulder.ReSharper.Domain/AgentMulder.ReSharper.Domain.csproj index 985e25b0..18f436f9 100644 --- a/src/AgentMulder.ReSharper.Domain/AgentMulder.ReSharper.Domain.csproj +++ b/src/AgentMulder.ReSharper.Domain/AgentMulder.ReSharper.Domain.csproj @@ -6,7 +6,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/AgentMulder.ReSharper.Plugin/AgentMulder.ReSharper.Plugin.csproj b/src/AgentMulder.ReSharper.Plugin/AgentMulder.ReSharper.Plugin.csproj index c527401d..df68b7ff 100644 --- a/src/AgentMulder.ReSharper.Plugin/AgentMulder.ReSharper.Plugin.csproj +++ b/src/AgentMulder.ReSharper.Plugin/AgentMulder.ReSharper.Plugin.csproj @@ -14,9 +14,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/AgentMulder.ReSharper.Plugin/Components/PatternManagerCache.cs b/src/AgentMulder.ReSharper.Plugin/Components/PatternManagerCache.cs index 94a663fa..41a744a4 100644 --- a/src/AgentMulder.ReSharper.Plugin/Components/PatternManagerCache.cs +++ b/src/AgentMulder.ReSharper.Plugin/Components/PatternManagerCache.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.IO; using System.Linq; -using System.Runtime.InteropServices; using JetBrains.Application.Progress; using JetBrains.DocumentManagers.impl; using JetBrains.ProjectModel; @@ -14,7 +13,7 @@ namespace AgentMulder.ReSharper.Plugin.Components { [SolutionComponent] - public class PatternManagerCache : IPatternManager, ICache + public class PatternManagerCache : IPatternManager, IPsiSourceFileCache { private readonly object lockObject = new object(); private readonly JetHashSet dirtyFiles = new JetHashSet(); @@ -32,7 +31,7 @@ public PatternManagerCache(SolutionAnalyzer solutionAnalyzer, PsiProjectFileType public IEnumerable GetRegistrationsForFile(IPsiSourceFile sourceFile) { - if (!((ICache)this).UpToDate(sourceFile)) + if (!((IPsiSourceFileCache)this).UpToDate(sourceFile)) { Merge(sourceFile, ProcessSourceFile(sourceFile)); } @@ -50,12 +49,12 @@ public void Refresh() lock (lockObject) { var list = this.ProcessSourceFile(file).ToList(); - ((ICache)this).Merge(file, list); + ((IPsiSourceFileCache)this).Merge(file, list); } } } - object ICache.Build(IPsiSourceFile sourceFile, bool isStartup) + object IPsiSourceFileCache.Build(IPsiSourceFile sourceFile, bool isStartup) { var registrationInfos = ProcessSourceFile(sourceFile).ToList(); Merge(sourceFile, registrationInfos); @@ -79,7 +78,7 @@ void ICache.Save(IProgressIndicator progress, bool enablePersistence) Save?.Invoke(this, EventArgs.Empty); } - void ICache.MarkAsDirty(IPsiSourceFile sourceFile) + void IPsiSourceFileCache.MarkAsDirty(IPsiSourceFile sourceFile) { MarkAsDirty(sourceFile); } @@ -92,7 +91,7 @@ private void MarkAsDirty(IPsiSourceFile sourceFile) } } - void ICache.Merge(IPsiSourceFile sourceFile, object builtPart) + void IPsiSourceFileCache.Merge(IPsiSourceFile sourceFile, object builtPart) { if (builtPart == null) { @@ -102,7 +101,7 @@ void ICache.Merge(IPsiSourceFile sourceFile, object builtPart) Merge(sourceFile, (IEnumerable)builtPart); } - void ICache.Drop(IPsiSourceFile sourceFile) + void IPsiSourceFileCache.Drop(IPsiSourceFile sourceFile) { RemoveFileItems(sourceFile); } @@ -140,7 +139,7 @@ private void RemoveFileItems(IPsiSourceFile sourceFile) } } - void ICache.OnPsiChange(ITreeNode elementContainingChanges, PsiChangedElementType type) + void IPsiSourceFileCache.OnPsiChange(ITreeNode elementContainingChanges, PsiChangedElementType type) { var sourceFile = elementContainingChanges?.GetSourceFile(); if (sourceFile == null) @@ -154,12 +153,12 @@ void ICache.OnPsiChange(ITreeNode elementContainingChanges, PsiChangedElementTyp } } - void ICache.OnDocumentChange(IPsiSourceFile sourceFile, ProjectFileDocumentCopyChange change) + void IPsiSourceFileCache.OnDocumentChange(IPsiSourceFile sourceFile, ProjectFileDocumentCopyChange change) { MarkAsDirty(sourceFile); } - void ICache.SyncUpdate(bool underTransaction) + void IPsiSourceFileCache.SyncUpdate(bool underTransaction) { lock (lockObject) { @@ -167,7 +166,7 @@ void ICache.SyncUpdate(bool underTransaction) { foreach (var psiSourceFile in dirtyFiles.ToList()) // ToList to prevent InvalidOperation while enumerating { - ((ICache)this).Merge(psiSourceFile, ProcessSourceFile(psiSourceFile)); + ((IPsiSourceFileCache)this).Merge(psiSourceFile, ProcessSourceFile(psiSourceFile)); } dirtyFiles.Clear(); @@ -175,7 +174,7 @@ void ICache.SyncUpdate(bool underTransaction) } } - bool ICache.UpToDate(IPsiSourceFile sourceFile) + bool IPsiSourceFileCache.UpToDate(IPsiSourceFile sourceFile) { lock (lockObject) { @@ -208,7 +207,7 @@ public IEnumerable GetAllRegistrations() { if (HasDirtyFiles) { - ((ICache)this).SyncUpdate(false); + ((IPsiSourceFileCache)this).SyncUpdate(false); } lock (lockObject) diff --git a/src/AgentMulder.ReSharper.Plugin/Components/RegisteredTypeCollector.cs b/src/AgentMulder.ReSharper.Plugin/Components/RegisteredTypeCollector.cs index 0f5c1e2f..4e7f4b58 100644 --- a/src/AgentMulder.ReSharper.Plugin/Components/RegisteredTypeCollector.cs +++ b/src/AgentMulder.ReSharper.Plugin/Components/RegisteredTypeCollector.cs @@ -21,7 +21,7 @@ namespace AgentMulder.ReSharper.Plugin.Components /// /// This is constructed and injected automatically by the runtime. [SolutionComponent] - public sealed class RegisteredTypeCollector : IRegisteredTypeCollector, ICache + public sealed class RegisteredTypeCollector : IRegisteredTypeCollector, IPsiSourceFileCache { private readonly ConcurrentDictionary dirtyFiles = new ConcurrentDictionary(); private readonly PsiProjectFileTypeCoordinator projectFileTypeCoordinator; @@ -45,7 +45,7 @@ public RegisteredTypeCollector(PsiProjectFileTypeCoordinator projectFileTypeCoor /// A read-only collection of type declarations and registration information. public IEnumerable> GetRegisteredTypes() { - ((ICache)this).SyncUpdate(false); + ((IPsiSourceFileCache)this).SyncUpdate(false); // this cache stores declared types for each source file // when a source file changes, types in that file are recalculated @@ -58,7 +58,7 @@ public IEnumerable> GetRegisteredType return types; } - object ICache.Build(IPsiSourceFile sourceFile, bool isStartup) + object IPsiSourceFileCache.Build(IPsiSourceFile sourceFile, bool isStartup) { if (sourceFile.Properties.IsGeneratedFile || sourceFile.Properties.IsNonUserFile) { @@ -69,12 +69,12 @@ object ICache.Build(IPsiSourceFile sourceFile, bool isStartup) // this is because to collect registered types, we first need the pattern manager cache to be completely populated // that will only happen later - see Refresh() var list = new List(); - ((ICache)this).Merge(sourceFile, list); + ((IPsiSourceFileCache)this).Merge(sourceFile, list); return list; } - void ICache.MarkAsDirty(IPsiSourceFile sf) + void IPsiSourceFileCache.MarkAsDirty(IPsiSourceFile sf) { dirtyFiles.AddOrUpdate(sf, _ => null, (file, current) => null); } @@ -95,7 +95,7 @@ void ICache.Save(IProgressIndicator progress, bool enablePersistence) // we do not persist this cache } - bool ICache.UpToDate(IPsiSourceFile sourceFile) + bool IPsiSourceFileCache.UpToDate(IPsiSourceFile sourceFile) { if (dirtyFiles.ContainsKey(sourceFile)) { @@ -116,7 +116,7 @@ bool ICache.UpToDate(IPsiSourceFile sourceFile) return !languageType.IsNullOrUnknown() && projectFileTypeCoordinator.TryGetService(languageType) != null; } - void ICache.Merge(IPsiSourceFile sourceFile, object data) + void IPsiSourceFileCache.Merge(IPsiSourceFile sourceFile, object data) { // merges the provided data into the cache // this is usually called after Build @@ -131,7 +131,7 @@ void ICache.Merge(IPsiSourceFile sourceFile, object data) dirtyFiles.TryRemove(sourceFile, out _); } - void ICache.Drop(IPsiSourceFile sourceFile) + void IPsiSourceFileCache.Drop(IPsiSourceFile sourceFile) { // removes the specified file from the cache if (!matchingTypes.ContainsKey(sourceFile)) @@ -142,7 +142,7 @@ void ICache.Drop(IPsiSourceFile sourceFile) matchingTypes.TryRemove(sourceFile, out _); } - void ICache.OnPsiChange(ITreeNode elementContainingChanges, PsiChangedElementType type) + void IPsiSourceFileCache.OnPsiChange(ITreeNode elementContainingChanges, PsiChangedElementType type) { if (type == PsiChangedElementType.Whitespaces) { @@ -158,13 +158,13 @@ void ICache.OnPsiChange(ITreeNode elementContainingChanges, PsiChangedElementTyp dirtyFiles.AddOrUpdate(sourceFile, _ => null, (file, current) => null); } - void ICache.OnDocumentChange(IPsiSourceFile sourceFile, ProjectFileDocumentCopyChange change) + void IPsiSourceFileCache.OnDocumentChange(IPsiSourceFile sourceFile, ProjectFileDocumentCopyChange change) { // marks the document as dirty - ((ICache)this).MarkAsDirty(sourceFile); + ((IPsiSourceFileCache)this).MarkAsDirty(sourceFile); } - void ICache.SyncUpdate(bool underTransaction) + void IPsiSourceFileCache.SyncUpdate(bool underTransaction) { if (underTransaction) { @@ -181,14 +181,14 @@ void ICache.SyncUpdate(bool underTransaction) { foreach (var psiSourceFile in dirtyFiles.Keys.ToList()) // ToList to prevent InvalidOperation while enumerating { - ((ICache)this).Merge(psiSourceFile, CollectTypes(psiSourceFile)); + ((IPsiSourceFileCache)this).Merge(psiSourceFile, CollectTypes(psiSourceFile)); } dirtyFiles.Clear(); } } - void ICache.Dump(TextWriter writer, IPsiSourceFile sourceFile) + void IPsiSourceFileCache.Dump(TextWriter writer, IPsiSourceFile sourceFile) { // this is just a debugging facility } @@ -213,7 +213,7 @@ public void Refresh() foreach (var file in matchingTypes.Keys.ToList()) { var list = CollectTypes(file); - ((ICache)this).Merge(file, list); + ((IPsiSourceFileCache)this).Merge(file, list); } } diff --git a/src/AgentMulder.ReSharper.Plugin/Highlighting/ContainerGutterMark.cs b/src/AgentMulder.ReSharper.Plugin/Highlighting/ContainerGutterMark.cs index a92e229b..74fe6a24 100644 --- a/src/AgentMulder.ReSharper.Plugin/Highlighting/ContainerGutterMark.cs +++ b/src/AgentMulder.ReSharper.Plugin/Highlighting/ContainerGutterMark.cs @@ -1,5 +1,5 @@ using System.Collections.Generic; -using AgentMulder.ReSharper.Plugin.Highlighting; +using System.Linq; using JetBrains.Application.UI.Controls.BulbMenu.Anchors; using JetBrains.Application.UI.Controls.BulbMenu.Items; using JetBrains.ProjectModel; @@ -7,12 +7,12 @@ using JetBrains.ReSharper.Feature.Services.Resources; using JetBrains.ReSharper.Resources.Shell; using JetBrains.TextControl.DocumentMarkup; - -[assembly: RegisterHighlighter("Container Registration", EffectType = EffectType.GUTTER_MARK, GutterMarkType = typeof(ContainerGutterMark), Layer = 2001)] +using JetBrains.UI.RichText; namespace AgentMulder.ReSharper.Plugin.Highlighting { - public class ContainerGutterMark : IconGutterMark + [RegisterHighlighter("Container Registration", EffectType = EffectType.GUTTER_MARK, GutterMarkType = typeof(ContainerGutterMark), Layer = 2001)] + public class ContainerGutterMark : IconGutterMarkType { public ContainerGutterMark() : base(AlteringFeatuThemedIcons.GeneratedMembers.Id) @@ -33,7 +33,9 @@ public override IEnumerable GetBulbMenuItems(IHighlighter highligh var clickable = solution?.GetComponent().GetHighlighting(highlighter) as IClickableGutterHighlighting; clickable?.OnClick(); - }), highlighter.ToolTip, IconId, BulbMenuAnchors.PermanentBackgroundItems, true); + }), + (highlighter.TryGetTooltip(HighlighterTooltipKind.GutterMark) ?? (RichTextBlock)"The item has no text").Lines.Aggregate((a, b) => a.Append(" ", TextStyle.Default).Append(b)), + IconId, BulbMenuAnchors.PermanentBackgroundItems, true); } } } \ No newline at end of file diff --git a/src/AgentMulder.ReSharper.Plugin/Highlighting/RegisteredByContainerHighlighting.cs b/src/AgentMulder.ReSharper.Plugin/Highlighting/RegisteredByContainerHighlighting.cs index 8f519412..5b72884e 100644 --- a/src/AgentMulder.ReSharper.Plugin/Highlighting/RegisteredByContainerHighlighting.cs +++ b/src/AgentMulder.ReSharper.Plugin/Highlighting/RegisteredByContainerHighlighting.cs @@ -7,7 +7,7 @@ namespace AgentMulder.ReSharper.Plugin.Highlighting { - [StaticSeverityHighlighting(Severity.INFO, "GutterMarks", OverlapResolve = OverlapResolveKind.NONE, AttributeId = "Container Registration", ShowToolTipInStatusBar = false)] + [StaticSeverityHighlighting(Severity.INFO, typeof(HighlightingGroupIds.GutterMarks), OverlapResolve = OverlapResolveKind.NONE, AttributeId = "Container Registration", ShowToolTipInStatusBar = false)] public class RegisteredByContainerHighlighting : IClickableGutterHighlighting { private readonly RegistrationInfo registrationInfo; diff --git a/src/AgentMulder.ReSharper.Tests/AgentMulder.ReSharper.Tests.csproj b/src/AgentMulder.ReSharper.Tests/AgentMulder.ReSharper.Tests.csproj index e076589d..e9db378d 100644 --- a/src/AgentMulder.ReSharper.Tests/AgentMulder.ReSharper.Tests.csproj +++ b/src/AgentMulder.ReSharper.Tests/AgentMulder.ReSharper.Tests.csproj @@ -5,18 +5,19 @@ - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - + + + + + + + diff --git a/src/AgentMulder.nuspec b/src/AgentMulder.nuspec index a2dd9133..c4390774 100644 --- a/src/AgentMulder.nuspec +++ b/src/AgentMulder.nuspec @@ -13,7 +13,7 @@ Copyright © 2012-2019 Igal Tabachnik, ERNI Community https://raw.githubusercontent.com/ERNICommunity/AgentMulder/master/logo.png -• Compatibility with ReSharper 2019.1 +• Compatibility with ReSharper 2021.1 resharper agent mulder agentmulder ioc di windsor castle autofac ninject structuremap unity simpleinjector aspnetcore lightinject diff --git a/src/Test/Data/NuGet.config b/src/Test/Data/NuGet.config index a2a298d7..89a201c1 100644 --- a/src/Test/Data/NuGet.config +++ b/src/Test/Data/NuGet.config @@ -1,6 +1,7 @@  +