Backend/ReSharperPlugin/ForTea.ReSharperPlugin/T4ReSharperMacroResolver.cs (29 lines of code) (raw):

using System.Collections.Generic; using System.Linq; using GammaJul.ForTea.Core.Psi.Resolve.Macros.Impl; using JetBrains.Annotations; using JetBrains.Application.Parts; using JetBrains.Diagnostics; using JetBrains.ForTea.ReSharperPlugin.Psi.Resolve.Macros; using JetBrains.ProjectModel; using JetBrains.ReSharper.Feature.Services.EditorConfig; using JetBrains.ReSharper.Psi; namespace JetBrains.ForTea.ReSharperPlugin { [SolutionComponent(Instantiation.DemandAnyThreadUnsafe)] public sealed class T4ReSharperMacroResolver : T4BasicMacroResolver { [NotNull] private T4MacroResolutionCache Cache { get; } public T4ReSharperMacroResolver([NotNull] T4MacroResolutionCache cache) { Cache = cache; } public override IReadOnlyDictionary<string, string> ResolveHeavyMacros( IEnumerable<string> macros, IProjectFile file) { var resolutionData = Cache.TryGetValue(file.ToSourceFile().NotNull()); return resolutionData?.ResolvedMacros.Where(it => macros.Contains(it.Key)).ToDictionary() ?? ourEmptyDictionary; } } }