Skip to content

Add VHDL support with ANTLR4 parser and enhance documentation#21

Merged
Malcolmnixon merged 46 commits into
mainfrom
vhdl-support
Jun 15, 2026
Merged

Add VHDL support with ANTLR4 parser and enhance documentation#21
Malcolmnixon merged 46 commits into
mainfrom
vhdl-support

Conversation

@Malcolmnixon

Copy link
Copy Markdown
Member

This pull request focuses on improving configuration and workflow consistency across the codebase, particularly in the GitHub Actions CI/CD pipelines and configuration files. The main changes involve normalizing YAML formatting, enhancing spell-checking, and refining ignore paths for build and analysis tools.

CI/CD Workflow Improvements:

Spell-Checking and Linting Enhancements:

  • Added new technical terms (e.g., archs, iface, interp, maxcount, testbenches) to the words list in .cspell.yaml to reduce false positives during spell-checking. [1] [2]
  • Updated ignorePaths in .cspell.yaml to exclude generated ANTLR files from spell-checking.

CodeQL and Build Configuration Updates:

  • Improved .github/codeql-config.yml by normalizing list and string formatting, and using consistent YAML quoting and array syntax for paths-ignore and query-filters. This helps ensure that CodeQL analysis is applied correctly and is easier to maintain.

Overall, these changes make the project's configuration files more robust and easier to maintain, while improving the developer experience with better spell-checking and more reliable CI/CD workflows.

Malcolm Nixon and others added 7 commits June 13, 2026 16:41
- Add ApiMark.Vhdl library with ANTLR4-generated C# parser (vhdl2008 grammar,
  ANTLR4 4.13.1 with caseInsensitive=true). Generated files live under
  src/ApiMark.Vhdl/VhdlAst/Antlr/ with generated_code=true editorconfig.
- Implement VhdlAstParser, VhdlAstModel (entity, architecture, package,
  generics, ports, --! doc comments), VhdlEmitter, VhdlEmitterGradualDisclosure,
  and VhdlEmitterSingleFile following the same two-stage pipeline as ApiMark.Cpp.
- Add ApiMark.Vhdl.Tests with 14 tests (x3 TFMs = 42 total).
- Add CLI support via --source <glob> flag (gitignore-style last-match-wins
  semantics with ! exclusion prefix, identical to --api-headers for C++).
  Replaces earlier --source-file/--source-dir design.
- Add full documentation suite: requirements, design, verification, review sets.
- Update README.md, user-guide/cli-reference.md, and design/introduction.md.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…existing entries

- Fix indentation on all VHDL review-set entries (title/paths were at
  the list-item level instead of indented under it)
- Add per-subsystem group comments for each VHDL component entry
- Replace all paths: [...] inline square-bracket lists with dashed lists
  (3 pre-existing Core/Cpp/Tool entries + the new VHDL Design/Verification)
- Add fixture file paths to VhdlAstParser, VhdlEmitterGradualDisclosure,
  and VhdlEmitterSingleFile review sets
- Add FixturePaths.cs to VhdlGenerator review set

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… between

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace per-unit comments with one comment per logical group throughout:
- ApiMarkCore - Units (7 units)
- ApiMarkDotNet - Units (8 units)
- ApiMarkCpp - Units (5 units) + ApiMarkCpp.CppAst - Units (2 units, CppAst/ subfolder)
- ApiMarkVhdl - Units (4 units) + ApiMarkVhdl.VhdlAst - Units (2 units, VhdlAst/ subfolder)
- ApiMarkMSBuild - Units (1 unit)
- ApiMarkTool - Units (Program) + ApiMarkTool.Cli - Units + ApiMarkTool.SelfTest - Units

Also reorder ApiMarkCpp entries so CppAst subfolder units are grouped together
after the top-level units.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…R4 OTS artifacts

- docs/verification/introduction.md: add ApiMarkVhdl + 6 units to Scope;
  add VHDL reqstream/design/verification paths to Companion Artifact Structure;
  add src/ApiMark.Vhdl/ to Source and test/ApiMark.Vhdl.Tests/ to Tests;
  add ANTLR4 to OTS scope and Companion Artifact Structure
- docs/design/introduction.md: add src/ApiMark.Vhdl/ to Source entry;
  add Antlr4.Runtime.Standard / ANTLR4 vhdl2008 grammar to OTS tree and
  Companion Artifact Structure
- docs/design/ots/antlr4.md: new OTS design doc — ANTLR4 used once manually
  to generate committed C# parser from vhdl2008.g4; Antlr4.Runtime.Standard
  is the runtime NuGet dependency; regeneration only needed for newer VHDL
  standards; instructions in VhdlAst/Antlr/README.md
- docs/reqstream/ots/antlr4.yaml: new OTS requirements — parser correctly
  parses entities/generics/ports and supports doc-comment extraction;
  verified via VhdlAstParser tests
- docs/verification/ots/antlr4.md: new OTS verification doc — indirect
  verification via VhdlAstParser test suite
- requirements.yaml: include docs/reqstream/ots/antlr4.yaml
- docs/user_guide/faq.md: add VHDL FAQ section covering source glob patterns,
  testbench exclusion, supported constructs, and no-extra-tools note
- README.md: add apimark vhdl --help to language-specific help hint

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
VHDL requirements (api-mark-vhdl.yaml + unit files):
- Strip system file to single parent requirement; remove 10 duplicate
  requirement definitions; children list references unit file IDs only
- Rename AcceptSourceFilesAndDirectories -> AcceptSourceGlobPatterns;
  update title to WHAT language describing glob/gitignore semantics
- Fix VhdlAstModel title: remove HOW language (immutable record types);
  describe observable parser<->emitter data contract instead
- Fix VhdlAstModel tests:[] -> 3 VhdlAstParser fixture tests
- Tool requirements: add SupportVhdlOptions to ApiMarkTool-ProvideMultiLanguageCli
  children; add ParseVhdlSourceOptions to Cli-ProvideCliArgumentParsing children

VHDL unit design docs (all 6 files):
- H1 -> H2 top heading (folder depth 1 rule)
- Responsibility -> Purpose section naming
- Add all missing mandatory sections (Data Model, Key Methods, Error
  Handling, Dependencies, Callers); non-applicable written as N/A
- vhdl-generator.md: update SourceFiles/SourceDirectories -> Sources
  glob patterns + WorkingDirectory; add FileSystemGlobbing dependency;
  update constraint to require at least one non-exclusion pattern

VHDL unit verification docs (all 6 files):
- H1 -> H2 top heading
- Add missing Test Environment section to all 6 files
- Add missing Acceptance Criteria section to all 6 files
- Expand Test Scenarios prose to full Verifies-that format

Tool design docs:
- api-mark-tool.md: add vhdl subcommand, VHDL options, ApiMarkVhdl
  dependency, VhdlGenerator in Data Flow step 4
- cli.md: add Sources property to Context interface; add --source to
  language-specific options
- cli/context.md: add Sources row to Data Model; add --source
  accumulation to Create algorithm
- program.md: add VhdlGenerator dependency; add VHDL Sources validation
  in RunToolLogic; add vhdl dispatch case in CreateGenerator

Tool verification docs:
- context.md: fix stale test name (WithRepeatedIncludesFlags ->
  WithRepeatedIncludes); add 3 VHDL --source scenarios; add --source
  acceptance criteria bullet
- program.md: add vhdl missing-source scenario and acceptance criteria
- api-mark-tool.md: acknowledge vhdl subcommand at system level

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add archs, iface, interp, maxcount, testbenches — all legitimate terms
introduced by the VHDL support implementation and documentation.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings June 13, 2026 22:33

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds first-class VHDL documentation generation to ApiMark by introducing a new ApiMark.Vhdl subsystem (ANTLR4-based VHDL-2008 parser + emitters), wiring it into the CLI (apimark vhdl), and extending the requirements/design/verification documentation and linting/tooling configuration to cover the new capability.

Changes:

  • Introduce ApiMark.Vhdl (generator + ANTLR4-backed AST parser + gradual/single-file emitters) and a new VHDL test project with fixtures.
  • Extend ApiMark.Tool CLI to parse repeatable --source patterns and dispatch the new vhdl subcommand.
  • Expand requirements/design/verification/user docs for VHDL + update lint/spell/code-scanning ignores for generated ANTLR artifacts.

Reviewed changes

