cleanup: drop resolved-issue citations from src comments

Sweep all src/**.zig comments that cite resolved issues (issue NNNN /
fix-NNNN / KB-N): the invariant or mechanism each comment states is
kept; the historical citation is dropped, per the no-conclusion-comments
rule. Pure-history parentheticals are removed outright. References to
the 16 still-open issues (0030, 0041-0056) are untouched, as are test
NAMES carrying regression provenance (matching the sanctioned
"Regression (issue NNNN)" example-header convention).

Also removes the issues/0019-import-non-transitive-c-scope/ fixture dir
— the issue is superseded and its behavior is covered by
examples/0706-modules-import-non-transitive.sx (the .md writeup stays).
issues/0030's repro .sx stays: that issue is an open feature request.

Gate: zig build OK; zig build test 426/426; run_examples 541/0; zero
expected/ snapshot churn.
This commit is contained in:
agra
2026-06-10 16:34:17 +03:00
parent 8b2a6598a9
commit 2b8041a828
40 changed files with 254 additions and 301 deletions

View File

@@ -304,7 +304,7 @@ pub const ResolvedModule = struct {
// A cross-module name collision: drop from the global list
// (first-wins) UNLESS this is a per-source decl (a type, alias,
// or non-function const), which must reach registration as a
// distinct author of its own module (issues 0104/0105).
// distinct author of its own module.
append_to_global = isPerSourceDecl(decl);
} else {
try seen_list.put(name, {});
@@ -343,8 +343,8 @@ pub const ResolvedModule = struct {
// per-source decl (a named type, or any non-function const:
// type alias + value const), each of which must reach
// registration as a distinct same-name author of its own
// module (issues 0104/0105 types, step E5 value consts). Only
// FUNCTIONS keep first-wins (issue 0102 — the shadowed author
// module (types and aliases; step E5 value consts). Only
// FUNCTIONS keep first-wins (the shadowed author
// stays reachable via its qualified name / SelectedFunc).
// Node identity (above) still de-dups a diamond import of the
// SAME decl.
@@ -362,9 +362,9 @@ pub const ResolvedModule = struct {
/// registers against its OWN module rather than collapsing to a single
/// first-wins winner. NAMED types and every non-function `const_decl` (type
/// aliases + inline type decls + VALUE consts, source-keyed via the alias /
/// const caches) are per-source — that is what closes issues 0104/0105 for
/// const caches) are per-source — that is what prevents same-name collapse for
/// types/aliases and supports same-name value consts (step E5). Everything
/// else keeps the first-wins name-merge: FUNCTIONS (issue 0102 — the shadowed
/// else keeps the first-wins name-merge: FUNCTIONS (the shadowed
/// author stays reachable via its qualified name / SelectedFunc), and crucially
/// `var_decl`s, including a `#foreign` extern global declared in two files
/// (e.g. `__stdinp : *void #foreign;`) that MUST resolve to the ONE libSystem
@@ -406,7 +406,7 @@ pub const ResolvedModule = struct {
.name = name,
.decls = other.decls,
// The module's OWN authored decls — what `ns.fn` should bind
// to (issue 0100). `decls` stays the full transitive list so
// to. `decls` stays the full transitive list so
// the lowering pass can still resolve transitive callees.
.own_decls = other.own_decls,
// The aliased module's resolved path (== the `resolved_path`
@@ -414,7 +414,7 @@ pub const ResolvedModule = struct {
.target_module_path = other.path,
// Carry the backtick raw escape from the `name :: #import …`
// form so a reserved-name namespace is exempt from the decl
// check, symmetric to every other decl site (issue 0089).
// check, symmetric to every other decl site.
.is_raw = is_raw,
} },
};
@@ -796,7 +796,7 @@ fn reportDuplicateName(diagnostics: ?*errors.DiagnosticList, added: bool, name:
/// Stamp the DEFINING module path onto a function body node, so a later
/// pack/comptime monomorphization can pin `current_source_file` to the body's
/// own module and resolve its bare names in that module's visibility context
/// (issue 0106) — mirroring how a normally-declared function carries
/// — mirroring how a normally-declared function carries
/// `Function.source_file`. Only top-level decl Nodes are otherwise stamped, so
/// the body Node would carry no source; a null body source after this means a
/// synthesized/sourceless decl (the monomorphizer then keeps its caller's
@@ -820,7 +820,7 @@ fn stampFnBodySource(decl: *Node, file_path: []const u8) void {
.fn_decl => |fd| fd.body.source_file = file_path,
// `List :: struct { … append :: (…) { … } }` — the methods of a
// (possibly generic) struct are monomorphized in their template's
// OWN module (issue 0106 + the E4 instantiation source-pin), so their
// OWN module (the E4 instantiation source-pin), so their
// bodies need the defining path stamped just like a top-level fn.
.struct_decl => |sd| stampStructMethodSources(sd, file_path),
.protocol_decl => cd.value.data.protocol_decl.source_file = file_path,
@@ -892,7 +892,7 @@ pub fn resolveImports(
}
// FLAT-only edge set: identical to `import_graph` but records ONLY bare
// `#import "…"` edges (`imp.name == null`), never a namespaced
// `ns :: #import "…"`. fix-0102c's bare-name disambiguation walks this to
// `ns :: #import "…"`. The bare-name disambiguation walks this to
// decide which same-name authors a flat importer can actually reach.
if (flat_import_graph) |g| {
if (!g.contains(file_path)) {
@@ -983,7 +983,7 @@ pub fn resolveImports(
.name = ns_name,
.decls = ns_slice,
// A C-import namespace authors exactly the wrapped fn
// decls — they ARE its own decls (issue 0100).
// decls — they ARE its own decls.
.own_decls = ns_slice,
// No separate sx module: the synthesized members are
// authored in THIS file. Record the importer's path.