test: remove package-wide import assumptions

This commit is contained in:
2026-08-14 03:45:02 +09:00
parent a841278333
commit 04d9560d51
74 changed files with 121 additions and 154 deletions

View File

@@ -1,5 +1,4 @@
// #30 dir-package — the imported module `aa`. Paired with ../main.ww,
// whose primary package also declares a value-namespace `fn aa`. Driver:
// the modfn_coexist leg of the decl-namespace gate (NNN_declns_sep.c).
// #30 dir-package — the imported package whose declared name supplies the
// `aa` binding in ../main.ww. Driver: the declns leg of sepimport_test.
package aa;
export fn helper() i32 = { return 5; };

View File

@@ -1,11 +1,8 @@
// #30 dir-package coexistence — the value-namespace `fn aa` and the
// imported MODULE `aa` (SK_USE) coexist. `aa()` binds the local fn (a
// module is not callable); `aa.helper()` binds through the module (the
// fn has no field `helper`). Both must resolve, so any mis-resolution
// fails to COMPILE; running to 1+5=6 proves both bind. The dir-package
// reshape of the dying single-file modfn_coexist_ok.ww (M4 amalgamation
// shape retired at the flip).
// The imported default qualifier `aa` and package-level declarations occupy
// overlapping Go-style scopes, so the local function deliberately has a
// distinct name. Running to 1+5=6 proves both the local declaration and the
// file-scoped import binding resolve independently.
package main;
import aa;
fn aa() i32 = { return 1; };
export fn main() i32 = { return aa() + aa.helper(); };
fn localaa() i32 = { return 1; };
export fn main() i32 = { return localaa() + aa.helper(); };

View File

@@ -1,6 +1,5 @@
// #30 dir-package — the imported module `aa` for the VALUE-BEFORE-USE
// twin. Identical to ../../modfn_coexist/aa/aa.ww; kept as its own dir so
// the two layouts are independently buildable. Driver: the
// modfn_coexist_vbu leg of the decl-namespace gate (NNN_declns_sep.c).
// #30 dir-package — the imported package for the declaration-before-import
// twin. It stays in its own directory so the two layouts are independently
// buildable.
package aa;
export fn helper() i32 = { return 5; };

View File

@@ -1,12 +1,7 @@
// #30 VALUE-BEFORE-USE — the twin of ../modfn_coexist/main.ww with the
// decl order flipped: `fn aa` is declared BEFORE `import aa`. cstage is
// order-independent (installs every SK_USE in a first pass); wwstage
// installs in source order, so this direction exercises a DISTINCT path
// (installdecl's N_USE arm must set use_alias on the pre-installed value
// sym). The gate asserts this builds + runs to 6 AND emits asm
// byte-identical to the use-before-value order — silent order-dependence
// is exactly what regresses.
// Declaration-before-import twin of ../modfn_coexist/main.ww. The distinct
// local name follows Go's import/package-scope collision rule while retaining
// the order-independence check for installing a real import binding.
package main;
fn aa() i32 = { return 1; };
fn localaa() i32 = { return 1; };
import aa;
export fn main() i32 = { return aa() + aa.helper(); };
export fn main() i32 = { return localaa() + aa.helper(); };

View File