Copilot reviewed 111 out of 114 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
test/ApiMark.Vhdl.Tests/VhdlGeneratorTests.cs Adds generator pipeline unit tests using fixture sources.
test/ApiMark.Vhdl.Tests/VhdlEmitterTests.cs Adds dispatcher null-guard unit test for emitter.
test/ApiMark.Vhdl.Tests/VhdlEmitterSingleFileTests.cs Adds single-file emitter tests using in-memory writers.
test/ApiMark.Vhdl.Tests/VhdlEmitterGradualDisclosureTests.cs Adds gradual-disclosure emitter tests using in-memory writers.
test/ApiMark.Vhdl.Tests/VhdlAstParserTests.cs Adds parser tests verifying entities/generics/ports/doc comments from fixture.
test/ApiMark.Vhdl.Tests/Fixtures/counter.vhd Adds representative VHDL-2008 fixture with --! doc comments.
test/ApiMark.Vhdl.Tests/FixturePaths.cs Adds compile-time fixture path resolver for VHDL tests.
test/ApiMark.Vhdl.Tests/ApiMark.Vhdl.Tests.csproj Introduces new VHDL test project and references.
test/ApiMark.Tool.Tests/ProgramTests.cs Adds CLI unit test for missing VHDL sources.
test/ApiMark.Tool.Tests/Cli/ContextTests.cs Adds CLI parsing tests for repeatable --source.
src/ApiMark.Vhdl/VhdlGeneratorOptions.cs Defines VHDL generator configuration options (library metadata + source patterns).
src/ApiMark.Vhdl/VhdlGenerator.cs Implements IApiGenerator for VHDL (collect files, parse, return emitter).
src/ApiMark.Vhdl/VhdlEmitterSingleFile.cs Implements single-file VHDL Markdown emission into api.md.
src/ApiMark.Vhdl/VhdlEmitterGradualDisclosure.cs Implements multi-file VHDL emission (index + per-declaration pages).
src/ApiMark.Vhdl/VhdlEmitter.cs Implements IApiEmitter dispatcher between VHDL output formats.
src/ApiMark.Vhdl/VhdlAst/VhdlAstParser.cs Implements ANTLR4 parse + --! doc comment extraction into models.
src/ApiMark.Vhdl/VhdlAst/VhdlAstModel.cs Defines VHDL AST record types used by parser/emitters.
src/ApiMark.Vhdl/VhdlAst/Antlr/vhdl2008Lexer.tokens Commits generated ANTLR token map for VHDL lexer.
src/ApiMark.Vhdl/VhdlAst/Antlr/vhdl2008.tokens Commits generated ANTLR token map for VHDL parser.
src/ApiMark.Vhdl/VhdlAst/Antlr/README.md Documents generated-code policy + regeneration instructions.
src/ApiMark.Vhdl/VhdlAst/Antlr/.editorconfig Marks generated ANTLR C# sources as generated for tooling.
src/ApiMark.Vhdl/ApiMark.Vhdl.csproj Adds new VHDL library project + dependencies + warning suppressions for generated code.
src/ApiMark.Tool/Program.cs Adds vhdl subcommand dispatch + option validation + help text.
src/ApiMark.Tool/Cli/Context.cs Adds repeatable --source parsing and exposes Sources on Context.
src/ApiMark.Tool/ApiMark.Tool.csproj Adds project reference to ApiMark.Vhdl.
requirements.yaml Includes new VHDL and ANTLR4 requirements documents in the requirements stream.
README.md Updates top-level README to advertise VHDL support and CLI examples.
docs/verification/ots/antlr4.md Adds OTS verification doc for ANTLR runtime + generated parser.
docs/verification/introduction.md Registers new VHDL units and ANTLR OTS in verification introduction.
docs/verification/api-mark-vhdl/vhdl-generator.md Adds verification doc for VHDL generator.
docs/verification/api-mark-vhdl/vhdl-emitter.md Adds verification doc for VHDL emitter dispatcher.
docs/verification/api-mark-vhdl/vhdl-emitter-single-file.md Adds verification doc for VHDL single-file emitter.
docs/verification/api-mark-vhdl/vhdl-emitter-gradual-disclosure.md Adds verification doc for VHDL gradual-disclosure emitter.
docs/verification/api-mark-vhdl/vhdl-ast-parser.md Adds verification doc for VHDL AST parser.
docs/verification/api-mark-vhdl/vhdl-ast-model.md Adds verification doc for VHDL AST model.
docs/verification/api-mark-vhdl.md Adds system-level VHDL verification overview.
docs/verification/api-mark-tool/program.md Updates CLI program verification to include VHDL validation behavior.
docs/verification/api-mark-tool/cli/context.md Updates Context verification to include --source behavior.
docs/verification/api-mark-tool.md Notes VHDL coverage via Program-level tests.
docs/user_guide/faq.md Adds VHDL FAQ entries for --source patterns and doc comments.
docs/user_guide/cli-reference.md Adds VHDL CLI reference section and VHDL output-structure documentation.
docs/reqstream/ots/mono-cecil.yaml YAML formatting normalization.
docs/reqstream/ots/dema-consulting-test-results.yaml YAML formatting normalization.
docs/reqstream/ots/cpp-ast-net.yaml YAML formatting normalization / cleanup.
docs/reqstream/ots/clang.yaml YAML formatting normalization.
docs/reqstream/ots/antlr4.yaml Adds ANTLR4 OTS requirements tied to VHDL parser tests.
docs/reqstream/api-mark-vhdl/vhdl-generator.yaml Adds VHDL generator requirements.
docs/reqstream/api-mark-vhdl/vhdl-emitter.yaml Adds VHDL emitter dispatcher requirements.
docs/reqstream/api-mark-vhdl/vhdl-emitter-single-file.yaml Adds VHDL single-file emitter requirements.
docs/reqstream/api-mark-vhdl/vhdl-emitter-gradual-disclosure.yaml Adds VHDL gradual-disclosure requirements.
docs/reqstream/api-mark-vhdl/vhdl-ast-parser.yaml Adds VHDL AST parser requirements.
docs/reqstream/api-mark-vhdl/vhdl-ast-model.yaml Adds VHDL AST model requirements.
docs/reqstream/api-mark-vhdl.yaml Adds system-level VHDL requirements.
docs/reqstream/api-mark-tool/self-test/validation.yaml YAML formatting normalization.
docs/reqstream/api-mark-tool/self-test.yaml YAML formatting normalization.
docs/reqstream/api-mark-tool/program.yaml Adds VHDL CLI support requirements + YAML normalization.
docs/reqstream/api-mark-tool/cli/context.yaml Adds Context --source parsing requirements + YAML normalization.
docs/reqstream/api-mark-tool/cli.yaml Adds VHDL Context parsing requirement reference.
docs/reqstream/api-mark-tool.yaml Adds VHDL Program requirement as a child of the tool system requirement.
docs/reqstream/api-mark-msbuild/api-mark-task.yaml YAML formatting normalization.
docs/reqstream/api-mark-msbuild.yaml YAML formatting normalization.
docs/reqstream/api-mark-dot-net/xml-doc-reader.yaml YAML formatting normalization.
docs/reqstream/api-mark-dot-net/type-name-simplifier.yaml YAML formatting normalization.
docs/reqstream/api-mark-dot-net/type-link-resolver.yaml YAML formatting normalization.
docs/reqstream/api-mark-dot-net/dot-net-generator.yaml YAML formatting normalization.
docs/reqstream/api-mark-dot-net/dot-net-emitter.yaml YAML formatting normalization.
docs/reqstream/api-mark-dot-net/dot-net-emitter-single-file.yaml YAML formatting normalization.
docs/reqstream/api-mark-dot-net/dot-net-emitter-gradual-disclosure.yaml YAML formatting normalization.
docs/reqstream/api-mark-dot-net/dot-net-ast-model.yaml YAML formatting normalization.
docs/reqstream/api-mark-dot-net.yaml YAML formatting normalization.
docs/reqstream/api-mark-cpp/cpp-type-link-resolver.yaml YAML formatting normalization.
docs/reqstream/api-mark-cpp/cpp-generator.yaml YAML formatting normalization.
docs/reqstream/api-mark-cpp/cpp-emitter.yaml YAML formatting normalization.
docs/reqstream/api-mark-cpp/cpp-emitter-single-file.yaml YAML formatting normalization.
docs/reqstream/api-mark-cpp/cpp-emitter-gradual-disclosure.yaml YAML formatting normalization.
docs/reqstream/api-mark-cpp/clang-ast-parser.yaml YAML formatting normalization.
docs/reqstream/api-mark-cpp.yaml YAML formatting normalization.
docs/reqstream/api-mark-core/path-helpers.yaml YAML formatting normalization.
docs/reqstream/api-mark-core/i-markdown-writer.yaml YAML formatting normalization.
docs/reqstream/api-mark-core/i-markdown-writer-factory.yaml YAML formatting normalization.
docs/reqstream/api-mark-core/i-context.yaml YAML formatting normalization.
docs/reqstream/api-mark-core/i-api-generator.yaml YAML formatting normalization.
docs/reqstream/api-mark-core/i-api-emitter.yaml YAML formatting normalization.
docs/reqstream/api-mark-core/emit-config.yaml YAML formatting normalization.
docs/reqstream/api-mark-core.yaml YAML formatting normalization.
docs/design/ots/antlr4.md Adds OTS design doc for ANTLR usage pattern (generated code committed).
docs/design/introduction.md Updates system inventory to include VHDL and ANTLR OTS.
docs/design/definition.yaml YAML formatting normalization.
docs/design/api-mark-vhdl/vhdl-generator.md Adds VHDL generator unit design doc.
docs/design/api-mark-vhdl/vhdl-emitter.md Adds VHDL emitter unit design doc.
docs/design/api-mark-vhdl/vhdl-emitter-single-file.md Adds VHDL single-file emitter design doc.
docs/design/api-mark-vhdl/vhdl-emitter-gradual-disclosure.md Adds VHDL gradual-disclosure emitter design doc.
docs/design/api-mark-vhdl/vhdl-ast-parser.md Adds VHDL AST parser design doc.
docs/design/api-mark-vhdl/vhdl-ast-model.md Adds VHDL AST model design doc.
docs/design/api-mark-vhdl.md Adds VHDL system-level design doc.
docs/design/api-mark-tool/program.md Updates Program design doc to include VHDL validation and generator construction.
docs/design/api-mark-tool/cli/context.md Updates Context design doc to include Sources.
docs/design/api-mark-tool/cli.md Updates CLI design doc to include --source.
docs/design/api-mark-tool.md Updates tool system design to list vhdl as a supported subcommand.
ApiMark.slnx Adds ApiMark.Vhdl and its test project to the solution.
.reviewmark.yaml Extends review sets to include VHDL and reorganizes some entries.
.markdownlint-cli2.yaml Ignores generated ANTLR directory for markdown linting.
.github/workflows/release.yaml YAML formatting normalization in release workflow.
.github/workflows/build_on_push.yaml YAML formatting normalization in build-on-push workflow.
.github/codeql-config.yml YAML formatting normalization and consistent quoting/arrays.
.cspell.yaml Adds new allowed technical words and ignores generated ANTLR directory for cspell.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/ApiMark.Tool/Program.cs Outdated
Comment thread test/ApiMark.Tool.Tests/ProgramTests.cs
Comment thread src/ApiMark.Vhdl/VhdlGeneratorOptions.cs
Comment thread src/ApiMark.Vhdl/VhdlGenerator.cs
Comment thread src/ApiMark.Vhdl/VhdlAst/VhdlAstParser.cs
Comment thread src/ApiMark.Vhdl/VhdlEmitterGradualDisclosure.cs Outdated
Comment thread README.md
Comment thread src/ApiMark.Vhdl/VhdlEmitterGradualDisclosure.cs Outdated
- Fix source validation to require at least one non-exclusion glob pattern
- Fix LastIndexOf for inline trailing comment extraction
- Add SanitizeFileName to VhdlEmitter and apply to all emitted file names
- Add Architectures section to gradual-disclosure api.md index
- Add try/catch in VhdlGenerator.Parse to skip malformed files with warning
- Update VhdlGeneratorOptions doc comment re empty/exclusion-only sources
- Update stale --source-file/--source-dir comments in ProgramTests

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 111 out of 114 changed files in this pull request and generated 8 comments.

