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)); }
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)); }