Repository navigation
Conversation
Collaborator
|
Thanks @oxura. A few notes on this one: The GUIDE is supposed to be written by hand, so please drop the GUIDE.md edit. The wording there could improve, but we'll do that ourselves. Two problems with the tests:
We'll discuss the tag change itself with @nicolas-abril before deciding on this PR. |
Contributor
Author
|
Addressed in 059c4ce:
Actual local verification: both fixtures print |
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Problem
A constructor's JS tag currently contains the namespace assigned by the loading book. A value exported by
a.bendhas tagCounter; a module importing the same type expectsa.Counter. Passing the first module's value to the second rejects at the boundary instead of returning4n.Fixes #1105.
Change
CID(...)expansion and Nat/ADT marshalling. Foreign-def effect identities and public def export keys retain their full namespaces.a.Counter{5n}.tests/io/marshal_tag_unknownwith a real effect-result fail-stop assertion: a valid Box is consumed and prints6, then an unknown tag must terminate with status 1 before a second consumer output. A semantic wrapper removes the old diagnostic-wording pin rather than re-pinning the changed sentence.This is a clean cutover: manually manufactured old book-qualified JS tags are not compatibility aliases. Constructor tags are file-local; constructor names explicitly qualified within a source file remain qualified. No edit to the protected language checker, gates, allow list or caps.
Evidence
Linux x64: Bun 1.3.13, Node 22.23.1, clang 22.1.8.
.mjsin Node: the producer value and short host tag both fail inB.dec; only manually addinga.Counterreturns4n.4n; the obsolete qualified tag is rejected.0on this branch. It covers cross-module record/sum/enum behavior and unknown-tag refusal. Its Node execution also prints0; compilation uses the actual Bun compiler rather than asking Node's strip-only TypeScript mode to execute the CLI.None / 6andoff / onrespectively.a.Counter{5n}.PATHand still print0; they invoke their actual running executable, not a namedbun. Node retains its existing requirement that Bun be available to compile Bend source.Limits
Mini-cluster and GPU gates were not run. Native code generation is unchanged; the native smoke checks display agreement, not a GPU qualification. No claim that constructor tags are globally unique across different datatypes: matching remains type-local, while effect identities remain namespace-qualified.