Go 如何增加token.File的大小?

Go 如何增加token.File的大小?,go,abstract-syntax-tree,Go,Abstract Syntax Tree,我正在编写一个重写器,它使用go/ast向文件中添加一些内容。除了注释外,一切都很好,注释是出了名的糟糕。但问题的一部分似乎是它在积极地反对我修复它的努力 我在文件末尾附近插入了一个比文件中剩余内容大的内容。在这一点之后还有一些其他的funcs,他们对它们有评论。我使用访问者为我的更新计算适当的Pos,然后用新的Pos更新其余节点,这样它们就不会失去与注释的关联,但现在注释被移动到我插入的上方 在跟踪执行之后,我发现position.go中的func(s*FileSet)PositionFor在

我正在编写一个重写器,它使用
go/ast
向文件中添加一些内容。除了注释外,一切都很好,注释是出了名的糟糕。但问题的一部分似乎是它在积极地反对我修复它的努力

我在文件末尾附近插入了一个比文件中剩余内容大的内容。在这一点之后还有一些其他的
func
s,他们对它们有评论。我使用访问者为我的更新计算适当的
Pos
,然后用新的
Pos
更新其余节点,这样它们就不会失去与注释的关联,但现在注释被移动到我插入的上方

在跟踪执行之后,我发现
position.go中的
func(s*FileSet)PositionFor
在剩余注释的位置返回0,因为它们新的
Pos
超出了相关的
标记.File
数据的末尾。那么,看起来我需要更新
令牌.File
上的
大小,但它是小写字段,所以我不能直接这样做,而且似乎没有任何方法可以为我这样做
size
似乎是不可变的,只在构造时设置,这很奇怪,因为
token.File
structs的其他部分可以更新


我到底该如何解决这个问题?我只是想把我的评论打印到应该打印的地方,但每次我认为我已经解决了这个问题,它背后隐藏着其他一些问题,现在我遇到了一个无法改变的问题

你能分享一个?@icza吗?这很难,因为这里涉及大量代码,分散在几个文件中,即使将其简化为简单的内容,也会涉及大量代码