А пользуйтесь тогда pabcnetclear.exe
А, так вот оно для чего))
Хах, с ним ошибка которая меня давно доставала (внутренняя плавающая ошибка) - становится стабильной. Стабильно ломающей всё и сразу((( Ну, теперь, по крайней мере, поймаю её…
Мда… Представьте себе:
- Строчка, вызывающая ошибку, находилась, из 7 модулей, в самом дальнем (том что к всему подключается).
- Это единственный из модулей с >3k строчек и очень сложной структурой (куча циклических зависимостей и т.п., в общем большими кусками удалить не получится, над каждым сокращением надо много думать).
- Строчка вызывающая ошибку - оказывается вызывала сразу #1417 и #1418, поэтому когда я нашёл первую мне пришлось снова всё перелопачивать…
В общем сегодня не мой день . Ну зато надонец нашёл ту(те) пакость что каждую десятую компиляцию давала вылет компилятора, но не когда я пытался её поймать (надеюсь… ну, по крайней мере, #1418 имеет тот же текст что та пакость).
@Admin а как у консольного компилятора включить режим без отладочной информации? Там какой то параметр в командной строке поидее?
20 мин назад добавили пулл-реквест:
Думаю, название само за себя говорит)))
@Admin, @ibond, как всё же правильно собирать билд компилятора?
_GenerateAllSetups.bat
конечно прикольно, но долго, ибо куча всего лишнего. А строчку с тест ранером ещё руками убирать приходится, потому что он не только пол часа работает, а ещё и убивает мне комп, сжирая всю оперативку (даже если я всё остальное вырублю).
Почему, к примеру, не работает _ReBuildRelease.bat
и затем ReleaseGenerators\PascalABCNETStandart.bat
? Последний вылетает говоря (я добавил строчку PAUSE
в конец чтоб не закрывалось сразу):
Единственный РелизГенератор который работает после _ReBuildRelease.bat
- это PascalABCNETConsoleZIP.bat
, но и тот как то криво. Я попытался распаковывать и запускать install_pabcnetc.bat, но последний билд от этого не ставится.
Я так понимаю там не хватает чтоб только что собранный компилятор отработал на стандартных модулях… Так вот в чём вопрос:
Есть ли какой то промежуточный метод, не запуская сборку сразу всех установщиков и тестера, но при этом чтоб билд дало поставить? Может где то есть ещё 1 .bat выполняющий всё что не доделал _ReBuildRelease.bat
кроме тестера?
И как вы сами обычно это делаете, чтоб протестировать новую мелкую фичу и т.п.?
Для теста любой фичи мы запускаем _RebuildReleaseAndRunTests.bat Это долго, но мы всегда так делаем. Сжирается оперативка, зато все тесты проверяются.
Генерация инсталлята без прохождения тестов - это неправильно.
Вообще, разработчик должен иметь достаточно мощный компьютер.
PascalABCNETStandart.bat - надо разбираться - он запускается в предположении, что установлен текущим какой-то каталог. Возможно поэтому он не работает явно.
Кстати, Вы можете в папке bin найти исходники TestRunner.pas и исправить их так чтобы на вашем компьютере он не сжирал всю оперативку
То есть у себя локально или вам пулл реквест кинуть?
А дело, скорее всего, не в тестере… А внутри компилятора. Проявляется когда не перезагружая .dll компилируют сразу много всего. Но если создать новый экземпляр Compiler
- проблема не пропадает. Поищу среди статичных полей…
А, я, кажется, нашёл в чём дело… Все созданные сборки продолжают хранится в главном домене. И поэтому никогда не отгружаются (их там сотни в первые пару минут накапливается! а дальше - хуже). Причём сборки отгружать нельзя, можно отгрузить только домен целиком. Попробую разобраться как это сделать…
@Admin в целом работает (исходники с изменениями). Надо только дочистить всякие мелочи и провести сами тесты. И вот с последними возникла проблема:
Файл TestSuite\errors\err0146
:
var i : byte;
const set1 : set of byte = [2,i];
begin
end.
Компиляция проходит успешно. По крайней мере срабатывает условие
if comp.ErrorsList.Count = 0 then
на строчке 97. Я проверил что смог с моей стороны, но, похоже, тут уже проблема внутри компилятора. Пока, локально удалил этот тест, но коммитить удаление не буду, чтоб в журнале висел.
И ещё, TestSuite\usesunits\use_explicitinterface.pas
uses u_explicitinterface; begin end.
падает:
Что то не так в u_explicitinterface.pcu.
Если откомпилировать TestSuite\units\u_explicitinterface.pas
из IDE и заменить тот .pcu
на полученный - всё в порядке.
P.S. Но только из IDE. TestRunner всё равно падает.
P.P.S. И так же с TestSuite\usesunits\use_interface2.pas
, и от туда же use_interface4.pas
, use_nested_lambdas_1.pas
.
Смотрю, как Вы уже сутки сам с собой переписываетесь и вспоминаю фразу: “До чего же приятно бывает поговорить с умным человеком!”
У меня пишет Program1.pas(2) : Ожидалось константное выражение Это плохо что компилятор у Вас не выдаёт ошибок. Конечно - чуть что - виноват компилятор )))
Ну, устаревшие pcu не кушаются новой версией компилятора. Им надо перекомпилировать все модули
У нас вот testRunner на этих тестах не падает
Нет, из IDE и у меня эту ошибку выдаёт. Это только в тест ранере так.
Так они и перекомпилируются перед этим. Иначе бы .pcu
вообще не было (их отчищает перед всем).
ага