Skip to content

A function without a body is fn sig { }, not fn sig; (3 specs now generate) - #4248

Merged
gHashTag merged 1 commit into
masterfrom
fix/bodyless-fn-declarations
Sep 17, 2026
Merged

gHashTag merged 1 commit into
masterfrom
fix/bodyless-fn-declarations

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

Refs #4247

Three specs declared functions as pub fn name(args) -> T;, and t27c refused to generate them. A bodyless declaration is not a t27 construct — undefined in docs/ and CANON.md, and none of the 15 specs using it generate. The empty body fn sig { } is, with the same meaning: declared, not yet implemented.

Only the terminating ; becomes { }. No signature changes.

Measured over the whole corpus

master this PR
t27c gen fails (NOGEN) 89 86
does not compile 654 657
PASS 189 189
stopped passing — 0

This does not raise the pass count, and is not claimed to. The three move one layer: from not generating at all, to generating and failing with a specific Zig error a bee can fix —

spec now
numeric/formats duplicate struct member name result
ternary/packed_trit use of undeclared identifier trits
vsa/packed_vsa variables must be initialized

— and their empty bodies become food for the feeder.

The before/after runs were a few master merges apart; shifts of exactly ±3 with nothing lost match these files, but the measurement is not strictly isolated.

🤖 Generated with Claude Code

Three specs declared functions as `pub fn name(args) -> T;` and t27c refused to
generate them at all ("Expected LBrace, got Semicolon"). A bodyless declaration
is not a t27 construct: it is not defined in docs/ or CANON.md, and none of the 15
specs in the corpus that use it generate. The empty body is, and it means the same
thing -- declared, not yet implemented -- which t27c lowers to
`@panic("not yet implemented")`.

    specs/numeric/formats.t27      6 declarations
    specs/ternary/packed_trit.t27  7 declarations
    specs/vsa/packed_vsa.t27       8 declarations

Only the terminating `;` becomes ` { }`. No signature changes.

Measured over the whole corpus with a t27c built from master, before and after:

    NOGEN       89 -> 86   (-3: these three now generate)
    NOCOMPILE  654 -> 657  (+3: they reach Zig, where each has a further defect)
    PASS       189 -> 189  (+0)
    specs that stopped passing: 0

So this does not raise the pass count, and is not claimed to. Each of the three
now fails with a specific Zig error instead of not generating at all:

    formats      duplicate struct member name 'result'
    packed_trit  use of undeclared identifier 'trits'
    packed_vsa   variables must be initialized

That is concrete work a bee can do, and the empty bodies are food for the feeder.

Only the three files that went from not generating to generating are included.
Seven other bodyless-declaration specs moved to a deeper, unrelated parse error,
and the other five are claimed by open issues whose bee PRs already replace each
declaration with a real body -- so they are left alone.

The before and after runs were taken on master a few merges apart (21e58ef and
d898363). The shifts are exactly +/-3 and nothing stopped passing, which matches
these three files; it is not a strictly isolated measurement.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@gHashTag
gHashTag enabled auto-merge (squash) September 17, 2026 10:06
This was referenced Sep 17, 2026
This was referenced Sep 17, 2026
@gHashTag
gHashTag merged commit 8a5853a into master Sep 17, 2026
26 of 33 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-17 12:42:29 UTC

Summary

Status Count
Total Open PRs 50
PRs with Failing Checks 15
PRs with All Checks Green 35
READY 34
FAILING 15
PENDING 0
NO CHECKS YET 0

These columns do not partition: 34 + 15 + 0 + 0 = 49, and there are 50 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=8932aae0c5a9 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant