Generated Runtime Libraries contain errors
The latest Spoofax built generates incorrect runtime libraries.
[java] [ Main | error ] *** ("analysis-single-default",3,1) calls non-existing ("analysis-partition",0,2) [java] ("analysis-partition",0,2) [java] [ Main | error ] *** ("analysis-single-default",3,1) calls non-existing ("analyze-one",0,3) [java] ("analyze-one",0,3) [java] [ Main | error ] *** ("analysis-multiple-default",4,2) calls non-existing ("analyze-multiple",2,2) [java] ("analyze-multiple",2,2) [java] [ Main | error ] *** ("analysis-multiple-default",4,2) calls non-existing ("measure-time",2,1) [java] ("measure-time",2,1) [java] [ Main | error ] *** ("analysis-message-update-partition",0,0) calls non-existing ("analyze-get-messages",0,0) [java] []
The following code will let the project build, but analysis will fail.
rules analysis-partition(|a,b): z -> z where "nottrue" := z analyze-one(|a,b,c): z -> z where "nottrue" := z analyze-multiple(a,b|c,d): z -> z where "nottrue" := z measure-time(a,b|c): z -> z where "nottrue" := z analyze-get-messages: z -> z where "nottrue" := z signature constructors DebugResult : Term * Term * Term * Term * Term -> DebugResult Result : Term * Term * Term * Term * Term * Term * Term -> Result
These rules and signatures have been removed in https://github.com/metaborg/runtime-libraries/commit/ac5b73deb1d4c124d492b7932b6cf04b263e3379
Looks like the generator is broken.
Submitted by Daco Harkes on 10 June 2014 at 17:08
Issue Log
I’m getting the above issue after updating to the current version of the unstable release (s41649). In which file should I insert the suggested code so that my project will continue to build?
Could you also make it possible to obtain and install a previous (working:) version of the unstable release from the update site? Then it wouldn’t be so annoying when one updates to a new version of the unstable release, and discovers that it is broken. The same goes for the nightly build, a fortiori…
PS I tried reverting to a previous installation configuration in Eclipse, but it couldn’t find the required items.
Try adding the files that were deleted in that specific commit.
Does deleting the lib/runtime directory fix the issue?
It does fix the issue, but of course we are using the deprecated analysis interface.
What should the following code be changed to?
editor-analyze = analysis-default-editor analysis-single-default-interface = analysis-single-default(desugar-all, id, pp-message-top|<language>) analysis-multiple-default-interface = analysis-multiple-default(parse-file <+ !(), desugar-all, id, pp-message-top|<language>, <project-path>) editor-save = analysis-save-default(|<language>)
Changing the imports to include
lib/runtime/analysis/legacy
will let the project built.But all analysis fails, no references get resolved to their definitions.
Test case report:
Fails to resolve: reference "in"{Use(Result(21))} on line 21 does not resolve to definition "in"{Def( URI(Language("Relations"), [ ID(NablNsRole,"in",Unique("/Users/admin/relations/relations-tests/names/roles.spt/0")), ID(NablNsEntityType,"Edge",Unique("/Users/admin/relations/relations-tests/names/roles.spt/0”)), ID(NablNsModule,"test",Unique("/Users/admin/relations/relations-tests/names/roles.spt/0")) ])) } on line 24
(Also show-analysed-syntax shows no analysis. Edit: nevermind, show-analysed-syntax seems to work now, but references do not resolve.)
Failing to resolve references is an NaBL issue: https://yellowgrass.org/issue/NaBL/108 closing this one.
I made sure that the old definitions in runtime/analysis/defaults.str will be cleared out now, which should prevent errors with existing projects.
Peter: we now have a record of nightly builds:
Vlad: it would be nice to order the entries in reverse chronological order
Thank you for the suggestion, the entries are now sorted newest build first.
Why are there two builds with the same number?:
11863957 2014-06-13 16:07:33.0 spoofax-imp-s41663 spoofax-imp-s41663 11861452 2014-06-13 15:19:03.0 spoofax-imp-s41663 spoofax-imp-s41663
The build was restarted manually or reevaluated due to changing dependencies. The Spoofax version identifier (s41…) is derived from the versions of the repositories that take part in the build. External build-time dependencies (such as JDK version, etc.) are not part of the Spoofax version identifier.
Log in to post comments