コード例 #1
0
#pragma warning disable CS0809 // Obsolete member overrides non-obsolete member
        public sealed override void Register(IDurianAnalysisContext context, TCompilation compilation)
#pragma warning restore CS0809 // Obsolete member overrides non-obsolete member
        {
            ConcurrentDictionary <FileLinePositionSpan, TTarget> dict = new();

            Register(context, compilation, dict);
        }
コード例 #2
0
 /// <inheritdoc/>
 public override void Register(IDurianAnalysisContext context, FriendClassCompilationData compilation)
 {
     context.RegisterSyntaxNodeAction(
         context => Analyze(context, compilation),
         SyntaxKind.SimpleMemberAccessExpression,
         SyntaxKind.PointerMemberAccessExpression
         );
 }
コード例 #3
0
        /// <summary>
        /// Registers actions to be performed by this <see cref="AnalysisManager"/>.
        /// </summary>
        /// <param name="context"><see cref="IDurianAnalysisContext"/> to register the actions to.</param>
        /// <param name="compilation">Current <see cref="Compilation"/>.</param>
        public virtual void Register(IDurianAnalysisContext context, Compilation compilation)
        {
            CSharpCompilation c = (CSharpCompilation)compilation;

            foreach (IAnalyzerInfo analyzer in _analyzers)
            {
                analyzer.Register(context, c);
            }
        }
コード例 #4
0
        /// <inheritdoc/>
        public override void Register(IDurianAnalysisContext context, Compilation compilation)
        {
            base.Register(context, compilation);
            CSharpCompilation c = (CSharpCompilation)compilation;

            foreach (ICachedAnalyzerInfo <T> analyzer in _cachedAnalyzers)
            {
                analyzer.Register(context, c, Cached);
            }
        }
コード例 #5
0
        /// <inheritdoc/>
        public void Register(IDurianAnalysisContext context, CSharpCompilation compilation)
        {
            DefaultParamCompilationData data = new(compilation);

            if (data.HasErrors)
            {
                return;
            }

            context.RegisterSyntaxNodeAction(context => Analyze(data, context, out _), SyntaxKind.TypeParameterList);
        }
コード例 #6
0
        /// <inheritdoc/>
        public void Register(IDurianAnalysisContext context, CSharpCompilation compilation, ConcurrentDictionary <FileLinePositionSpan, T> cached)
        {
            DefaultParamCompilationData data = new(compilation);

            if (data.HasErrors)
            {
                return;
            }

            context.RegisterSyntaxNodeAction(context => Analyze(data, context, cached), SyntaxKind.TypeParameterList);
        }
コード例 #7
0
        private protected sealed override void Register(IDurianAnalysisContext context, CSharpCompilation compilation)
        {
            DiagnosticBag diagnosticReceiver = DiagnosticReceiverFactory.Bag();
            TCompilation  data = CreateCompilation(compilation, diagnosticReceiver);

            if (!data.HasErrors)
            {
                Register(context, data);
            }

            ReportInitializationDiagnostics(context, diagnosticReceiver);
        }
コード例 #8
0
 private static void ReportInitializationDiagnostics(IDurianAnalysisContext context, DiagnosticBag diagnosticReceiver)
 {
     if (diagnosticReceiver.Count > 0)
     {
         context.RegisterCompilationAction(context =>
         {
             foreach (Diagnostic diag in diagnosticReceiver)
             {
                 context.ReportDiagnostic(diag);
             }
         });
     }
 }
コード例 #9
0
        /// <inheritdoc/>
        public override void Register(IDurianAnalysisContext context)
        {
            context.RegisterCompilationStartAction(context =>
            {
                INamedTypeSymbol?targetsAttribute = context.Compilation.GetTypeByMetadataName(MemberNames.InterfaceTargetsAttribute);

                if (targetsAttribute is null)
                {
                    return;
                }

                context.RegisterSyntaxNodeAction(context => Analyze(context, targetsAttribute), SyntaxKind.SimpleBaseType);
            });
        }
コード例 #10
0
 /// <inheritdoc/>
 public override void Register(IDurianAnalysisContext context, DefaultParamCompilationData compilation)
 {
     context.RegisterSyntaxNodeAction(c => Analyze(c, compilation), SyntaxKind.Attribute);
 }
コード例 #11
0
ファイル: DurianAnalyzer.cs プロジェクト: piotrstenke/Durian
 /// <inheritdoc cref="IAnalyzerInfo.Register(IDurianAnalysisContext, CSharpCompilation)"/>
 private protected virtual void Register(IDurianAnalysisContext context, CSharpCompilation compilation)
 {
     Register(context);
 }
コード例 #12
0
ファイル: DurianAnalyzer.cs プロジェクト: piotrstenke/Durian
 /// <inheritdoc cref="IAnalyzerInfo.Register(IDurianAnalysisContext, CSharpCompilation)"/>
 public abstract void Register(IDurianAnalysisContext context);
コード例 #13
0
 /// <inheritdoc/>
 public override void Register(IDurianAnalysisContext context, FriendClassCompilationData compilation)
 {
     context.RegisterSymbolAction(context => Analyze(context, compilation), SymbolKind.NamedType);
 }
コード例 #14
0
 /// <summary>
 /// Performs the analysis using the specified <paramref name="compilation"/>.
 /// </summary>
 /// <param name="context"><see cref="IDurianAnalysisContext"/> to register the actions to.</param>
 /// <param name="compilation"><see cref="ICompilationData"/> to be used during the analysis.</param>
 public abstract void Register(IDurianAnalysisContext context, TCompilation compilation);
コード例 #15
0
 void IAnalyzerInfo.Register(IDurianAnalysisContext context, CSharpCompilation compilation)
 {
     Register(context, compilation);
 }
コード例 #16
0
 /// <inheritdoc/>
 public override void Register(IDurianAnalysisContext context, DefaultParamCompilationData compilation)
 {
     context.RegisterSyntaxNodeAction(c => FindAndAnalyzeLocalFunction(c, compilation), SyntaxKind.LocalFunctionStatement);
 }
コード例 #17
0
        void ICachedAnalyzerInfo <TTarget> .Register(IDurianAnalysisContext context, CSharpCompilation compilation, ConcurrentDictionary <FileLinePositionSpan, TTarget> cached)
        {
            TCompilation c = CreateCompilation(compilation, _diagnosticReceiver);

            Register(context, c, cached);
        }
コード例 #18
0
 /// <summary>
 /// Registers actions to be performed by the analyzer and caches the result of analysis.
 /// </summary>
 /// <param name="context"><see cref="IDurianAnalysisContext"/> used to register the actions to be performed.</param>
 /// <param name="compilation">Compilation to be used during the analysis.</param>
 /// <param name="cached">A <see cref="ConcurrentDictionary{TKey, TValue}"/> that contains the cached values.</param>
 public abstract void Register(IDurianAnalysisContext context, TCompilation compilation, ConcurrentDictionary <FileLinePositionSpan, TTarget> cached);
コード例 #19
0
 void ICachedAnalyzerInfo <TTarget> .Register(IDurianAnalysisContext context, CSharpCompilation compilation, ConcurrentDictionary <FileLinePositionSpan, TTarget> cached)
 {
     Register(context, cached);
 }
コード例 #20
0
		/// <inheritdoc/>
		public override void Register(IDurianAnalysisContext context, EnumServicesCompilationData compilation)
		{
			context.RegisterSymbolAction(context => AnalyzeSymbol(context, compilation), SymbolKind.NamedType);
			context.RegisterSymbolAction(context => )
		}
コード例 #21
0
 /// <inheritdoc/>
 public override void Register(IDurianAnalysisContext context, CompilationWithImportedTypes compilation)
 {
     context.RegisterSyntaxNodeAction(c => Analyze(c, compilation), SyntaxKind.IdentifierName, SyntaxKind.GenericName);
 }
コード例 #22
0
 /// <summary>
 /// Executed after the <see cref="Register(IDurianAnalysisContext, Compilation)"/> method, even if <see cref="ShouldAnalyze(Compilation)"/> returns <see langword="false"/>.
 /// </summary>
 /// <param name="context">Current <see cref="IDurianAnalysisContext"/>.</param>
 /// <param name="compilation">Current <see cref="Compilation"/>.</param>
 protected virtual void PostRegister(IDurianAnalysisContext context, Compilation compilation)
 {
     // Do nothing.
 }
コード例 #23
0
 /// <inheritdoc/>
 public override void Register(IDurianAnalysisContext context)
 {
     context.RegisterSyntaxNodeAction(Analyze, SyntaxKind.NamespaceDeclaration);
 }
コード例 #24
0
 /// <inheritdoc/>
 public override void Register(IDurianAnalysisContext context)
 {
     context.RegisterCompilationAction(Analyze);
 }
コード例 #25
0
#pragma warning disable CS0809 // Obsolete member overrides non-obsolete member
        public sealed override void Register(IDurianAnalysisContext context)
#pragma warning restore CS0809 // Obsolete member overrides non-obsolete member
        {
            // Do nothing
        }