Exemple #1
0
 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)));
     }
 }
Exemple #3
0
        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()));
 }