fix: address merged microflow review followups#408
fix: address merged microflow review followups#408hjotha wants to merge 6 commits intomendixlabs:mainfrom
Conversation
AI Code ReviewCritical IssuesNone found. Moderate IssuesNone found. Minor Issues
What Looks Good
RecommendationApprove. The PR correctly implements focused bug fixes with appropriate test coverage and documentation updates. The changes are minimal, targeted, and maintain code quality standards. Minor comment clarification suggested but not blocking. Automated review via OpenRouter (Nemotron Super 120B) — workflow source |
7a08d1b to
3e8d0a6
Compare
AI Code ReviewCritical IssuesNone found. Moderate IssuesNone found. Minor IssuesNone found. What Looks Good
RecommendationApprove. This PR consists of well-targeted bug fixes and test improvements for previously merged microflow/nanoflow functionality. Each change addresses a specific reported issue with appropriate test coverage, and the code quality is maintained throughout. As these are follow-ups to already-merged work and don't introduce new MDL syntax, they appropriately bypass the full-stack consistency requirements for new features while still maintaining the project's standards for bug fixes and test coverage. Automated review via OpenRouter (Nemotron Super 120B) — workflow source |
19f4c39 to
23019b5
Compare
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
1. Manual while-true detection over-triggered when the only continue lived inside a nested loop. The continue scan crossed loop boundaries while the break scan did not, so the outer while could be rebuilt as a manual back-edge. Stop the continue scan at nested loops and add a regression test. 2. Owner-both reverse retrieves feeding add/remove-to-list were still treated as object-only consumers. The list pre-scan ignored AddToListStmt and RemoveFromListStmt target lists, so AssociationRetrieveSource could be suppressed. Track those list consumers and add coverage for the helper. 3. Direct nanoflow describe did not set the return-value render context used by EndEvent formatting. Thread the wrapped nanoflow return type through the formatter so value-returning nanoflows do not emit bare return; for empty EndEvents. Also folds in low-risk review followups: commit-action writer coverage, change-object refresh negative coverage, download-file formatter coverage, reverse-retrieve name validation tightening, and documentation for MXCLI_EXEC_TIMEOUT. Tests: make build Tests: make test Tests: make lint-go Closes mendixlabs#404. Closes mendixlabs#405. Closes mendixlabs#406.
formatAction emitted `$Var = call microflow/nanoflow/java/javascript/external` whenever the action's ResultVariableName/OutputVariableName was non-empty, ignoring UseReturnVariable. Studio Pro stores the variable name as a UI fallback even when UseReturnVariable=false (the action discards its return), so re-exec of described MDL introduced phantom output variable declarations. Symptom: microflows with two call actions pointing at the same sub-microflow/Java action, both with UseReturnVariable=false but both carrying the same ResultVariableName, round-tripped as two declarations of the same output variable, triggering CE0111 "Duplicate variable name" in Studio Pro. Fix: emit the `$Var = ` prefix only when UseReturnVariable is true. Applies to MicroflowCallAction, NanoflowCallAction, JavaActionCallAction, JavaScriptActionCallAction, and CallExternalAction. Existing tests that relied on the old behavior now set UseReturnVariable explicitly — they were exercising the wrong BSON shape. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
23019b5 to
22b7936
Compare
AI Code ReviewCritical IssuesNone found. Moderate IssuesNone found. Minor Issues
What Looks Good
RecommendationApprove with minor noted issues (the parameter type syntax in the nanoflow test should be corrected). The PR successfully addresses the review follow-ups from merged microflow roundtrip PRs and improves test coverage and robustness. 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 ReviewReview SummaryCritical IssuesNone found. Moderate IssuesNone found. Minor IssuesNone found. What Looks Good
RecommendationApprove - The PR consists of well-targeted bug fixes with appropriate test coverage and documentation updates. All changes are minor improvements that address specific issues without introducing new functionality or breaking existing patterns. The PR successfully resolves the stated follow-up items from merged microflow PRs. Automated review via OpenRouter (Nemotron Super 120B) — workflow source |
Summary
This PR collects follow-ups from reviews on already-merged microflow roundtrip PRs so the actionable feedback does not get lost.
Fixes:
while truedetection from treatingcontinueinside a nested loop as a continue for the outer loop.add $Item to $Listandremove $Item from $Listtarget lists as list consumers so owner-both reverse retrieves keep the correct source form.describe nanoflowpath so value-returning nanoflows do not emit barereturn;for empty EndEvents.Review follow-up coverage:
ErrorHandlingType.MXCLI_EXEC_TIMEOUTin the quick reference.Closes #404.
Closes #405.
Closes #406.
Tests
make buildmake testmake lint-go