public override SyntaxNode VisitIdentifierName(IdentifierNameSyntax node) { if (!(node.Parent is MemberAccessExpressionSyntax) || ((MemberAccessExpressionSyntax)node.Parent).Expression == node) { if (node.GetContainingMethod() == null) { return(base.VisitIdentifierName(node)); } var containingType = node.GetContainingType(); if (containingType == null || !containingType.Name.StartsWith(enclosingTypeName)) { return(node); } var symbol = semanticModel.GetSymbolInfo(node).Symbol; var isObjectInitializer = node.Parent != null && node.Parent.Parent is InitializerExpressionSyntax; if (!isObjectInitializer) { if (symbol == null || (new[] { SymbolKind.Field, SymbolKind.Event, SymbolKind.Method, SymbolKind.Property }.Contains(symbol.Kind) && !symbol.ContainingType.Name.StartsWith(enclosingTypeName) && !symbol.IsStatic)) { return(SyntaxFactory.MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, SyntaxFactory.IdentifierName("_this"), node)); } } } return(base.VisitIdentifierName(node)); }
public override SyntaxNode VisitIdentifierName(IdentifierNameSyntax node) { if (!(node.Parent is MemberAccessExpressionSyntax) || ((MemberAccessExpressionSyntax)node.Parent).Expression == node) { if (node.GetContainingMethod() == null) { return(base.VisitIdentifierName(node)); } var containingType = node.GetContainingType(); if (containingType == null || !containingType.Name.StartsWith("YieldEnumerator$")) { return(node); } var symbol = semanticModel.GetSymbolInfo(node).Symbol; if (symbol == null) { return(SyntaxFactory.MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, SyntaxFactory.IdentifierName("$this"), node)); } } return(base.VisitIdentifierName(node)); }