Go компилятор: неверный номер строки ошибки, дающий 1048575, т. Е. 0xFFFFF, когда проблема еще больше в файле - PullRequest
3 голосов
/ 28 января 2020

Я тестирую функциональность генерации кода и намеренно создаю очень большие. go исходные файлы.

Однако я вижу ошибки с компилятором go в строке 1048575 (что составляет 0xFFFFF), например as:

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.

РЕДАКТИРОВАТЬ-2: Теперь я понимаю, что исходная проблема invalid character U+0040 '@' действительно была ошибкой в ​​моем сгенерированном файле, но она находилась дальше того номера строки, который сообщает мне компилятор.

РЕДАКТИРОВАТЬ-3: Так что я думаю, что вопрос должен был быть: есть ли способ, чтобы go -компилятор дал правильный номер строки для проблемы, если ошибка ниже, чем строка 0xFFFFF?

Ответы [ 2 ]

1 голос
/ 28 января 2020

Это известное ограничение?

Нет.

0 голосов
/ 29 января 2020

Причина root:

согласно комментарию от @icza

...