Skip to content

locations for the binding types, and two lint traps the wrapper walked into - #45

Merged
borisbat merged 1 commit into
borisbat:masterfrom
aleksisch:aleksisch/typedecl-binding-location
Aug 26, 2026
Merged

locations for the binding types, and two lint traps the wrapper walked into#45
borisbat merged 1 commit into
borisbat:masterfrom
aleksisch:aleksisch/typedecl-binding-location

Conversation

@aleksisch

Copy link
Copy Markdown
Collaborator

Supersedes #44, which GitHub auto-closed: a bad squash on a shallow clone produced a parentless commit, so the head briefly shared no ancestor with master. The branch is rebuilt on 15eed84 and the diff is 3 files, +11/-11.

1. The binding types carry a location

daslang removed TypeDecl(Type) — the constructor that leaves a type with no source location — so NodeId / LinkId / PinId stamp cppBindingLineInfo(), the call daslang's own typeFactory templates use.

2. NODEEDITOR001 fired on its own wrapper

Fixing the build surfaced why every tutorial-driving integration test was red, and it was not the constructor. The lint told a raw call from a wrapper body by comparing fileInfo — but a block-taking wrapper like begin_delete(ctx, blk) is inlined during inference and its body carries the call site's location, so both files matched and the lint accused begin_delete itself.

The inliner marks spliced nodes generated; a hand-written call is not. Measured on the failing app:

call genFlags.generated
SetNodePosition (the user's own) false
BeginDelete / EndDelete (spliced from begin_delete) true

With that flag in the guard the app compiles again. It had been dying at initial compile FAILED, which left the harness polling a snapshot with no widget registry until it timed out — that is the whole wait_for_widget MAIN_WIN/graph failure family.

3. The clipboard chord double-swapped on macOS

test_clipboard_tutorial fed Super under ConfigMacOSXBehaviors, but dasImgui already pre-swaps Ctrl/Super for synth keys to cancel ImGui's AddKeyEvent swap (imgui_boost_runtime.das: "a synth Ctrl lands as io.KeyCtrl on every platform"). Feeding Super double-swapped and no chord fired — on the macOS runner Ctrl+D left the node count at 2 where 3 was expected. The chord is Ctrl on every platform now, matching the tutorial it drives.

Plus the three style findings on the touched file: comment to one line (STYLE015), the emitted message loses its em dash (STYLE039), unused require strings dropped (STYLE030).

Verified

  • integration dir, headless, Linux: 23 tests, 23 passed, 0 failed (from 8 failing)
  • failed_node_editor_lint_raw.das still reports, so a genuinely raw call is still caught
  • repo lint on both touched .das: 0 issue(s), 0 error(s)
  • the module builds against current daslang master (the one without the old constructor)

Not verified locally: the macOS chord path — no macOS box here. The macos-latest lane is its proof.

🤖 Generated with Claude Code

…d into

daslang removed `TypeDecl(Type)` - the constructor that leaves a type with no
source location - so the three glue types here (NodeId / LinkId / PinId) stamp
cppBindingLineInfo(), the call daslang's own typeFactory templates use.

Fixing the build surfaced why every tutorial-driving integration test was red,
and it was not the constructor: NODEEDITOR001 fired on `begin_delete`, the very
wrapper it tells consumers to use. It told a raw call from a wrapper body by
comparing fileInfo, and a block-taking wrapper is inlined during inference with
the CALL SITE's location, so both files matched. The inliner marks spliced nodes
generated and a hand-written call is not - measured on the failing app:
SetNodePosition (the user's own) gen=false, BeginDelete / EndDelete (spliced from
begin_delete) gen=true. With that flag in the guard the app compiles again; it
had been dying at `initial compile FAILED`, which left the harness polling a
snapshot with no widget registry until it timed out.

test_clipboard_tutorial then failed on macOS only: it fed `Super` under
ConfigMacOSXBehaviors, but dasImgui already pre-swaps Ctrl/Super for synth keys
to cancel ImGui's AddKeyEvent swap (imgui_boost_runtime.das - "a synth Ctrl lands
as io.KeyCtrl on every platform"), so Super double-swapped and no chord fired -
Ctrl+D left the node count at 2 where 3 was expected. The chord is Ctrl on every
platform now, matching the tutorial it drives.

Also the three style findings on the touched file: the comment fits one line
(STYLE015), the emitted message drops its em dash (STYLE039), and the unused
`require strings` goes (STYLE030).

Verified on Linux: integration dir 23 tests / 23 passed (from 8 failing), lint
clean on both touched files, the negative fixture failed_node_editor_lint_raw
still reports. The macOS chord path is NOT verified locally - no macOS box here;
the macos-latest lane is its proof.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@borisbat
borisbat merged commit f64149a into borisbat:master Aug 26, 2026
2 of 3 checks passed
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.

2 participants