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, 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,