Comment thread src/ApiMark.Tool/Program.cs Outdated
Comment thread src/ApiMark.Vhdl/VhdlEmitterGradualDisclosure.cs Outdated
Comment thread src/ApiMark.Vhdl/VhdlEmitterGradualDisclosure.cs Outdated
Comment thread src/ApiMark.Vhdl/VhdlEmitterGradualDisclosure.cs Outdated
Comment thread src/ApiMark.Vhdl/VhdlEmitterGradualDisclosure.cs Outdated
Comment thread docs/design/api-mark-tool/program.md Outdated
Comment thread docs/user_guide/cli-reference.md Outdated
Comment thread docs/user_guide/faq.md Outdated
- Tighten VHDL source validation to reject whitespace-only include patterns
- Fix GetSummary to return null for empty summary strings so ?? placeholder works
- Always emit summary paragraph on entity detail pages (use placeholder if empty)
- Fix program.md doc: VhdlGeneratorOptions.Description not LibraryDescription
- Add architecture detail page row to VHDL output structure table in cli-reference
- Fix FAQ: packages section documents name and doc comment, not member contents

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 111 out of 114 changed files in this pull request and generated 4 comments.

Comment thread src/ApiMark.Tool/Program.cs
Comment thread src/ApiMark.Vhdl/VhdlGenerator.cs
Comment thread src/ApiMark.Vhdl/VhdlGenerator.cs Outdated
Comment thread src/ApiMark.Tool/Program.cs
Malcolm Nixon and others added 2 commits June 13, 2026 22:33
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Change TYPE data_bus_t to SUBTYPE (TYPE cannot use a subtype indication)
- Remove USE clauses with .ALL suffix that trigger ANTLR parse errors

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings June 14, 2026 13:45
Malcolm Nixon and others added 2 commits June 14, 2026 09:46
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 113 out of 117 changed files in this pull request and generated 12 comments.

