Экспериментируя с удаленной сборкой Паскаля на Гитхабе (на их VM WinServer 2016), обнаружил несколько проблем, которые мешают полноценной автоматизированной сборке:
-
Из-за ошибки в настройке проектов CodeTemplatesPlugin.csproj и CodeTemplatesPlugin_40.csproj откомпилированная CodeTemplatesPlugin.dll не попадает в папку \bin. Разработчики этого не замечают скорее всего потому, что у них локально в \bin сохранилась еще “старая” копия. По этой же причине, я думаю, в последнее время в XP-версии регулярно ломается функционал шаблонов кода, т.к. в XP-дистрибутив все время попадает эта “старая” сборка, сконфигурированная для платформы .NET 4.7.1, а не 4.0.
-
С библиотекой PABCRtl.dll вообще очень странная ситуация: в офиц. дистрибутиве её размер ~1.1 МБ, но у меня при компиляции получаются какие-то битые сборки размером 391…399 КБ. Из-за этого все тесты с PABCRtl в TestRunner падают (см. логи ниже). Причем я пробовал компилировать её и консольными компиляторами, и через IDE, и в debug, и в release режимах, и своим самосборным дистрибутивом (пока консольным), и в офиц. дистрибутиве последней версии (3.7.1-2677 от 05.09.2020) – результат такой же (отрицательный), небольшая разница проявляется только в размере из-за отладочной информации. Никаких ошибок компиляции или предупреждений при этом не возникает. Собирал все локально или удаленно только на Win10 x64 (c .NET 4.8). @admin У вас она всегда собирается нормально и на каком Windows?
Вот одна из таких “кривых” сборок: PABCRtl.dll (391 КБ)
Лог её компиляции через pabcnetc.exe (в интер. режиме с Debug=0, Rebuild=1)
Compiling assembly PABCRtl.pas...[0]CompilationStarting PABCRtl.pas...
[0]BeginCompileFile PABCRtl.pas...
[0]BeginParsingFile PABCRtl.pas...
[16]EndParsingFile PABCRtl.pas...
[0]SyntaxTreeConversion Standard...
[0]BeginCompileFile __RtlUtils.pas...
[0]BeginParsingFile __RtlUtils.pas...
[0]EndParsingFile __RtlUtils.pas...
[0]SyntaxTreeConversion Standard...
[0]ReadPCUFile PABCSystem.pcu...
[159]ReadDLL System.dll...
[2]ReadDLL mscorlib.dll...
[5]ReadDLL System.Core.dll...
[0]ReadDLL System.Numerics.dll...
[2]ReadPCUFile PABCExtensions.pcu...
[1]CompileInterface __RtlUtils.pas...
[1]CompileImplementation __RtlUtils.pas...
[0]EndCompileFile __RtlUtils.pas...
[1]ReadPCUFile __RunMode.pcu...
[1]ReadPCUFile __RedirectIOMode.pcu...
[0]ReadDLL System.Windows.Forms.dll...
[2]ReadPCUFile GraphWPFBase.pcu...
[0]ReadDLL PresentationFramework.dll...
[0]ReadDLL WindowsBase.dll...
[0]ReadDLL PresentationCore.dll...
[0]ReadPCUFile GraphWPF.pcu...
[0]ReadPCUFile Graph3D.pcu...
[0]ReadDLL System.Xml.dll...
[0]ReadDLL HelixToolkit.Wpf.dll...
[0]ReadPCUFile WPFObjects.pcu...
[0]ReadPCUFile ClientServer.pcu...
[0]ReadPCUFile Arrays.pcu...
[0]ReadPCUFile Collections.pcu...
[0]ReadPCUFile FormsABC.pcu...
[0]ReadDLL System.Drawing.dll...
[0]ReadPCUFile RBDMUtils.pcu...
[0]ReadPCUFile PT4TaskMakerNET.pcu...
[16]ReadPCUFile Timers.pcu...
[0]ReadPCUFile VCL.pcu...
[0]ReadPCUFile Utils.pcu...
[0]ReadPCUFile Sockets.pcu...
[0]ReadPCUFile GraphABCHelper.pcu...
[0]ReadPCUFile GraphABC.pcu...
[0]ReadPCUFile IniFile.pcu...
[0]ReadPCUFile RobotField.pcu...
[0]ReadPCUFile RobotTaskMaker.pcu...
[0]ReadPCUFile RobotZadan.pcu...
[0]ReadPCUFile Robot.pcu...
[16]ReadPCUFile PointRect.pcu...
[0]ReadPCUFile PointerTools.pcu...
[0]ReadPCUFile FilesOperations.pcu...
[0]ReadPCUFile Events.pcu...
[0]ReadPCUFile DMCollect.pcu...
[0]ReadPCUFile DrawManField.pcu...
[0]ReadPCUFile DMTaskMaker.pcu...
[0]ReadPCUFile DMZadan.pcu...
[0]ReadPCUFile Drawman.pcu...
[0]ReadPCUFile CRT.pcu...
[16]ReadPCUFile ABCObjects.pcu...
[0]ReadPCUFile ABCSprites.pcu...
[0]ReadPCUFile ABCHouse.pcu...
[0]ReadPCUFile ABCButtons.pcu...
[0]CompileInterface PABCRtl.pas...
[0]CompileImplementation PABCRtl.pas...
[0]EndCompileFile PABCRtl.pas...
[109]SavePCUFile __RtlUtils.pcu...
[16]SemanticTreeConversion Optimizer...
[0]CodeGeneration PABCRtl.dll...
[359]CompilationFinished PABCRtl.pas...
Ready.
Total: 1 files (0kb,48lines). Time: 736,8791ms
Падение ‘TestRunner.exe 5’ – с “кривой” сборкой PABCRtl.dll в GAC:
a) при вызове CompileAllRunTests(true):
**ERROR: Compilation of D:\a\pascalabcnet\pascalabcnet\TestSuite\06_ShortFunc.pas failed
Внутренняя ошибка компилятора в модуле Compiler.Compile[06_ShortFunc.pas] :'System.ArgumentNullException: Value cannot be null.
Parameter name: source
at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
at PascalABCCompiler.SystemLibrary.UnitDefinitionItem.Equal(List`1 sil)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.CheckSpecialFunctionCall(List`1 sil, expressions_list exprs, location loc)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.find_operator(String name, expression_node left, expression_node right, location loc, Boolean no_search_in_extension_methods)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(bin_expr _bin_expr)
at PascalABCCompiler.TreeConverter.returner.visit(expression expr)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.convert_strong(expression expr)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(bin_expr _bin_expr)
at PascalABCCompiler.TreeConverter.returner.visit(expression expr)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.convert_strong(expression expr)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.AssignCheckAndConvert(assign _assign, addressed_expression& to, expression_node& from)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(assign _assign)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.convert_strong(statement st)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(statement_list _statement_list)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.convert_strong(statement st)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit_program_code(statement_list program_code)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(block _block)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(procedure_definition _procedure_definition)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(declarations _subprogram_definitions)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(block _block)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(program_module _program_module)
at PascalABCCompiler.TreeConverter.SyntaxTreeToSemanticTreeConverter.CompileInterface(compilation_unit SyntaxUnit, unit_node_list UsedUnits, List`1 ErrorsList, List`1 WarningsList, SyntaxError parser_error, Hashtable bad_nodes, using_namespace_list namespaces, Dictionary`2 docs, Boolean debug, Boolean debugging)
at PascalABCCompiler.Compiler.CompileUnit(unit_node_list Units, unit_or_namespace SyntaxUsesUnit)
at PascalABCCompiler.Compiler.Compile() System.ArgumentNullException: Value cannot be null.
Parameter name: source
at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
at PascalABCCompiler.SystemLibrary.UnitDefinitionItem.Equal(List`1 sil)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.CheckSpecialFunctionCall(List`1 sil, expressions_list exprs, location loc)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.find_operator(String name, expression_node left, expression_node right, location loc, Boolean no_search_in_extension_methods)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(bin_expr _bin_expr)
at PascalABCCompiler.TreeConverter.returner.visit(expression expr)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.convert_strong(expression expr)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(bin_expr _bin_expr)
at PascalABCCompiler.TreeConverter.returner.visit(expression expr)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.convert_strong(expression expr)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.AssignCheckAndConvert(assign _assign, addressed_expression& to, expression_node& from)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(assign _assign)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.convert_strong(statement st)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(statement_list _statement_list)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.convert_strong(statement st)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit_program_code(statement_list program_code)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(block _block)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(procedure_definition _procedure_definition)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(declarations _subprogram_definitions)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(block _block)
at PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(program_module _program_module)
at PascalABCCompiler.TreeConverter.SyntaxTreeToSemanticTreeConverter.CompileInterface(compilation_unit SyntaxUnit, unit_node_list UsedUnits, List`1 ErrorsList, List`1 WarningsList, SyntaxError parser_error, Hashtable bad_nodes, using_namespace_list namespaces, Dictionary`2 docs, Boolean debug, Boolean debugging)
at PascalABCCompiler.Compiler.CompileUnit(unit_node_list Units, unit_or_namespace SyntaxUsesUnit)
at PascalABCCompiler.Compiler.Compile()'
b) при вызове CompileAllCompilationTests('pabcrtl_tests', true)
***ERROR: Compilation of D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\pabcrtl_tests\ABC1.pas failed
Внутренняя ошибка компилятора в модуле Compiler.Compile[ABC1.pas] :'System.ArgumentNullException: Значение не может быть неопределенным.
Имя параметра: source
в System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
в PascalABCCompiler.SystemLibrary.UnitDefinitionItem.Equal(List`1 sil)
в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit_method_call(method_call _method_call)
в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(method_call _method_call)
в PascalABCCompiler.TreeConverter.returner.visit(expression expr)
в PascalABCCompiler.TreeConverter.syntax_tree_visitor.convert_strong(expression expr)
в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(procedure_call _procedure_call)
в PascalABCCompiler.TreeConverter.syntax_tree_visitor.convert_strong(statement st)
в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(statement_list _statement_list)
в PascalABCCompiler.TreeConverter.syntax_tree_visitor.convert_strong(statement st)
в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit_program_code(statement_list program_code)
в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(block _block)
в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(procedure_definition _procedure_definition)
в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(declarations _subprogram_definitions)
в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(block _block)
в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(program_module _program_module)
в PascalABCCompiler.TreeConverter.SyntaxTreeToSemanticTreeConverter.CompileInterface(compilation_unit SyntaxUnit, unit_node_list UsedUnits, List`1 ErrorsList, List`1 WarningsList, SyntaxError parser_error, Hashtable bad_nodes, using_namespace_list namespaces, Dictionary`2 docs, Boolean debug, Boolean debugging)
в PascalABCCompiler.Compiler.CompileUnit(unit_node_list Units, unit_or_namespace SyntaxUsesUnit)
в PascalABCCompiler.Compiler.Compile() System.ArgumentNullException: Значение не может быть неопределенным.
Имя параметра: source
в System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
в PascalABCCompiler.SystemLibrary.UnitDefinitionItem.Equal(List`1 sil)
в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit_method_call(method_call _method_call)
в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(method_call _method_call)
в PascalABCCompiler.TreeConverter.returner.visit(expression expr)
в PascalABCCompiler.TreeConverter.syntax_tree_visitor.convert_strong(expression expr)
в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(procedure_call _procedure_call)
в PascalABCCompiler.TreeConverter.syntax_tree_visitor.convert_strong(statement st)
в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(statement_list _statement_list)
в PascalABCCompiler.TreeConverter.syntax_tree_visitor.convert_strong(statement st)
в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit_program_code(statement_list program_code)
в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(block _block)
в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(procedure_definition _procedure_definition)
в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(declarations _subprogram_definitions)
в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(block _block)
в PascalABCCompiler.TreeConverter.syntax_tree_visitor.visit(program_module _program_module)
в PascalABCCompiler.TreeConverter.SyntaxTreeToSemanticTreeConverter.CompileInterface(compilation_unit SyntaxUnit, unit_node_list UsedUnits, List`1 ErrorsList, List`1 WarningsList, SyntaxError parser_error, Hashtable bad_nodes, using_namespace_list namespaces, Dictionary`2 docs, Boolean debug, Boolean debugging)
в PascalABCCompiler.Compiler.CompileUnit(unit_node_list Units, unit_or_namespace SyntaxUsesUnit)
в PascalABCCompiler.Compiler.Compile()'
Кстати, еще заметил, что текст исключения всегда повторяется дважды!
- Более того, у меня PABCRtl-тесты пока не проходят (и локально, и удаленно) даже с официальной dll-кой из дистрибутива, но уже на совсем другом файле и с более “приличной” ошибкой (не внутренней ошибкой компилятора) при вызове только CompileAllRunTests(true). Все остальные тесты при этом идут без проблем!
Ошибки 'TestRunner.exe 5' -- с офиц. сборкой PABCRtl.dll в GAC
***ERROR: Compilation of D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\extensionmethods26.pas failed
Операция '+' не применима к типам array of char и string
***ERROR: Compilation of d:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\overloads7.pas failed
Операция '*' не применима к типам integer и procedure
***ERROR: Compilation of d:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\SliceArrGeneric.pas failed
Неизвестное имя 'SystemSlice'
- Еще одна проблема проявляется после загрузки репозитория с ГитХаба напрямую через zip-архив (либо при неточной настройке git-клиента под Windows). Все файлы в папке
TestSuite\formatter_tests
в этом случае будут иметь Unix-формат (LF-окончания строк), а в TestSuite\formatter_tests\output
после TestRunner’а – уже CR/LF. Алгоритм их проверки c TestSuite\formatter_tests\should
в CodeCompletion\Testing.cs
это не учитывает и считает такие файлы не совпадающими, генерируя не предупреждение, а сразу ошибку тестов.
Ошибки тестов форматирования при LF-формате входных файлов
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\arrays2.pas
Invalid formatting of File D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\arrays4.pas, line 3
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\assigntuple1.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\attributes1.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\autoproperty1.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\autoproperty2.pas
Invalid formatting of File D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\bigint.pas, line 4
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\case1.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\case2.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\case6.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\case7.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\case8.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\cast1.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\class3.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\delegates1.pas
Invalid formatting of File D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\delegates5.pas, line 3
Invalid formatting of File D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\Demo1.pas, line 3
Invalid formatting of File D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\diapasons2.pas, line 3
Invalid formatting of File D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\enum2.pas, line 3
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\extendedindexedproperty3.pas
Invalid formatting of File D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\File48.pas, line 4
Invalid formatting of File D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\flagsattr1.pas, line 3
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\for1.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\For2.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\foreach4.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\foreachvar1.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\foreachvar2.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\ForFor1.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\formatstring1.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\formatstring2.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\generics1.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\generics2.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\if1.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\If5.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\if6.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\if7.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\if8.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\ifexpr1.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\ifexpr2.pas
Invalid formatting of File D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\incdec2.pas, line 3
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\lambdas_closures_13.pas
Invalid formatting of File D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\LibForHaskell.pas, line 3
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\lock1.pas
Invalid formatting of File D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\MathForKumir.pas, line 3
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\pattern1.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\Program1049.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\Program1114.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\Program1115.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\Program1124.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\Program1125.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\Program1200.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\Program1339.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\Program1352.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\Program920.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\Program972.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\Program997.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\property3.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\property4.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\property5.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\property6.pas
Invalid formatting of File D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\PT4.pas, line 27
Invalid formatting of File D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\PT4DemoTest.pas, line 3
Invalid formatting of File D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\RBDMUtilsDemo.pas, line 3
Invalid formatting of File D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\records3u.pas, line 3
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\repeat1.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\set1.pas
Invalid formatting of File D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\set2.pas, line 3
Invalid formatting of File D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\set5u.pas, line 3
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\slice.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\slice2.pas
Invalid formatting of File D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\String9.pas, line 4
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\Try2.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\Try3.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\Try4.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\Try5.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\Try6.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\Try7.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\Try8.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\Try9.pas
Invalid formatting of File D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\typedconst2.pas, line 3
Invalid formatting of File D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\typedconst2u.pas, line 3
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\typeof.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\typeof2.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\uses1.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\uses2.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\uses3.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\vartupledef.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\Where.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\while1.pas
Invalid formatting of File (text not equal) D:\TEMP\GitHub-projects\pascalabcnet-WIP\TestSuite\formatter_tests\output\while4.pas
Зато благодаря этому удалось поймать один скрытый баг форматирования: если открыть в IDE, напр., файл TestSuite\formatter_tests\input\arrays4.pas
в его LF-варианте и запустить форматирование более 1 раза, то добавится лишняя (2-ая) пустая строка после uses arrays4u;
. При этом, даже если удалить эту лишнюю пустую строчку в редакторе, после переформатирования она появится снова! Странным образом этот баг не проявляется, если файл изначально был в CR/LF-формате (или сохранен в редакторе и переоткрыт, что автоматически конвертирует его окончания строк).
В тестах форматирования TestRunner этот баг (или связанный с ним) проявляется немного иначе: при обработке input-файлов в LF-варианте результаты сохраняются в \output уже в CR/LF-формате, но при этом в некоторых файлах (сейчас их 20 шт. – см. в логе выше файлы с ошибками в строках №3 или №4) одна из строк после форматирования остается с LF-окончанием, т.е. получается вообще мешанина из окончаний!