// ReSharper disable UnusedMember.Local // ReSharper disable ReturnValueOfPureMethodIsNotUsed namespace Pure.DI; using System.Diagnostics; using static Hint; using static Lifetime; using static RootKinds; using static Tag; public sealed partial class Generator { public void Generate( ParseOptions parseOptions, AnalyzerConfigOptionsProvider analyzerConfigOptionsProvider, in SourceProductionContext sourceProductionContext, in ImmutableArray changes, CancellationToken cancellationToken) => Generate( new GeneratorOptions(parseOptions, analyzerConfigOptionsProvider), new GeneratorSources(sourceProductionContext), new GeneratorDiagnostic(sourceProductionContext), changes.Select(change => new SyntaxUpdate(change.Node, change.SemanticModel)), cancellationToken); [Conditional("DI")] private void Setup() => DI.Setup() .Hint(Resolve, "Off") // Roots .Root>(nameof(Api)) .Root(nameof(Observers)) .RootBind(nameof(Generate), kind: Internal) .To((IBuilder, Generation> generator, IEnumerable updates) => generator.Build(updates)) .RootArg("options") .RootArg("sources") .RootArg("diagnostic") .RootArg>("updates") .RootArg("cancellationToken") .Bind().To() .Bind().To() .Bind().To() .Bind().To() .Bind>().To(_ => StringComparer.InvariantCultureIgnoreCase) .Bind().To() .Bind().To(ctx => { ctx.Inject(out var logger); return logger.WithTargetType(ctx.ConsumerTypes[0]); }) .DefaultLifetime(Singleton) .Bind().To>() .Bind().To() .Bind().To((IBuilder> api) => api.Build(Unit.Shared)) .DefaultLifetime(PerBlock) .Bind().To() .Bind().To() .Bind().To() .Bind().To() .Bind().To() .Bind().To() .Bind().To() .Bind().To>() .Bind().To() .Bind().To() .Bind().To() .Bind().To() .Bind>().To() .Bind().To() .Bind().To() .Bind().To() .Bind().To() .Bind().To() .Bind().To() .Bind().To>() .Bind(Type).To() .Bind(Type).To() .Bind().To() .Bind().To() .Bind().To() .Bind().To() // Validators .Bind(Type).To() .Bind(Type).To() .Bind(Type).To() .Bind(Type).To() .Bind(Type).To() .Bind(Type).To() .Bind(Type).To() // Comments .Bind(Type).To() .Bind(Type).To() .Bind(Type).To() // Builders .Bind().To() .Bind().To() .Bind().To() .Bind().To() .Bind().To() .Bind().To() .Bind(Unique).To() .Bind(Unique).To() .Bind(Unique).To() .Bind(Unique).To() .Bind(Unique).To() .Bind().To() .Bind().To() .Bind().To() .Bind().To() .Bind().To() .Bind().To() .Bind().To() .Bind().To() .Bind().To() .Bind().To() .Bind().To() // Code builders .Bind().To() .Bind().To() .Bind().To() .Bind().To() .Bind().To() .Bind().To() .Bind().To() .Bind(Type).To() .Bind(Type).To() .Bind(Type).To() .Bind(Type).To() .Bind(Type).To() .Bind(Type).To() .Bind(Type).To() .Bind(Type).To() .Bind(Type).To() .Bind(Type).To() .Bind(Type).To() .Bind(Type).To() .Bind(Type).To() .DefaultLifetime(PerResolve) .Bind().To() .Bind().To() .Bind().To() .Bind().To() .Bind(UniqueTag).To() .Bind(GenericType).To() .Bind(Injection).To() .Bind().To() .Bind().To>() .Bind().To() .Bind().To() .Bind().To(); }