Comment thread src/ApiMark.Vhdl/VhdlAst/VhdlAstParser.cs
Comment thread src/ApiMark.Vhdl/VhdlGenerator.cs
Comment thread src/ApiMark.Vhdl/VhdlGenerator.cs Outdated
Comment thread src/ApiMark.Vhdl/VhdlGenerator.cs Outdated
Comment thread src/ApiMark.Vhdl/VhdlGenerator.cs Outdated
Comment thread docs/user_guide/cli-reference.md Outdated
Comment thread docs/design/api-mark-vhdl/vhdl-emitter-gradual-disclosure.md Outdated
Comment thread docs/design/api-mark-vhdl/vhdl-emitter-gradual-disclosure.md Outdated
Comment thread docs/design/api-mark-vhdl/vhdl-ast-model.md Outdated
Comment thread docs/design/api-mark-vhdl/vhdl-emitter-gradual-disclosure.md Outdated
Constants use the standard Doxygen VHDL convention (comment precedes
the declaration). Only ports use inline trailing comments.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings June 14, 2026 14:01

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 113 out of 117 changed files in this pull request and generated 9 comments.

Comment thread src/ApiMark.Tool/Program.cs
Comment thread src/ApiMark.Vhdl/VhdlGenerator.cs
Comment thread src/ApiMark.Vhdl/VhdlEmitterGradualDisclosure.cs Outdated
Comment thread docs/user_guide/cli-reference.md Outdated
Comment thread docs/design/api-mark-vhdl/vhdl-ast-model.md Outdated
Comment thread src/ApiMark.Vhdl/VhdlAst/VhdlAstParser.cs
Comment thread docs/design/api-mark-vhdl/vhdl-emitter-gradual-disclosure.md Outdated
Comment thread README.md
Comment thread docs/user_guide/faq.md Outdated
…etail pages

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Malcolm Nixon and others added 5 commits June 14, 2026 17:54
…iewmark

