假设我有两个SyntaxTree
s A和B,
其中B是通过对 A 应用更改生成的。
我想获得以下信息:
- 已从A中删除以生成B的语法节点和令牌
- 已添加到A以生成B的语法节点和令牌
有这方面的API吗?
如果没有,如何有效地计算?
此信息必须对 Roslyn 可用,
因为未更改GreenNode
的 s 在树之间共享。
我能想到的一种解决方案是使用SyntaxTree.GetChangedSpans()
然后查找相交标记。
然而,这感觉就像一个黑客,我不确定它是否总是准确的。
一个小的文本更改可能会对 : 产生很大的影响SyntaxTree
(
例如,在表达式中替换*
为+
可能会更改其顺序/优先级)