Пример #1
0
        internal static bool SupportsLanguageFeature(this Document document, CSharpLanguageFeature feature)
        {
            switch (feature)
            {
            case CSharpLanguageFeature.Unknown:
                return(false);

            case CSharpLanguageFeature.NameOf:
                return(SupportsLanguageVersion(document, LanguageVersion.CSharp6));

            case CSharpLanguageFeature.AsyncMain:
            case CSharpLanguageFeature.DefaultLiteral:
            case CSharpLanguageFeature.InferredTupleElementNames:
            case CSharpLanguageFeature.PatternMatchingWithGenerics:
                return(SupportsLanguageVersion(document, LanguageVersion.CSharp7_1));

            case CSharpLanguageFeature.NullCoalescingAssignmentOperator:
                return(SupportsLanguageVersion(document, LanguageVersion.CSharp8));

            case CSharpLanguageFeature.NotPattern:
                return(SupportsLanguageVersion(document, LanguageVersion.CSharp9));
            }

            throw new ArgumentException($"Unknown enum value '{feature}'.", nameof(feature));
        }
Пример #2
0
        internal static bool SupportsLanguageFeature(this Document document, CSharpLanguageFeature feature)
        {
            switch (feature)
            {
            case CSharpLanguageFeature.Unknown:
                return(false);

            case CSharpLanguageFeature.AsyncMain:
            case CSharpLanguageFeature.DefaultLiteral:
            case CSharpLanguageFeature.InferredTupleElementNames:
            case CSharpLanguageFeature.PatternMatchingWithGenerics:
                return(((CSharpParseOptions)document.Project.ParseOptions).LanguageVersion >= LanguageVersion.CSharp7_1);
            }

            throw new ArgumentException($"Unknown enum value '{feature}'.", nameof(feature));
        }