locations for the binding types, and two lint traps the wrapper walked into - #45
Merged
borisbat merged 1 commit intoAug 26, 2026
Conversation
…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>
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.
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 on15eed84and 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 — soNodeId/LinkId/PinIdstampcppBindingLineInfo(), the call daslang's owntypeFactorytemplates 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 likebegin_delete(ctx, blk)is inlined during inference and its body carries the call site's location, so both files matched and the lint accusedbegin_deleteitself.The inliner marks spliced nodes generated; a hand-written call is not. Measured on the failing app:
genFlags.generatedSetNodePosition(the user's own)falseBeginDelete/EndDelete(spliced frombegin_delete)trueWith 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 wholewait_for_widget MAIN_WIN/graphfailure family.3. The clipboard chord double-swapped on macOS
test_clipboard_tutorialfedSuperunderConfigMacOSXBehaviors, but dasImgui already pre-swaps Ctrl/Super for synth keys to cancel ImGui'sAddKeyEventswap (imgui_boost_runtime.das: "a synth Ctrl lands as io.KeyCtrl on every platform"). FeedingSuperdouble-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 stringsdropped (STYLE030).Verified
failed_node_editor_lint_raw.dasstill reports, so a genuinely raw call is still caught.das:0 issue(s), 0 error(s)Not verified locally: the macOS chord path — no macOS box here. The
macos-latestlane is its proof.🤖 Generated with Claude Code