You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Fix broken links to external base types and misrouted own-assembly crefs - #60
Fixes two link regressions reported against 0.5.9 (55 broken links across the Plexus packages).
1. Inherited-from headings linked external base types (53 links). Base types resolved from another assembly (e.g. Avalonia's StyledElement, whose base chain stays inside Avalonia's module) are scoped to their own ModuleDefinition, so they were treated as intra-assembly and linked into our own api/ tree. TypeLinkResolver now receives the documented module and treats every other module as external: plain text unless the assembly is mapped with ApiMarkExternalLinks.
2. Own-assembly cref linked into the mapped package (2 links). A cref to a type/member of the documented assembly that was not emitted fell through to the external mapping, which matches by namespace prefix. Such crefs now never link externally (CrefTargetResolver.DeclaresCrefType).
Tests. New fixtures and tests for external base chains (mapped and unmapped), own-assembly cref with an overlapping mapping, unit tests for the new resolver behavior, and a regression test that every relative link on every page resolves to an emitted page (fails without the fix). Design, requirements and verification docs updated.
Reviews: code-review clean; formal reviews of the affected review-sets approved. Lint clean.
Not included: a generation-time link self-check (suggested by the reporter) - a separate feature.
Inherited-member headings linked base types resolved from other assemblies
as if they were pages of the documented assembly, because those types are
scoped to their own ModuleDefinition. TypeLinkResolver now knows the
documented module and treats every other module as external.
Crefs into the documented assembly that were not emitted fell through to
the namespace-prefix ExternalLinks mapping. They now never link externally.
Add regression tests, including a check that every relative link on every
page resolves to an emitted page, plus design, requirements and verification
updates.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CppFixtureFileNamingTests builds the shared clang fixture but was not in the
ClangEnvironment collection, so it could race tests that set
APIMARK_CLANG_TIMEOUT_MS to an invalid value (failed on macOS CI).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This prefix scan also runs for T: crefs, so an external nested type can be misclassified as an own-assembly cref when the documented assembly happens to contain the same name as its outer type. For example, with local Ns.Outer and mapped external Ns.Outer.Inner, T:Ns.Outer.Inner matches the local T:Ns.Outer prefix and the new guard suppresses the valid external link. Only member kinds should search shorter declaring-type prefixes; a T: cref should require an exact indexed type (and malformed/unsupported kinds should return false).
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
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.
Fixes two link regressions reported against 0.5.9 (55 broken links across the Plexus packages).
1. Inherited-from headings linked external base types (53 links). Base types resolved from another assembly (e.g. Avalonia's StyledElement, whose base chain stays inside Avalonia's module) are scoped to their own ModuleDefinition, so they were treated as intra-assembly and linked into our own api/ tree. TypeLinkResolver now receives the documented module and treats every other module as external: plain text unless the assembly is mapped with ApiMarkExternalLinks.
2. Own-assembly cref linked into the mapped package (2 links). A cref to a type/member of the documented assembly that was not emitted fell through to the external mapping, which matches by namespace prefix. Such crefs now never link externally (CrefTargetResolver.DeclaresCrefType).
Tests. New fixtures and tests for external base chains (mapped and unmapped), own-assembly cref with an overlapping mapping, unit tests for the new resolver behavior, and a regression test that every relative link on every page resolves to an emitted page (fails without the fix). Design, requirements and verification docs updated.
Reviews: code-review clean; formal reviews of the affected review-sets approved. Lint clean.
Not included: a generation-time link self-check (suggested by the reporter) - a separate feature.