- vhdl-generator.md: add null-normalization to constructor algorithm; add context.WriteLine progress log to Parse step 4
- vhdl-emitter.md: add early return for empty _fileModels; add FormatParamType and SanitizeFileName to Key Methods
- vhdl-emitter-gradual-disclosure.yaml: correct requirement title (architectures inline, not standalone)
- vhdl-emitter-single-file.md: expand Packages output layout and algorithm step 5 with Types/Constants/Components/subprogram detail
- vhdl-ast-model.md: enumerate object-class and direction keywords for VhdlParamDecl.Mode
- .reviewmark.yaml: add VhdlAstParserTests.cs to ApiMark-Vhdl-VhdlAstModel review set

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- vhdl-ast-parser.md: expand VisitPackage_declaration step to document full package body traversal (types, constants, components, subprograms); add ExtractFormalParameters and ExtractModeText to Key Methods
- vhdl-ast-parser.yaml: split single broad requirement into three (ParseEntity, ParseArchitecture, ParsePackage) and add all 13 previously untested test links
- api-mark-vhdl.yaml: update children references to new split requirement IDs
- vhdl-ast-parser.md (verification): expand to document all 21 test scenarios including mux.vhd and common_types.vhd fixture tests

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… validation priority

- ApiMarkTask.cs: add CppLanguage constant; add explicit unsupported-language error in Execute; fix BuildArguments to throw for unrecognized languages instead of silently routing to C++ args
- api-mark-task.md: document unsupported-language error in Execute algorithm; clarify ApiMarkVisibility omit-flag behavior; update ApiMarkLanguage accepted values description
- program.md: document LibraryName fallback logic (output dir name → 'Library') for cpp and vhdl
- validation.md: fix priority 4 → priority 3 in Callers section; add null-guard contract to Error Handling

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ram test fix

