Repository navigation
fix(make): leave out modules without generation-target facets and always explain a failed make - #228
Open
sergej-koscejev wants to merge 2 commits into
Open
sergej-koscejev wants to merge 2 commits into
sergej-koscejev wants to merge 2 commits into
Conversation
…ways explain a failed make Make no longer hands MPS the models of a module without a generation target facet, such as a solution created with the not-generated preset; --messages info names the modules it leaves out. A make whose make sequence has no step (its models use no language) reports nothing to generate. A failed make that MPS reports no error for gets an error with the reason from the make result. Fixes #226
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.
Fixes #226
Summary
Two causes, both fixed in
ProjectMake.runMake, whichmake module,make project, Code Modeproject.make()/makeModulesand the build step ofmops testall share.no output location …,No module facet to specify textgen destination …). Since MPS 2025.3 (MPS-38672) TextGen skips such a model with a warning instead. mops now leaves these models out before the make on every MPS version and reports a warning naming the module, similar to what MPS 2025.3 does. This works for existing projects too; no change tocreate solution.ModulesClusterizerdrops a module whose models use no language, so the make sequence has no step.CoreMakeTaskthen returnsFAILURE("not started")without reporting anything. mops now checks the step count and reportsnothing to generate.make failed without reporting an error: <reason from the MPS result>.MPS behavior verified in the 2024.1, 2025.1 and 2026.1 sources; written up in the mps-api-research note
docs/make-modules-without-output.md(not yet committed there).Evidence
Issue steps on a copy of
_theSimplestLanguage, MPS 2024.1.6:Before:
With a root:
FAILEDwithno output location for repro.sandbox.main@0,No module facet to specify textgen destination ….After:
Tests:
MakeSemanticsTest(daemon, through daemon requests as the CLI sends them):NOTHING_TO_GENERATE, warning names the module, nosource_gen(wasFAILEDwith the TextGen errors)NOTHING_TO_GENERATEjavasolution with an empty model →NOTHING_TO_GENERATE(wasFAILED, no messages)MakeResponseTest(unit): a failed or missing MPS result without an error message gets an error with the reason; at--messages errortoo.MakeIntegrationTest(CLI):create solution→create model→make moduleexits 0, printsnothing to generateand the warning.Merge Danger
Blast Radius: make output
make projecton a project with not-generated solutions now prints one warning per such solution. A module without generation-target facets that someone did expect to generate is now left out with a warning instead of failing.