private static SyntaxNode GetChangedMember( ISyntaxFactsService syntaxFactsService, SyntaxNode oldRoot, SyntaxNode newRoot, TextChangeRange range) { // if either old or new tree contains skipped text, re-analyze whole document if (oldRoot.ContainsSkippedText || newRoot.ContainsSkippedText) { return(null); } var oldMember = syntaxFactsService.GetContainingMemberDeclaration(oldRoot, range.Span.Start); var newMember = syntaxFactsService.GetContainingMemberDeclaration(newRoot, range.Span.Start); // reached the top (compilation unit) if (oldMember == null || newMember == null) { return(null); } // member doesn't contain the change if (!syntaxFactsService.ContainsInMemberBody(oldMember, range.Span)) { return(null); } // member sigature has changed if (!oldMember.IsEquivalentTo(newMember, topLevel: true)) { return(null); } // looks like inside of the body has changed return(newMember); }
private static SyntaxNode GetChangedMember( ISyntaxFactsService syntaxFactsService, SyntaxNode oldRoot, SyntaxNode newRoot, TextChangeRange range) { // if either old or new tree contains skipped text, re-analyze whole document if (oldRoot.ContainsSkippedText || newRoot.ContainsSkippedText) { return null; } var oldMember = syntaxFactsService.GetContainingMemberDeclaration(oldRoot, range.Span.Start); var newMember = syntaxFactsService.GetContainingMemberDeclaration(newRoot, range.Span.Start); // reached the top (compilation unit) if (oldMember == null || newMember == null) { return null; } // member doesn't contain the change if (!syntaxFactsService.ContainsInMemberBody(oldMember, range.Span)) { return null; } // member signature has changed if (!oldMember.IsEquivalentTo(newMember, topLevel: true)) { return null; } // looks like inside of the body has changed return newMember; }