- file-system-globbing.yaml/md (new): create OTS requirements, design, and verification docs for Microsoft.Extensions.FileSystemGlobbing consumed by GlobFileCollector
- antlr4.md: remove version number from Features Used section (regeneration details belong in Antlr/README.md)
- verification/ots.md: mention ANTLR4 and FileSystemGlobbing OTS items in Verification Strategy and add dedicated sections
- program.md (verification): correct CppWithApiHeadersFlag test scenario description (non-zero exit, missing --includes error, not exit-0)
- .reviewmark.yaml: add OTS-Antlr4 and OTS-FileSystemGlobbing review sets
- requirements.yaml: include file-system-globbing.yaml in OTS requirements

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- file-system-globbing.md (design): correct Features Used (remove DirectoryInfoWrapper/AddExclude; document GetResultsInFullPath); rewrite Integration Pattern to reflect per-pattern Matcher loop with collected.Remove() for exclusions
- file-system-globbing.md (verification): remove AddExclude reference from exclusion scenario description
- dema-consulting-test-results.md (verification): fix all four stale test names to match actual ValidationTests methods
- cpp-ast-net.md (design): fix 'ApiMarkCpp' typo to 'ApiMark.Cpp'
- clang.md (design): add _selectedHeaders condition to Integration Pattern step 5

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings June 15, 2026 00:03

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 164 out of 168 changed files in this pull request and generated 9 comments.

Comment thread src/ApiMark.Vhdl/VhdlEmitterGradualDisclosure.cs Outdated
Comment thread src/ApiMark.Vhdl/VhdlEmitterGradualDisclosure.cs Outdated
Comment thread src/ApiMark.Vhdl/VhdlEmitterSingleFile.cs Outdated
Comment thread src/ApiMark.Vhdl/VhdlAst/VhdlAstParser.cs Outdated
Comment thread src/ApiMark.Vhdl/VhdlAst/VhdlAstParser.cs Outdated
Comment thread docs/user_guide/vhdl.md
Comment thread docs/user_guide/vhdl.md Outdated
Comment thread test/ApiMark.Tool.Tests/ProgramTests.cs
Comment thread README.md
- Remove bogus CppEmitter_SanitizeFileName_OperatorName test (operators
  are routed to operators.md and never pass through SanitizeFileName)
- Rewrite SanitizeFileName XML remarks to explicitly document that
  operators are never passed to this method
- Fix VhdlAstParser port directions to uppercase (IN/OUT/INOUT/BUFFER)
  to match VHDL keyword convention
- Fix VhdlEmitterGradualDisclosure XML doc summary (architectures are
  inline, not separate files)
- Change VHDL subprogram signatures from inline code to fenced vhdl
  code blocks in both GD and single-file emitters
- Fix user_guide/vhdl.md: ports table has separate Direction and Type
  columns; direction keywords only prepended for subprogram params
- Add --source assertion to VHDL missing-source test

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 167 out of 171 changed files in this pull request and generated 4 comments.

Comment thread src/ApiMark.Tool/Program.cs Outdated
Comment thread src/ApiMark.Tool/Program.cs
Comment thread src/ApiMark.Vhdl/VhdlGenerator.cs
Comment thread src/ApiMark.Vhdl/VhdlEmitter.cs Outdated
Malcolm Nixon and others added 2 commits June 14, 2026 21:53
- VhdlAstParser: add CollectingErrorListener so ANTLR syntax errors
  throw instead of silently recovering into corrupt parse trees
- VhdlAstParser: preserve @param tags with name but no description
  (previously silently dropped; now stored with empty description)
- VhdlEmitterGradualDisclosure/SingleFile: use OrdinalIgnoreCase for
  @param name lookup (VHDL identifiers are case-insensitive)
- VhdlEmitter: move FormatParamType HashSet to static readonly field
  to avoid per-call allocation
- VhdlGenerator: change parse-failure message from 'Warning:' to
  'Error:' to match WriteError semantics
- Program: fix VHDL source validation to reject empty/whitespace-only
  patterns; remove redundant null check on Sources
- Program: copy context.Sources to new List<string> so VhdlGeneratorOptions
  holds a mutable list (not a fixed-size array)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CodeQL:
