public override Analyzer CreateAnalyzer(ISyntaxFacts syntaxFacts, ParseOptions options) { var version = options.LanguageVersion(); var features = (version >= LanguageVersion.CSharp7 ? Feature.SourcePattern | Feature.IsTypePattern | Feature.CaseGuard : 0) | (version >= LanguageVersion.CSharp8 ? Feature.SwitchExpression : 0) | (version >= LanguageVersion.CSharp9 ? Feature.RelationalPattern | Feature.OrPattern | Feature.AndPattern | Feature.TypePattern : 0); return(new CSharpAnalyzer(syntaxFacts, features)); }
public void ReplaceGetMethodWithProperty( DocumentOptionSet documentOptions, ParseOptions parseOptions, SyntaxEditor editor, SemanticModel semanticModel, GetAndSetMethods getAndSetMethods, string propertyName, bool nameChanged) { if (getAndSetMethods.GetMethodDeclaration is not MethodDeclarationSyntax getMethodDeclaration) { return; } var languageVersion = parseOptions.LanguageVersion(); var newProperty = ConvertMethodsToProperty( documentOptions, languageVersion, semanticModel, editor.Generator, getAndSetMethods, propertyName, nameChanged); editor.ReplaceNode(getMethodDeclaration, newProperty); }
protected override bool SupportsNonTrailingNamedArguments(ParseOptions options) => options.LanguageVersion() >= LanguageVersion.CSharp7_2;
protected override bool IsSupported(SyntaxKind assignmentKind, ParseOptions options) => assignmentKind != SyntaxKind.CoalesceExpression || options.LanguageVersion() >= LanguageVersion.CSharp8;
// We need to be at least on c# 11 to support using !! with records. protected override bool SupportsRecords(ParseOptions options) => options.LanguageVersion().IsCSharp11OrAbove();
public static bool SupportsIsNotPattern(ParseOptions options) => options.LanguageVersion() >= LanguageVersion.CSharp9;