metaborg / spoofax-pie Goto Github PK
View Code? Open in Web Editor NEWSpoofax implementation using PIE pipelines
License: Apache License 2.0
Spoofax implementation using PIE pipelines
License: Apache License 2.0
After cleaning and rebuilding the language project, there are errors about the missing files in the build directory.
Stacktrace from the error:
Printing with context:
currentDir: ./ = /week1prolog/
mb.pie.api.ExecException: Executing task 'mb.pie.task.archive.UnarchiveFromJar(Input{inputJarFile=java##file:/home/homedir/bin/spoofax3/plugins/libspoofax2.eclipse_0.11.7.jar, o...)' failed unexpectedly
at mb.pie.runtime.exec.TaskExecutor.execInternal(TaskExecutor.java:123)
at mb.pie.runtime.exec.TaskExecutor.exec(TaskExecutor.java:81)
at mb.pie.runtime.exec.TopDownRunner.exec(TopDownRunner.java:195)
at mb.pie.runtime.exec.TopDownRunner.executeOrGetExisting(TopDownRunner.java:140)
at mb.pie.runtime.exec.TopDownRunner.require(TopDownRunner.java:80)
at mb.pie.runtime.exec.ExecContextImpl.require(ExecContextImpl.java:95)
at mb.pie.runtime.exec.ExecContextImpl.require(ExecContextImpl.java:114)
at mb.pie.api.STask.get(STask.java:61)
at mb.pie.api.MappedSupplier.get(MappedSupplier.java:17)
at mb.pie.api.MappedSupplier.get(MappedSupplier.java:17)
at mb.pie.api.MappedSupplier.get(MappedSupplier.java:17)
at mb.pie.runtime.exec.ExecContextImpl.require(ExecContextImpl.java:124)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
at mb.common.util.BaseCollectionView.forEach(BaseCollectionView.java:88)
at mb.esv.task.spoofax.EsvParseWrapper.lambda$exec$0(EsvParseWrapper.java:38)
at mb.common.option.Option.ifSome(Option.java:66)
at mb.esv.task.spoofax.EsvParseWrapper.lambda$exec$1(EsvParseWrapper.java:38)
at mb.common.option.Option.ifSome(Option.java:66)
at mb.common.result.Result.ifOk(Result.java:88)
at mb.esv.task.spoofax.EsvParseWrapper.lambda$exec$2(EsvParseWrapper.java:38)
at java.base/java.util.Optional.ifPresent(Optional.java:183)
at mb.esv.task.spoofax.EsvParseWrapper.exec(EsvParseWrapper.java:38)
at mb.esv.task.spoofax.EsvParseWrapper.exec(EsvParseWrapper.java:16)
at mb.pie.api.Task.exec(Task.java:56)
at mb.pie.runtime.exec.TaskExecutor.execInternal(TaskExecutor.java:110)
at mb.pie.runtime.exec.TaskExecutor.exec(TaskExecutor.java:81)
at mb.pie.runtime.exec.TopDownRunner.exec(TopDownRunner.java:195)
at mb.pie.runtime.exec.TopDownRunner.executeOrGetExisting(TopDownRunner.java:140)
at mb.pie.runtime.exec.TopDownRunner.require(TopDownRunner.java:80)
at mb.pie.runtime.exec.ExecContextImpl.require(ExecContextImpl.java:95)
at mb.pie.runtime.exec.ExecContextImpl.require(ExecContextImpl.java:78)
at mb.esv.util.EsvVisitor.parse(EsvVisitor.java:131)
at mb.esv.util.EsvVisitor.visitMainFile(EsvVisitor.java:62)
at mb.esv.task.EsvCheck.exec(EsvCheck.java:74)
at mb.esv.task.EsvCheck.exec(EsvCheck.java:23)
at mb.pie.api.Task.exec(Task.java:56)
at mb.pie.runtime.exec.TaskExecutor.execInternal(TaskExecutor.java:110)
at mb.pie.runtime.exec.TaskExecutor.exec(TaskExecutor.java:81)
at mb.pie.runtime.exec.TopDownRunner.exec(TopDownRunner.java:195)
at mb.pie.runtime.exec.TopDownRunner.executeOrGetExisting(TopDownRunner.java:140)
at mb.pie.runtime.exec.TopDownRunner.require(TopDownRunner.java:80)
at mb.pie.runtime.exec.ExecContextImpl.require(ExecContextImpl.java:95)
at mb.pie.runtime.exec.ExecContextImpl.require(ExecContextImpl.java:78)
at mb.spoofax.lwb.compiler.esv.CheckEsv.lambda$exec$0(CheckEsv.java:33)
at mb.common.option.Option.mapOrElse(Option.java:126)
at mb.spoofax.lwb.compiler.esv.CheckEsv.lambda$exec$1(CheckEsv.java:32)
at mb.common.option.Option.mapOrElse(Option.java:126)
at mb.common.result.Result.mapOrElse(Result.java:271)
at mb.spoofax.lwb.compiler.esv.CheckEsv.exec(CheckEsv.java:31)
at mb.spoofax.lwb.compiler.esv.CheckEsv.exec(CheckEsv.java:13)
at mb.pie.api.Task.exec(Task.java:56)
at mb.pie.runtime.exec.TaskExecutor.execInternal(TaskExecutor.java:110)
at mb.pie.runtime.exec.TaskExecutor.exec(TaskExecutor.java:81)
at mb.pie.runtime.exec.TopDownRunner.exec(TopDownRunner.java:195)
at mb.pie.runtime.exec.TopDownRunner.executeOrGetExisting(TopDownRunner.java:140)
at mb.pie.runtime.exec.TopDownRunner.require(TopDownRunner.java:80)
at mb.pie.runtime.exec.ExecContextImpl.require(ExecContextImpl.java:95)
at mb.pie.runtime.exec.ExecContextImpl.require(ExecContextImpl.java:78)
at mb.spoofax.lwb.compiler.CheckLanguageSpecification.exec(CheckLanguageSpecification.java:55)
at mb.spoofax.lwb.compiler.CheckLanguageSpecification.exec(CheckLanguageSpecification.java:24)
at mb.pie.api.Task.exec(Task.java:56)
at mb.pie.runtime.exec.TaskExecutor.execInternal(TaskExecutor.java:110)
at mb.pie.runtime.exec.TaskExecutor.exec(TaskExecutor.java:81)
at mb.pie.runtime.exec.TopDownRunner.exec(TopDownRunner.java:195)
at mb.pie.runtime.exec.TopDownRunner.executeOrGetExisting(TopDownRunner.java:140)
at mb.pie.runtime.exec.TopDownRunner.require(TopDownRunner.java:80)
at mb.pie.runtime.exec.TopDownRunner.requireInitial(TopDownRunner.java:59)
at mb.pie.runtime.MixedSessionImpl.lambda$require$1(MixedSessionImpl.java:86)
at mb.pie.runtime.SessionImpl.handleException(SessionImpl.java:149)
at mb.pie.runtime.MixedSessionImpl.require(MixedSessionImpl.java:86)
at mb.spoofax.lwb.eclipse.SpoofaxLwbBuilder.topDownBuild(SpoofaxLwbBuilder.java:145)
at mb.spoofax.lwb.eclipse.SpoofaxLwbBuilder.fullBuild(SpoofaxLwbBuilder.java:114)
at mb.spoofax.lwb.eclipse.SpoofaxLwbBuilder.access$000(SpoofaxLwbBuilder.java:58)
at mb.spoofax.lwb.eclipse.SpoofaxLwbBuilder$1.run(SpoofaxLwbBuilder.java:81)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2292)
at mb.spoofax.lwb.eclipse.SpoofaxLwbBuilder.build(SpoofaxLwbBuilder.java:96)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:846)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:229)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:277)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:330)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:333)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:385)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:406)
at org.eclipse.core.internal.resources.Workspace.buildInternal(Workspace.java:515)
at org.eclipse.core.internal.resources.Workspace.build(Workspace.java:405)
at org.eclipse.ui.actions.GlobalBuildAction$1.run(GlobalBuildAction.java:180)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: java.io.IOException: Creating a new output stream for resource 'L./build/unarchive/libspoofax2/libspoofax2.eclipse_0.11.7.jar/mb/libspoofax2/editor/libspoofax/color/default.esv' failed unexpectedly
at mb.spoofax.eclipse.resource.EclipseResource.openWrite(EclipseResource.java:226)
at mb.resource.WritableResource.openWriteBuffered(WritableResource.java:56)
at mb.pie.task.archive.UnarchiveCommon.unarchive(UnarchiveCommon.java:185)
at mb.pie.task.archive.UnarchiveCommon.unarchiveJar(UnarchiveCommon.java:130)
at mb.pie.task.archive.UnarchiveCommon.unarchiveJar(UnarchiveCommon.java:88)
at mb.pie.task.archive.UnarchiveFromJar.exec(UnarchiveFromJar.java:102)
at mb.pie.task.archive.UnarchiveFromJar.exec(UnarchiveFromJar.java:15)
at mb.pie.api.Task.exec(Task.java:56)
at mb.pie.runtime.exec.TaskExecutor.execInternal(TaskExecutor.java:110)
... 88 more in common with parent stacktrace
Caused by: org.eclipse.core.runtime.CoreException: Could not write file: /home/homedir/spoofax-workspace./build/unarchive/libspoofax2/libspoofax2.eclipse_0.11.7.jar/mb/libspoofax2/editor/libspoofax/color/default.esv.
at org.eclipse.core.internal.filesystem.Policy.error(Policy.java:48)
at org.eclipse.core.internal.filesystem.local.LocalFile.openOutputStream(LocalFile.java:434)
at mb.spoofax.eclipse.resource.EclipseResource.openWrite(EclipseResource.java:224)
... 96 more in common with parent stacktrace
Caused by: java.io.FileNotFoundException: /home/homedir/spoofax-workspace./build/unarchive/libspoofax2/libspoofax2.eclipse_0.11.7.jar/mb/libspoofax2/editor/libspoofax/color/default.esv (No such file or directory)
at java.base/java.io.FileOutputStream.open0(Native Method)
at java.base/java.io.FileOutputStream.open(FileOutputStream.java:298)
at java.base/java.io.FileOutputStream.<init>(FileOutputStream.java:237)
at org.eclipse.core.internal.filesystem.local.LocalFile.openOutputStream(LocalFile.java:424)
... 97 more in common with parent stacktrace
Tried restarting Eclipse, cleaning the cache (.metadata/.plugins/spoofax.lwb.eclipse/pieStore
file in the Eclipse workspace) and repeatedly cleaning and rebuilding the project.
Since the build directory is part of the .gitignore file, it should be recreated deterministically every time it's removed and the build action is invoked in Eclipse.
Upon removal of the build directory, its structure is not rebuilt properly and it's impossible to continue working with the project in the IDE.
The build directory contains only one eclipseclasses
folder:
Deleting a file causes errors about the file not being found. It may be because another file with the same name exists in a subdirectory, but I'm not sure.
I had a file src/statics/declarations.stx
which didn't seem to be found, so I copied it to src/declarations.stx
. I opened both files (both files had errors), then closed the src/declarations.stx
file and deleted it. Upon opening the src/statics/declarations.stx
file and typing a letter, errors started to appear.
I expected no errors.
In the console the following error appeared:
15:32:37.045 | ERROR | Worker-68: Statix editor update | mb.spoofax.eclipse.pie.WorkspaceUpdate | Cannot clear markers for resource 'L/tego/src/declarations.stx'; resource does not exist
15:32:37.045 | ERROR | Worker-68: Statix editor update | mb.spoofax.eclipse.pie.WorkspaceUpdate | Running marker update failed unexpectedly
org.eclipse.core.internal.resources.ResourceException(/tego/src/declarations.stx)[368]: java.lang.Exception: Resource '/tego/src/declarations.stx' does not exist.
at org.eclipse.core.internal.resources.ResourceException.provideStackTrace(ResourceException.java:42)
at org.eclipse.core.internal.resources.ResourceException.<init>(ResourceException.java:38)
at org.eclipse.core.internal.resources.Resource.checkExists(Resource.java:330)
at org.eclipse.core.internal.resources.Resource.checkAccessible(Resource.java:204)
at org.eclipse.core.internal.resources.Resource.createMarker(Resource.java:698)
at org.eclipse.core.internal.resources.Resource.createMarker(Resource.java:689)
at mb.spoofax.eclipse.util.MarkerUtil.create(MarkerUtil.java:26)
at mb.spoofax.eclipse.pie.WorkspaceUpdate.createMarker(WorkspaceUpdate.java:193)
at mb.spoofax.eclipse.pie.WorkspaceUpdate.lambda$createMarkerUpdate$0(WorkspaceUpdate.java:170)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
at mb.spoofax.eclipse.pie.WorkspaceUpdate.lambda$createMarkerUpdate$1(WorkspaceUpdate.java:170)
at java.base/java.lang.Iterable.forEach(Iterable.java:75)
at mb.spoofax.eclipse.pie.WorkspaceUpdate.lambda$createMarkerUpdate$3(WorkspaceUpdate.java:166)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2292)
at mb.spoofax.eclipse.pie.WorkspaceUpdate.update(WorkspaceUpdate.java:203)
at mb.spoofax.eclipse.pie.PieRunner.addOrUpdateEditor(PieRunner.java:145)
at mb.spoofax.eclipse.editor.EditorUpdateJob.update(EditorUpdateJob.java:89)
at mb.spoofax.eclipse.editor.EditorUpdateJob.run(EditorUpdateJob.java:74)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
When trying to build the project, I get a window with the following error:
Errors occurred during the build.
Errors running builder 'Spoofax LWB builder' on project 'tego'.
Resource '/tego/src/declarations.stx' does not exist.
Resource '/tego/src/declarations.stx' does not exist.
Resource '/tego/src/declarations.stx' does not exist.
Resource '/tego/src/declarations.stx' does not exist.
Performing a Clean solved this issue.
Supporting Statix tests greatly helps debugging Statix specifications, and would therefore be a nice feature to support in Spoofax 3.
Support can be added when the following steps are implemented:
evaluate-test :: AST -> TestResult
strategy, available in statix.lang
. This strategy takes the test AST as input, and returns a test result.pp-Statix-string(prettyprint-Statix-TestResult)
strategy. The resulting string should be opened in a file with (preferably) an .stxresult
extension.For reference, the definition of this menu in Spoofax 2 can be found here.
The spoofax editor crashes when I make changes to a .spt test file, giving a NullPointerException on every keystroke.
Open a .spt file, make some changes, wait until the editor reloads and immediately crashes with 'SPT Editor Update'.
Editor updates and reruns tests
Editor crashes
Log of SPT Editor Update:
error-log.txt
Using alternation in context-free syntax directly results in a failure during signature generation.
Consider a program such as:
Program.Program = (VarDef | FuncDef | ClassDef)* Stmt*
This syntax is only allowed for lexical productions, but unfortunately it is also supported for context-free and as a result passes both parsing and the new statix static analysis.
An error (Spoofax 2 behavior).
Messages of ./:
ERROR: Could not check Stratego because it could not be configured
Exception of message: mb.spoofax.lwb.compiler.stratego.StrategoConfigureExceptions$Sdf3SignatureGenerateFail: SDF3 to signature generator failed
Caused by: mb.stratego.common.StrategoExceptions$StrategyFail: Invoking Stratego strategy 'pp-stratego-string' failed
SDF3 files in subdirectories can cause the parenthesizer file to not import the correct signatures, causing build errors.
Put syntax in subdirectories and build the language project.
Building to succeed.
Build fails with errors in in the generated parenthesizer file.
Commit from student that reproduces the problem: https://gitlab.ewi.tudelft.nl/CS4200/2021-2022/student-njkyu/-/commit/44d4d4f09f161a5702dbc17afdce8db7625468de
Using string or character literals in context-free syntax causes the build to fail on signature generation. Such as the following example:
module start
context-free start-symbols
Start
context-free sorts
Start
Word
context-free syntax
Start.Empty = <>
Start.Program = Word*
Word.Hello = "Hello" // Does not work
Word.World = <World> // Templates do work
syntax
Word-CF.DoubleQuotedWord = "\"" Word-CF "\"" // Does not work
Word-CF.QuotedWord = QUOTE-CF Word-CF QUOTE-CF // Does work
lexical sorts
QUOTE
lexical syntax
QUOTE = "'"
LAYOUT = [\ \n\v\f\r]
context-free restrictions
LAYOUT? -/- [\ \n\v\f\r]
This example produces the following error (Note the occurences of nabl2.Var("./src/start.sdf3", "y_1-..."){OfSort(SORT("TYPE"))}
in the AST):
ERROR: Could not check Stratego because it could not be configured
Exception of message: mb.spoofax.lwb.compiler.stratego.StrategoConfigureExceptions$Sdf3SignatureGenerateFail: SDF3 to signature generator failed
Caused by: mb.stratego.common.StrategoExceptions$StrategyFail: Invoking Stratego strategy 'pp-stratego-string' failed
Stratego stack trace:
abox2text_list_1_2
abox2text_1_2
abox2text_0_1
box2text_string_0_1
pp_stratego_string_0_0
pp_stratego_string_0_0
Stratego input term:
Module(
"signatures/start-sig"
, [ Imports([Import("libstratego-lib")])
, Signature(
[ Sorts([SortNoArgs("Start"{TermIndex("./src/start.sdf3", 12)}), SortNoArgs("Word"{TermIndex("./src/start.sdf3", 14)})]{TermIndex("./src/start.sdf3", 19)})
, Sorts([SortNoArgs("QUOTE"{TermIndex("./src/start.sdf3", 154)})]{TermIndex("./src/start.sdf3", 158)})
, Constructors(
[ OpDecl("Empty"{TermIndex("./src/start.sdf3", 24)}, ConstType(SortNoArgs("Start"{TermIndex("./src/start.sdf3", 22)})))
, OpDecl(
"Program"{TermIndex("./src/start.sdf3", 41)}
, FunType(
[ConstType(Sort("List", [ConstType(SortNoArgs("Word"{TermIndex("./src/start.sdf3", 72)}))]))]
, ConstType(SortNoArgs("Start"{TermIndex("./src/start.sdf3", 39)}))
)
)
, OpDecl(
"Hello"{TermIndex("./src/start.sdf3", 58)}
, FunType([nabl2.Var("./src/start.sdf3", "y_1-225"){OfSort(SORT("TYPE"))}], ConstType(SortNoArgs("Word"{TermIndex("./src/start.sdf3", 56)})))
)
, OpDecl("World"{TermIndex("./src/start.sdf3", 74)}, ConstType(SortNoArgs("Word"{TermIndex("./src/start.sdf3", 72)})))
, OpDecl("Start-Plhdr", ConstType(SortNoArgs("Start")))
, OpDecl("Word-Plhdr", ConstType(SortNoArgs("Word")))
, OpDecl(
"Start-Plhdr"
, FunType([ConstType(SortNoArgs("COMPLETION-INSERTION"))], ConstType(SortNoArgs("Start")))
)
, OpDecl(
"Word-Plhdr"
, FunType([ConstType(SortNoArgs("COMPLETION-INSERTION"))], ConstType(SortNoArgs("Word")))
)
, OpDecl("Start-Opt-Plhdr", ConstType(SortNoArgs("Start")))
, OpDecl("Word-Opt-Plhdr", ConstType(SortNoArgs("Word")))
, OpDecl(
"DoubleQuotedWord"{TermIndex("./src/start.sdf3", 103)}
, FunType(
[nabl2.Var("./src/start.sdf3", "y_1-139"){OfSort(SORT("TYPE"))}, ConstType(SortNoArgs("Word"{TermIndex("./src/start.sdf3", 72)})), nabl2.Var("./src/start.sdf3", "y_1-147"){OfSort(SORT("TYPE"))}]
, ConstType(SortNoArgs("Word"{TermIndex("./src/start.sdf3", 100)}))
)
)
, OpDecl(
"QuotedWord"{TermIndex("./src/start.sdf3", 126)}
, FunType(
[ConstType(SortNoArgs("QUOTE"{TermIndex("./src/start.sdf3", 161)})), ConstType(SortNoArgs("Word"{TermIndex("./src/start.sdf3", 72)})), ConstType(SortNoArgs("QUOTE"{TermIndex("./src/start.sdf3", 161)}))]
, ConstType(SortNoArgs("Word"{TermIndex("./src/start.sdf3", 123)}))
)
)
, OpDecl("Word-Plhdr", ConstType(SortNoArgs("Word")))
, OpDecl("QUOTE-Plhdr", ConstType(SortNoArgs("QUOTE")))
, OpDecl(
"Word-Plhdr"
, FunType([ConstType(SortNoArgs("COMPLETION-INSERTION"))], ConstType(SortNoArgs("Word")))
)
, OpDecl(
"QUOTE-Plhdr"
, FunType([ConstType(SortNoArgs("COMPLETION-INSERTION"))], ConstType(SortNoArgs("QUOTE")))
)
, OpDeclInj(FunType([SortVar("string")], ConstType(SortNoArgs("QUOTE"{TermIndex("./src/start.sdf3", 161)}))))
]
)
]
)
]
)
Continuous commands, such as "Show parsed AST (continuous)" stop updating for dynamically loaded languages after reloading the language. This is annoying, because most of the time we want to check the result of a continuous command after rebuilding a language.
Run a continuous debugging command, change and rebuild the language.
The command to run and show new feedback after rebuilding the language.
The command is not updated any more, until it is initiated again.
The continuous command is initially observed in the PIE instance of the dynamically loaded language. After rebuilding the language, if the PIE store of that dynamically loaded language is thrown away, the task does not exist any more and hence it is not re-executed.
If we serialize the PIE store of the language on unload, and deserialize it again on reload, the task does still exist and is still observed. However, to re-execute all affected tasks (including continuous commands), we must run a bottom-up build on the PIE instance of the language after reloading it, with the resources that were provided during the build of that language. The DynamicLoadingTest
does this, and this should be implemented in the Eclipse LWB plugin as well.
A deadlock can occur sometimes when invoking hover/reference resolution in the Eclipse LWB.
Build a language and then invoke hover/reference resolution.
No deadlock to occur.
A deadlock occurs.
Thread dump: https://gist.github.com/Gohla/661524b25904b5010f3ddd98525a2057
The dump indicates that both the:
Sdf3GetSourceFiles
task), and this lock is probably locked because the Spoofax LWB builder thread holds a lock on the entire project.It is unclear to me why the builder thread is stuck waiting on the console.
Updating the Eclipse LWB plugin and then building a language project causes unexpected/weird build errors.
Update the Eclipse LWB plugin to a newer version, and then build the language project.
Building to succeed.
Building fails with a PIE exception, such as hidden dependencies, overlapping provided files, etc.
Updating Spoofax may change the equals
/hashCode
of certain objects, which may influence the build and make it go wrong. It can also happen that deserializing an older serialized state may cause wierd errors.
This line in build.gradle.kts
is not honored:
languageEclipseProject {
adapterProject.set(project(":tiger.spoofax3"))
}
Instead, it falls back to the default, depending on :tiger
.
Override the adapter project with a name other than just the project name :tiger
:
languageEclipseProject {
adapterProject.set(project(":tiger.spoofax3"))
}
I expected it to depend on :tiger.spoofax3
, not :tiger
.
I get an exception when importing the Gradle file in Intellij:
A problem occurred configuring project ':spoofax3.example.root:tiger.spoofax3.eclipse'.
> Project with path ':tiger' could not be found in project ':spoofax3.example.root:tiger.spoofax3.eclipse'.
* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Exception is:
org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':spoofax3.example.root:tiger.spoofax3.eclipse'.
at org.gradle.configuration.project.LifecycleProjectEvaluator.wrapException(LifecycleProjectEvaluator.java:75)
at org.gradle.configuration.project.LifecycleProjectEvaluator.addConfigurationFailure(LifecycleProjectEvaluator.java:68)
at org.gradle.configuration.project.LifecycleProjectEvaluator.access$400(LifecycleProjectEvaluator.java:51)
at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate.run(LifecycleProjectEvaluator.java:191)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.lambda$run$0(LifecycleProjectEvaluator.java:105)
at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.lambda$applyToMutableState$0(DefaultProjectStateRegistry.java:250)
at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.lambda$withProjectLock$3(DefaultProjectStateRegistry.java:310)
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:213)
at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withProjectLock(DefaultProjectStateRegistry.java:310)
at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.fromMutableState(DefaultProjectStateRegistry.java:291)
at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.applyToMutableState(DefaultProjectStateRegistry.java:249)
at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.run(LifecycleProjectEvaluator.java:91)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:63)
at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:721)
at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:151)
at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:41)
at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:69)
at org.gradle.configuration.DefaultProjectsPreparer.prepareProjects(DefaultProjectsPreparer.java:46)
at org.gradle.configuration.BuildTreePreparingProjectsPreparer.prepareProjects(BuildTreePreparingProjectsPreparer.java:56)
at org.gradle.configuration.BuildOperationFiringProjectsPreparer$ConfigureBuild.run(BuildOperationFiringProjectsPreparer.java:52)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
at org.gradle.configuration.BuildOperationFiringProjectsPreparer.prepareProjects(BuildOperationFiringProjectsPreparer.java:40)
at org.gradle.initialization.DefaultGradleLauncher.prepareProjects(DefaultGradleLauncher.java:226)
at org.gradle.initialization.DefaultGradleLauncher.doClassicBuildStages(DefaultGradleLauncher.java:163)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:148)
at org.gradle.initialization.DefaultGradleLauncher.getConfiguredBuild(DefaultGradleLauncher.java:113)
at org.gradle.composite.internal.DefaultIncludedBuild.getConfiguredBuild(DefaultIncludedBuild.java:167)
at org.gradle.composite.internal.DefaultIncludedBuild_Decorated.getConfiguredBuild(Unknown Source)
at org.gradle.composite.internal.DefaultIncludedBuild.getBuild(DefaultIncludedBuild.java:172)
at org.gradle.composite.internal.DefaultIncludedBuild_Decorated.getBuild(Unknown Source)
at org.gradle.composite.internal.AbstractCompositeParticipantBuildState.getAvailableModules(AbstractCompositeParticipantBuildState.java:44)
at org.gradle.composite.internal.DefaultIncludedBuild_Decorated.getAvailableModules(Unknown Source)
at org.gradle.composite.internal.IncludedBuildDependencySubstitutionsBuilder.build(IncludedBuildDependencySubstitutionsBuilder.java:62)
at org.gradle.composite.internal.DefaultIncludedBuildRegistry.registerSubstitutions(DefaultIncludedBuildRegistry.java:180)
at org.gradle.composite.internal.DefaultIncludedBuildRegistry.beforeConfigureRootBuild(DefaultIncludedBuildRegistry.java:160)
at org.gradle.configuration.BuildTreePreparingProjectsPreparer.prepareProjects(BuildTreePreparingProjectsPreparer.java:51)
at org.gradle.configuration.BuildOperationFiringProjectsPreparer$ConfigureBuild.run(BuildOperationFiringProjectsPreparer.java:52)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
at org.gradle.configuration.BuildOperationFiringProjectsPreparer.prepareProjects(BuildOperationFiringProjectsPreparer.java:40)
at org.gradle.initialization.DefaultGradleLauncher.prepareProjects(DefaultGradleLauncher.java:226)
at org.gradle.initialization.DefaultGradleLauncher.doClassicBuildStages(DefaultGradleLauncher.java:163)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:148)
at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:124)
at org.gradle.internal.invocation.GradleBuildController$1.create(GradleBuildController.java:72)
at org.gradle.internal.invocation.GradleBuildController$1.create(GradleBuildController.java:67)
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:213)
at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:67)
at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:56)
at org.gradle.tooling.internal.provider.runner.AbstractClientProvidedBuildActionRunner.runClientAction(AbstractClientProvidedBuildActionRunner.java:53)
at org.gradle.tooling.internal.provider.runner.ClientProvidedPhasedActionRunner.run(ClientProvidedPhasedActionRunner.java:47)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:63)
at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
at org.gradle.tooling.internal.provider.FileSystemWatchingBuildActionRunner.run(FileSystemWatchingBuildActionRunner.java:77)
at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:41)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:49)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:44)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:44)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.lambda$execute$0(InProcessBuildActionExecuter.java:54)
at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:86)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:53)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:29)
at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.lambda$execute$0(BuildTreeScopeLifecycleBuildActionExecuter.java:33)
at org.gradle.internal.buildtree.BuildTreeState.run(BuildTreeState.java:49)
at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.execute(BuildTreeScopeLifecycleBuildActionExecuter.java:32)
at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.execute(BuildTreeScopeLifecycleBuildActionExecuter.java:27)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:104)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:55)
at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:64)
at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:37)
at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildActionExecuter.lambda$execute$0(SessionScopeLifecycleBuildActionExecuter.java:54)
at org.gradle.internal.session.BuildSessionState.run(BuildSessionState.java:67)
at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildActionExecuter.execute(SessionScopeLifecycleBuildActionExecuter.java:50)
at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildActionExecuter.execute(SessionScopeLifecycleBuildActionExecuter.java:36)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:59)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:55)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:41)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:47)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:31)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:65)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:39)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:29)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:35)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:78)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:75)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:75)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:84)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: org.gradle.api.UnknownProjectException: Project with path ':tiger' could not be found in project ':spoofax3.example.root:tiger.spoofax3.eclipse'.
at org.gradle.api.internal.project.DefaultProject.project(DefaultProject.java:657)
at org.gradle.internal.service.scopes.DefaultProjectFinder.getProject(DefaultProjectFinder.java:33)
at org.gradle.api.internal.notations.ProjectDependencyFactory$ProjectDependencyMapNotationConverter.parseMap(ProjectDependencyFactory.java:55)
at jdk.internal.reflect.GeneratedMethodAccessor170.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.gradle.internal.typeconversion.MapNotationConverter.parseType(MapNotationConverter.java:93)
at org.gradle.internal.typeconversion.MapNotationConverter.parseType(MapNotationConverter.java:40)
at org.gradle.internal.typeconversion.TypedNotationConverter.convert(TypedNotationConverter.java:43)
at org.gradle.internal.typeconversion.NotationConverterToNotationParserAdapter.parseNotation(NotationConverterToNotationParserAdapter.java:31)
at org.gradle.internal.typeconversion.JustReturningParser.parseNotation(JustReturningParser.java:40)
at org.gradle.internal.typeconversion.ErrorHandlingNotationParser.parseNotation(ErrorHandlingNotationParser.java:48)
at org.gradle.api.internal.notations.ProjectDependencyFactory.createFromMap(ProjectDependencyFactory.java:38)
at org.gradle.api.internal.artifacts.DefaultDependencyFactory.createProjectDependencyFromMap(DefaultDependencyFactory.java:99)
at org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.project(DefaultDependencyHandler.java:223)
at org.gradle.kotlin.dsl.DependencyHandlerExtensionsKt.project(DependencyHandlerExtensions.kt:232)
at org.gradle.kotlin.dsl.DependencyHandlerExtensionsKt.project$default(DependencyHandlerExtensions.kt:227)
at mb.spoofax.compiler.gradle.UtilKt$toGradleDependency$1.apply(Util.kt:126)
at mb.spoofax.compiler.gradle.UtilKt$toGradleDependency$1.apply(Util.kt)
at mb.spoofax.compiler.util.GradleDependencies$LambdaCases.project(GradleDependencies.java:80)
at mb.spoofax.compiler.util.GradleDependencies$Project.match(GradleDependencies.java:103)
at mb.spoofax.compiler.util.GradleDependencies$CaseOfMatchers$TotalMatcher_Files.files(GradleDependencies.java:357)
at mb.spoofax.compiler.gradle.UtilKt.toGradleDependency(Util.kt:128)
at mb.spoofax.compiler.gradle.plugin.EclipsePluginKt$configureBundleDependencies$1$$special$$inlined$forEach$lambda$3.apply(EclipsePlugin.kt:181)
at mb.spoofax.compiler.gradle.plugin.EclipsePluginKt$configureBundleDependencies$1$$special$$inlined$forEach$lambda$3.apply(EclipsePlugin.kt)
at mb.spoofax.compiler.util.GradleConfiguredBundleDependencies$LambdaCases.bundleEmbedApi(GradleConfiguredBundleDependencies.java:142)
at mb.spoofax.compiler.util.GradleConfiguredBundleDependencies$BundleEmbedApi.match(GradleConfiguredBundleDependencies.java:236)
at mb.spoofax.compiler.util.GradleConfiguredBundleDependencies$CaseOfMatchers$TotalMatcher_BundleTargetPlatformImplementation.bundleTargetPlatformImplementation(GradleConfiguredBundleDependencies.java:805)
at mb.spoofax.compiler.gradle.plugin.EclipsePluginKt$configureBundleDependencies$1.invoke(EclipsePlugin.kt:184)
at mb.spoofax.compiler.gradle.plugin.EclipsePluginKt$configureBundleDependencies$1.invoke(EclipsePlugin.kt)
at mb.spoofax.compiler.gradle.plugin.EclipsePluginKt.configureBundleDependencies(EclipsePlugin.kt:191)
at mb.spoofax.compiler.gradle.plugin.EclipsePlugin.configureBundle(EclipsePlugin.kt:145)
at mb.spoofax.compiler.gradle.plugin.EclipsePlugin.configure(EclipsePlugin.kt:92)
at mb.spoofax.compiler.gradle.plugin.EclipsePlugin.access$configure(EclipsePlugin.kt:67)
at mb.spoofax.compiler.gradle.plugin.EclipsePlugin$apply$1$1.invoke(EclipsePlugin.kt:78)
at mb.spoofax.compiler.gradle.plugin.EclipsePlugin$apply$1$1.invoke(EclipsePlugin.kt:67)
at mb.spoofax.compiler.gradle.plugin.LanguagePluginKt.whenAllLanguageProjectsFinalized(LanguagePlugin.kt:145)
at mb.spoofax.compiler.gradle.plugin.LanguagePluginKt$whenLanguageProjectFinalized$1.invoke(LanguagePlugin.kt:139)
at mb.spoofax.compiler.gradle.plugin.LanguagePluginKt$whenLanguageProjectFinalized$1.invoke(LanguagePlugin.kt)
at mb.spoofax.compiler.gradle.UtilKt.whenFinalized(Util.kt:37)
at mb.spoofax.compiler.gradle.plugin.LanguagePluginKt.whenLanguageProjectFinalized(LanguagePlugin.kt:136)
at mb.spoofax.compiler.gradle.plugin.AdapterPluginKt$whenAdapterProjectFinalized$1.invoke(AdapterPlugin.kt:81)
at mb.spoofax.compiler.gradle.plugin.AdapterPluginKt$whenAdapterProjectFinalized$1.invoke(AdapterPlugin.kt)
at mb.spoofax.compiler.gradle.UtilKt.whenFinalized(Util.kt:37)
at mb.spoofax.compiler.gradle.plugin.AdapterPluginKt.whenAdapterProjectFinalized(AdapterPlugin.kt:78)
at mb.spoofax.compiler.gradle.plugin.EclipsePlugin$apply$1.execute(EclipsePlugin.kt:76)
at mb.spoofax.compiler.gradle.plugin.EclipsePlugin$apply$1.execute(EclipsePlugin.kt:67)
at org.gradle.configuration.internal.DefaultUserCodeApplicationContext$CurrentApplication$1.execute(DefaultUserCodeApplicationContext.java:100)
at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction$1.run(DefaultListenerBuildOperationDecorator.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction.execute(DefaultListenerBuildOperationDecorator.java:150)
at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:95)
at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:83)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:43)
at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:245)
at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:157)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:61)
at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:346)
at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:249)
at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:141)
at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:37)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
at com.sun.proxy.$Proxy40.afterEvaluate(Unknown Source)
at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate$1.execute(LifecycleProjectEvaluator.java:183)
at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate$1.execute(LifecycleProjectEvaluator.java:180)
at org.gradle.api.internal.project.DefaultProject.stepEvaluationListener(DefaultProject.java:1465)
at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate.run(LifecycleProjectEvaluator.java:189)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.lambda$run$0(LifecycleProjectEvaluator.java:105)
at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.lambda$applyToMutableState$0(DefaultProjectStateRegistry.java:250)
at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.lambda$withProjectLock$3(DefaultProjectStateRegistry.java:310)
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:213)
at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.withProjectLock(DefaultProjectStateRegistry.java:310)
at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.fromMutableState(DefaultProjectStateRegistry.java:291)
at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.applyToMutableState(DefaultProjectStateRegistry.java:249)
at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.run(LifecycleProjectEvaluator.java:91)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:63)
at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:721)
at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:151)
at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:41)
at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:69)
at org.gradle.configuration.DefaultProjectsPreparer.prepareProjects(DefaultProjectsPreparer.java:46)
at org.gradle.configuration.BuildTreePreparingProjectsPreparer.prepareProjects(BuildTreePreparingProjectsPreparer.java:56)
at org.gradle.configuration.BuildOperationFiringProjectsPreparer$ConfigureBuild.run(BuildOperationFiringProjectsPreparer.java:52)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
at org.gradle.configuration.BuildOperationFiringProjectsPreparer.prepareProjects(BuildOperationFiringProjectsPreparer.java:40)
at org.gradle.initialization.DefaultGradleLauncher.prepareProjects(DefaultGradleLauncher.java:226)
at org.gradle.initialization.DefaultGradleLauncher.doClassicBuildStages(DefaultGradleLauncher.java:163)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:148)
at org.gradle.initialization.DefaultGradleLauncher.getConfiguredBuild(DefaultGradleLauncher.java:113)
at org.gradle.composite.internal.DefaultIncludedBuild.getConfiguredBuild(DefaultIncludedBuild.java:167)
at org.gradle.composite.internal.DefaultIncludedBuild_Decorated.getConfiguredBuild(Unknown Source)
at org.gradle.composite.internal.DefaultIncludedBuild.getBuild(DefaultIncludedBuild.java:172)
at org.gradle.composite.internal.DefaultIncludedBuild_Decorated.getBuild(Unknown Source)
at org.gradle.composite.internal.AbstractCompositeParticipantBuildState.getAvailableModules(AbstractCompositeParticipantBuildState.java:44)
at org.gradle.composite.internal.DefaultIncludedBuild_Decorated.getAvailableModules(Unknown Source)
at org.gradle.composite.internal.IncludedBuildDependencySubstitutionsBuilder.build(IncludedBuildDependencySubstitutionsBuilder.java:62)
at org.gradle.composite.internal.DefaultIncludedBuildRegistry.registerSubstitutions(DefaultIncludedBuildRegistry.java:180)
at org.gradle.composite.internal.DefaultIncludedBuildRegistry.beforeConfigureRootBuild(DefaultIncludedBuildRegistry.java:160)
at org.gradle.configuration.BuildTreePreparingProjectsPreparer.prepareProjects(BuildTreePreparingProjectsPreparer.java:51)
at org.gradle.configuration.BuildOperationFiringProjectsPreparer$ConfigureBuild.run(BuildOperationFiringProjectsPreparer.java:52)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
at org.gradle.configuration.BuildOperationFiringProjectsPreparer.prepareProjects(BuildOperationFiringProjectsPreparer.java:40)
at org.gradle.initialization.DefaultGradleLauncher.prepareProjects(DefaultGradleLauncher.java:226)
at org.gradle.initialization.DefaultGradleLauncher.doClassicBuildStages(DefaultGradleLauncher.java:163)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:148)
at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:124)
at org.gradle.internal.invocation.GradleBuildController$1.create(GradleBuildController.java:72)
at org.gradle.internal.invocation.GradleBuildController$1.create(GradleBuildController.java:67)
at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:213)
at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:67)
at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:56)
at org.gradle.tooling.internal.provider.runner.AbstractClientProvidedBuildActionRunner.runClientAction(AbstractClientProvidedBuildActionRunner.java:53)
at org.gradle.tooling.internal.provider.runner.ClientProvidedPhasedActionRunner.run(ClientProvidedPhasedActionRunner.java:47)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:63)
at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
at org.gradle.tooling.internal.provider.FileSystemWatchingBuildActionRunner.run(FileSystemWatchingBuildActionRunner.java:77)
at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:41)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:49)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:44)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:44)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.lambda$execute$0(InProcessBuildActionExecuter.java:54)
at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:86)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:53)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:29)
at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.lambda$execute$0(BuildTreeScopeLifecycleBuildActionExecuter.java:33)
at org.gradle.internal.buildtree.BuildTreeState.run(BuildTreeState.java:49)
at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.execute(BuildTreeScopeLifecycleBuildActionExecuter.java:32)
at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.execute(BuildTreeScopeLifecycleBuildActionExecuter.java:27)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:104)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:55)
at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:64)
at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:37)
at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildActionExecuter.lambda$execute$0(SessionScopeLifecycleBuildActionExecuter.java:54)
at org.gradle.internal.session.BuildSessionState.run(BuildSessionState.java:67)
at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildActionExecuter.execute(SessionScopeLifecycleBuildActionExecuter.java:50)
at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildActionExecuter.execute(SessionScopeLifecycleBuildActionExecuter.java:36)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:59)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:55)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:41)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:47)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:31)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:65)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:39)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:29)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:35)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:78)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:75)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:75)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:84)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
The WebDSL syntax is spread across about 30 files. Changing any of the files results in the notification:
The user is waiting for "SDF3 editor update" to complete
Which takes about 10 seconds to disappear. Subsequently, I can type a bit, but when I save or type in a different file, the notification appears again for a while.
I am editing the attached WebDSL project in Spoofax 3.
I expected the editor to not interfere with normal usage.
I have to wait a lot.
Project in which this occurs:
๐ webdsl.zip
After the initial compilation, recompilation of Spoofax 3 fails with a hundred of these errors:
> Task :pie.lang.root:pie.lang.test:compileTestJava
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/unary/toNullable/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.unary.toNullable.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/unary/notFalse/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.unary.notFalse.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
It also makes the build extremely slow.
Invoke the build:
./gradlew buildAll --info --stacktrace
The build should succeed.
The build fails with a hundred of these errors.
Apparently this issue sometimes pops up with Dagger, see here and here. Supposedly with Maven (but also Gradle), in both Intellij and Eclipse:
The maven-compiler-plugin adds the generated sources to the sources passed to the compiler, so compilation can only run once without error; afterwards, a file generated by Dagger will be fed as a source (like all your src/main/java) to JavaC, and compilation will fail when Dagger will try to regenerate the file as JavaC will refuse to overwrite a source file.
I suspect there is a problem where something is already generated before the Dagger annotation processor starts to work.
Therefore, a workaround could be to delete the generated files before building. The following command in the pie
project deletes all untracked and ignored files and directories, and seems to help:
git clean -fdx
Full Gradle output:
> Task :pie.lang.root:pie.lang.test:compileTestJava
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/unary/toNullable/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.unary.toNullable.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/unary/notFalse/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.unary.notFalse.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/unary/toNonNullableValue/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.unary.toNonNullableValue.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/unary/notVarFalse/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.unary.notVarFalse.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/unary/toNonNullableNull/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.unary.toNonNullableNull.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/unary/notTrue/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.unary.notTrue.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/unary/toNullableVar/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.unary.toNullableVar.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/unary/notVarTrue/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.unary.notVarTrue.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/imports/subModule/importPartialModulePathForeignJava/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.imports.subModule.importPartialModulePathForeignJava.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/imports/subModule/importPartialModulePathRename/PieTestModule.java:16: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.imports.subModule.importPartialModulePathRename.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/imports/subModule/importFunctionRename/PieTestModule.java:16: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.imports.subModule.importFunctionRename.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/imports/subModule/importFullModulePathForeignPie/PieTestModule.java:16: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.imports.subModule.importFullModulePathForeignPie.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/imports/subModule/importFullModulePath/PieTestModule.java:16: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.imports.subModule.importFullModulePath.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/imports/subModule/importFullModulePathDataAssignment/PieTestModule.java:17: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.imports.subModule.importFullModulePathDataAssignment.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/imports/subModule/multiImportPseudoModule/PieTestModule.java:16: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.imports.subModule.multiImportPseudoModule.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/imports/subModule/importDataRename/PieTestModule.java:16: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.imports.subModule.importDataRename.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/imports/subModule/importFunction/PieTestModule.java:16: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.imports.subModule.importFunction.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/imports/subModule/importPartialModulePathData/PieTestModule.java:17: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.imports.subModule.importPartialModulePathData.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/imports/subModule/importPartialModulePath/PieTestModule.java:16: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.imports.subModule.importPartialModulePath.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/imports/subModule/importFullModulePathForeignJava/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.imports.subModule.importFullModulePathForeignJava.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/imports/subModule/importPartialModulePathForeignPie/PieTestModule.java:16: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.imports.subModule.importPartialModulePathForeignPie.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/imports/subModule/importFullyQualifiedData/PieTestModule.java:17: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.imports.subModule.importFullyQualifiedData.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/imports/subModule/importFullyQualifiedForeignPie/PieTestModule.java:16: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.imports.subModule.importFullyQualifiedForeignPie.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/imports/subModule/importPartialModulePathPseudo/PieTestModule.java:16: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.imports.subModule.importPartialModulePathPseudo.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/imports/subModule/importFullyQualified/PieTestModule.java:16: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.imports.subModule.importFullyQualified.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/imports/subModule/importData/PieTestModule.java:16: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.imports.subModule.importData.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/imports/subModule/importDataPseudoModule/PieTestModule.java:16: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.imports.subModule.importDataPseudoModule.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/imports/subModule/importFunctionPseudoModule/PieTestModule.java:16: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.imports.subModule.importFunctionPseudoModule.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/imports/subModule/multiImport/PieTestModule.java:16: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.imports.subModule.multiImport.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/imports/subModule/importFullModulePathData/PieTestModule.java:17: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.imports.subModule.importFullModulePathData.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/imports/subModule/importFullyQualifiedForeignJava/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.imports.subModule.importFullyQualifiedForeignJava.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/foreignFunc/constructor/twoParam/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.foreignFunc.constructor.twoParam.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/foreignFunc/constructor/singleParam/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.foreignFunc.constructor.singleParam.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/foreignFunc/constructor/threeParam/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.foreignFunc.constructor.threeParam.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/foreignFunc/constructor/nullary/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.foreignFunc.constructor.nullary.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/supplier/createAndGet/typeInt/PieTestModule.java:16: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.supplier.createAndGet.typeInt.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/supplier/createAndGet/nested/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.supplier.createAndGet.nested.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/supplier/createAndGet/typeString/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.supplier.createAndGet.typeString.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/supplier/inputSupplier/inputFromPiePassAlong/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.supplier.inputSupplier.inputFromPiePassAlong.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/supplier/inputSupplier/inputFromPieCreate/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.supplier.inputSupplier.inputFromPieCreate.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/supplier/inputSupplier/inputFromTest/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.supplier.inputSupplier.inputFromTest.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/supplier/fromTaskAndGet/helloName/PieTestModule.java:17: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.supplier.fromTaskAndGet.helloName.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/supplier/fromTaskAndGet/foreignTask/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.supplier.fromTaskAndGet.foreignTask.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/supplier/fromTaskAndGet/tripleInt/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.supplier.fromTaskAndGet.tripleInt.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/supplier/fromTaskAndGet/fullyQualifiedSupplier/PieTestModule.java:16: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.supplier.fromTaskAndGet.fullyQualifiedSupplier.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/variables/variableTupleDecompositionMixedType/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.variables.variableTupleDecompositionMixedType.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/variables/variableTupleAssignment/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.variables.variableTupleAssignment.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/variables/variableImplicitType/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.variables.variableImplicitType.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/variables/variableTupleDecompositionImplicitType/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.variables.variableTupleDecompositionImplicitType.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/variables/variableTupleDecompositionExplicitType/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.variables.variableTupleDecompositionExplicitType.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/variables/variableExplicitType/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.variables.variableExplicitType.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/funcDef/oneFunc/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.funcDef.oneFunc.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/funcDef/emptyFile/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.funcDef.emptyFile.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs() {
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/funcDef/twoFuncRecursive/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.funcDef.twoFuncRecursive.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/funcDef/twoFuncLinear/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.funcDef.twoFuncLinear.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/funcDef/twoFuncUnused/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.funcDef.twoFuncUnused.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/land/landFalseFalse/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.land.landFalseFalse.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/land/landTrueTrue/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.land.landTrueTrue.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/land/landFalseTrue/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.land.landFalseTrue.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/land/landTrueFalse/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.land.landTrueFalse.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/eq/eqPathDifferent/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.eq.eqPathDifferent.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/eq/eqListEqualEmpty/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.eq.eqListEqualEmpty.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/eq/eqStringDifferent/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.eq.eqStringDifferent.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/eq/eqTupleDifferent/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.eq.eqTupleDifferent.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/eq/eqBoolEqual/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.eq.eqBoolEqual.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/eq/eqPathEqual/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.eq.eqPathEqual.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/eq/eqTupleEqual/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.eq.eqTupleEqual.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/eq/eqDataDifferent/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.eq.eqDataDifferent.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/eq/eqNullableIntDifferent/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.eq.eqNullableIntDifferent.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/eq/eqBoolDifferent/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.eq.eqBoolDifferent.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/eq/eqListDifferentElements/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.eq.eqListDifferentElements.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/eq/eqListDifferentSize/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.eq.eqListDifferentSize.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/eq/eqNullableIntNull/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.eq.eqNullableIntNull.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/eq/eqStringEqual/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.eq.eqStringEqual.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/eq/eqIntEqual/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.eq.eqIntEqual.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/eq/eqIntDifferent/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.eq.eqIntDifferent.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/eq/eqNullableIntEqual/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.eq.eqNullableIntEqual.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/eq/eqListEqual/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.eq.eqListEqual.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/eq/eqDataEqual/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.eq.eqDataEqual.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/add/addIntInt/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.add.addIntInt.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/add/addStrData/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.add.addStrData.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/add/addListList/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.add.addListList.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/add/addStrNullableIntValue/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.add.addStrNullableIntValue.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/add/addPathPathRelativeAbsolute/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.add.addPathPathRelativeAbsolute.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/add/addStrBool/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.add.addStrBool.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/add/addStrList/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.add.addStrList.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/add/addStrNullableIntNull/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.add.addStrNullableIntNull.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/add/addPathPathAbsoluteRelative/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.add.addPathPathAbsoluteRelative.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/add/addPathPathRelativeRelative/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.add.addPathPathRelativeRelative.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/add/addListElem/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.add.addListElem.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/add/addStrPath/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.add.addStrPath.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/add/addStrStr/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.add.addStrStr.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/add/addPathPathAbsoluteAbsolute/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.add.addPathPathAbsoluteAbsolute.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/add/addPathStr/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.add.addPathStr.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/add/addStrInt/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.add.addStrInt.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/add/addStrUnit/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.add.addStrUnit.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/add/addStrTuple/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.add.addStrTuple.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/lor/lorTrueTrue/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.lor.lorTrueTrue.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/lor/lorFalseFalse/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.lor.lorFalseFalse.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
/Users/daniel/repos/spoofax3/devenv-cc-sept-21-2/pie/lang/lang.test/src/test/java/mb/pie/lang/test/binary/lor/lorFalseTrue/PieTestModule.java:15: error: Could not generate unknown file: Attempt to recreate a file for type mb.pie.lang.test.binary.lor.lorFalseTrue.PieTestModule_ProvideTaskDefsFactory.
public static Set<TaskDef<?, ?>> provideTaskDefs(
^
100 errors
> Task :pie.lang.root:pie.lang.test:compileTestJava FAILED
:pie.lang.root:pie.lang.test:compileTestJava (Thread[included builds Thread 14,5,main]) completed. Took 7.603 secs.
In this project, if a variable used in a test or cpy
file, then the editor hangs on updating.
In the above project define a test such as the following:
test variable [[
abcdef
]] analysis succeeds
An error appears at analysis succeeds
, since the variable is undefined
The SPT update job hangs indefinitely.
I haven't tried reproducing the bug myself (a student showed me the issue). If I find anything noteworthy, then I'll update the bug report.
Starting Eclipse with embedded JVM on Linux fails with a long and confusing error. This is due to the java
executable not having executable permission, probably due to that bit not being copied when unarchiving the JVM when creating the installer, or that bit not being copied into the new archive.
Start Eclipse with embedded JVM on Linux.
Eclipse to start.
A long and confusing error popup appears.
I changed the .cfg
of my Tiger language to use JSGLR2 instead of JSGLR1, rebuilt and restarted the LWB, and PIE fails to compile the new language, giving this error:
ValidationException: Visited task with same key was required with different input in same session.
I changed the parser configuration of my Tiger pure Spoofax 3 project from:
parser {
default-start-symbol = sort Module
variant = jsglr1
}
to
parser {
default-start-symbol = sort Module
variant = jsglr2 { }
}
I did some other things in between, which is why I rebuilt and restarted the LWB. The Tiger language was loaded again, and PIE gave the above error on build.
I expected PIE to recognize that the configuration has changed, and rerun the appropriate tasks. I suspect PIE has serialized some state that is now incorrect.
I got this error:
11:34:12.354 | DEBUG | โ mb.spoofax.compiler.adapter.AdapterProjectCompiler(AdapterProjectInputSupplier(mb.cfg.task.CfgRootDirectoryToObject(eclipse-resource##/tiger))) (reason: directly or indirectly affected by change)
11:34:12.361 | DEBUG | โ mb.pie.runtime.layer.ValidationException: Visited task with same key was required with different input in same session.
mb.pie.runtime.layer.ValidationException: Visited task with same key was required with different input in same session. Cause:
task with key
#mb.spoofax.compiler.adapter.ParserAdapterCompiler(eclipse-resource##/tiger)
was already visited with input
Input{..., languageProjectInput=Input{..., variant=jsglr1(), ...}, ...}
while now required with input
Input{..., languageProjectInput=Input{..., variant=jsglr2(Recovery), ...}, ...}
at mb.pie.runtime.layer.ValidationLayer.error(ValidationLayer.java:466)
at mb.pie.runtime.layer.ValidationLayer.validateVisited(ValidationLayer.java:187)
at mb.pie.runtime.exec.BottomUpRunner.getData(BottomUpRunner.java:201)
at mb.pie.runtime.exec.BottomUpRunner.require(BottomUpRunner.java:185)
at mb.pie.runtime.exec.ExecContextImpl.require(ExecContextImpl.java:110)
at mb.pie.runtime.exec.ExecContextImpl.require(ExecContextImpl.java:90)
at mb.spoofax.compiler.adapter.AdapterProjectCompiler.lambda$compile$1(AdapterProjectCompiler.java:134)
at java.base/java.util.Optional.ifPresent(Optional.java:183)
at mb.spoofax.compiler.adapter.AdapterProjectCompiler.compile(AdapterProjectCompiler.java:134)
at mb.spoofax.compiler.adapter.AdapterProjectCompiler.lambda$exec$0(AdapterProjectCompiler.java:125)
at mb.common.result.Result.mapThrowing(Result.java:294)
at mb.spoofax.compiler.adapter.AdapterProjectCompiler.exec(AdapterProjectCompiler.java:125)
at mb.spoofax.compiler.adapter.AdapterProjectCompiler.exec(AdapterProjectCompiler.java:47)
at mb.pie.api.Task.exec(Task.java:56)
at mb.pie.runtime.exec.TaskExecutor.execInternal(TaskExecutor.java:126)
at mb.pie.runtime.exec.TaskExecutor.exec(TaskExecutor.java:82)
at mb.pie.runtime.exec.BottomUpRunner.exec(BottomUpRunner.java:369)
at mb.pie.runtime.exec.BottomUpRunner.execAndSchedule(BottomUpRunner.java:133)
at mb.pie.runtime.exec.BottomUpRunner.execScheduled(BottomUpRunner.java:120)
at mb.pie.runtime.exec.BottomUpRunner.requireInitial(BottomUpRunner.java:83)
at mb.pie.runtime.MixedSessionImpl.lambda$updateAffectedBy$0(MixedSessionImpl.java:70)
at mb.pie.runtime.SessionImpl.handleException(SessionImpl.java:160)
at mb.pie.runtime.MixedSessionImpl.updateAffectedBy(MixedSessionImpl.java:70)
at mb.spoofax.lwb.eclipse.SpoofaxLwbBuilder.bottomUpBuild(SpoofaxLwbBuilder.java:192)
at mb.spoofax.lwb.eclipse.SpoofaxLwbBuilder.incrBuild(SpoofaxLwbBuilder.java:135)
Full error:
11:34:12.354 | DEBUG | Worker-23: Build Project | mb.pie.runtime.tracer.LoggingTracer | โ mb.spoofax.compiler.adapter.AdapterProjectCompiler(AdapterProjectInputSupplier(mb.cfg.task.CfgRootDirectoryToObject(eclipse-resource##/tiger))) (reason: directly or indirectly affected by change)
11:34:12.361 | DEBUG | Worker-23: Build Project | mb.pie.runtime.tracer.LoggingTracer | โ mb.pie.runtime.layer.ValidationException: Visited task with same key was required with different input in same session. Cause:\ntask with key\n #mb.spoofax.compiler.adapter.ParserAdapterCompiler(eclipse-resource##/tiger)\nwas already visited with input\n Input{classKind=Generated, baseParseTaskDef=TypeInfo{packageId=mb.tiger.task, id=TigerParse}, baseTokenizeTaskDef=TypeInfo{packageId=mb.tiger.task, id=TigerTokenize}, baseShowParsedAstTaskDef=TypeInfo{packageId=mb.tiger.task, id=TigerShowParsedAst}, showParsedAstCommand=CommandDefRepr{type=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedAstCommand}, taskDefType=TypeInfo{packageId=mb.tiger.task, id=TigerShowParsedAst}, argType=TypeInfo{packageId=mb.tiger.task, id=TigerShowParsedAst.Args}, displayName=Show parsed AST, description=Shows the parsed AST, supportedExecutionTypes=[ManualOnce, ManualContinuous, AutomaticContinuous], params=[ParamRepr{id=file, type=TypeInfo{packageId=mb.resource, id=ResourceKey}, required=true, providers=[context(ReadableRes...
mb.pie.runtime.layer.ValidationException: Visited task with same key was required with different input in same session. Cause:
task with key
#mb.spoofax.compiler.adapter.ParserAdapterCompiler(eclipse-resource##/tiger)
was already visited with input
Input{classKind=Generated, baseParseTaskDef=TypeInfo{packageId=mb.tiger.task, id=TigerParse}, baseTokenizeTaskDef=TypeInfo{packageId=mb.tiger.task, id=TigerTokenize}, baseShowParsedAstTaskDef=TypeInfo{packageId=mb.tiger.task, id=TigerShowParsedAst}, showParsedAstCommand=CommandDefRepr{type=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedAstCommand}, taskDefType=TypeInfo{packageId=mb.tiger.task, id=TigerShowParsedAst}, argType=TypeInfo{packageId=mb.tiger.task, id=TigerShowParsedAst.Args}, displayName=Show parsed AST, description=Shows the parsed AST, supportedExecutionTypes=[ManualOnce, ManualContinuous, AutomaticContinuous], params=[ParamRepr{id=file, type=TypeInfo{packageId=mb.resource, id=ResourceKey}, required=true, providers=[context(ReadableResource)]}]}, baseShowParsedTokensTaskDef=TypeInfo{packageId=mb.tiger.task, id=TigerShowParsedTokens}, showParsedTokensCommand=CommandDefRepr{type=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedTokensCommand}, taskDefType=TypeInfo{packageId=mb.tiger.task, id=TigerShowParsedTokens}, argType=TypeInfo{packageId=mb.tiger.task, id=TigerShowParsedTokens.Args}, displayName=Show parsed tokens, description=Shows the parsed tokens, supportedExecutionTypes=[ManualOnce, ManualContinuous, AutomaticContinuous], params=[ParamRepr{id=file, type=TypeInfo{packageId=mb.resource, id=ResourceKey}, required=true, providers=[context(ReadableResource)]}]}, mainMenu=menu(MenuRepr{displayName=Debug, items=[commandAction(CommandActionRepr{displayName=Show parsed AST, description=Shows the parsed AST, commandRequest=CommandRequestRepr{commandDefType=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedAstCommand}, executionType=ManualOnce, initialArgs={}}, requiredEditorSelectionTypes=[], requiredEditorFileTypes=[ReadableResource], requiredResourceTypes=[], requiredEnclosingResourceTypes=[]}), commandAction(CommandActionRepr{displayName=Show parsed AST (continuous), description=Shows the parsed AST, commandRequest=CommandRequestRepr{commandDefType=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedAstCommand}, executionType=ManualContinuous, initialArgs={}}, requiredEditorSelectionTypes=[], requiredEditorFileTypes=[ReadableResource], requiredResourceTypes=[], requiredEnclosingResourceTypes=[]}), commandAction(CommandActionRepr{displayName=Show parsed tokens, description=Shows the parsed tokens, commandRequest=CommandRequestRepr{commandDefType=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedTokensCommand}, executionType=ManualOnce, initialArgs={}}, requiredEditorSelectionTypes=[], requiredEditorFileTypes=[ReadableResource], requiredResourceTypes=[], requiredEnclosingResourceTypes=[]}), commandAction(CommandActionRepr{displayName=Show parsed tokens (continuous), description=Shows the parsed tokens, commandRequest=CommandRequestRepr{commandDefType=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedTokensCommand}, executionType=ManualContinuous, initialArgs={}}, requiredEditorSelectionTypes=[], requiredEditorFileTypes=[ReadableResource], requiredResourceTypes=[], requiredEnclosingResourceTypes=[]})]}), resourceContextMenu=menu(MenuRepr{displayName=Debug, items=[commandAction(CommandActionRepr{displayName=Show parsed AST, description=Shows the parsed AST, commandRequest=CommandRequestRepr{commandDefType=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedAstCommand}, executionType=ManualOnce, initialArgs={}}, requiredEditorSelectionTypes=[], requiredEditorFileTypes=[], requiredResourceTypes=[File], requiredEnclosingResourceTypes=[]}), commandAction(CommandActionRepr{displayName=Show parsed AST (continuous), description=Shows the parsed AST, commandRequest=CommandRequestRepr{commandDefType=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedAstCommand}, executionType=ManualContinuous, initialArgs={}}, requiredEditorSelectionTypes=[], requiredEditorFileTypes=[], requiredResourceTypes=[File], requiredEnclosingResourceTypes=[]}), commandAction(CommandActionRepr{displayName=Show parsed tokens, description=Shows the parsed tokens, commandRequest=CommandRequestRepr{commandDefType=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedTokensCommand}, executionType=ManualOnce, initialArgs={}}, requiredEditorSelectionTypes=[], requiredEditorFileTypes=[], requiredResourceTypes=[File], requiredEnclosingResourceTypes=[]}), commandAction(CommandActionRepr{displayName=Show parsed tokens (continuous), description=Shows the parsed tokens, commandRequest=CommandRequestRepr{commandDefType=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedTokensCommand}, executionType=ManualContinuous, initialArgs={}}, requiredEditorSelectionTypes=[], requiredEditorFileTypes=[], requiredResourceTypes=[File], requiredEnclosingResourceTypes=[]})]}), editorContextMenu=menu(MenuRepr{displayName=Debug, items=[commandAction(CommandActionRepr{displayName=Show parsed AST, description=Shows the parsed AST, commandRequest=CommandRequestRepr{commandDefType=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedAstCommand}, executionType=ManualOnce, initialArgs={}}, requiredEditorSelectionTypes=[], requiredEditorFileTypes=[ReadableResource], requiredResourceTypes=[], requiredEnclosingResourceTypes=[]}), commandAction(CommandActionRepr{displayName=Show parsed AST (continuous), description=Shows the parsed AST, commandRequest=CommandRequestRepr{commandDefType=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedAstCommand}, executionType=ManualContinuous, initialArgs={}}, requiredEditorSelectionTypes=[], requiredEditorFileTypes=[ReadableResource], requiredResourceTypes=[], requiredEnclosingResourceTypes=[]}), commandAction(CommandActionRepr{displayName=Show parsed tokens, description=Shows the parsed tokens, commandRequest=CommandRequestRepr{commandDefType=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedTokensCommand}, executionType=ManualOnce, initialArgs={}}, requiredEditorSelectionTypes=[], requiredEditorFileTypes=[ReadableResource], requiredResourceTypes=[], requiredEnclosingResourceTypes=[]}), commandAction(CommandActionRepr{displayName=Show parsed tokens (continuous), description=Shows the parsed tokens, commandRequest=CommandRequestRepr{commandDefType=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedTokensCommand}, executionType=ManualContinuous, initialArgs={}}, requiredEditorSelectionTypes=[], requiredEditorFileTypes=[ReadableResource], requiredResourceTypes=[], requiredEnclosingResourceTypes=[]})]}), adapterProject=AdapterProject{project=GradleProject{coordinate=org.metaborg:tiger:0.1.0, baseDirectory=eclipse-resource##/tiger, srcDirectory=eclipse-resource##/tiger/src, srcMainDirectory=eclipse-resource##/tiger/src/main, buildDirectory=eclipse-resource##/tiger/build, buildGeneratedSourcesDirectory=eclipse-resource##/tiger/build/generated/sources, buildGeneratedSourcesAnnotationProcessorJavaMainDirectory=eclipse-resource##/tiger/build/generated/sources/annotationProcessor/java/main, buildGeneratedResourcesDirectory=eclipse-resource##/tiger/build/generated/resources, buildClassesDirectory=eclipse-resource##/tiger/build/classes, buildClassesJavaMainDirectory=eclipse-resource##/tiger/build/classes/java/main}, packageId=mb.tiger, taskPackageId=mb.tiger.task, commandPackageId=mb.tiger.command, generatedJavaSourcesDirectory=eclipse-resource##/tiger/build/generated/sources/adapter, classKind=Generated, baseResourcesScope=TypeInfo{packageId=mb.tiger, id=TigerResourcesScope}, baseScope=TypeInfo{packageId=mb.tiger, id=TigerScope}, baseQualifier=TypeInfo{packageId=mb.tiger, id=TigerQualifier}, shared=Shared{name=tiger, fileExtensions=[tig], defaultClassPrefix=Tiger, defaultGroupId=org.metaborg, defaultArtifactId=tiger, defaultVersion=0.1.0, defaultPackageIdPrefix=mb., defaultPackageId=mb.tiger, metaborgPublicRepository=maven(https://artifacts.metaborg.org/content/groups/public/), defaultRepositories=[maven(https://artifacts.metaborg.org/content/groups/public/)], defaultPluginRepositories=[maven(https://artifacts.metaborg.org/content/groups/public/)], metaborgGradleConfigVersion=0.3.21, metaborgCoroniumVersion=0.3.0, bndPluginVersion=5.0.1, intellijGradlePluginVersion=0.4.21, spoofax3Version=null, spoofaxDependencyConstraintsDep=module(org.metaborg:spoofax.depconstraints), checkerFrameworkQualifiersDep=module(org.checkerframework:checker-qual-android), daggerDep=module(com.google.dagger:dagger), daggerCompilerDep=module(com.google.dagger:dagger-compiler), slf4jSimpleDep=module(org.slf4j:slf4j-simple), commonDep=module(org.metaborg:common), logApiDep=module(org.metaborg:log.api), logBackendSLF4JDep=module(org.metaborg:log.backend.slf4j), resourceDep=module(org.metaborg:resource), strategoXTMinJarDep=module(org.metaborg:strategoxt-min-jar), orgStrategoXTStrjDep=module(org.metaborg.devenv:org.strategoxt.strj), pieApiDep=module(org.metaborg:pie.api), pieRuntimeDep=module(org.metaborg:pie.runtime), atermCommonDep=module(org.metaborg:aterm.common), statixCodeCompletionDep=module(org.metaborg:statix.codecompletion), statixCodeCompletionPieDep=module(org.metaborg:statix.codecompletion.pie), jsglrCommonDep=module(org.metaborg:jsglr.common), jsglrPieDep=module(org.metaborg:jsglr.pie), jsglr1CommonDep=module(org.metaborg:jsglr1.common), jsglr2CommonDep=module(org.metaborg:jsglr2.common), esvCommonDep=module(org.metaborg:esv.common), strategoCommonDep=module(org.metaborg:stratego.common), strategoPieDep=module(org.metaborg:stratego.pie), constraintCommonDep=module(org.metaborg:constraint.common), constraintPieDep=module(org.metaborg:constraint.pie), nabl2CommonDep=module(org.metaborg:nabl2.common), statixCommonDep=module(org.metaborg:statix.common), statixPieDep=module(org.metaborg:statix.pie), spoofax2CommonDep=module(org.metaborg:spoofax2.common), spoofaxCompilerInterfacesDep=module(org.metaborg:spoofax.compiler.interfaces), spoofaxCoreDep=module(org.metaborg:spoofax.core), spoofaxCliDep=module(org.metaborg:spoofax.cli), spoofaxEclipseDep=module(org.metaborg:spoofax.eclipse), toolingEclipseBundleDep=module(org.metaborg:tooling.eclipsebundle), spoofaxIntellijDep=module(org.metaborg:spoofax.intellij), multilangDep=module(org.metaborg:statix.multilang), multilangEclipseDep=module(org.metaborg:statix.multilang.eclipse), sptApiDep=module(org.metaborg:spt.api), tegoDep=module(org.metaborg:tego), tegoPieDep=module(org.metaborg:tego.pie)}}, languageProjectInput=Input{startSymbol=Module, parseTableAtermFileRelativePath=sdf.tbl, parseTablePersistedFileRelativePath=sdf.bin, variant=jsglr1(), classKind=Generated, baseParseTable=TypeInfo{packageId=mb.tiger, id=TigerParseTable}, baseParser=TypeInfo{packageId=mb.tiger, id=TigerParser}, baseParserFactory=TypeInfo{packageId=mb.tiger, id=TigerParserFactory}, shared=Shared{name=tiger, fileExtensions=[tig], defaultClassPrefix=Tiger, defaultGroupId=org.metaborg, defaultArtifactId=tiger, defaultVersion=0.1.0, defaultPackageIdPrefix=mb., defaultPackageId=mb.tiger, metaborgPublicRepository=maven(https://artifacts.metaborg.org/content/groups/public/), defaultRepositories=[maven(https://artifacts.metaborg.org/content/groups/public/)], defaultPluginRepositories=[maven(https://artifacts.metaborg.org/content/groups/public/)], metaborgGradleConfigVersion=0.3.21, metaborgCoroniumVersion=0.3.0, bndPluginVersion=5.0.1, intellijGradlePluginVersion=0.4.21, spoofax3Version=null, spoofaxDependencyConstraintsDep=module(org.metaborg:spoofax.depconstraints), checkerFrameworkQualifiersDep=module(org.checkerframework:checker-qual-android), daggerDep=module(com.google.dagger:dagger), daggerCompilerDep=module(com.google.dagger:dagger-compiler), slf4jSimpleDep=module(org.slf4j:slf4j-simple), commonDep=module(org.metaborg:common), logApiDep=module(org.metaborg:log.api), logBackendSLF4JDep=module(org.metaborg:log.backend.slf4j), resourceDep=module(org.metaborg:resource), strategoXTMinJarDep=module(org.metaborg:strategoxt-min-jar), orgStrategoXTStrjDep=module(org.metaborg.devenv:org.strategoxt.strj), pieApiDep=module(org.metaborg:pie.api), pieRuntimeDep=module(org.metaborg:pie.runtime), atermCommonDep=module(org.metaborg:aterm.common), statixCodeCompletionDep=module(org.metaborg:statix.codecompletion), statixCodeCompletionPieDep=module(org.metaborg:statix.codecompletion.pie), jsglrCommonDep=module(org.metaborg:jsglr.common), jsglrPieDep=module(org.metaborg:jsglr.pie), jsglr1CommonDep=module(org.metaborg:jsglr1.common), jsglr2CommonDep=module(org.metaborg:jsglr2.common), esvCommonDep=module(org.metaborg:esv.common), strategoCommonDep=module(org.metaborg:stratego.common), strategoPieDep=module(org.metaborg:stratego.pie), constraintCommonDep=module(org.metaborg:constraint.common), constraintPieDep=module(org.metaborg:constraint.pie), nabl2CommonDep=module(org.metaborg:nabl2.common), statixCommonDep=module(org.metaborg:statix.common), statixPieDep=module(org.metaborg:statix.pie), spoofax2CommonDep=module(org.metaborg:spoofax2.common), spoofaxCompilerInterfacesDep=module(org.metaborg:spoofax.compiler.interfaces), spoofaxCoreDep=module(org.metaborg:spoofax.core), spoofaxCliDep=module(org.metaborg:spoofax.cli), spoofaxEclipseDep=module(org.metaborg:spoofax.eclipse), toolingEclipseBundleDep=module(org.metaborg:tooling.eclipsebundle), spoofaxIntellijDep=module(org.metaborg:spoofax.intellij), multilangDep=module(org.metaborg:statix.multilang), multilangEclipseDep=module(org.metaborg:statix.multilang.eclipse), sptApiDep=module(org.metaborg:spt.api), tegoDep=module(org.metaborg:tego), tegoPieDep=module(org.metaborg:tego.pie)}, languageProject=LanguageProject{project=GradleProject{coordinate=org.metaborg:tiger:0.1.0, baseDirectory=eclipse-resource##/tiger, srcDirectory=eclipse-resource##/tiger/src, srcMainDirectory=eclipse-resource##/tiger/src/main, buildDirectory=eclipse-resource##/tiger/build, buildGeneratedSourcesDirectory=eclipse-resource##/tiger/build/generated/sources, buildGeneratedSourcesAnnotationProcessorJavaMainDirectory=eclipse-resource##/tiger/build/generated/sources/annotationProcessor/java/main, buildGeneratedResourcesDirectory=eclipse-resource##/tiger/build/generated/resources, buildClassesDirectory=eclipse-resource##/tiger/build/classes, buildClassesJavaMainDirectory=eclipse-resource##/tiger/build/classes/java/main}, packageId=mb.tiger, packagePath=mb/tiger, generatedJavaSourcesDirectory=eclipse-resource##/tiger/build/generated/sources/language}}, classLoaderResourcesInput=Input{classKind=Generated, baseClassLoaderResources=TypeInfo{packageId=mb.tiger, id=TigerClassLoaderResources}, qualifier=mb-tiger-classloader-resource, shared=Shared{name=tiger, fileExtensions=[tig], defaultClassPrefix=Tiger, defaultGroupId=org.metaborg, defaultArtifactId=tiger, defaultVersion=0.1.0, defaultPackageIdPrefix=mb., defaultPackageId=mb.tiger, metaborgPublicRepository=maven(https://artifacts.metaborg.org/content/groups/public/), defaultRepositories=[maven(https://artifacts.metaborg.org/content/groups/public/)], defaultPluginRepositories=[maven(https://artifacts.metaborg.org/content/groups/public/)], metaborgGradleConfigVersion=0.3.21, metaborgCoroniumVersion=0.3.0, bndPluginVersion=5.0.1, intellijGradlePluginVersion=0.4.21, spoofax3Version=null, spoofaxDependencyConstraintsDep=module(org.metaborg:spoofax.depconstraints), checkerFrameworkQualifiersDep=module(org.checkerframework:checker-qual-android), daggerDep=module(com.google.dagger:dagger), daggerCompilerDep=module(com.google.dagger:dagger-compiler), slf4jSimpleDep=module(org.slf4j:slf4j-simple), commonDep=module(org.metaborg:common), logApiDep=module(org.metaborg:log.api), logBackendSLF4JDep=module(org.metaborg:log.backend.slf4j), resourceDep=module(org.metaborg:resource), strategoXTMinJarDep=module(org.metaborg:strategoxt-min-jar), orgStrategoXTStrjDep=module(org.metaborg.devenv:org.strategoxt.strj), pieApiDep=module(org.metaborg:pie.api), pieRuntimeDep=module(org.metaborg:pie.runtime), atermCommonDep=module(org.metaborg:aterm.common), statixCodeCompletionDep=module(org.metaborg:statix.codecompletion), statixCodeCompletionPieDep=module(org.metaborg:statix.codecompletion.pie), jsglrCommonDep=module(org.metaborg:jsglr.common), jsglrPieDep=module(org.metaborg:jsglr.pie), jsglr1CommonDep=module(org.metaborg:jsglr1.common), jsglr2CommonDep=module(org.metaborg:jsglr2.common), esvCommonDep=module(org.metaborg:esv.common), strategoCommonDep=module(org.metaborg:stratego.common), strategoPieDep=module(org.metaborg:stratego.pie), constraintCommonDep=module(org.metaborg:constraint.common), constraintPieDep=module(org.metaborg:constraint.pie), nabl2CommonDep=module(org.metaborg:nabl2.common), statixCommonDep=module(org.metaborg:statix.common), statixPieDep=module(org.metaborg:statix.pie), spoofax2CommonDep=module(org.metaborg:spoofax2.common), spoofaxCompilerInterfacesDep=module(org.metaborg:spoofax.compiler.interfaces), spoofaxCoreDep=module(org.metaborg:spoofax.core), spoofaxCliDep=module(org.metaborg:spoofax.cli), spoofaxEclipseDep=module(org.metaborg:spoofax.eclipse), toolingEclipseBundleDep=module(org.metaborg:tooling.eclipsebundle), spoofaxIntellijDep=module(org.metaborg:spoofax.intellij), multilangDep=module(org.metaborg:statix.multilang), multilangEclipseDep=module(org.metaborg:statix.multilang.eclipse), sptApiDep=module(org.metaborg:spt.api), tegoDep=module(org.metaborg:tego), tegoPieDep=module(org.metaborg:tego.pie)}, languageProject=LanguageProject{project=GradleProject{coordinate=org.metaborg:tiger:0.1.0, baseDirectory=eclipse-resource##/tiger, srcDirectory=eclipse-resource##/tiger/src, srcMainDirectory=eclipse-resource##/tiger/src/main, buildDirectory=eclipse-resource##/tiger/build, buildGeneratedSourcesDirectory=eclipse-resource##/tiger/build/generated/sources, buildGeneratedSourcesAnnotationProcessorJavaMainDirectory=eclipse-resource##/tiger/build/generated/sources/annotationProcessor/java/main, buildGeneratedResourcesDirectory=eclipse-resource##/tiger/build/generated/resources, buildClassesDirectory=eclipse-resource##/tiger/build/classes, buildClassesJavaMainDirectory=eclipse-resource##/tiger/build/classes/java/main}, packageId=mb.tiger, packagePath=mb/tiger, generatedJavaSourcesDirectory=eclipse-resource##/tiger/build/generated/sources/language}}}
while now required with input
Input{classKind=Generated, baseParseTaskDef=TypeInfo{packageId=mb.tiger.task, id=TigerParse}, baseTokenizeTaskDef=TypeInfo{packageId=mb.tiger.task, id=TigerTokenize}, baseShowParsedAstTaskDef=TypeInfo{packageId=mb.tiger.task, id=TigerShowParsedAst}, showParsedAstCommand=CommandDefRepr{type=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedAstCommand}, taskDefType=TypeInfo{packageId=mb.tiger.task, id=TigerShowParsedAst}, argType=TypeInfo{packageId=mb.tiger.task, id=TigerShowParsedAst.Args}, displayName=Show parsed AST, description=Shows the parsed AST, supportedExecutionTypes=[ManualOnce, ManualContinuous, AutomaticContinuous], params=[ParamRepr{id=file, type=TypeInfo{packageId=mb.resource, id=ResourceKey}, required=true, providers=[context(ReadableResource)]}]}, baseShowParsedTokensTaskDef=TypeInfo{packageId=mb.tiger.task, id=TigerShowParsedTokens}, showParsedTokensCommand=CommandDefRepr{type=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedTokensCommand}, taskDefType=TypeInfo{packageId=mb.tiger.task, id=TigerShowParsedTokens}, argType=TypeInfo{packageId=mb.tiger.task, id=TigerShowParsedTokens.Args}, displayName=Show parsed tokens, description=Shows the parsed tokens, supportedExecutionTypes=[ManualOnce, ManualContinuous, AutomaticContinuous], params=[ParamRepr{id=file, type=TypeInfo{packageId=mb.resource, id=ResourceKey}, required=true, providers=[context(ReadableResource)]}]}, mainMenu=menu(MenuRepr{displayName=Debug, items=[commandAction(CommandActionRepr{displayName=Show parsed AST, description=Shows the parsed AST, commandRequest=CommandRequestRepr{commandDefType=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedAstCommand}, executionType=ManualOnce, initialArgs={}}, requiredEditorSelectionTypes=[], requiredEditorFileTypes=[ReadableResource], requiredResourceTypes=[], requiredEnclosingResourceTypes=[]}), commandAction(CommandActionRepr{displayName=Show parsed AST (continuous), description=Shows the parsed AST, commandRequest=CommandRequestRepr{commandDefType=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedAstCommand}, executionType=ManualContinuous, initialArgs={}}, requiredEditorSelectionTypes=[], requiredEditorFileTypes=[ReadableResource], requiredResourceTypes=[], requiredEnclosingResourceTypes=[]}), commandAction(CommandActionRepr{displayName=Show parsed tokens, description=Shows the parsed tokens, commandRequest=CommandRequestRepr{commandDefType=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedTokensCommand}, executionType=ManualOnce, initialArgs={}}, requiredEditorSelectionTypes=[], requiredEditorFileTypes=[ReadableResource], requiredResourceTypes=[], requiredEnclosingResourceTypes=[]}), commandAction(CommandActionRepr{displayName=Show parsed tokens (continuous), description=Shows the parsed tokens, commandRequest=CommandRequestRepr{commandDefType=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedTokensCommand}, executionType=ManualContinuous, initialArgs={}}, requiredEditorSelectionTypes=[], requiredEditorFileTypes=[ReadableResource], requiredResourceTypes=[], requiredEnclosingResourceTypes=[]})]}), resourceContextMenu=menu(MenuRepr{displayName=Debug, items=[commandAction(CommandActionRepr{displayName=Show parsed AST, description=Shows the parsed AST, commandRequest=CommandRequestRepr{commandDefType=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedAstCommand}, executionType=ManualOnce, initialArgs={}}, requiredEditorSelectionTypes=[], requiredEditorFileTypes=[], requiredResourceTypes=[File], requiredEnclosingResourceTypes=[]}), commandAction(CommandActionRepr{displayName=Show parsed AST (continuous), description=Shows the parsed AST, commandRequest=CommandRequestRepr{commandDefType=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedAstCommand}, executionType=ManualContinuous, initialArgs={}}, requiredEditorSelectionTypes=[], requiredEditorFileTypes=[], requiredResourceTypes=[File], requiredEnclosingResourceTypes=[]}), commandAction(CommandActionRepr{displayName=Show parsed tokens, description=Shows the parsed tokens, commandRequest=CommandRequestRepr{commandDefType=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedTokensCommand}, executionType=ManualOnce, initialArgs={}}, requiredEditorSelectionTypes=[], requiredEditorFileTypes=[], requiredResourceTypes=[File], requiredEnclosingResourceTypes=[]}), commandAction(CommandActionRepr{displayName=Show parsed tokens (continuous), description=Shows the parsed tokens, commandRequest=CommandRequestRepr{commandDefType=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedTokensCommand}, executionType=ManualContinuous, initialArgs={}}, requiredEditorSelectionTypes=[], requiredEditorFileTypes=[], requiredResourceTypes=[File], requiredEnclosingResourceTypes=[]})]}), editorContextMenu=menu(MenuRepr{displayName=Debug, items=[commandAction(CommandActionRepr{displayName=Show parsed AST, description=Shows the parsed AST, commandRequest=CommandRequestRepr{commandDefType=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedAstCommand}, executionType=ManualOnce, initialArgs={}}, requiredEditorSelectionTypes=[], requiredEditorFileTypes=[ReadableResource], requiredResourceTypes=[], requiredEnclosingResourceTypes=[]}), commandAction(CommandActionRepr{displayName=Show parsed AST (continuous), description=Shows the parsed AST, commandRequest=CommandRequestRepr{commandDefType=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedAstCommand}, executionType=ManualContinuous, initialArgs={}}, requiredEditorSelectionTypes=[], requiredEditorFileTypes=[ReadableResource], requiredResourceTypes=[], requiredEnclosingResourceTypes=[]}), commandAction(CommandActionRepr{displayName=Show parsed tokens, description=Shows the parsed tokens, commandRequest=CommandRequestRepr{commandDefType=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedTokensCommand}, executionType=ManualOnce, initialArgs={}}, requiredEditorSelectionTypes=[], requiredEditorFileTypes=[ReadableResource], requiredResourceTypes=[], requiredEnclosingResourceTypes=[]}), commandAction(CommandActionRepr{displayName=Show parsed tokens (continuous), description=Shows the parsed tokens, commandRequest=CommandRequestRepr{commandDefType=TypeInfo{packageId=mb.tiger.command, id=TigerShowParsedTokensCommand}, executionType=ManualContinuous, initialArgs={}}, requiredEditorSelectionTypes=[], requiredEditorFileTypes=[ReadableResource], requiredResourceTypes=[], requiredEnclosingResourceTypes=[]})]}), adapterProject=AdapterProject{project=GradleProject{coordinate=org.metaborg:tiger:0.1.0, baseDirectory=eclipse-resource##/tiger, srcDirectory=eclipse-resource##/tiger/src, srcMainDirectory=eclipse-resource##/tiger/src/main, buildDirectory=eclipse-resource##/tiger/build, buildGeneratedSourcesDirectory=eclipse-resource##/tiger/build/generated/sources, buildGeneratedSourcesAnnotationProcessorJavaMainDirectory=eclipse-resource##/tiger/build/generated/sources/annotationProcessor/java/main, buildGeneratedResourcesDirectory=eclipse-resource##/tiger/build/generated/resources, buildClassesDirectory=eclipse-resource##/tiger/build/classes, buildClassesJavaMainDirectory=eclipse-resource##/tiger/build/classes/java/main}, packageId=mb.tiger, taskPackageId=mb.tiger.task, commandPackageId=mb.tiger.command, generatedJavaSourcesDirectory=eclipse-resource##/tiger/build/generated/sources/adapter, classKind=Generated, baseResourcesScope=TypeInfo{packageId=mb.tiger, id=TigerResourcesScope}, baseScope=TypeInfo{packageId=mb.tiger, id=TigerScope}, baseQualifier=TypeInfo{packageId=mb.tiger, id=TigerQualifier}, shared=Shared{name=tiger, fileExtensions=[tig], defaultClassPrefix=Tiger, defaultGroupId=org.metaborg, defaultArtifactId=tiger, defaultVersion=0.1.0, defaultPackageIdPrefix=mb., defaultPackageId=mb.tiger, metaborgPublicRepository=maven(https://artifacts.metaborg.org/content/groups/public/), defaultRepositories=[maven(https://artifacts.metaborg.org/content/groups/public/)], defaultPluginRepositories=[maven(https://artifacts.metaborg.org/content/groups/public/)], metaborgGradleConfigVersion=0.3.21, metaborgCoroniumVersion=0.3.0, bndPluginVersion=5.0.1, intellijGradlePluginVersion=0.4.21, spoofax3Version=null, spoofaxDependencyConstraintsDep=module(org.metaborg:spoofax.depconstraints), checkerFrameworkQualifiersDep=module(org.checkerframework:checker-qual-android), daggerDep=module(com.google.dagger:dagger), daggerCompilerDep=module(com.google.dagger:dagger-compiler), slf4jSimpleDep=module(org.slf4j:slf4j-simple), commonDep=module(org.metaborg:common), logApiDep=module(org.metaborg:log.api), logBackendSLF4JDep=module(org.metaborg:log.backend.slf4j), resourceDep=module(org.metaborg:resource), strategoXTMinJarDep=module(org.metaborg:strategoxt-min-jar), orgStrategoXTStrjDep=module(org.metaborg.devenv:org.strategoxt.strj), pieApiDep=module(org.metaborg:pie.api), pieRuntimeDep=module(org.metaborg:pie.runtime), atermCommonDep=module(org.metaborg:aterm.common), statixCodeCompletionDep=module(org.metaborg:statix.codecompletion), statixCodeCompletionPieDep=module(org.metaborg:statix.codecompletion.pie), jsglrCommonDep=module(org.metaborg:jsglr.common), jsglrPieDep=module(org.metaborg:jsglr.pie), jsglr1CommonDep=module(org.metaborg:jsglr1.common), jsglr2CommonDep=module(org.metaborg:jsglr2.common), esvCommonDep=module(org.metaborg:esv.common), strategoCommonDep=module(org.metaborg:stratego.common), strategoPieDep=module(org.metaborg:stratego.pie), constraintCommonDep=module(org.metaborg:constraint.common), constraintPieDep=module(org.metaborg:constraint.pie), nabl2CommonDep=module(org.metaborg:nabl2.common), statixCommonDep=module(org.metaborg:statix.common), statixPieDep=module(org.metaborg:statix.pie), spoofax2CommonDep=module(org.metaborg:spoofax2.common), spoofaxCompilerInterfacesDep=module(org.metaborg:spoofax.compiler.interfaces), spoofaxCoreDep=module(org.metaborg:spoofax.core), spoofaxCliDep=module(org.metaborg:spoofax.cli), spoofaxEclipseDep=module(org.metaborg:spoofax.eclipse), toolingEclipseBundleDep=module(org.metaborg:tooling.eclipsebundle), spoofaxIntellijDep=module(org.metaborg:spoofax.intellij), multilangDep=module(org.metaborg:statix.multilang), multilangEclipseDep=module(org.metaborg:statix.multilang.eclipse), sptApiDep=module(org.metaborg:spt.api), tegoDep=module(org.metaborg:tego), tegoPieDep=module(org.metaborg:tego.pie)}}, languageProjectInput=Input{startSymbol=Module, parseTableAtermFileRelativePath=sdf.tbl, parseTablePersistedFileRelativePath=sdf.bin, variant=jsglr2(Recovery), classKind=Generated, baseParseTable=TypeInfo{packageId=mb.tiger, id=TigerParseTable}, baseParser=TypeInfo{packageId=mb.tiger, id=TigerParser}, baseParserFactory=TypeInfo{packageId=mb.tiger, id=TigerParserFactory}, shared=Shared{name=tiger, fileExtensions=[tig], defaultClassPrefix=Tiger, defaultGroupId=org.metaborg, defaultArtifactId=tiger, defaultVersion=0.1.0, defaultPackageIdPrefix=mb., defaultPackageId=mb.tiger, metaborgPublicRepository=maven(https://artifacts.metaborg.org/content/groups/public/), defaultRepositories=[maven(https://artifacts.metaborg.org/content/groups/public/)], defaultPluginRepositories=[maven(https://artifacts.metaborg.org/content/groups/public/)], metaborgGradleConfigVersion=0.3.21, metaborgCoroniumVersion=0.3.0, bndPluginVersion=5.0.1, intellijGradlePluginVersion=0.4.21, spoofax3Version=null, spoofaxDependencyConstraintsDep=module(org.metaborg:spoofax.depconstraints), checkerFrameworkQualifiersDep=module(org.checkerframework:checker-qual-android), daggerDep=module(com.google.dagger:dagger), daggerCompilerDep=module(com.google.dagger:dagger-compiler), slf4jSimpleDep=module(org.slf4j:slf4j-simple), commonDep=module(org.metaborg:common), logApiDep=module(org.metaborg:log.api), logBackendSLF4JDep=module(org.metaborg:log.backend.slf4j), resourceDep=module(org.metaborg:resource), strategoXTMinJarDep=module(org.metaborg:strategoxt-min-jar), orgStrategoXTStrjDep=module(org.metaborg.devenv:org.strategoxt.strj), pieApiDep=module(org.metaborg:pie.api), pieRuntimeDep=module(org.metaborg:pie.runtime), atermCommonDep=module(org.metaborg:aterm.common), statixCodeCompletionDep=module(org.metaborg:statix.codecompletion), statixCodeCompletionPieDep=module(org.metaborg:statix.codecompletion.pie), jsglrCommonDep=module(org.metaborg:jsglr.common), jsglrPieDep=module(org.metaborg:jsglr.pie), jsglr1CommonDep=module(org.metaborg:jsglr1.common), jsglr2CommonDep=module(org.metaborg:jsglr2.common), esvCommonDep=module(org.metaborg:esv.common), strategoCommonDep=module(org.metaborg:stratego.common), strategoPieDep=module(org.metaborg:stratego.pie), constraintCommonDep=module(org.metaborg:constraint.common), constraintPieDep=module(org.metaborg:constraint.pie), nabl2CommonDep=module(org.metaborg:nabl2.common), statixCommonDep=module(org.metaborg:statix.common), statixPieDep=module(org.metaborg:statix.pie), spoofax2CommonDep=module(org.metaborg:spoofax2.common), spoofaxCompilerInterfacesDep=module(org.metaborg:spoofax.compiler.interfaces), spoofaxCoreDep=module(org.metaborg:spoofax.core), spoofaxCliDep=module(org.metaborg:spoofax.cli), spoofaxEclipseDep=module(org.metaborg:spoofax.eclipse), toolingEclipseBundleDep=module(org.metaborg:tooling.eclipsebundle), spoofaxIntellijDep=module(org.metaborg:spoofax.intellij), multilangDep=module(org.metaborg:statix.multilang), multilangEclipseDep=module(org.metaborg:statix.multilang.eclipse), sptApiDep=module(org.metaborg:spt.api), tegoDep=module(org.metaborg:tego), tegoPieDep=module(org.metaborg:tego.pie)}, languageProject=LanguageProject{project=GradleProject{coordinate=org.metaborg:tiger:0.1.0, baseDirectory=eclipse-resource##/tiger, srcDirectory=eclipse-resource##/tiger/src, srcMainDirectory=eclipse-resource##/tiger/src/main, buildDirectory=eclipse-resource##/tiger/build, buildGeneratedSourcesDirectory=eclipse-resource##/tiger/build/generated/sources, buildGeneratedSourcesAnnotationProcessorJavaMainDirectory=eclipse-resource##/tiger/build/generated/sources/annotationProcessor/java/main, buildGeneratedResourcesDirectory=eclipse-resource##/tiger/build/generated/resources, buildClassesDirectory=eclipse-resource##/tiger/build/classes, buildClassesJavaMainDirectory=eclipse-resource##/tiger/build/classes/java/main}, packageId=mb.tiger, packagePath=mb/tiger, generatedJavaSourcesDirectory=eclipse-resource##/tiger/build/generated/sources/language}}, classLoaderResourcesInput=Input{classKind=Generated, baseClassLoaderResources=TypeInfo{packageId=mb.tiger, id=TigerClassLoaderResources}, qualifier=mb-tiger-classloader-resource, shared=Shared{name=tiger, fileExtensions=[tig], defaultClassPrefix=Tiger, defaultGroupId=org.metaborg, defaultArtifactId=tiger, defaultVersion=0.1.0, defaultPackageIdPrefix=mb., defaultPackageId=mb.tiger, metaborgPublicRepository=maven(https://artifacts.metaborg.org/content/groups/public/), defaultRepositories=[maven(https://artifacts.metaborg.org/content/groups/public/)], defaultPluginRepositories=[maven(https://artifacts.metaborg.org/content/groups/public/)], metaborgGradleConfigVersion=0.3.21, metaborgCoroniumVersion=0.3.0, bndPluginVersion=5.0.1, intellijGradlePluginVersion=0.4.21, spoofax3Version=null, spoofaxDependencyConstraintsDep=module(org.metaborg:spoofax.depconstraints), checkerFrameworkQualifiersDep=module(org.checkerframework:checker-qual-android), daggerDep=module(com.google.dagger:dagger), daggerCompilerDep=module(com.google.dagger:dagger-compiler), slf4jSimpleDep=module(org.slf4j:slf4j-simple), commonDep=module(org.metaborg:common), logApiDep=module(org.metaborg:log.api), logBackendSLF4JDep=module(org.metaborg:log.backend.slf4j), resourceDep=module(org.metaborg:resource), strategoXTMinJarDep=module(org.metaborg:strategoxt-min-jar), orgStrategoXTStrjDep=module(org.metaborg.devenv:org.strategoxt.strj), pieApiDep=module(org.metaborg:pie.api), pieRuntimeDep=module(org.metaborg:pie.runtime), atermCommonDep=module(org.metaborg:aterm.common), statixCodeCompletionDep=module(org.metaborg:statix.codecompletion), statixCodeCompletionPieDep=module(org.metaborg:statix.codecompletion.pie), jsglrCommonDep=module(org.metaborg:jsglr.common), jsglrPieDep=module(org.metaborg:jsglr.pie), jsglr1CommonDep=module(org.metaborg:jsglr1.common), jsglr2CommonDep=module(org.metaborg:jsglr2.common), esvCommonDep=module(org.metaborg:esv.common), strategoCommonDep=module(org.metaborg:stratego.common), strategoPieDep=module(org.metaborg:stratego.pie), constraintCommonDep=module(org.metaborg:constraint.common), constraintPieDep=module(org.metaborg:constraint.pie), nabl2CommonDep=module(org.metaborg:nabl2.common), statixCommonDep=module(org.metaborg:statix.common), statixPieDep=module(org.metaborg:statix.pie), spoofax2CommonDep=module(org.metaborg:spoofax2.common), spoofaxCompilerInterfacesDep=module(org.metaborg:spoofax.compiler.interfaces), spoofaxCoreDep=module(org.metaborg:spoofax.core), spoofaxCliDep=module(org.metaborg:spoofax.cli), spoofaxEclipseDep=module(org.metaborg:spoofax.eclipse), toolingEclipseBundleDep=module(org.metaborg:tooling.eclipsebundle), spoofaxIntellijDep=module(org.metaborg:spoofax.intellij), multilangDep=module(org.metaborg:statix.multilang), multilangEclipseDep=module(org.metaborg:statix.multilang.eclipse), sptApiDep=module(org.metaborg:spt.api), tegoDep=module(org.metaborg:tego), tegoPieDep=module(org.metaborg:tego.pie)}, languageProject=LanguageProject{project=GradleProject{coordinate=org.metaborg:tiger:0.1.0, baseDirectory=eclipse-resource##/tiger, srcDirectory=eclipse-resource##/tiger/src, srcMainDirectory=eclipse-resource##/tiger/src/main, buildDirectory=eclipse-resource##/tiger/build, buildGeneratedSourcesDirectory=eclipse-resource##/tiger/build/generated/sources, buildGeneratedSourcesAnnotationProcessorJavaMainDirectory=eclipse-resource##/tiger/build/generated/sources/annotationProcessor/java/main, buildGeneratedResourcesDirectory=eclipse-resource##/tiger/build/generated/resources, buildClassesDirectory=eclipse-resource##/tiger/build/classes, buildClassesJavaMainDirectory=eclipse-resource##/tiger/build/classes/java/main}, packageId=mb.tiger, packagePath=mb/tiger, generatedJavaSourcesDirectory=eclipse-resource##/tiger/build/generated/sources/language}}}
at mb.pie.runtime.layer.ValidationLayer.error(ValidationLayer.java:466)
at mb.pie.runtime.layer.ValidationLayer.validateVisited(ValidationLayer.java:187)
at mb.pie.runtime.exec.BottomUpRunner.getData(BottomUpRunner.java:201)
at mb.pie.runtime.exec.BottomUpRunner.require(BottomUpRunner.java:185)
at mb.pie.runtime.exec.ExecContextImpl.require(ExecContextImpl.java:110)
at mb.pie.runtime.exec.ExecContextImpl.require(ExecContextImpl.java:90)
at mb.spoofax.compiler.adapter.AdapterProjectCompiler.lambda$compile$1(AdapterProjectCompiler.java:134)
at java.base/java.util.Optional.ifPresent(Optional.java:183)
at mb.spoofax.compiler.adapter.AdapterProjectCompiler.compile(AdapterProjectCompiler.java:134)
at mb.spoofax.compiler.adapter.AdapterProjectCompiler.lambda$exec$0(AdapterProjectCompiler.java:125)
at mb.common.result.Result.mapThrowing(Result.java:294)
at mb.spoofax.compiler.adapter.AdapterProjectCompiler.exec(AdapterProjectCompiler.java:125)
at mb.spoofax.compiler.adapter.AdapterProjectCompiler.exec(AdapterProjectCompiler.java:47)
at mb.pie.api.Task.exec(Task.java:56)
at mb.pie.runtime.exec.TaskExecutor.execInternal(TaskExecutor.java:126)
at mb.pie.runtime.exec.TaskExecutor.exec(TaskExecutor.java:82)
at mb.pie.runtime.exec.BottomUpRunner.exec(BottomUpRunner.java:369)
at mb.pie.runtime.exec.BottomUpRunner.execAndSchedule(BottomUpRunner.java:133)
at mb.pie.runtime.exec.BottomUpRunner.execScheduled(BottomUpRunner.java:120)
at mb.pie.runtime.exec.BottomUpRunner.requireInitial(BottomUpRunner.java:83)
at mb.pie.runtime.MixedSessionImpl.lambda$updateAffectedBy$0(MixedSessionImpl.java:70)
at mb.pie.runtime.SessionImpl.handleException(SessionImpl.java:160)
at mb.pie.runtime.MixedSessionImpl.updateAffectedBy(MixedSessionImpl.java:70)
at mb.spoofax.lwb.eclipse.SpoofaxLwbBuilder.bottomUpBuild(SpoofaxLwbBuilder.java:192)
at mb.spoofax.lwb.eclipse.SpoofaxLwbBuilder.incrBuild(SpoofaxLwbBuilder.java:135)
at mb.spoofax.lwb.eclipse.SpoofaxLwbBuilder.access$100(SpoofaxLwbBuilder.java:58)
at mb.spoofax.lwb.eclipse.SpoofaxLwbBuilder$1.run(SpoofaxLwbBuilder.java:87)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2292)
at mb.spoofax.lwb.eclipse.SpoofaxLwbBuilder.build(SpoofaxLwbBuilder.java:96)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:846)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:229)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:277)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:330)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:333)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:385)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:406)
at org.eclipse.core.internal.resources.Workspace.buildInternal(Workspace.java:515)
at org.eclipse.core.internal.resources.Workspace.build(Workspace.java:412)
at org.eclipse.ui.actions.BuildAction$1.runInWorkspace(BuildAction.java:291)
at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:42)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
The Statix specification correctly rejects any optional sorts (A?
) in context-free syntax. However, the LAYOUT?
sort is special in kernel syntax, and I think it should be allowed:
Section-CF.Section = "section" SectionName-CF LAYOUT?-CF Definition*-CF
Optionals (A?) are not allowed in context-free syntax
Here is a project with WebDSL syntax in which this is an issue, in WebDSL-Core.sdf3
, line 49:
๐ webdsl.zip
Changing the start symbol causes an error in the Statix pre/post-analyze strategy, because it refers to the start symbol.
Change the start symbol.
Things to work.
An error occurs due to the pre/post-analyze strategy depending on the start symbol name.
This was reported from the lab, but it should be reproduced more thoroughly.
Productions without constructors (that are not an injection) make the Statix implication/explication fail without an error in SDF3.
SDF3 should give an error on productions without constructors that are not an injection (i.e., Stm = Exp
), or that are a bracket production (i.e., Stm.Block = <{<Stm>}> {bracket}
)
Analysis failed unexpectedly.
Constructor names containing underscores aren't parsed correctly in SPT files.
Defining a constructor such as
Start.Hello_World = <Hello world>
And a test such a
test hello [[
Hello world
]] parse to Hello_World()
The test should pass
The test fails with the error "Expected parse to (), but got Hello_World()"
The SPT file does evaluate, but "Show parsed AST" does not produce an AST.
An exception occurs when editing (and thus running an editor update job) during startup in Eclipse LWB.
Edit during startup.
No exception to be thrown.
The following exception was thrown:
!ENTRY org.eclipse.core.jobs 4 2 2021-09-17 11:40:24.455
!MESSAGE An internal error occurred during: "SDF3 editor update".
!STACK 0
java.lang.IllegalArgumentException: Attempted to beginRule: P/chocopy.reference, does not match outer scope rule: MultiRule[P/test,Startup read lock]
at org.eclipse.core.runtime.Assert.isLegal(Assert.java:66)
at org.eclipse.core.internal.jobs.ThreadJob.illegalPush(ThreadJob.java:137)
at org.eclipse.core.internal.jobs.ThreadJob.push(ThreadJob.java:392)
at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:88)
at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:299)
at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:124)
at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:2242)
at org.eclipse.core.internal.resources.Resource.refreshLocal(Resource.java:1554)
at mb.spoofax.eclipse.resource.EclipseResource.walk(EclipseResource.java:380)
at mb.pie.api.stamp.resource.Modified.modifiedDirRec(Modified.java:70)
at mb.pie.api.stamp.resource.Modified.modifiedRec(Modified.java:39)
at mb.pie.api.stamp.resource.ModifiedWalkResourceStamper.stamp(ModifiedWalkResourceStamper.java:27)
at mb.pie.api.stamp.resource.ModifiedWalkResourceStamper.stamp(ModifiedWalkResourceStamper.java:12)
at mb.pie.runtime.exec.ExecContextImpl.require(ExecContextImpl.java:162)
at mb.pie.api.ExecContext.require(ExecContext.java:351)
at mb.sdf3.task.spec.Sdf3CheckSpec.exec(Sdf3CheckSpec.java:70)
at mb.sdf3.task.spec.Sdf3CheckSpec.exec(Sdf3CheckSpec.java:38)
at mb.pie.api.Task.exec(Task.java:56)
at mb.pie.runtime.exec.TaskExecutor.execInternal(TaskExecutor.java:126)
at mb.pie.runtime.exec.TaskExecutor.exec(TaskExecutor.java:82)
at mb.pie.runtime.exec.BottomUpRunner.exec(BottomUpRunner.java:369)
at mb.pie.runtime.exec.BottomUpRunner.execAndSchedule(BottomUpRunner.java:133)
at mb.pie.runtime.exec.BottomUpRunner.execScheduled(BottomUpRunner.java:120)
at mb.pie.runtime.exec.BottomUpRunner.requireInitial(BottomUpRunner.java:83)
at mb.pie.runtime.MixedSessionImpl.lambda$updateAffectedBy$0(MixedSessionImpl.java:59)
at mb.pie.runtime.SessionImpl.handleException(SessionImpl.java:161)
at mb.pie.runtime.MixedSessionImpl.updateAffectedBy(MixedSessionImpl.java:59)
at mb.spoofax.eclipse.pie.PieRunner.updateAffectedBy(PieRunner.java:458)
at mb.spoofax.eclipse.pie.PieRunner.addOrUpdateEditor(PieRunner.java:132)
at mb.spoofax.eclipse.editor.EditorUpdateJob.update(EditorUpdateJob.java:89)
at mb.spoofax.eclipse.editor.EditorUpdateJob.run(EditorUpdateJob.java:74)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Console log can be found here: https://gist.github.com/Gohla/52d67ec582d3dd902520a475df8afe00
Using an SDF3 bracket production with a constructor name breaks the generated Stratego 2 pretty printer.
Expr.Bracketed = <(<Expr>)> {bracket}
Error.
Messages of ./build/generated/sources/languageSpecification/stratego/pp/exps-pp.str2:
ERROR 46628-46635@1583-1584: Undefined constructor with arity 1 and type DynT(Dyn).
ERROR 46360-46367@1572-1573: Undefined constructor with arity 1 and type DynT(Dyn).
ERROR 46102-46109@1561-1562: Undefined constructor with arity 1 and type DynT(Dyn).
ERROR 46060-46067@1558-1559: Undefined constructor with arity 1 and type DynT(Dyn).
ERROR 45388-45395@1540-1541: Undefined constructor with arity 1 and type DynT(Dyn).
In Spoofax 2, the placeholder characters that SDF3 generates for a grammar can be configured with:
language:
sdf:
placeholder:
prefix: "$"
but this is not yet supported in Spoofax 3. We should add configuration options for this to spoofaxc.cfg
The UI hangs when invoking hover/reference resolution for the first time after a change in the Eclipse LWB. After that first time it is fast until a change is made to a source file again.
Invoke hover/reference resolution for the first time after a change.
No UI hang to occur, and to get hover/reference resolution feedback quickly.
The UI briefly hangs.
In SDF3, an error in an import causes a cascase of unrelated errors in the file.
An existing SDF3 file had a broken import. I imported Common
(upper case) from Common.sdf3
, but the module in Common.sdf3
was named module common
(lower case).
imports Common
I expected only an error on the import and maybe errors on the undefined sorts.
I got errors on all the constructors and sorts.
Commands that fail give no feedback. For example, running the "Show parsed AST" on a file that does not parse gives no feedback.
Run a command that fails.
Feedback in the form of an error pop-up to appear.
No feedback appears.
This used to work, but probably happened due to now running commands in Eclipse jobs? I also changed how errors are handled, which may have caused it.
When writing a test for a non-assoc
expression, if there is no whitespace after an expression, an exception is thrown on editor update.
An example test would be:
module test
language example
test hello [[ Hello == World == World]] parse fails
For the following small language:
module start
context-free start-symbols
Start
context-free sorts
Start
Word
Exp
context-free syntax
Start.Empty = <>
Start.Program = Exp
Word.Hello = "Hello"
Word.World = "World"
Exp.Eq = Exp "==" Exp {non-assoc}
Exp.Word = Word
lexical syntax
LAYOUT = [\ \n\v\f\r]
context-free restrictions
LAYOUT? -/- [\ \n\v\f\r]
This results in the following stack trace:
java.lang.IllegalArgumentException: The end offset 24 must be greater than or equal to the start offset 45
at mb.common.region.Region.<init>(Region.java:24)
at mb.common.region.Region.<init>(Region.java:37)
at mb.common.region.Region.fromOffsets(Region.java:58)
at mb.jsglr.common.FragmentedOriginLocationFixer.lambda$fixOriginLocations$1(FragmentedOriginLocationFixer.java:109)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
at mb.common.message.KeyedMessages.lambda$map$1(KeyedMessages.java:201)
at mb.common.util.MultiMap.forEach(MultiMap.java:169)
at mb.common.util.MultiMapView.forEachEntry(MultiMapView.java:140)
at mb.common.message.KeyedMessages.map(KeyedMessages.java:200)
at mb.jsglr.common.FragmentedOriginLocationFixer.lambda$fixOriginLocations$2(FragmentedOriginLocationFixer.java:90)
at mb.common.text.Texts$LambdaCases.fragmentedString(Texts.java:66)
at mb.common.text.Texts$FragmentedString_.match(Texts.java:103)
at mb.common.text.Texts$CaseOfMatchers$TotalMatcher_FragmentedString.fragmentedString(Texts.java:228)
at mb.jsglr.common.FragmentedOriginLocationFixer.fixOriginLocations(FragmentedOriginLocationFixer.java:41)
at mb.jsglr2.common.Jsglr2Parser.parse(Jsglr2Parser.java:72)
at mb.Example.ExampleParser.parse(%2Flayoutdependent%2Fbuild%2Fgenerated%2Fsources%2Flanguage%2Fmb%2FExample%2FExampleParser.java:19)
at mb.Example.task.ExampleParse.parse(%2Flayoutdependent%2Fbuild%2Fgenerated%2Fsources%2Fadapter%2Fmb%2FExample%2Ftask%2FExampleParse.java:50)
at mb.jsglr.pie.JsglrParseTaskDef.exec(JsglrParseTaskDef.java:100)
at mb.jsglr.pie.JsglrParseTaskDef.exec(JsglrParseTaskDef.java:23)
at mb.pie.api.Task.exec(Task.java:56)
at mb.pie.runtime.exec.TaskExecutor.execInternal(TaskExecutor.java:110)
at mb.pie.runtime.exec.TaskExecutor.exec(TaskExecutor.java:81)
at mb.pie.runtime.exec.TopDownRunner.exec(TopDownRunner.java:195)
at mb.pie.runtime.exec.TopDownRunner.executeOrGetExisting(TopDownRunner.java:167)
at mb.pie.runtime.exec.TopDownRunner.require(TopDownRunner.java:80)
at mb.pie.runtime.exec.TopDownRunner.requireInitial(TopDownRunner.java:59)
at mb.pie.runtime.MixedSessionImpl.lambda$requireWithoutObserving$2(MixedSessionImpl.java:103)
at mb.pie.runtime.SessionImpl.handleException(SessionImpl.java:149)
at mb.pie.runtime.MixedSessionImpl.requireWithoutObserving(MixedSessionImpl.java:103)
at mb.pie.runtime.MixedSessionImpl.requireWithoutObserving(MixedSessionImpl.java:97)
at mb.Example.ExampleInstance.testParse(%2Flayoutdependent%2Fbuild%2Fgenerated%2Fsources%2Fadapter%2Fmb%2FExample%2FExampleInstance.java:164)
at mb.spt.expectation.ParseExpectation.evaluate(ParseExpectation.java:52)
at mb.spt.task.SptCheck.runTests(SptCheck.java:162)
at mb.spt.task.SptCheck.lambda$runTests$1(SptCheck.java:146)
at mb.common.result.Result.ifThrowingElse(Result.java:150)
at mb.spt.task.SptCheck.runTests(SptCheck.java:145)
at mb.spt.task.SptCheck.lambda$exec$0(SptCheck.java:110)
at mb.common.result.Result.ifThrowingElse(Result.java:150)
at mb.spt.task.SptCheck.exec(SptCheck.java:108)
at mb.spt.task.SptCheck.exec(SptCheck.java:40)
at mb.pie.api.Task.exec(Task.java:56)
at mb.pie.runtime.exec.TaskExecutor.execInternal(TaskExecutor.java:110)
at mb.pie.runtime.exec.TaskExecutor.exec(TaskExecutor.java:81)
at mb.pie.runtime.exec.BottomUpRunner.exec(BottomUpRunner.java:354)
at mb.pie.runtime.exec.BottomUpRunner.execAndSchedule(BottomUpRunner.java:118)
at mb.pie.runtime.exec.BottomUpRunner.execScheduled(BottomUpRunner.java:110)
at mb.pie.runtime.exec.BottomUpRunner.requireInitial(BottomUpRunner.java:75)
at mb.pie.runtime.MixedSessionImpl.lambda$updateAffectedBy$0(MixedSessionImpl.java:65)
at mb.pie.runtime.SessionImpl.handleException(SessionImpl.java:161)
at mb.pie.runtime.MixedSessionImpl.updateAffectedBy(MixedSessionImpl.java:65)
at mb.spoofax.eclipse.pie.PieRunner.updateAffectedBy(PieRunner.java:442)
at mb.spoofax.eclipse.pie.PieRunner.addOrUpdateEditor(PieRunner.java:128)
at mb.spoofax.eclipse.editor.EditorUpdateJob.update(EditorUpdateJob.java:89)
at mb.spoofax.eclipse.editor.EditorUpdateJob.run(EditorUpdateJob.java:74)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Note that adding some whitespace after the test will make the test work as intended:
test hello [[ Hello == World == World ]] parse fails
Using left
, right
or nothing instead of non-assoc
will also not cause an internal error.
Labels in SDF3 are not checked.
Use a label reference (in layout constraints) in SDF3, without defining the label.
An error message to appear.
No errors appeared.
In order to debug Statix specifications, it would be useful to be able to control the stack trace length and the term depth of the messages that are generated.
Several of the files generated by Spoofax during SDF3 compilation will choose to lowercase the generated file name, without also lowercasing the module name. As a result, compilation fails since the module name differs from the file name.
In src/Exp.sdf
:
module Exp
...
Either compilation fails (require a lowercase filename), or everything works fine (and support mixed-case filenames).
In generated/statix/signatures/exp-sig.stx
(fully lowercase path):
module signatures/Exp-sig
...
In generated/stratego/injections/exp-injections.str2
(fully lowercase path):
module injections/Exp-injections
...
In generated/stratego/pp/exp-pp.str2
(fully lowercase path):
module pp/Exp-pp
...
In generated/stratego/signatures/exp-sig.str2
(fully lowercase path):
module signatures/Exp-sig
...
The modules do not match the names of the files. The contents of the files all reference the capitalized name, but the files are written with a lowercase name. Causes several build errors.
In case the last token of an AST occurs in a test fixture, and the first token occurs in a test case defined after the fixture, then the resulting region will be of length 0.
This seems to occur when using layout-sensitive JSGLR2 (not tested with other JSGLR2 variants), but does not occur with JSGLR1.
This causes the following test to fail with JSGLR2 and succeed with JSGLR1:
module test
language noanalysis
fixture [[
[[...]]
World
]]
test hello goodbye [[
[[Hello]]
]] run hello-to-goodbye on #1 to Goodbye()
With the following syntax:
module start
context-free start-symbols
Start
context-free sorts
Start Greeting Object
context-free syntax
Start.Sequence = Greeting
Greeting.Hello = "Hello" Object
Greeting.Goodbye = "Goodbye" Object
Object.World = "World"
Object.Moon = "Moon"
lexical syntax
LAYOUT = [\ \n\v\f\r]
context-free restrictions
LAYOUT? -/- [\ \n\v\f\r]
And this stratego strategy: hello-to-goodbye : Hello(x) -> Goodbye(x)
And the following spoofaxc.cfg
name = "noanalysis"
java-class-id-prefix = java Noanalysis
file-extension = "noa"
sdf3 {
parse-table-generator {
layout-sensitive = true
}
}
esv {}
stratego {
sdf3-statix-explication-generation = true
}
parser {
default-start-symbol = sort Start
variant = jsglr2 { preset = LayoutSensitive }
}
styler {}
constraint-analyzer {}
stratego-runtime {}
Error markers on directories, such as "SDF3 analysis failed unexpectedly" are created but never removed even if the underlying issue is solved, leading to confusion.
Something that causes an error marker on a directory, and then fix that issue.
The error marker to disappear after fixing the issue.
The error marker stays indefinitely.
Grammar with overlapping concrete syntax but different constructors give an error in the parse table generator
Create grammar with overlapping concrete syntax but different constructors, for example due to a copy-paste mistake:
Exp.And = <<Exp> and <Exp>> {left}
Exp.Or = <<Or> and <Expr>> {left}
This to work (but be ambiguous at parse time), or give an error in the SDF3 file.
There was an error in the parse table generator.
This was reported from the lab, but it should be reproduced more thoroughly.
A parse test that yields an ambiguous AST succeeds, whereas the same test in Spoofax 2 would fail.
SDF3:
Term.Lit = INT
Term.Add = Term "+" Term
SPT:
test ambiguous [[
3 + 1 + 2
]] parse succeeds
The test fails.
The test succeeds.
Especially annoying because the WebLab tests for CS4200 still use Spoofax 2, so students end up having a solution that works in their own Eclipse but fails on WebLab (rightfully so, since it is ambiguous).
Undo in the Eclipse LWB sometimes does not work. It seems to sometimes undo in a different editor than the active one.
I do not have a precise reproduction yet. But when opening multiple editors, it seems to happen more often.
Undo to undo my last change in the active editor.
Undo does nothing, or undoes a change in a different (maybe last opened) editor.
There is a discussion about the same issue in the bnd Eclipse plugin here: https://bnd.discourse.group/t/undo-ctrl-z-not-working-in-bnd-files/91 which also links to this issue: bndtools/bnd#4433
The Eclipse LWB Spoofax console on Windows does not correctly show Unicode symbols.
Look at the console after a language build.
The console to contain Unicode symbols as can be seen on macOS (and probably Linux?).
All Unicode symbols are shown as ?
.
Changing several settings to use UTF-8/Unicode does not help. Changing the font to one that can display the symbols also does not seem to help.
Moving a project to a different directory (e.g., renaming/moving the Eclipse workspace and then using that workspace and/or importing the previous language project into it) and then building it causes build errors.
Close Eclipse, rename or move the workspace, open Eclipse in this workspace.
Then optionally delete and reimport the project if it is closed.
Then build that language project.
Building to succeed.
Build failed unexpectedly with an overlapping provided file exception.
SDF3 module name not corresponding to filename causes unexpected errors.
Create an SDF3 file where the module name does not correspond to the filename. For example, src/start.sdf3
with module bla
at the top.
Either give an error or make sure that things work correctly even when the names do not match.
There was an error in the generated pp.str2
about some strategies not existing, due to them being generated with a different name.
This was reported from the lab, but it should be reproduced more thoroughly.
An sdf3 file cannot be named main.sdf3
.
As all the main files in a Spoofax 3 project are named main
, I renamed start.sdf3
to main.sdf3
(and changed the module name). This, however, failed because the build could no longer locate src/start.sdf3
. Then I thought I would add a dummy start.sdf3
that redirects to main, but then I get errors that main
cannot be found (even after clean). Renaming main.sdf3
to main2.sdf3
(and changing the module name) fixed the issue.
module start
imports main
I expected main.sdf3
to be fine.
The main
SDF3 module could not be found, whereas renaming it to main2
fixed the issue.
Sometimes (after an unknown series of events) syntax highlighting in SDF files just stop working. If you copy seemingly correct code from one file to a different file, eclipse decides it is not valid anymore. For example, this file:
Has no code highlighting and a couple of errors (even though SPT tests pass!).
Having certain files open/closed has to do with it. In the above screenshot, expression.sdf3 also has errors (of a similar nature) and that happened after I closed all files and then reopened that specific one. Since then the errors persist (even though the contents did not change).
The errors I got were of the following nature:
in the image above it says "syntax error - unexpected character i" (so that's where the red line starts)
in this line it didn't like the character a, same error message.
here (in expression.sdf3, the other failing file) it can't find any of the constructors for sorts (for every sort) even though they are quite clearly defined above. The fact that SPT tests pass shows that the syntax is fine. It's just the editor.
I tried to resolve these editor errors in a number of ways:
The start symbol directive in SPT is ignored, with the SPT tests opting to use the default start symbol instead.
language foo
start symbol Exp
test parse to num [[ 1 ]] parse to Int("1")
Test succeeds.
Test fails, since it is parsed from the start symbol (i.e. something like Program(Exprs([Int("1")]))
).
When opening a statix signature file in Eclipse, some task seems to run that ends up writing an identical signature file to disk. This will then cause Eclipse to reload the file, which in turn triggers another analysis, which will write a file, etc.
I haven't looked to deeply into what causes this, but I suspect either moving to a hash resource stamper or preventing the writing of an indentical file would be a simple way to fix this.
This issue is slightly higher priority now that we have go-to-definition support in Statix, since that means that it becomes more likely for the user to actually open the generated files in their Eclipse instance.
If an SPT editor is open and has errors, those errors may persist even if a rebuild is done that will cause those tests to succeed. Editing or reopening the SPT file will then cause those errors to recompute (and disappear).
Errors/error markers are automatically updated.
Old results persist.
Spoofax 3 generates different names for "alias" SDF3 terms. Consider the following:
Expr.ExprCExpr = CExpr
Spoofax 2 will ignore the explicitly given constructor name and generate a rule called CExpr2Expr
. Spoofax 3 does the right thing (in my opinion, at least) and uses ExprCExpr
. Unsure if this is a bug or something that should just be documented in some transition to Spoofax 3 guide.
If you don't explicitly give a constructor (e.g. Expr = CExpr
), both Spoofax 2 and 3 will generate CExpr2Expr
.
Starting a constructor with a lower-case letter results in invalid syntax for the generated Statix signature.
Start.aa = <1>
Works.
Messages of ./build/generated/sources/languageSpecification/statix/signatures/start-sig.stx:
ERROR 292-295@23: Syntax error, expected: 'imports'
ERROR 296-302@24: Syntax error, not expected here: ' aa'
ERROR 303-304@24: Syntax error, not expected here: ':'
ERROR 310@24: Syntax error, expected: 'constructors'
ERROR ...
Spaces in Eclipse workspace path make language builds fail.
Build a language in an Eclipse workspace with spaces in the path.
Building to succeed.
Building fails with an unhelpful error.
Eclipse deadlocks when closing an editor while build is running in the Eclipse LWB.
Close an editor.
The editor to be closed and no deadlocks.
A deadlock occurs and Eclipse hangs.
Thread dump: https://gist.github.com/Gohla/52a47533c560be6d30b32021af2a2d44
Should be solved by performing the editor close in a job.
Statego signature generation fails if an SDF3 file contains a production without a constructor, such as Exp = Word
in the following example:
module start
context-free start-symbols
Start
context-free sorts
Start
Word
Exp
context-free syntax
Start.Empty = <>
Start.Program = Exp
Word.Hello = "Hello"
Word.World = "World"
Exp.Eq = Exp "==" Exp {non-assoc}
Exp = Word // Line causing the error
lexical syntax
LAYOUT = [\ \n\v\f\r]
context-free restrictions
LAYOUT? -/- [\ \n\v\f\r]
For that failing line the following signature AST is generated, which can't be pretty-printed:
OpDeclInj(
FunType(
FunType([ConstType(SortNoArgs("Word"{TermIndex("./src/start.sdf3", 58)}))], ConstType(SortNoArgs("Exp"{TermIndex("./src/start.sdf3", 115)})))
, ConstType(SortNoArgs("Exp"{TermIndex("./src/start.sdf3", 115)}))
)
)
I assume the issue is the nested FunType
terms.
The entire error is as follows:
Exception of message: mb.spoofax.lwb.compiler.stratego.StrategoConfigureExceptions$Sdf3SignatureGenerateFail: SDF3 to signature generator failed
Caused by: mb.stratego.common.StrategoExceptions$StrategyFail: Invoking Stratego strategy 'pp-stratego-string' failed
Stratego stack trace:
abox2text_list_1_2
abox2text_1_2
abox2text_0_1
box2text_string_0_1
pp_stratego_string_0_0
pp_stratego_string_0_0
Stratego input term:
Module(
"signatures/start-sig"
, [ Imports([Import("libstratego-lib")])
, Signature(
[ Sorts([SortNoArgs("Start"{TermIndex("./src/start.sdf3", 12)}), SortNoArgs("Word"{TermIndex("./src/start.sdf3", 14)}), SortNoArgs("Exp"{TermIndex("./src/start.sdf3", 16)})]{TermIndex("./src/start.sdf3", 22)})
, Constructors(
[ OpDecl("Empty"{TermIndex("./src/start.sdf3", 27)}, ConstType(SortNoArgs("Start"{TermIndex("./src/start.sdf3", 25)})))
, OpDecl(
"Program"{TermIndex("./src/start.sdf3", 44)}
, FunType([ConstType(SortNoArgs("Exp"{TermIndex("./src/start.sdf3", 90)}))], ConstType(SortNoArgs("Start"{TermIndex("./src/start.sdf3", 42)})))
)
, OpDecl("Hello"{TermIndex("./src/start.sdf3", 60)}, ConstType(SortNoArgs("Word"{TermIndex("./src/start.sdf3", 58)})))
, OpDecl("World"{TermIndex("./src/start.sdf3", 76)}, ConstType(SortNoArgs("Word"{TermIndex("./src/start.sdf3", 74)})))
, OpDecl(
"Eq"{TermIndex("./src/start.sdf3", 92)}
, FunType(
[ConstType(SortNoArgs("Exp"{TermIndex("./src/start.sdf3", 90)})), ConstType(SortNoArgs("Exp"{TermIndex("./src/start.sdf3", 90)}))]
, ConstType(SortNoArgs("Exp"{TermIndex("./src/start.sdf3", 90)}))
)
)
, OpDeclInj(
FunType(
FunType([ConstType(SortNoArgs("Word"{TermIndex("./src/start.sdf3", 58)}))], ConstType(SortNoArgs("Exp"{TermIndex("./src/start.sdf3", 115)})))
, ConstType(SortNoArgs("Exp"{TermIndex("./src/start.sdf3", 115)}))
)
)
, OpDecl("Start-Plhdr", ConstType(SortNoArgs("Start")))
, OpDecl("Exp-Plhdr", ConstType(SortNoArgs("Exp")))
, OpDecl("Word-Plhdr", ConstType(SortNoArgs("Word")))
, OpDecl(
"Start-Plhdr"
, FunType([ConstType(SortNoArgs("COMPLETION-INSERTION"))], ConstType(SortNoArgs("Start")))
)
, OpDecl(
"Exp-Plhdr"
, FunType([ConstType(SortNoArgs("COMPLETION-INSERTION"))], ConstType(SortNoArgs("Exp")))
)
, OpDecl(
"Word-Plhdr"
, FunType([ConstType(SortNoArgs("COMPLETION-INSERTION"))], ConstType(SortNoArgs("Word")))
)
, OpDecl("Start-Opt-Plhdr", ConstType(SortNoArgs("Start")))
]
)
]
)
]
)
Spoofax adds custom menus to the top of Eclipse to activate certain actions, but these menus do not work because they disappear when clicked on.
Examples of these menus are Spoofax
, SDF3
, ESV
, etc.
Click on the menus to open debug options.
The menu to open and be accessible.
The menus disappears, see the clip attached below.
Using the same constructor name across different sorts results in errors in the generated Statix signatures (and possibly other things).
Start.Program = Exp* Stmt*
Stmt.Aa = <<ID>>
Exp.Aa = <<INT>>
Error that Aa
is duplicated across Stmt
and Exp
.
Messages of ./build/generated/sources/languageSpecification/statix/signatures/start-sig.stx:
ERROR 333-335@25: Duplicate constructor "Aa/1"
ERROR 294-296@23: Duplicate constructor "Aa/1"
This may also cause issues in other parts. Spoofax 2 normally emits a warning here, talking about the generated pretty printer.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.