driver: ignore wrong-suffix files as named sources
This commit is contained in:
46
docs/spec.md
46
docs/spec.md
@@ -395,6 +395,52 @@ ImportPath = ident { "." ident } .
|
||||
persistence, process, or filesystem owner. Build and all test forms retain
|
||||
their distinct stat-first directory behavior. Build workdir format remains
|
||||
18, test workdir format remains 19, and semantic storage format remains 3.
|
||||
- A public operand is eligible for direct named-source adoption only when its
|
||||
exact requested spelling ends `.ww` and that command's existing file-kind
|
||||
rule admits it. An existing non-directory object with another suffix is not
|
||||
source: its bytes, package clause, imports, syntax, test declarations,
|
||||
runtime behavior, mode, and timestamp are not read as source, and ordinary
|
||||
dotted resolution continues exactly as though the colliding object were
|
||||
absent. Thus request `foo.bar` may resolve `foo/bar.ww` or `foo/bar/` even
|
||||
while a physical non-directory `foo.bar` exists. A wrong-suffix symlink to a
|
||||
non-directory is the same ignored collision; a symlink to a directory remains
|
||||
an ordinary stat-first directory request. A visible `.ww` symlink to a
|
||||
regular source remains eligible, and the established stage-specific handling
|
||||
of visible `.ww` special files is not broadened by this rule.
|
||||
|
||||
A resolved logical single file retains the established `__root` command-line
|
||||
package/action/artifact identity. A resolved logical directory retains its
|
||||
dotted package, import, graph, action, symbol, `.wwi`, initializer, artifact,
|
||||
publication, and persistence identity. The ignored physical pathname/object
|
||||
creates no membership, binding, edge, action, key, or alternate identity.
|
||||
Build and run use only the logical provider's production/import/initializer
|
||||
closure and runtime. Raw running test, its historical second-positional
|
||||
test-name filter, `test -c`, and `test -S` use only the provider's test
|
||||
package, descriptors, support closure, binary, and assembly.
|
||||
|
||||
When no provider exists, collision-present behavior is byte-for-byte the
|
||||
existing collision-absent behavior. An ordinary single target retains its
|
||||
direct build/run/test cannot-find result and creates no producer action. A
|
||||
second positional retains the established package-coordinator route,
|
||||
diagnostics, status, selection lifecycle, and cleanup; this source gate does
|
||||
not reinterpret that positional form. Mutation invariance covers only absent
|
||||
and stat-successful non-directory collision states. A transition to a
|
||||
directory leaves this rule and follows ordinary directory routing, with no
|
||||
new atomic-snapshot guarantee for concurrent kind changes.
|
||||
|
||||
Provider compilation failure preserves the prior public and semantic
|
||||
generation. A retained running-test runtime failure occurs after the complete
|
||||
logical build generation commits: it preserves prior retained public bytes by
|
||||
skipping deferred installation, while that semantic generation remains
|
||||
committed and reusable. Restoring prior source bytes requires a later
|
||||
successful rebuild and commit, not runtime-failure rollback. Controlled-
|
||||
failure cleanup otherwise remains unchanged. External signal
|
||||
interruption after action start is unchanged, including the verified-open
|
||||
fixed `.new` residue and later persistent-request poisoning. Multiple named
|
||||
sources, remaining suffix-first run behavior, finite `.ww` FIFOs, test
|
||||
process topology, and `-run` regular expressions are not completed here.
|
||||
Build workdir format remains 18, test workdir format remains 19, and semantic
|
||||
storage format remains 3.
|
||||
- `import acme.codec;` loads the canonical package `acme.codec`. If that
|
||||
package declares `package wire;`, the importing file sees its exported names
|
||||
as `wire.Name`; `codec.Name` is not an additional binding. An explicit alias
|
||||
|
||||
Reference in New Issue
Block a user