@@ -1,13 +1,8 @@
//ww:run-exit 42
package main;
// migrated from test/wcc/699_use_promote_alias.c: SK_USE->SK_DEF promotion must keep use_alias so `defmod.flag` resolves.
package defmod;
export def defmod: i32 = 0i32;
export type flag = enum i32 {
NONE = 0,
A = 42,
};
package main;
// migrated from test/wcc/699_use_promote_alias.c: importing a package whose
// export has the same name as its default qualifier must retain the qualifier
// binding so `defmod.flag` resolves.
import defmod;
fn main() i32 = {
let m: defmod.flag = defmod.flag.A;

View File

@@ -0,0 +1,7 @@
package defmod;
export def defmod: i32 = 0i32;
export type flag = enum i32 {
NONE = 0,
A = 42,
};

View File

@@ -1,15 +1,8 @@
//ww:run-exit 42
package main;
// migrated from test/wcc/699_use_promote_alias.c: SK_USE->SK_FN promotion (the original bug) must keep use_alias or `fnmod.flag` fails "unknown type".
package fnmod;
export type flag = enum i32 {
NONE = 0,
A = 42,
};
export fn fnmod() i32 = {
return 0i32;
};
package main;
// migrated from test/wcc/699_use_promote_alias.c: importing a package whose
// export has the same name as its default qualifier must retain the qualifier
// binding so `fnmod.flag` resolves.
import fnmod;
fn main() i32 = {
let m: fnmod.flag = fnmod.flag.A;

View File

@@ -0,0 +1,9 @@
package fnmod;
export type flag = enum i32 {
NONE = 0,
A = 42,
};
export fn fnmod() i32 = {
return 0i32;
};

View File

@@ -1,15 +1,8 @@
//ww:run-exit 42
package main;
// migrated from test/wcc/699_use_promote_alias.c: SK_USE->SK_TYPE in-place promotion keeps use_alias so `typmod.flag` resolves (check.c self-import branch).
package typmod;
export type typmod = struct {
x: i32,
};
export type flag = enum i32 {
NONE = 0,
A = 42,
};
package main;
// migrated from test/wcc/699_use_promote_alias.c: importing a package whose
// export has the same name as its default qualifier must retain the qualifier
// binding so `typmod.flag` resolves.
import typmod;
fn main() i32 = {
let m: typmod.flag = typmod.flag.A;

View File

@@ -0,0 +1,9 @@
package typmod;
export type typmod = struct {
x: i32,
};
export type flag = enum i32 {
NONE = 0,
A = 42,
};

View File

@@ -1,13 +1,8 @@
//ww:run-exit 42
package main;
// migrated from test/wcc/699_use_promote_alias.c: SK_USE->SK_VAR promotion must keep use_alias so `varmod.flag` resolves.
package varmod;
export let varmod: i32 = 0i32;
export type flag = enum i32 {
NONE = 0,
A = 42,
};
package main;
// migrated from test/wcc/699_use_promote_alias.c: importing a package whose
// export has the same name as its default qualifier must retain the qualifier
// binding so `varmod.flag` resolves.
import varmod;
fn main() i32 = {
let m: varmod.flag = varmod.flag.A;

View File

@@ -0,0 +1,7 @@
package varmod;
export let varmod: i32 = 0i32;
export type flag = enum i32 {
NONE = 0,
A = 42,
};

View File

@@ -1,8 +1,6 @@
//ww:run-exit 42
// Migrated from 700_e2e row 45.
package main;
import os;
import rt;
type point = struct { x: i64, y: i64 };
fn main() i32 = {
let p: *point = alloc(point { x = 7, y = 35 })!;

View File

@@ -1,7 +1,6 @@
//ww:run-exit 16
// Migrated from 700_e2e row 36.
package main;
import rt;
fn main() i32 = {
let s: []u8 = alloc([], 16)!;
append(s, 72u8, 105u8);

View File

@@ -1,7 +1,6 @@
//ww:run-exit 12
// Migrated from 700_e2e row 39.
package main;
import rt;
fn doit() (i32 | nomem) = {
let s: []str = alloc([], 12)?;
return s.cap: i32;

View File

@@ -1,7 +1,6 @@
//ww:run-exit 8
// Migrated from 700_e2e row 37.
package main;
import rt;
fn main() i32 = {
let s: []rune = alloc([], 8)!;
return s.cap;

View File

@@ -1,7 +1,6 @@
//ww:run-exit 4
// Migrated from 700_e2e row 38.
package main;
import rt;
fn main() i32 = {
let s: []str = alloc([], 4)!;
return s.cap;

View File

@@ -1,7 +1,6 @@
//ww:run-exit 25
// Migrated from 700_e2e row 34.
package main;
import rt;
type point = struct { x: i32, y: i32 };
fn main() i32 = {
let p: *point = alloc(point { x = 3, y = 4 })!;

View File

@@ -1,7 +1,6 @@
//ww:run-exit 100
// Migrated from 700_e2e row 35.
package main;
import os;
fn main() i32 = {
let s: []u8;
s.ptr = nil; s.len = 0; s.cap = 0;

View File

@@ -1,6 +1,5 @@
//ww:run-exit 5
package main;
import rt;
fn main() i32 = {
let w: []i32 = alloc([], 4u64)!;
w[2] = 5i32;

View File

@@ -1,6 +1,5 @@
//ww:run-exit 16
package main;
import rt;
fn main() i32 = {
let b: []u8 = alloc([], 8u64)!;
b[0] = 7u8;

View File

@@ -1,6 +1,5 @@
//ww:run-exit 11
package main;
import os;
fn want(args: (str | rune)...) i64 = {
let total: i64 = 0;
let i: i32 = 0;

View File

@@ -4,6 +4,7 @@ package main;
import alpha;
import beta;
export fn main() i32 = {
let _ = alpha.foo(0, 1);
let n: (u8 | []u8) = 7u8;
let r: i32 = beta.foo(10, n);
if (r != 17) { return 11; };

View File

@@ -1,5 +1,4 @@
//ww:run-exit 13
package main;
import rt;
type holder = struct { f: f64, s: str, n: i32 };
fn main() i32 = { let p: *holder = alloc(holder { f = 1.5f64, s = "abc", n = 10 })!; return p.s.len + p.n; };

View File

@@ -1,5 +1,4 @@
//ww:run-exit 102
package main;
import rt;
type holder = struct { n: i32, s: str };
fn main() i32 = { let p: *holder = alloc(holder { n = 100, s = "hi" })!; return p.n + p.s.len; };

View File

@@ -1,5 +1,4 @@
//ww:run-exit 209
package main;
import rt;
type holder = struct { s: str };
fn main() i32 = { let p: *holder = alloc(holder { s = "hi" })!; let sum: i32 = 0; let i: i32 = 0; for (i < p.s.len) { sum += p.s[i]: i32; i += 1; }; return sum; };

View File

@@ -1,5 +1,4 @@
//ww:run-exit 5
package main;
import rt;
type holder = struct { s: str };
fn main() i32 = { let p: *holder = alloc(holder { s = "hello" })!; return p.s.len; };

View File

@@ -1,5 +1,4 @@
//ww:run-exit 12
package main;
import rt;
type holder = struct { s: str, n: i32 };
fn main() i32 = { let p: *holder = alloc(holder { s = "world", n = 7 })!; return p.s.len + p.n; };

View File

@@ -1,5 +1,4 @@
//ww:run-exit 9
package main;
import rt;
type holder = struct { a: str, b: str };
fn main() i32 = { let p: *holder = alloc(holder { a = "foo", b = "barbaz" })!; return p.a.len + p.b.len; };

View File

@@ -3,7 +3,6 @@
package main;
import memio;
import io;
import os;
export fn main() i32 = {
let buf: [16]u8;
let st: memio.stream = memio.fixed(buf[0:16]);

View File

@@ -3,7 +3,6 @@
package main;
import memio;
import io;
import os;
export fn main() i32 = {
let seed: [4]u8;
seed[0] = 1u8; seed[1] = 2u8; seed[2] = 3u8; seed[3] = 4u8;

View File

@@ -3,7 +3,6 @@
package main;
import memio;
import io;
import os;
export fn main() i32 = {
let a: [3]u8;
a[0] = 10u8; a[1] = 11u8; a[2] = 12u8;

View File

@@ -3,7 +3,6 @@
package main;
import memio;
import io;
import os;
export fn main() i32 = {
let st: memio.stream = memio.dynamic();
let s: io.stream = &st.vt;

View File

@@ -3,7 +3,6 @@
package main;
import memio;
import io;
import os;
export fn main() i32 = {
let seed: [4]u8;
seed[0] = 1u8; seed[1] = 2u8; seed[2] = 3u8; seed[3] = 4u8;

View File

@@ -3,7 +3,6 @@
package main;
import memio;
import io;
import os;
export fn main() i32 = {
let buf: [8]u8;
buf[0] = 65u8; buf[1] = 66u8; buf[2] = 67u8; buf[3] = 68u8;

View File

@@ -1,7 +1,6 @@
//ww:run-exit 46
// Migrated from 777_fmt_handle_run row fprintf_stream.
package main;
import os;
import fmt;
import io;
import memio;

View File

@@ -1,7 +1,6 @@
//ww:run-exit 51
// Migrated from 778_bufio_vstream_run row branched_bufio_wrap.
package main;
import os;
import bufio;
import memio;
import io;

View File

@@ -1,7 +1,6 @@
//ww:run-exit 49
// Migrated from 778_bufio_vstream_run row isbuffered_v_boundary.
package main;
import os;
import bufio;
import memio;
import io;

View File

@@ -1,7 +1,6 @@
//ww:run-exit 48
// Migrated from 778_bufio_vstream_run row isbuffered_v_discriminate.
package main;
import os;
import bufio;
import memio;
import io;

View File

@@ -1,7 +1,6 @@
//ww:run-exit 53
// Migrated from 778_bufio_vstream_run row scanner_byte_bytes.
package main;
import os;
import bufio;
import errors;
import memio;

View File

@@ -1,7 +1,6 @@
//ww:run-exit 52
// Migrated from 778_bufio_vstream_run row scanner_lines.
package main;
import os;
import bufio;
import errors;
import memio;

View File

@@ -1,7 +1,6 @@
//ww:run-exit 47
// Migrated from 778_bufio_vstream_run row stream_read_unread.
package main;
import os;
import bufio;
import memio;
import io;

View File

@@ -1,7 +1,6 @@
//ww:run-exit 54
// Migrated from 778_bufio_vstream_run row stream_setflush.
package main;
import os;
import bufio;
import memio;
import io;

View File

@@ -1,7 +1,6 @@
//ww:run-exit 55
// Migrated from 778_bufio_vstream_run row stream_unread.
package main;
import os;
import bufio;
import memio;
import io;

View File

@@ -1,7 +1,6 @@
//ww:run-exit 46
// Migrated from 778_bufio_vstream_run row stream_write_flush.
package main;
import os;
import bufio;
import memio;
import io;

View File

@@ -1,6 +1,5 @@
//ww:run-exit 45
package main;
import os;
import log;
import memio;
import io;

View File

@@ -1,6 +1,5 @@
//ww:run-exit 44
package main;
import os;
import log;
import memio;
import io;

View File

@@ -1,6 +1,5 @@
//ww:run-exit 43
package main;
import os;
import log;
export fn main() i32 = {
log.printfln("v={}", 7i64);

View File

@@ -1,6 +1,5 @@
//ww:run-exit 42
package main;
import os;
import log;
export fn main() i32 = {
log.println("hello");

View File

@@ -5,6 +5,7 @@ import sa;
import sb;
fn cb(x: sa.s, v: i32) i32 = { return v + 100; };
export fn main() i32 = {
let bait: sb.s;
let vt = sa.mkvt((&cb): *sa.reader);
let st: sa.s = &vt;
let r = sa.read(st, 5);

View File

@@ -4,6 +4,7 @@ package main;
import sa;
import sb;
export fn main() i32 = {
let bait: sb.s;
let o = sa.mk(21, 8);
let r = sa.geta(o);
if (r != 21) { return 11; };

View File

@@ -1,6 +1,5 @@
//ww:run-exit 50
package main;
import os;
import fmt;
import io;
import memio;

View File

@@ -1,6 +1,5 @@
//ww:run-exit 51
package main;
import os;
import fmt;
import io;
import memio;

View File

@@ -1,6 +1,5 @@
//ww:run-exit 52
package main;
import os;
import fmt;
import io;
import memio;

View File

@@ -1,6 +1,5 @@
//ww:run-exit 54
package main;
import os;
import fmt;
import io;
export fn main() i32 = { let buf: [16]u8; let x: int = 42; let v: str = ""; match (fmt.bsprintf(buf[0:16], "{}", x)) { case let s: str => { v = s; }; case io.error => { return 91; }; }; if (v.len != 2) { return 92; }; if (v[0] != 52u8 || v[1] != 50u8) { return 93; }; return 54; };

View File

@@ -1,6 +1,5 @@
//ww:run-exit 57
package main;
import os;
import fmt;
import io;
import memio;

View File

@@ -1,6 +1,5 @@
//ww:run-exit 53
package main;
import os;
import fmt;
import io;
import memio;

View File

@@ -1,6 +1,5 @@
//ww:run-exit 55
package main;
import os;
import fmt;
import io;
import memio;

View File

@@ -1,6 +1,5 @@
//ww:run-exit 56
package main;
import os;
import fmt;
import io;
import memio;

View File

@@ -1,7 +1,6 @@
//ww:run
// Runtime half of 930_free_noop_run.c free_alloc_roundtrip.
package main;
import rt;
export fn main() i32 = {
let p: *i64 = alloc(11i64)!;
free(p);

View File

@@ -10,4 +10,4 @@ export fn handler(s: str) str = { return s; };
package main;
import beta;
import gamma;
fn main() int = { return beta.usebeta(): int; };
fn main() int = { let _ = gamma.handler(""); return beta.usebeta(): int; };

View File

@@ -1,14 +1,14 @@
//ww:run-exit 42
package main;
package beta;
import gamma;
export type berr = !void;
export fn op() (i32 | berr) = { return 5; };
export fn user() (i32 | berr) = { let v: i32 = op()?; return v + 37; };
export fn user() (i32 | berr) = { let _ = gamma.op(); let v: i32 = op()?; return v + 37; };
package gamma;
export type gerr1 = !void;
export type gerr2 = !u8;
export fn op() (i32 | gerr1 | gerr2) = { return 0; };
package main;
import beta;
import gamma;
fn main() int = { match (beta.user()) { case let n: i32 => return n: int; case berr => return 99; }; };

View File

@@ -1,13 +1,13 @@
//ww:run-exit 42
package main;
package beta;
import gamma;
export type berr = !void;
export fn op() (i32 | berr) = { return 5; };
export fn user() (i32 | berr) = { let v: i32 = op()?; return v + 37; };
export fn user() (i32 | berr) = { let _ = gamma.other(); let v: i32 = op()?; return v + 37; };
package gamma;
export type gerr1 = !void;
export fn other() (i32 | gerr1) = { return 0; };
package main;
import beta;
import gamma;
fn main() int = { match (beta.user()) { case let n: i32 => return n: int; case berr => return 99; }; };