我正在努力学习如何使用以及golang的ast库如何工作。我正在解析 https://github.com/modern-go/concurrent,避免测试文件和go_below_19.go,因为它会导致错误。
我的问题是解析文件中的这些行,unbounded_executor.go
var HandlePanic = func(recovered interface{}, funcName string) {
ErrorLogger.Println(fmt.Sprintf("%s panic: %v", funcName, recovered))
ErrorLogger.Println(string(debug.Stack()))
}
阿斯特。在这两种情况下,Ident 都有一个 nil obj。ErrorLogger
但是,我认为它不应该是零,而应该引用这些行从,log.go
// ErrorLogger is used to print out error, can be set to writer other than stderr
var ErrorLogger = log.New(os.Stderr, "", 0)
是我错了,还是解析器有问题?我遵循了有关解析文件的几个参考,并重用了*令牌。文件跨每个文件设置,并使用 ParseComments 作为模式。
编辑:
围绕这一点有一个很大的代码库,因此演示这一点的代码将包括代码片段。
这是在所有非测试go文件中使用相同的fset执行的,没有构建限制,不会阻止代码与1.16一起使用
parsedFile, parseErr := parser.ParseFile(fset, filePath, nil, parser.ParseComments)
catspeake
相关分类