Languages engaged on generation on 3.2 EAP3 (bug?) Follow
Hi,
I tried the "Languages engaged on generation" features on version 3.2EAP3 and I was not able to make it works, I'm quite new to MPS.
Nevertheless with version 3.1.5 a very simple example (looking at transient objects generated by a second engaged language) works at first try.
I've also checked the MPS bug tracking system but I haven't found anything about this.
In case you guys at MPS are not aware of this and you think it's a bug I can add more details.
Bye,
Mar
I tried the "Languages engaged on generation" features on version 3.2EAP3 and I was not able to make it works, I'm quite new to MPS.
Nevertheless with version 3.1.5 a very simple example (looking at transient objects generated by a second engaged language) works at first try.
I've also checked the MPS bug tracking system but I haven't found anything about this.
In case you guys at MPS are not aware of this and you think it's a bug I can add more details.
Bye,
Mar
Please sign in to leave a comment.
I'm certainly interested in what you have found. Would you be willing to share the details, please?
Vaclav
I did not download the code, instead I reconstruct the whole example from scratch, but at the end I did not get the Database transient objects, instead I got only the Class objects.
It was here that in the same project I created a smaller test:
with version 3.1.5, it worked at first try: for each Thing I got a java Class node and an OtherThing node under transient object.
If you are not able to reproduce the problem I can send you my working and not working projects.
Sorry for all these posts but the new filter did not allowed myself to post on a single message.
Bye,
Mar
To be sure, I was afraid because I'm new to MPS, I repeated the same example in parallel on 2 projects step by step, one on 3.1.5 and the other on 3.2EAP3: the first language is called "engaged" (sorry dispite to the name it is not the "Language engaged on generation") and has only one concept that generate to Java classes.
The second language (otherLang) is the engaged one.
However you are right: the generation plan in 3.2 shows the otherLang language (see attached projects) as last step.
Nevertheless the transient objects are not generated in version 3.2 and here you get only nodes generated fromt the first language, see screenshots.
Bye,
Mar
engaged31.tgz (37KB)
engaged32.tgz (42KB)
In 3.1, there were no implicit generation priorities (so engaged32 was deemed 'independent' of any other language, including BL, its target), and there was logic to group as much generators to a single generation step as possible. Thus, engaged32 ran together with otherLang, and latter saw 'Thing' instances in the input model. In 3.2, we've introduced implicit dependencies (so that target languages are respected and run after the source generator has been applied) and changed the way generators are grouped together to improve performance (we lean towards single generator run per step, to get rid of present 'transform until no changes' approach).
To run otherLang together with engaged32, you'd likely need 'run together' (=) priority rule in otherLang's generator. Note, to add the rule, you'll need to introduce dependency from engaged32 generator module. It's advised to use 'Design' dependency kind for this purpose.
I completely trust you that version 3.2 is better, nevertheless MPS dependencies seem not trivial for a newbie like me. Probably after a while one gets used to.
Bye, Mar
In my solution I can only enable/add to the generation plan an already engaged language at design level in case I'm interested in the output of a specific generator.
The list "Language engaged on generation" once called "Language enabled during generation plan" should present to the user only languages engaged at design level instead of all languages.
Nevertheless I think I'm trained enough on engaging languages :-) so I don't need new features in this area.
Bye,
Mar