Add VHDL support with ANTLR4 parser and enhance documentation#21
Merged
Conversation
- 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>
Contributor
There was a problem hiding this comment.
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.ToolCLI to parse repeatable--sourcepatterns and dispatch the newvhdlsubcommand. - 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.
- 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>
- 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>
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>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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>
…etail pages Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…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>
- 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>
- 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>
- 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>
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>
This was referenced Jun 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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:
.github/workflows/build.yaml, including consistent use of quotes, list formatting, and removal of unnecessary blank lines. This improves readability and maintainability of the workflow files. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23]Spell-Checking and Linting Enhancements:
archs,iface,interp,maxcount,testbenches) to thewordslist in.cspell.yamlto reduce false positives during spell-checking. [1] [2]ignorePathsin.cspell.yamlto exclude generated ANTLR files from spell-checking.CodeQL and Build Configuration Updates:
.github/codeql-config.ymlby normalizing list and string formatting, and using consistent YAML quoting and array syntax forpaths-ignoreandquery-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.