猿问

Go 编译器:错误行号不正确,给出 1048575 即 0xFFFFF,当问题在文件中进一步出现时

我正在测试代码生成功能并故意创建非常大的 .go 源文件。


但是,我在行1048575(即0xFFFFF)处看到 go 编译器的错误,例如:


generated.go:1048575:75: invalid character U+0040 '@'

generated.go:1048575:76: const declaration cannot have type without expression

generated.go:1048575:88: syntax error: unexpected E_Blah_Blah, expecting semicolon or newline or )

这是一个已知的限制吗?


EDIT-1:评论者要求提供有关生成文件内容的更多信息;进一步的测试表明,当我故意在第 1048573 行或第 1048574 行引入一个新错误时,它会按我的预期报告,但如果我1048575在行号或更高行号引入一个错误,我总是会在 1048575 处报告错误。


EDIT-2:我现在意识到最初的问题invalid character U+0040 '@'确实是我生成的文件中的一个错误,但它在编译器告诉我的行号下方。


EDIT-3:所以我想问题应该是:如果错误比第 0xFFFFF 行更远,有没有办法让 go-compiler 为问题提供正确的行号?


胡子哥哥
浏览 365回答 2
2回答

潇潇雨雨

这是一个已知的限制吗?不。

慕哥6287543

根本原因是:https://github.com/golang/go/issues/36850即编译器错误:错误行号上限为 0xFFFFF
随时随地看视频慕课网APP

相关分类

Go
我要回答