fix: resolve bare change members against inherited attributes#452
fix: resolve bare change members against inherited attributes#452hjotha wants to merge 5 commits intomendixlabs:mainfrom
Conversation
Symptom: all open PRs against main failed the shared build-and-test job in make test-integration, even when their local build/test/lint validation passed. The failures reproduced on origin/main, so they were baseline CI instability rather than PR-specific regressions. Root cause: TestWatcherDebounce could allow stale timer callbacks to send an extra message under slow scheduling, nanoflow integration fixtures used MDL syntax that no longer matched the grammar, and the doctype mx-check harness did not classify known page/nanoflow showcase consistency errors as expected limitations. Fix: guard watcher debounce callbacks with a generation counter, tighten the watcher burst test, update nanoflow fixtures to current MDL syntax, and extend the known consistency-error allowlist for showcase-only limitations. Tests: make build Tests: go test ./cmd/mxcli/tui -run TestWatcherDebounce -count=20 -v Tests: ./bin/mxcli check mdl-examples/doctype-tests/02b-nanoflow-examples.mdl Tests: go test -tags integration -count=1 -timeout 30m ./mdl/executor -run 'TestRoundtripNanoflow_(Loop|EnumParameter|Annotations)|TestMxCheck_DoctypeScripts/02b-nanoflow-examples.mdl|TestMxCheck_DoctypeScripts/03-page-examples.mdl' -v Tests: make test Tests: make lint-go Tests: make test-integration
Symptom: a change-object member assignment to an inherited attribute could roundtrip into an attribute qualified on the concrete child entity, causing mx check to report that the selected attribute no longer exists. Root cause: resolveMemberChange qualified bare attributes with the variable's concrete entity only and did not walk the entity generalization chain. Fix: when entity metadata is available, resolve bare attribute names against the entity and its ancestors and write the declaring entity qualified name. Tests: added a synthetic inherited-attribute resolver test, ran make build, make test, and a targeted roundtrip with mx check.
27cf265 to
2054769
Compare
AI Code ReviewCritical IssuesNone found. Moderate IssuesNone found. Minor Issues
What Looks Good
RecommendationApprove the PR. The minor issues (unrelated changes, test naming) are trivial and do not compromise the fix's correctness or safety. The core change addresses the issue precisely, includes robust testing, and maintains code quality. Consider splitting unrelated changes into a separate PR in future work for stricter atomicity, but it's not blocking here. Automated review via OpenRouter (Nemotron Super 120B) — workflow source |
|
CI stabilization note: merged #412 into this branch so it uses the same integration-CI baseline as the rest of the active PR set. |
Symptom: CI failed in TestMxCheck_DoctypeScripts/empty_java_action_argument.mdl because a Java action declared as RETURNS Void was written as an entity return type named .void, and Studio Pro reported CE1613. Root cause: the generic data-type visitor treats bare qualified names as entity/enumeration references. Java action return types reused that generic path, so the explicit Void spelling became a qualified name instead of ast.TypeVoid. Fix: add a Java-action return-type wrapper that maps unqualified Void to ast.TypeVoid while leaving generic data-type parsing unchanged for parameters and attributes. Tests: added visitor coverage for explicit RETURNS Void; verified mxcli check for the doctype fixture and the targeted integration subtest that failed in GitHub Actions.
AI Code ReviewCritical IssuesNone found. Moderate Issues
Minor Issues
What Looks Good
RecommendationRequest changes to split this PR into:
If the nanoflow test changes are deemed necessary for the core fix (unlikely), at least update the PR description to explain all changes and split the TUI watcher change into its own PR. The core fix itself is ready to merge once scope issues are resolved. Automated review via OpenRouter (Nemotron Super 120B) — workflow source |
Closes #451.
Summary
Validation
make buildmake testmx checkfor an inherited bare attribute case