- Add Antlr-generated file exclusions to codeql-config.yml for
  cs/virtual-call-in-constructor and cs/missed-readonly-modifier
- Replace Path.Combine with Path.Join throughout (cs/path-combine)
- Inline iteration variables to satisfy cs/linq/missed-select in
  CppGenerator, ApiMarkTask, and VhdlAstParser
- Replace ContainsKey + indexer with TryGetValue (cs/inefficient-containskey)
- Extract IsEventAddMethodPublicOrProtected helper (cs/complex-condition)

Roslyn CA1859:
- Change ExtractFormalParameters return type to List<VhdlParamDecl>

Cognitive complexity (csharpsquid:S3776):
- VhdlEmitterGradualDisclosure: extract EmitApiIndexPage, EmitEntityPage,
  EmitPackagePage, EmitSubprogramDetailPage
- VhdlEmitterSingleFile: extract EmitEntitySection, EmitPackageSection,
  EmitSubprogramSection
- VhdlAstParser: extract ParseEntityGenerics, ParseEntityPorts,
  ParsePortInterfaceDeclaration, ParseSubprogramDecl, ExtractSignalParams,
  ExtractVariableParams, ExtractConstantParams
- ApiMarkTask: extract ExecuteAllOutputs
- GlobFileCollector: extract AccumulateResults
- CppGenerator: extract ExpandExplicitPatterns

Design docs:
- vhdl-ast-parser.md: document new helper methods, updated error handling,
  CollectingErrorListener, updated ExtractFormalParameters return type
- vhdl-emitter-gradual-disclosure.md: document extracted helper methods
- vhdl-emitter-single-file.md: document extracted helper methods
- glob-file-collector.md: document AccumulateResults helper
- cpp-generator.md: document ExpandExplicitPatterns helper
- api-mark-task.md: document ExecuteAllOutputs helper

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings June 15, 2026 02:19

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 169 out of 173 changed files in this pull request and generated 2 comments.

Comment thread src/ApiMark.Core/GlobFileCollector.cs
Comment thread README.md
- vhdl-ast-parser.md: fix ParseSubprogramDecl parameter names
  (subprogDecl -> item/spec to match actual code, eliminating
  the unknown word 'subprog' from spell check)
- ApiMarkTask.ExecuteAllOutputs: replace foreach+if with
  Select().ToList().All() to satisfy S3267 (missed-Where) and
  S2178 (use && not &); ToList forces all processes to run
  before any result is inspected

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Change 5 return types in VhdlAstParser.cs from IEnumerable/IReadOnlyList to List<T>
  (ParsePortInterfaceDeclaration, ExtractFormalParameters, ExtractSignalParams,
  ExtractVariableParams, ExtractConstantParams)
- Add VhdlAst/Antlr/** to needs-review exclusions (ANTLR4-generated files)
- Add docs/design/ots.md to all 6 *-Design review sets
- Add docs/verification/ots.md to all 6 *-Verification review sets
- Add new ApiMark-Core-GlobFileCollector review set
- Add CppExternalTypeInfo.cs to ApiMark-Cpp-CppEmitter review set
- Add ExternalTypeInfo.cs to ApiMark-DotNet-DotNetEmitter review set
- Add CppGeneratorFixture.cs to ApiMark-Cpp-CppGenerator review set
- Add FixturePaths.cs to ApiMark-MSBuild-Task review set

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings June 15, 2026 02:55

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 169 out of 173 changed files in this pull request and generated 1 comment.

Comment thread src/ApiMark.Core/GlobFileCollector.cs Outdated
SplitAbsolutePattern was stripping the trailing slash from Windows
drive-root patterns (e.g. C:/*.vhd -> root 'C:' instead of 'C:/').
'C:' is drive-relative on Windows, not the drive root, causing the
matcher to evaluate the pattern against the current directory rather
than the drive root.

Fix: treat lastSlash == 2 with a drive letter at [1] as a root
boundary (analogous to the existing lastSlash == 0 Unix-root fix),
preserving the trailing slash in the root.

Add GlobFileCollector_Collect_AbsoluteDriveRootPattern_FindsFiles
test to cover this case on Windows.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@Malcolmnixon Malcolmnixon merged commit a83f81c into main Jun 15, 2026
15 checks passed
@Malcolmnixon Malcolmnixon deleted the vhdl-support branch June 15, 2026 03:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants