CSharpPreferFrameworkTypeDiagnosticAnalyzer.cs 1.4 KB
Newer Older
1 2 3 4 5 6
// Copyright (c) Microsoft.  All Rights Reserved.  Licensed under the Apache License, Version 2.0.  See License.txt in the project root for license information.

using System.Collections.Immutable;
using Microsoft.CodeAnalysis.CSharp.Extensions;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Diagnostics;
7
using Microsoft.CodeAnalysis.PreferFrameworkType;
8 9 10 11

namespace Microsoft.CodeAnalysis.CSharp.Diagnostics.Analyzers
{
    [DiagnosticAnalyzer(LanguageNames.CSharp)]
12
    internal class CSharpPreferFrameworkTypeDiagnosticAnalyzer :
13
        PreferFrameworkTypeDiagnosticAnalyzerBase<SyntaxKind, ExpressionSyntax, PredefinedTypeSyntax>
14
    {
15
        protected override ImmutableArray<SyntaxKind> SyntaxKindsOfInterest { get; } =
16 17
            ImmutableArray.Create(SyntaxKind.PredefinedType);

18
        ///<remarks>
19
        /// every predefined type keyword except <c>void</c> can be replaced by its framework type in code.
20
        ///</remarks>
21 22
        protected override bool IsPredefinedTypeReplaceableWithFrameworkType(PredefinedTypeSyntax node) 
            => node.Keyword.Kind() != SyntaxKind.VoidKeyword;
23

24 25
        protected override bool IsInMemberAccessOrCrefReferenceContext(ExpressionSyntax node) 
            => node.IsInMemberAccessContext() || node.InsideCrefReference();
26

27 28
        protected override string GetLanguageName()
            => LanguageNames.CSharp;
29
    }
S
Sam Harwell 已提交
30
}