public static AnalyzerRoot FromPhaseGroup(PhaseGroupSyntax phaseGroup) { return(new AnalyzerRoot(phaseGroup.InterfaceName, phaseGroup.InterfaceName.ToNonInterfaceName(), PhaseHandlerAnalyzer.FromPhaseGroup(phaseGroup), PhaseLogicAnalyzer.FromPhaseGroup(phaseGroup), ContextTypeAnalyzer.FromPhaseGroup(phaseGroup).ToArray())); }
public static IEnumerable <ContextTypeAnalyzer> FromPhaseGroup(PhaseGroupSyntax phaseGroup) { foreach (var method in phaseGroup.Methods) { yield return(new ContextTypeAnalyzer(PhaseTraits.FromPhaseMethod(method), ContextPropertyAnalyzer.FromMethod(method).ToArray(), ContextDelegationPropertyAnalyzer.FromMethod(method, phaseGroup))); } }
public static async Task <Solution> ApplyCodeFixAsync(Document document, TextSpan diagnosticSpan, CancellationToken ct) { var root = await document.GetSyntaxRootAsync(ct).ConfigureAwait(false); var declaration = root.FindToken(diagnosticSpan.Start) .Parent .AncestorsAndSelf() .OfType <TypeDeclarationSyntax>() .First(); if (!(declaration is InterfaceDeclarationSyntax ids)) { return(document.Project.Solution); } var syntax = await PhaseGroupSyntax.FromDeclarationAsync(ids, document, ct); var semantics = AnalyzerRoot.FromPhaseGroup(syntax); var template = new PhaseTemplate(semantics); return(ApplyGeneratedCode(document, template)); }
public static IEnumerable <PhaseHandlerMethodAnalyzer> FromPhaseGroup(PhaseGroupSyntax phaseGroup) { return(phaseGroup.Methods .Select(method => new PhaseHandlerMethodAnalyzer(PhaseTraits.FromPhaseMethod(method)))); }
public static PhaseHandlerAnalyzer FromPhaseGroup(PhaseGroupSyntax phaseGroup) { return(new PhaseHandlerAnalyzer(phaseGroup.InterfaceName.ToNonInterfaceName() + "Handler", PhaseHandlerMethodAnalyzer.FromPhaseGroup(phaseGroup).ToArray())); }
public static ContextDelegationPropertyAnalyzer?FromMethod(PhaseMethodSyntax method, PhaseGroupSyntax phaseGroup) { var dictionary = phaseGroup.Methods.ToDictionary(x => x.MethodName, x => x); var properties = new List <ContextPropertyAnalyzer>(); var delegatedContext = method.ContextParameter; if (delegatedContext is null) { return(null); } var currentContextParameter = method.ContextParameter; while (!(currentContextParameter is null)) { var methodName = Naming.PhaseMethodNameFromContextType(currentContextParameter.TypeName.Name); var dependencyMethod = dictionary[methodName]; properties.AddRange(ContextPropertyAnalyzer.FromMethod(dependencyMethod)); currentContextParameter = dependencyMethod.ContextParameter; } return(new ContextDelegationPropertyAnalyzer( delegatedContext.TypeName.Name, delegatedContext.Name.ToUpperCamelCase(), properties.ToArray())); }
public static PhaseLogicAnalyzer FromPhaseGroup(PhaseGroupSyntax phaseGroup) { return(new PhaseLogicAnalyzer(phaseGroup.InterfaceName.Name + "Logic", PhaseLogicMethodAnalyzer.FromPhaseGroup(phaseGroup).ToArray())); }