/// <inheritdoc /> public override void VisitIdentifierName(IdentifierNameSyntax node) { if (node is null) { throw new System.ArgumentNullException(nameof(node)); } switch (node.Parent) { case ConditionalAccessExpressionSyntax { Parent: ExpressionStatementSyntax _, WhenNotNull : InvocationExpressionSyntax _ } : case ArgumentSyntax _ : case InvocationExpressionSyntax { Parent : ExpressionStatementSyntax _ } : case MemberAccessExpressionSyntax { Expression : { } expression } when expression == node : if (IsInstanceEvent() && !Scope.HasLocal(node, node.Identifier.ValueText) && !Scope.HasParameter(node, node.Identifier.ValueText)) { this.Update(CodeStyleResult.No); } break; case MemberAccessExpressionSyntax { Expression: ThisExpressionSyntax _, Name : { } name } when name == node && IsInstanceEvent() : this.Update(CodeStyleResult.Yes); break; } bool IsInstanceEvent() { return(!node.IsInStaticContext() && node.TryFirstAncestor(out TypeDeclarationSyntax? containingType) && containingType.TryFindEvent(node.Identifier.ValueText, out var @event) && !IsStatic(@event));
/// <inheritdoc /> public override void VisitIdentifierName(IdentifierNameSyntax node) { if (node is null) { throw new System.ArgumentNullException(nameof(node)); } switch (node.Parent) { case InvocationExpressionSyntax _: case ArgumentSyntax { Parent: ArgumentListSyntax { Parent : InvocationExpressionSyntax invocation } } when invocation.IsNameOf() : if (IsInstanceMethod() && !Scope.HasLocal(node, node.Identifier.ValueText) && !Scope.HasParameter(node, node.Identifier.ValueText)) { this.Update(CodeStyleResult.No); } break; case MemberAccessExpressionSyntax memberAccess when memberAccess.Name == node && memberAccess.Expression.IsKind(SyntaxKind.ThisExpression) && IsInstanceMethod(): this.Update(CodeStyleResult.Yes); break; } bool IsInstanceMethod() { return(!node.IsInStaticContext() && node.TryFirstAncestor(out TypeDeclarationSyntax? containingType) && containingType.TryFindMethod(node.Identifier.Text, out var method) && !method.Modifiers.Any(SyntaxKind.StaticKeyword) && !containingType.TryFindMethod(node.Identifier.Text, x => x.Modifiers.Any(SyntaxKind.StaticKeyword), out _) && !Scope.HasLocal(node, node.Identifier.ValueText) && !Scope.HasParameter(node, node.Identifier.ValueText)); } }
/// <inheritdoc /> public override void VisitIdentifierName(IdentifierNameSyntax node) { if (node is null) { throw new System.ArgumentNullException(nameof(node)); } switch (node.Parent) { case AssignmentExpressionSyntax assignment when assignment.Left.Contains(node) && !assignment.Parent.IsKind(SyntaxKind.ObjectInitializerExpression): case ArrowExpressionClauseSyntax _: case ReturnStatementSyntax _: case ArgumentSyntax _: if (IsInstanceProperty() && !Scope.HasLocal(node, node.Identifier.ValueText) && !Scope.HasParameter(node, node.Identifier.ValueText)) { this.Update(CodeStyleResult.No); } break; case MemberAccessExpressionSyntax memberAccess when memberAccess.Name == node && memberAccess.Expression.IsKind(SyntaxKind.ThisExpression) && IsInstanceProperty(): this.Update(CodeStyleResult.Yes); break; } bool IsInstanceProperty() { return(!node.IsInStaticContext() && node.TryFirstAncestor(out TypeDeclarationSyntax? containingType) && containingType.TryFindProperty(node.Identifier.ValueText, out var property) && !property.Modifiers.Any(SyntaxKind.StaticKeyword) && !Scope.HasLocal(node, node.Identifier.ValueText) && !Scope.HasParameter(node, node.Identifier.ValueText)); } }