From bd758261ac8934978d6949c52ecea356486fc050 Mon Sep 17 00:00:00 2001 From: Iwan Kelaiah Date: Sat, 19 Sep 2026 10:29:46 +1000 Subject: [PATCH 1/2] chore: declare {$J+} in every Pascal source Use {$mode objfpc}{$H+}{$J+} consistently across the CLI, units, test programs, fixtures, and examples. The in-place directive edit does not change line counts, so source-line assertions and generated golden output are unaffected. --- examples/documented-api/Demo.Core.pas | 2 +- examples/documented-api/Demo.Services.pas | 2 +- examples/scientific-api/Scientific.Analysis.pas | 2 +- examples/scientific-api/Scientific.Core.pas | 2 +- examples/scientific-api/ScientificDemo.lpr | 2 +- src/cli/PasWeave.CLI.pas | 2 +- src/cli/PasWeave.Version.pas | 2 +- src/diagnostics/PasWeave.Diagnostics.pas | 2 +- src/incremental/PasWeave.Hashing.pas | 2 +- src/incremental/PasWeave.Incremental.pas | 2 +- src/incremental/PasWeave.Output.pas | 2 +- src/model/PasWeave.Model.JSON.pas | 2 +- src/model/PasWeave.Model.pas | 2 +- src/model/PasWeave.SourceLinks.pas | 2 +- src/parser/PasWeave.Comments.pas | 2 +- src/parser/PasWeave.Compiler.pas | 2 +- src/parser/PasWeave.FPCAdapter.Symbols.pas | 2 +- src/parser/PasWeave.FPCAdapter.pas | 2 +- src/parser/PasWeave.Lazarus.Support.pas | 2 +- src/parser/PasWeave.Lazarus.pas | 2 +- src/parser/PasWeave.Parser.pas | 2 +- src/pasweave.lpr | 2 +- src/render/PasWeave.Render.HTML.Assets.pas | 2 +- src/render/PasWeave.Render.HTML.CSS.pas | 2 +- src/render/PasWeave.Render.HTML.Diagrams.pas | 2 +- src/render/PasWeave.Render.HTML.Markdown.pas | 2 +- src/render/PasWeave.Render.HTML.Scripts.pas | 2 +- src/render/PasWeave.Render.HTML.pas | 2 +- src/render/PasWeave.Render.Links.pas | 2 +- src/render/PasWeave.Render.Markdown.pas | 2 +- src/render/PasWeave.Render.Support.pas | 2 +- src/support/PasWeave.FS.pas | 2 +- src/validation/PasWeave.Validation.pas | 2 +- tests/PasWeave.IncrementalTests.pas | 2 +- tests/PasWeave.NavigationTests.pas | 2 +- tests/PasWeave.SymbolIndexAndThemeTests.pas | 2 +- tests/PasWeave.TestSupport.pas | 2 +- tests/PasWeave.ValidationTests.pas | 2 +- tests/fixtures/SimpleUnit.pas | 2 +- tests/fixtures/comments/CommentDialects.pas | 2 +- tests/fixtures/compiler/conditional/ConditionalAPI.pas | 2 +- tests/fixtures/compiler/includes/CompetingInclude.pas | 2 +- tests/fixtures/compiler/includes/IncludeAPI.pas | 2 +- tests/fixtures/compiler/includes/LocalIncludeAPI.pas | 2 +- tests/fixtures/compiler/includes/MissingInclude.pas | 2 +- tests/fixtures/compiler/units/path-a/NestedDependency.pas | 2 +- tests/fixtures/compiler/units/path-a/SharedDependency.pas | 2 +- tests/fixtures/compiler/units/path-b/SharedDependency.pas | 2 +- tests/fixtures/compiler/units/root/UnitPathConsumer.pas | 2 +- tests/fixtures/dependencies/DependencyConsumer.pas | 2 +- tests/fixtures/dependencies/DependencyCore.pas | 2 +- tests/fixtures/dependencies/DependencyLeaf.pas | 2 +- tests/fixtures/dependencies/IndependentUnit.pas | 2 +- tests/fixtures/discovery/RootUnit.pas | 2 +- tests/fixtures/discovery/generated/GeneratedUnit.pas | 2 +- tests/fixtures/discovery/src/AlphaUnit.pas | 2 +- tests/fixtures/discovery/src/deep/BetaUnit.pp | 2 +- tests/fixtures/discovery/tests/TestSupport.pas | 2 +- tests/fixtures/discovery/vendor/VendorUnit.pas | 2 +- tests/fixtures/lazarus/ambiguous-mode/Main.pas | 2 ++ tests/fixtures/lazarus/ambiguous/Main.pas | 2 ++ tests/fixtures/lazarus/cycle/Main.pas | 2 ++ tests/fixtures/lazarus/missing/Main.pas | 2 ++ .../lazarus/multi-package/packages/CorePkg/src/CoreUnit.pas | 2 ++ .../multi-package/packages/SupportPkg/src/SupportUnit.pas | 2 ++ tests/fixtures/lazarus/multi-package/src/LazarusProject.pas | 2 ++ tests/fixtures/lazarus/separate-target/Main.pas | 2 ++ tests/fixtures/lazarus/unsupported-macro/Main.pas | 2 ++ tests/fixtures/math/MathDocumentation.pas | 2 +- tests/fixtures/partial/GoodUnit.pas | 2 +- tests/fixtures/partial/InvalidUnit.pas | 2 +- tests/fixtures/relationships/RelationshipBase.pas | 2 +- tests/fixtures/relationships/RelationshipImplementations.pas | 2 +- tests/fixtures/relationships/RelationshipUnrelated.pas | 2 +- tests/fixtures/validation/brace/FeedbackBrace.pas | 2 +- tests/fixtures/validation/paren/FeedbackParen.pas | 2 +- tests/fixtures/validation/slash/FeedbackDependency.pas | 2 +- tests/fixtures/validation/slash/FeedbackSlash.pas | 2 +- tests/test_cli.pas | 2 +- tests/test_pasweave.pas | 2 +- 80 files changed, 89 insertions(+), 71 deletions(-) diff --git a/examples/documented-api/Demo.Core.pas b/examples/documented-api/Demo.Core.pas index 15567ec..d5a8374 100644 --- a/examples/documented-api/Demo.Core.pas +++ b/examples/documented-api/Demo.Core.pas @@ -4,7 +4,7 @@ /// documentation marker. unit Demo.Core; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/examples/documented-api/Demo.Services.pas b/examples/documented-api/Demo.Services.pas index 49fb885..2e63c10 100644 --- a/examples/documented-api/Demo.Services.pas +++ b/examples/documented-api/Demo.Services.pas @@ -1,7 +1,7 @@ /// Demonstrates documented APIs that depend on another project unit. unit Demo.Services; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/examples/scientific-api/Scientific.Analysis.pas b/examples/scientific-api/Scientific.Analysis.pas index a7211c7..d2ac336 100644 --- a/examples/scientific-api/Scientific.Analysis.pas +++ b/examples/scientific-api/Scientific.Analysis.pas @@ -4,7 +4,7 @@ /// such as $\mu$ and $\sigma$ to complete display equations. unit Scientific.Analysis; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/examples/scientific-api/Scientific.Core.pas b/examples/scientific-api/Scientific.Core.pas index 686efad..343baa4 100644 --- a/examples/scientific-api/Scientific.Core.pas +++ b/examples/scientific-api/Scientific.Core.pas @@ -7,7 +7,7 @@ /// $$ unit Scientific.Core; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/examples/scientific-api/ScientificDemo.lpr b/examples/scientific-api/ScientificDemo.lpr index 8acc871..b7b9731 100644 --- a/examples/scientific-api/ScientificDemo.lpr +++ b/examples/scientific-api/ScientificDemo.lpr @@ -1,6 +1,6 @@ program ScientificDemo; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} uses SysUtils, Scientific.Core, Scientific.Analysis; diff --git a/src/cli/PasWeave.CLI.pas b/src/cli/PasWeave.CLI.pas index 9f91bca..54968fe 100644 --- a/src/cli/PasWeave.CLI.pas +++ b/src/cli/PasWeave.CLI.pas @@ -5,7 +5,7 @@ /// for safe incremental rebuilds. unit PasWeave.CLI; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/src/cli/PasWeave.Version.pas b/src/cli/PasWeave.Version.pas index 442a197..18b9025 100644 --- a/src/cli/PasWeave.Version.pas +++ b/src/cli/PasWeave.Version.pas @@ -1,6 +1,6 @@ unit PasWeave.Version; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/src/diagnostics/PasWeave.Diagnostics.pas b/src/diagnostics/PasWeave.Diagnostics.pas index ab03493..6d43e5b 100644 --- a/src/diagnostics/PasWeave.Diagnostics.pas +++ b/src/diagnostics/PasWeave.Diagnostics.pas @@ -1,6 +1,6 @@ unit PasWeave.Diagnostics; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/src/incremental/PasWeave.Hashing.pas b/src/incremental/PasWeave.Hashing.pas index a250472..1697b3a 100644 --- a/src/incremental/PasWeave.Hashing.pas +++ b/src/incremental/PasWeave.Hashing.pas @@ -1,6 +1,6 @@ unit PasWeave.Hashing; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/src/incremental/PasWeave.Incremental.pas b/src/incremental/PasWeave.Incremental.pas index 1abafb2..837339e 100644 --- a/src/incremental/PasWeave.Incremental.pas +++ b/src/incremental/PasWeave.Incremental.pas @@ -3,7 +3,7 @@ /// The generated output tree is owned by PasWeave.Output. unit PasWeave.Incremental; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/src/incremental/PasWeave.Output.pas b/src/incremental/PasWeave.Output.pas index e196f4b..22fd1a4 100644 --- a/src/incremental/PasWeave.Output.pas +++ b/src/incremental/PasWeave.Output.pas @@ -4,7 +4,7 @@ /// This is a leaf unit so renderers and the model never link the parser. unit PasWeave.Output; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/src/model/PasWeave.Model.JSON.pas b/src/model/PasWeave.Model.JSON.pas index dfdd38f..2aea016 100644 --- a/src/model/PasWeave.Model.JSON.pas +++ b/src/model/PasWeave.Model.JSON.pas @@ -1,6 +1,6 @@ unit PasWeave.Model.JSON; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/src/model/PasWeave.Model.pas b/src/model/PasWeave.Model.pas index 0aeae61..d450a38 100644 --- a/src/model/PasWeave.Model.pas +++ b/src/model/PasWeave.Model.pas @@ -1,6 +1,6 @@ unit PasWeave.Model; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/src/model/PasWeave.SourceLinks.pas b/src/model/PasWeave.SourceLinks.pas index 7c25629..5264d3b 100644 --- a/src/model/PasWeave.SourceLinks.pas +++ b/src/model/PasWeave.SourceLinks.pas @@ -1,6 +1,6 @@ unit PasWeave.SourceLinks; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/src/parser/PasWeave.Comments.pas b/src/parser/PasWeave.Comments.pas index 59d7776..6cf7832 100644 --- a/src/parser/PasWeave.Comments.pas +++ b/src/parser/PasWeave.Comments.pas @@ -1,6 +1,6 @@ unit PasWeave.Comments; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/src/parser/PasWeave.Compiler.pas b/src/parser/PasWeave.Compiler.pas index 794e51b..bf276ab 100644 --- a/src/parser/PasWeave.Compiler.pas +++ b/src/parser/PasWeave.Compiler.pas @@ -1,6 +1,6 @@ unit PasWeave.Compiler; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/src/parser/PasWeave.FPCAdapter.Symbols.pas b/src/parser/PasWeave.FPCAdapter.Symbols.pas index ddd8dbb..d254e8a 100644 --- a/src/parser/PasWeave.FPCAdapter.Symbols.pas +++ b/src/parser/PasWeave.FPCAdapter.Symbols.pas @@ -4,7 +4,7 @@ /// construction and diagnostics. unit PasWeave.FPCAdapter.Symbols; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/src/parser/PasWeave.FPCAdapter.pas b/src/parser/PasWeave.FPCAdapter.pas index 701bbda..2815347 100644 --- a/src/parser/PasWeave.FPCAdapter.pas +++ b/src/parser/PasWeave.FPCAdapter.pas @@ -1,6 +1,6 @@ unit PasWeave.FPCAdapter; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/src/parser/PasWeave.Lazarus.Support.pas b/src/parser/PasWeave.Lazarus.Support.pas index 227ad62..c9ef032 100644 --- a/src/parser/PasWeave.Lazarus.Support.pas +++ b/src/parser/PasWeave.Lazarus.Support.pas @@ -2,7 +2,7 @@ /// expansion, and Free Pascal custom-option parsing. unit PasWeave.Lazarus.Support; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/src/parser/PasWeave.Lazarus.pas b/src/parser/PasWeave.Lazarus.pas index 8e3ff7f..0936933 100644 --- a/src/parser/PasWeave.Lazarus.pas +++ b/src/parser/PasWeave.Lazarus.pas @@ -1,6 +1,6 @@ unit PasWeave.Lazarus; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/src/parser/PasWeave.Parser.pas b/src/parser/PasWeave.Parser.pas index 3c5e0c1..7a07a09 100644 --- a/src/parser/PasWeave.Parser.pas +++ b/src/parser/PasWeave.Parser.pas @@ -1,6 +1,6 @@ unit PasWeave.Parser; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/src/pasweave.lpr b/src/pasweave.lpr index e01ea15..d481db4 100644 --- a/src/pasweave.lpr +++ b/src/pasweave.lpr @@ -1,6 +1,6 @@ program pasweave; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} {$IFDEF PASWEAVE_PORTABLE_ASSETS} {$R ../build/release/pasweave-assets.res} {$ENDIF} diff --git a/src/render/PasWeave.Render.HTML.Assets.pas b/src/render/PasWeave.Render.HTML.Assets.pas index 20d7d8e..15ff41c 100644 --- a/src/render/PasWeave.Render.HTML.Assets.pas +++ b/src/render/PasWeave.Render.HTML.Assets.pas @@ -1,6 +1,6 @@ unit PasWeave.Render.HTML.Assets; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} {$codepage utf8} interface diff --git a/src/render/PasWeave.Render.HTML.CSS.pas b/src/render/PasWeave.Render.HTML.CSS.pas index ec23b54..fb832a4 100644 --- a/src/render/PasWeave.Render.HTML.CSS.pas +++ b/src/render/PasWeave.Render.HTML.CSS.pas @@ -1,6 +1,6 @@ unit PasWeave.Render.HTML.CSS; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} {$codepage utf8} interface diff --git a/src/render/PasWeave.Render.HTML.Diagrams.pas b/src/render/PasWeave.Render.HTML.Diagrams.pas index 4b3a28e..67f5588 100644 --- a/src/render/PasWeave.Render.HTML.Diagrams.pas +++ b/src/render/PasWeave.Render.HTML.Diagrams.pas @@ -1,6 +1,6 @@ unit PasWeave.Render.HTML.Diagrams; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} {$codepage utf8} interface diff --git a/src/render/PasWeave.Render.HTML.Markdown.pas b/src/render/PasWeave.Render.HTML.Markdown.pas index ff6c3a3..ed07e03 100644 --- a/src/render/PasWeave.Render.HTML.Markdown.pas +++ b/src/render/PasWeave.Render.HTML.Markdown.pas @@ -1,6 +1,6 @@ unit PasWeave.Render.HTML.Markdown; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} {$codepage utf8} interface diff --git a/src/render/PasWeave.Render.HTML.Scripts.pas b/src/render/PasWeave.Render.HTML.Scripts.pas index 47acffb..3054e08 100644 --- a/src/render/PasWeave.Render.HTML.Scripts.pas +++ b/src/render/PasWeave.Render.HTML.Scripts.pas @@ -1,6 +1,6 @@ unit PasWeave.Render.HTML.Scripts; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} {$codepage utf8} interface diff --git a/src/render/PasWeave.Render.HTML.pas b/src/render/PasWeave.Render.HTML.pas index e1902f3..84a59a1 100644 --- a/src/render/PasWeave.Render.HTML.pas +++ b/src/render/PasWeave.Render.HTML.pas @@ -1,6 +1,6 @@ unit PasWeave.Render.HTML; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} {$codepage utf8} interface diff --git a/src/render/PasWeave.Render.Links.pas b/src/render/PasWeave.Render.Links.pas index a1c516d..75b9a14 100644 --- a/src/render/PasWeave.Render.Links.pas +++ b/src/render/PasWeave.Render.Links.pas @@ -1,6 +1,6 @@ unit PasWeave.Render.Links; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} {$codepage utf8} interface diff --git a/src/render/PasWeave.Render.Markdown.pas b/src/render/PasWeave.Render.Markdown.pas index 0d0df00..6c6a74d 100644 --- a/src/render/PasWeave.Render.Markdown.pas +++ b/src/render/PasWeave.Render.Markdown.pas @@ -1,6 +1,6 @@ unit PasWeave.Render.Markdown; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} {$codepage utf8} interface diff --git a/src/render/PasWeave.Render.Support.pas b/src/render/PasWeave.Render.Support.pas index 4999de5..41b2072 100644 --- a/src/render/PasWeave.Render.Support.pas +++ b/src/render/PasWeave.Render.Support.pas @@ -1,6 +1,6 @@ unit PasWeave.Render.Support; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/src/support/PasWeave.FS.pas b/src/support/PasWeave.FS.pas index ee26309..422a296 100644 --- a/src/support/PasWeave.FS.pas +++ b/src/support/PasWeave.FS.pas @@ -4,7 +4,7 @@ /// output code can share one definition of path and file handling. unit PasWeave.FS; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/src/validation/PasWeave.Validation.pas b/src/validation/PasWeave.Validation.pas index 9b23c59..0f54cb6 100644 --- a/src/validation/PasWeave.Validation.pas +++ b/src/validation/PasWeave.Validation.pas @@ -1,6 +1,6 @@ unit PasWeave.Validation; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/PasWeave.IncrementalTests.pas b/tests/PasWeave.IncrementalTests.pas index 5ae4040..3cd0363 100644 --- a/tests/PasWeave.IncrementalTests.pas +++ b/tests/PasWeave.IncrementalTests.pas @@ -1,6 +1,6 @@ unit PasWeave.IncrementalTests; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/PasWeave.NavigationTests.pas b/tests/PasWeave.NavigationTests.pas index be296f9..bf5527e 100644 --- a/tests/PasWeave.NavigationTests.pas +++ b/tests/PasWeave.NavigationTests.pas @@ -1,6 +1,6 @@ unit PasWeave.NavigationTests; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/PasWeave.SymbolIndexAndThemeTests.pas b/tests/PasWeave.SymbolIndexAndThemeTests.pas index 67e45d4..b82fb87 100644 --- a/tests/PasWeave.SymbolIndexAndThemeTests.pas +++ b/tests/PasWeave.SymbolIndexAndThemeTests.pas @@ -1,6 +1,6 @@ unit PasWeave.SymbolIndexAndThemeTests; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/PasWeave.TestSupport.pas b/tests/PasWeave.TestSupport.pas index 24e7587..e005b16 100644 --- a/tests/PasWeave.TestSupport.pas +++ b/tests/PasWeave.TestSupport.pas @@ -4,7 +4,7 @@ /// names the behavior under test instead of only printing the assertion text. unit PasWeave.TestSupport; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/PasWeave.ValidationTests.pas b/tests/PasWeave.ValidationTests.pas index 1bb035e..f673072 100644 --- a/tests/PasWeave.ValidationTests.pas +++ b/tests/PasWeave.ValidationTests.pas @@ -1,6 +1,6 @@ unit PasWeave.ValidationTests; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/SimpleUnit.pas b/tests/fixtures/SimpleUnit.pas index dd659e5..32538d1 100644 --- a/tests/fixtures/SimpleUnit.pas +++ b/tests/fixtures/SimpleUnit.pas @@ -1,6 +1,6 @@ unit SimpleUnit; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/comments/CommentDialects.pas b/tests/fixtures/comments/CommentDialects.pas index ac47fa6..ecc7a45 100644 --- a/tests/fixtures/comments/CommentDialects.pas +++ b/tests/fixtures/comments/CommentDialects.pas @@ -1,6 +1,6 @@ unit CommentDialects; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/compiler/conditional/ConditionalAPI.pas b/tests/fixtures/compiler/conditional/ConditionalAPI.pas index 4d24d57..172c008 100644 --- a/tests/fixtures/compiler/conditional/ConditionalAPI.pas +++ b/tests/fixtures/compiler/conditional/ConditionalAPI.pas @@ -1,6 +1,6 @@ unit ConditionalAPI; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/compiler/includes/CompetingInclude.pas b/tests/fixtures/compiler/includes/CompetingInclude.pas index f6c215a..cd704a4 100644 --- a/tests/fixtures/compiler/includes/CompetingInclude.pas +++ b/tests/fixtures/compiler/includes/CompetingInclude.pas @@ -1,6 +1,6 @@ unit CompetingInclude; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/compiler/includes/IncludeAPI.pas b/tests/fixtures/compiler/includes/IncludeAPI.pas index 0d0ee1f..b791c0e 100644 --- a/tests/fixtures/compiler/includes/IncludeAPI.pas +++ b/tests/fixtures/compiler/includes/IncludeAPI.pas @@ -1,6 +1,6 @@ unit IncludeAPI; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/compiler/includes/LocalIncludeAPI.pas b/tests/fixtures/compiler/includes/LocalIncludeAPI.pas index fe83cc3..fcb1620 100644 --- a/tests/fixtures/compiler/includes/LocalIncludeAPI.pas +++ b/tests/fixtures/compiler/includes/LocalIncludeAPI.pas @@ -1,6 +1,6 @@ unit LocalIncludeAPI; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/compiler/includes/MissingInclude.pas b/tests/fixtures/compiler/includes/MissingInclude.pas index 7c8f43f..e752d39 100644 --- a/tests/fixtures/compiler/includes/MissingInclude.pas +++ b/tests/fixtures/compiler/includes/MissingInclude.pas @@ -1,6 +1,6 @@ unit MissingInclude; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/compiler/units/path-a/NestedDependency.pas b/tests/fixtures/compiler/units/path-a/NestedDependency.pas index 09dfa0a..c920681 100644 --- a/tests/fixtures/compiler/units/path-a/NestedDependency.pas +++ b/tests/fixtures/compiler/units/path-a/NestedDependency.pas @@ -1,6 +1,6 @@ unit NestedDependency; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/compiler/units/path-a/SharedDependency.pas b/tests/fixtures/compiler/units/path-a/SharedDependency.pas index 1e3126e..97bf2c9 100644 --- a/tests/fixtures/compiler/units/path-a/SharedDependency.pas +++ b/tests/fixtures/compiler/units/path-a/SharedDependency.pas @@ -1,6 +1,6 @@ unit SharedDependency; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/compiler/units/path-b/SharedDependency.pas b/tests/fixtures/compiler/units/path-b/SharedDependency.pas index 540f86a..94796cb 100644 --- a/tests/fixtures/compiler/units/path-b/SharedDependency.pas +++ b/tests/fixtures/compiler/units/path-b/SharedDependency.pas @@ -1,6 +1,6 @@ unit SharedDependency; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/compiler/units/root/UnitPathConsumer.pas b/tests/fixtures/compiler/units/root/UnitPathConsumer.pas index ab19899..145a73f 100644 --- a/tests/fixtures/compiler/units/root/UnitPathConsumer.pas +++ b/tests/fixtures/compiler/units/root/UnitPathConsumer.pas @@ -1,6 +1,6 @@ unit UnitPathConsumer; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/dependencies/DependencyConsumer.pas b/tests/fixtures/dependencies/DependencyConsumer.pas index 1391897..a16f56c 100644 --- a/tests/fixtures/dependencies/DependencyConsumer.pas +++ b/tests/fixtures/dependencies/DependencyConsumer.pas @@ -1,6 +1,6 @@ unit DependencyConsumer; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/dependencies/DependencyCore.pas b/tests/fixtures/dependencies/DependencyCore.pas index 0fa2903..358b5be 100644 --- a/tests/fixtures/dependencies/DependencyCore.pas +++ b/tests/fixtures/dependencies/DependencyCore.pas @@ -1,6 +1,6 @@ unit DependencyCore; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/dependencies/DependencyLeaf.pas b/tests/fixtures/dependencies/DependencyLeaf.pas index 23b5a16..16ca5ce 100644 --- a/tests/fixtures/dependencies/DependencyLeaf.pas +++ b/tests/fixtures/dependencies/DependencyLeaf.pas @@ -1,6 +1,6 @@ unit DependencyLeaf; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/dependencies/IndependentUnit.pas b/tests/fixtures/dependencies/IndependentUnit.pas index 42c69a6..e23d4aa 100644 --- a/tests/fixtures/dependencies/IndependentUnit.pas +++ b/tests/fixtures/dependencies/IndependentUnit.pas @@ -1,6 +1,6 @@ unit IndependentUnit; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/discovery/RootUnit.pas b/tests/fixtures/discovery/RootUnit.pas index 0bc6da7..0bd48b0 100644 --- a/tests/fixtures/discovery/RootUnit.pas +++ b/tests/fixtures/discovery/RootUnit.pas @@ -1,6 +1,6 @@ unit RootUnit; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/discovery/generated/GeneratedUnit.pas b/tests/fixtures/discovery/generated/GeneratedUnit.pas index e2f45c0..aaa7cfa 100644 --- a/tests/fixtures/discovery/generated/GeneratedUnit.pas +++ b/tests/fixtures/discovery/generated/GeneratedUnit.pas @@ -1,6 +1,6 @@ unit GeneratedUnit; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/discovery/src/AlphaUnit.pas b/tests/fixtures/discovery/src/AlphaUnit.pas index 7e22414..6ca6651 100644 --- a/tests/fixtures/discovery/src/AlphaUnit.pas +++ b/tests/fixtures/discovery/src/AlphaUnit.pas @@ -1,6 +1,6 @@ unit AlphaUnit; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/discovery/src/deep/BetaUnit.pp b/tests/fixtures/discovery/src/deep/BetaUnit.pp index a2b27b3..79467e8 100644 --- a/tests/fixtures/discovery/src/deep/BetaUnit.pp +++ b/tests/fixtures/discovery/src/deep/BetaUnit.pp @@ -1,6 +1,6 @@ unit BetaUnit; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/discovery/tests/TestSupport.pas b/tests/fixtures/discovery/tests/TestSupport.pas index cec2557..523ab77 100644 --- a/tests/fixtures/discovery/tests/TestSupport.pas +++ b/tests/fixtures/discovery/tests/TestSupport.pas @@ -1,6 +1,6 @@ unit TestSupport; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/discovery/vendor/VendorUnit.pas b/tests/fixtures/discovery/vendor/VendorUnit.pas index 907ee55..123a1ca 100644 --- a/tests/fixtures/discovery/vendor/VendorUnit.pas +++ b/tests/fixtures/discovery/vendor/VendorUnit.pas @@ -1,6 +1,6 @@ unit VendorUnit; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/lazarus/ambiguous-mode/Main.pas b/tests/fixtures/lazarus/ambiguous-mode/Main.pas index f022f3b..6f96601 100644 --- a/tests/fixtures/lazarus/ambiguous-mode/Main.pas +++ b/tests/fixtures/lazarus/ambiguous-mode/Main.pas @@ -1,5 +1,7 @@ unit Main; +{$mode objfpc}{$H+}{$J+} + interface implementation diff --git a/tests/fixtures/lazarus/ambiguous/Main.pas b/tests/fixtures/lazarus/ambiguous/Main.pas index f022f3b..6f96601 100644 --- a/tests/fixtures/lazarus/ambiguous/Main.pas +++ b/tests/fixtures/lazarus/ambiguous/Main.pas @@ -1,5 +1,7 @@ unit Main; +{$mode objfpc}{$H+}{$J+} + interface implementation diff --git a/tests/fixtures/lazarus/cycle/Main.pas b/tests/fixtures/lazarus/cycle/Main.pas index f022f3b..6f96601 100644 --- a/tests/fixtures/lazarus/cycle/Main.pas +++ b/tests/fixtures/lazarus/cycle/Main.pas @@ -1,5 +1,7 @@ unit Main; +{$mode objfpc}{$H+}{$J+} + interface implementation diff --git a/tests/fixtures/lazarus/missing/Main.pas b/tests/fixtures/lazarus/missing/Main.pas index f022f3b..6f96601 100644 --- a/tests/fixtures/lazarus/missing/Main.pas +++ b/tests/fixtures/lazarus/missing/Main.pas @@ -1,5 +1,7 @@ unit Main; +{$mode objfpc}{$H+}{$J+} + interface implementation diff --git a/tests/fixtures/lazarus/multi-package/packages/CorePkg/src/CoreUnit.pas b/tests/fixtures/lazarus/multi-package/packages/CorePkg/src/CoreUnit.pas index f75978e..767a015 100644 --- a/tests/fixtures/lazarus/multi-package/packages/CorePkg/src/CoreUnit.pas +++ b/tests/fixtures/lazarus/multi-package/packages/CorePkg/src/CoreUnit.pas @@ -1,5 +1,7 @@ unit CoreUnit; +{$mode objfpc}{$H+}{$J+} + interface uses diff --git a/tests/fixtures/lazarus/multi-package/packages/SupportPkg/src/SupportUnit.pas b/tests/fixtures/lazarus/multi-package/packages/SupportPkg/src/SupportUnit.pas index 6c38035..cb4a6f7 100644 --- a/tests/fixtures/lazarus/multi-package/packages/SupportPkg/src/SupportUnit.pas +++ b/tests/fixtures/lazarus/multi-package/packages/SupportPkg/src/SupportUnit.pas @@ -1,5 +1,7 @@ unit SupportUnit; +{$mode objfpc}{$H+}{$J+} + interface /// Runs the fixture's support service. diff --git a/tests/fixtures/lazarus/multi-package/src/LazarusProject.pas b/tests/fixtures/lazarus/multi-package/src/LazarusProject.pas index 4c16940..e650c94 100644 --- a/tests/fixtures/lazarus/multi-package/src/LazarusProject.pas +++ b/tests/fixtures/lazarus/multi-package/src/LazarusProject.pas @@ -1,5 +1,7 @@ unit LazarusProject; +{$mode objfpc}{$H+}{$J+} + interface uses diff --git a/tests/fixtures/lazarus/separate-target/Main.pas b/tests/fixtures/lazarus/separate-target/Main.pas index f022f3b..6f96601 100644 --- a/tests/fixtures/lazarus/separate-target/Main.pas +++ b/tests/fixtures/lazarus/separate-target/Main.pas @@ -1,5 +1,7 @@ unit Main; +{$mode objfpc}{$H+}{$J+} + interface implementation diff --git a/tests/fixtures/lazarus/unsupported-macro/Main.pas b/tests/fixtures/lazarus/unsupported-macro/Main.pas index f022f3b..6f96601 100644 --- a/tests/fixtures/lazarus/unsupported-macro/Main.pas +++ b/tests/fixtures/lazarus/unsupported-macro/Main.pas @@ -1,5 +1,7 @@ unit Main; +{$mode objfpc}{$H+}{$J+} + interface implementation diff --git a/tests/fixtures/math/MathDocumentation.pas b/tests/fixtures/math/MathDocumentation.pas index a9a21a6..7dc0186 100644 --- a/tests/fixtures/math/MathDocumentation.pas +++ b/tests/fixtures/math/MathDocumentation.pas @@ -1,6 +1,6 @@ unit MathDocumentation; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/partial/GoodUnit.pas b/tests/fixtures/partial/GoodUnit.pas index 16b30c4..93afec6 100644 --- a/tests/fixtures/partial/GoodUnit.pas +++ b/tests/fixtures/partial/GoodUnit.pas @@ -1,6 +1,6 @@ unit GoodUnit; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/partial/InvalidUnit.pas b/tests/fixtures/partial/InvalidUnit.pas index 18bbdca..5070217 100644 --- a/tests/fixtures/partial/InvalidUnit.pas +++ b/tests/fixtures/partial/InvalidUnit.pas @@ -1,6 +1,6 @@ unit InvalidUnit; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/relationships/RelationshipBase.pas b/tests/fixtures/relationships/RelationshipBase.pas index 455a9c8..8b172ee 100644 --- a/tests/fixtures/relationships/RelationshipBase.pas +++ b/tests/fixtures/relationships/RelationshipBase.pas @@ -1,6 +1,6 @@ unit RelationshipBase; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/relationships/RelationshipImplementations.pas b/tests/fixtures/relationships/RelationshipImplementations.pas index 5792c7f..4dd8a56 100644 --- a/tests/fixtures/relationships/RelationshipImplementations.pas +++ b/tests/fixtures/relationships/RelationshipImplementations.pas @@ -1,6 +1,6 @@ unit RelationshipImplementations; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/relationships/RelationshipUnrelated.pas b/tests/fixtures/relationships/RelationshipUnrelated.pas index bad7031..9e8bf97 100644 --- a/tests/fixtures/relationships/RelationshipUnrelated.pas +++ b/tests/fixtures/relationships/RelationshipUnrelated.pas @@ -1,6 +1,6 @@ unit RelationshipUnrelated; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/validation/brace/FeedbackBrace.pas b/tests/fixtures/validation/brace/FeedbackBrace.pas index 730d7f1..1fd0aae 100644 --- a/tests/fixtures/validation/brace/FeedbackBrace.pas +++ b/tests/fixtures/validation/brace/FeedbackBrace.pas @@ -1,6 +1,6 @@ unit FeedbackBrace; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/validation/paren/FeedbackParen.pas b/tests/fixtures/validation/paren/FeedbackParen.pas index 52f56c7..6c52f4b 100644 --- a/tests/fixtures/validation/paren/FeedbackParen.pas +++ b/tests/fixtures/validation/paren/FeedbackParen.pas @@ -1,6 +1,6 @@ unit FeedbackParen; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/validation/slash/FeedbackDependency.pas b/tests/fixtures/validation/slash/FeedbackDependency.pas index 3d24869..f33430b 100644 --- a/tests/fixtures/validation/slash/FeedbackDependency.pas +++ b/tests/fixtures/validation/slash/FeedbackDependency.pas @@ -1,6 +1,6 @@ unit FeedbackDependency; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/fixtures/validation/slash/FeedbackSlash.pas b/tests/fixtures/validation/slash/FeedbackSlash.pas index 1105dbb..acb0e6a 100644 --- a/tests/fixtures/validation/slash/FeedbackSlash.pas +++ b/tests/fixtures/validation/slash/FeedbackSlash.pas @@ -1,6 +1,6 @@ unit FeedbackSlash; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} interface diff --git a/tests/test_cli.pas b/tests/test_cli.pas index 82bd909..8db9afb 100644 --- a/tests/test_cli.pas +++ b/tests/test_cli.pas @@ -6,7 +6,7 @@ /// `build/bin/pasweave` (`.exe` on Windows) relative to the repository root. program test_cli; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} uses Classes, SysUtils, Pipes, Process, PasWeave.TestSupport, PasWeave.Version; diff --git a/tests/test_pasweave.pas b/tests/test_pasweave.pas index dce0c1b..67b7d4e 100644 --- a/tests/test_pasweave.pas +++ b/tests/test_pasweave.pas @@ -1,6 +1,6 @@ program test_pasweave; -{$mode objfpc}{$H+} +{$mode objfpc}{$H+}{$J+} uses Classes, SysUtils, FPJSON, JSONParser, From bb3584a997000156c3684dba1bdf22d57b1abc43 Mon Sep 17 00:00:00 2001 From: Iwan Kelaiah Date: Sat, 19 Sep 2026 10:29:53 +1000 Subject: [PATCH 2/2] docs(release): finalize the v0.7.0 changelog, roadmap, and guides Fold the post-release decomposition, filesystem helper, CLI parser, and API documentation changes into the 0.7.0 changelog and date it for the tag. Refresh the roadmap status date and the v0.7.0 release note, and update the direct FPC build commands with the src/support unit path and the CLI test program. --- CHANGELOG.md | 50 +++++++++++------------ ROADMAP.md | 2 +- docs/building-from-source.md | 15 +++++-- docs/release-notes/RELEASE_NOTE_v0.7.0.md | 11 ++++- 4 files changed, 46 insertions(+), 32 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cd86da7..121835b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,32 +7,7 @@ and this project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.ht ## [Unreleased] -### Changed - -- Decomposed the largest source units into focused units with their public - APIs preserved and no output changes: HTML diagrams - (`Render.HTML.Diagrams`), stylesheet and scripts (`Render.HTML.CSS`, - `Render.HTML.Scripts`), output writes/ledger/manifest (`PasWeave.Output`), - and the fcl-passrc element-to-symbol conversion - (`FPCAdapter.Symbols`). Renderers and the model no longer link the parser - or compiler layers. -- Extracted the shared Lazarus configuration helpers (XML access, path and - macro expansion, custom-option parsing) into - `PasWeave.Lazarus.Support`; `PasWeave.Lazarus` now focuses on project and - package graph assembly. -- Split the CLI build pipeline into named `ParseCommandLine`, - `ExecuteBuild`, and `RenderAndReport` phases, leaving `RunBuild` as a short - orchestrator with one owner for option objects and build state. -- Added a leaf `PasWeave.FS` unit for shared path and file helpers; discovery, - Lazarus, and output code now share one definition of path normalization, - source-file detection, readability, symlink checks, and whole-file reads. - Directory walkers remain specialized where their pruning and filtering - semantics differ. -- Replaced the repeated `--name` / `--name=value` option branches with a - shared `MatchValueOption` helper, roughly halving `ParseCommandLine` and - centralizing separated-versus-equals value handling. - -## [0.7.0] - 2026-09-17 +## [0.7.0] - 2026-09-19 ### Added @@ -60,6 +35,27 @@ and this project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.ht behavior under test and continue after a failure. - Documentation navigation, the architecture tree, and the command table now cover the CLI suite, the link check, and the decisions index. +- Decomposed the largest source units into focused units with their public + APIs preserved and no output changes: HTML diagrams + (`Render.HTML.Diagrams`), stylesheet and scripts (`Render.HTML.CSS`, + `Render.HTML.Scripts`), output writes/ledger/manifest (`PasWeave.Output`), + and the fcl-passrc element-to-symbol conversion (`FPCAdapter.Symbols`). + Renderers and the model no longer link the parser or compiler layers. +- Extracted the shared Lazarus configuration helpers (XML access, path and + macro expansion, custom-option parsing) into `PasWeave.Lazarus.Support`; + `PasWeave.Lazarus` now focuses on project and package graph assembly. +- Split the CLI build pipeline into named `ParseCommandLine`, `ExecuteBuild`, + and `RenderAndReport` phases, leaving `RunBuild` as a short orchestrator + with one owner for option objects and build state. +- Added a leaf `PasWeave.FS` unit for shared path and file helpers; discovery, + Lazarus, and output code now share one definition of path normalization, + source-file detection, readability, symlink checks, and whole-file reads. + Directory walkers remain specialized where their pruning and filtering + semantics differ. +- Replaced the repeated `--name` / `--name=value` option branches with a + shared `MatchValueOption` helper, roughly halving `ParseCommandLine` and + centralizing separated-versus-equals value handling. +- Every Pascal source now declares `{$mode objfpc}{$H+}{$J+}` explicitly. ### Fixed @@ -117,6 +113,8 @@ and this project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.ht inputs as unsupported and refreshed the `mathlib-fp` audit totals. - Corrected the sample-output regeneration commands so they reproduce the checked-in snapshots. +- Added XMLDoc comments across the public API of the parser, CLI, model, + comments, compiler options, and the HTML and Markdown renderers. ## [0.6.0] - 2026-08-17 diff --git a/ROADMAP.md b/ROADMAP.md index 2ca5bf0..e5405bd 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -386,7 +386,7 @@ from: generated pages cannot smuggle active content, output replacement cannot destroy the previous build, the CLI contract is covered by automated tests, and the documentation is accurate, indexed, and link-checked. -Status: completed on 2026-09-17. The security and correctness fixes, CLI test +Status: completed on 2026-09-19. The security and correctness fixes, CLI test suite, shared render helpers, documentation overhaul, and verification strategy are recorded in [CHANGELOG.md](CHANGELOG.md), [ADR-0003](docs/decisions/0003-golden-output-and-cli-tests.md), and the diff --git a/docs/building-from-source.md b/docs/building-from-source.md index 0dbb8ed..f889c7a 100644 --- a/docs/building-from-source.md +++ b/docs/building-from-source.md @@ -24,10 +24,13 @@ make make test ``` -Run the generated test executable from the repository root so it can find its -fixture: +`make test` builds and runs both suites: the compiled-CLI contract suite +(`tests/test_cli.pas`, also available alone as `make test-cli`) and the +model/renderer/parser suite (`tests/test_pasweave.pas`). Run both from the +repository root so they can find their fixtures: ```text +build/tests/test_cli build/tests/test_pasweave ``` @@ -48,10 +51,14 @@ New-Item -ItemType Directory -Force build/bin, build/tests, build/units Compile the CLI and tests from the repository root: ```text -fpc -Mobjfpc -Sh -Fusrc/cli -Fusrc/diagnostics -Fusrc/incremental -Fusrc/model -Fusrc/parser -Fusrc/render -Fusrc/validation -FUbuild/units -FEbuild/bin src/pasweave.lpr -fpc -Mobjfpc -Sh -Fusrc/cli -Fusrc/diagnostics -Fusrc/incremental -Fusrc/model -Fusrc/parser -Fusrc/render -Fusrc/validation -FUbuild/units -FEbuild/tests tests/test_pasweave.pas +fpc -Mobjfpc -Sh -Fusrc/cli -Fusrc/diagnostics -Fusrc/incremental -Fusrc/model -Fusrc/parser -Fusrc/render -Fusrc/support -Fusrc/validation -FUbuild/units -FEbuild/bin src/pasweave.lpr +fpc -Mobjfpc -Sh -Fusrc/cli -Fusrc/diagnostics -Fusrc/incremental -Fusrc/model -Fusrc/parser -Fusrc/render -Fusrc/support -Fusrc/validation -FUbuild/units -FEbuild/tests tests/test_pasweave.pas +fpc -Mobjfpc -Sh -Fusrc/cli -Fusrc/diagnostics -Fusrc/incremental -Fusrc/model -Fusrc/parser -Fusrc/render -Fusrc/support -Fusrc/validation -FUbuild/units -FEbuild/tests tests/test_cli.pas ``` +The CLI suite starts `build/bin/pasweave`, so compile the CLI before running +`build/tests/test_cli`. Set `PASWEAVE_BIN` to test another executable. + ## Build the portable Windows executable ```powershell diff --git a/docs/release-notes/RELEASE_NOTE_v0.7.0.md b/docs/release-notes/RELEASE_NOTE_v0.7.0.md index 8256ebd..db8df05 100644 --- a/docs/release-notes/RELEASE_NOTE_v0.7.0.md +++ b/docs/release-notes/RELEASE_NOTE_v0.7.0.md @@ -33,7 +33,16 @@ Highlights: - **documentation overhaul**: version notes moved to `docs/release-notes/` and `docs/pr-notes/`, every relative link fixed, a grouped index at `docs/README.md`, `CONTRIBUTING.md`, PR and issue templates, - ADR-0003, and a CI link check. + ADR-0003, and a CI link check; +- **documented public API**: XMLDoc comments now cover the parser, CLI, + comments, compiler options, model, and both renderers, so PasWeave can + document itself; +- **maintainable internals**: the largest units were decomposed into focused + modules (HTML diagrams, CSS, scripts, `PasWeave.Output`, + `FPCAdapter.Symbols`, `Lazarus.Support`, shared `PasWeave.FS` helpers, and + named CLI build phases), and every Pascal source declares + `{$mode objfpc}{$H+}{$J+}` explicitly. Public APIs and generated output are + unchanged. Validation includes the complete FPC 3.2.2 suite on Windows and Ubuntu: the CLI suite, the named model/renderer/parser cases, manifest-hardening cases,