Sometimes, there is a NullPointerException at mb.statix.spec.ApplyRelaxed.apply(ApplyRelaxed.java:35) when running the Statix solver.
Versions
Spoofax version: Spoofax 3 development versions
Statix setup: multi-file
Steps to reproduce the behavior
Unfortunately, this only happens sometimes, I have not been able to reproduce it deterministically. I've seen it happen on the buildfarm on pie.lang and on my laptop on sdf3 in Spoofax 3.
Observed behavior
NullPointerException is thrown.
Expected behavior
No exceptions are thrown.
Additional context
Stack trace from the buildfarm:
> Task :pie.lang.root:pie.lang.test:spoofaxBuild FAILED
Analysis failed unexpectedly
org.metaborg.core.analysis.AnalysisException: org.metaborg.core.MetaborgException: Invoking Stratego strategy editor-analyze failed unexpectedly
Stratego trace:
editor_analyze_0_0
stx_editor_analyze_2_3
stx__editor_analyze_2_3
with_1_1
stx__solve_multi_file_0_5
Exception during evaluation: null
at org.metaborg.spoofax.core.analysis.constraint.AbstractConstraintAnalyzer.callAnalysis(AbstractConstraintAnalyzer.java:320)
at org.metaborg.spoofax.core.analysis.constraint.AbstractConstraintAnalyzer.doAnalysis(AbstractConstraintAnalyzer.java:186)
at org.metaborg.spoofax.core.analysis.constraint.AbstractConstraintAnalyzer.analyzeAll(AbstractConstraintAnalyzer.java:153)
at org.metaborg.spoofax.core.analysis.constraint.AbstractConstraintAnalyzer.analyzeAll(AbstractConstraintAnalyzer.java:1)
at org.metaborg.core.analysis.AnalysisService.analyzeAll(AnalysisService.java:43)
at org.metaborg.spoofax.core.analysis.SpoofaxAnalysisService.analyzeAll(SpoofaxAnalysisService.java:25)
at org.metaborg.spoofax.core.analysis.SpoofaxAnalysisService.analyzeAll(SpoofaxAnalysisService.java:1)
at org.metaborg.core.build.Builder.analyze(Builder.java:402)
at org.metaborg.core.build.Builder.updateLanguageResources(Builder.java:272)
at org.metaborg.core.build.Builder.build(Builder.java:167)
at org.metaborg.spoofax.core.build.SpoofaxBuilder.build(SpoofaxBuilder.java:48)
at org.metaborg.spoofax.core.build.SpoofaxBuilder.build(SpoofaxBuilder.java:1)
at org.metaborg.core.build.IBuilder.build(IBuilder.java:55)
at org.metaborg.spoofax.core.build.SpoofaxBuilder.build(SpoofaxBuilder.java:52)
at mb.spoofax.gradle.task.SpoofaxBuildTask.execute(SpoofaxBuildTask.kt:86)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.run(ExecuteActionsTaskExecuter.java:494)
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.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:479)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:462)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$400(ExecuteActionsTaskExecuter.java:105)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.executeWithPreviousOutputFiles(ExecuteActionsTaskExecuter.java:273)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:251)
at org.gradle.internal.execution.steps.ExecuteStep.lambda$executeOperation$1(ExecuteStep.java:66)
at java.base/java.util.Optional.orElseGet(Optional.java:369)
at org.gradle.internal.execution.steps.ExecuteStep.executeOperation(ExecuteStep.java:66)
at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:34)
at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:47)
at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.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.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:44)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:34)
at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:72)
at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:42)
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:53)
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:39)
at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:44)
at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:77)
at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:58)
at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:54)
at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:32)
at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:57)
at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:38)
at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:63)
at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:30)
at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:176)
at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:76)
at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:47)
at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:43)
at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:32)
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:39)
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:25)
at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:102)
at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:95)
at java.base/java.util.Optional.map(Optional.java:265)
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:55)
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:39)
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:83)
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:44)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:96)
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:52)
at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:83)
at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:54)
at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:74)
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.lambda$execute$2(SkipEmptyWorkStep.java:88)
at java.base/java.util.Optional.orElseGet(Optional.java:369)
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:88)
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:34)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:46)
at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:34)
at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:43)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution$3.withWorkspace(ExecuteActionsTaskExecuter.java:286)
at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:43)
at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:33)
at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:40)
at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:30)
at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:54)
at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:40)
at org.gradle.internal.execution.impl.DefaultExecutionEngine.execute(DefaultExecutionEngine.java:41)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:183)
at java.base/java.util.Optional.orElseGet(Optional.java:369)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:183)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:173)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
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.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:41)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:411)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:398)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:391)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:377)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
at org.gradle.execution.plan.DefaultPlanExecutor.process(DefaultPlanExecutor.java:72)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph.executeWithServices(DefaultTaskExecutionGraph.java:196)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph.execute(DefaultTaskExecutionGraph.java:189)
at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:39)
at org.gradle.execution.DefaultBuildWorkExecutor.execute(DefaultBuildWorkExecutor.java:40)
at org.gradle.execution.DefaultBuildWorkExecutor.access$000(DefaultBuildWorkExecutor.java:24)
at org.gradle.execution.DefaultBuildWorkExecutor$1.proceed(DefaultBuildWorkExecutor.java:48)
at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:49)
at org.gradle.execution.DefaultBuildWorkExecutor.execute(DefaultBuildWorkExecutor.java:40)
at org.gradle.execution.DefaultBuildWorkExecutor.execute(DefaultBuildWorkExecutor.java:33)
at org.gradle.execution.IncludedBuildLifecycleBuildWorkExecutor.execute(IncludedBuildLifecycleBuildWorkExecutor.java:36)
at org.gradle.execution.DeprecateUndefinedBuildWorkExecutor.execute(DeprecateUndefinedBuildWorkExecutor.java:44)
at org.gradle.execution.BuildOperationFiringBuildWorkerExecutor$ExecuteTasks.run(BuildOperationFiringBuildWorkerExecutor.java:57)
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.execution.BuildOperationFiringBuildWorkerExecutor.execute(BuildOperationFiringBuildWorkerExecutor.java:42)
at org.gradle.initialization.DefaultGradleLauncher.runWork(DefaultGradleLauncher.java:260)
at org.gradle.initialization.DefaultGradleLauncher.doClassicBuildStages(DefaultGradleLauncher.java:172)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:148)
at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:124)
at org.gradle.internal.work.DefaultWorkerLeaseService.withSharedLease(DefaultWorkerLeaseService.java:109)
at org.gradle.composite.internal.DefaultIncludedBuild.execute(DefaultIncludedBuild.java:196)
at org.gradle.composite.internal.DefaultIncludedBuildController.doBuild(DefaultIncludedBuildController.java:220)
at org.gradle.composite.internal.DefaultIncludedBuildController.run(DefaultIncludedBuildController.java:113)
at org.gradle.composite.internal.DefaultIncludedBuildControllers$BuildOpRunnable.run(DefaultIncludedBuildControllers.java:129)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: org.metaborg.core.MetaborgException: Invoking Stratego strategy editor-analyze failed unexpectedly
Stratego trace:
editor_analyze_0_0
stx_editor_analyze_2_3
stx__editor_analyze_2_3
with_1_1
stx__solve_multi_file_0_5
Exception during evaluation: null
at org.metaborg.spoofax.core.stratego.StrategoCommon.handleException(StrategoCommon.java:223)
at org.metaborg.spoofax.core.stratego.StrategoCommon.invoke(StrategoCommon.java:154)
at org.metaborg.spoofax.core.analysis.constraint.AbstractConstraintAnalyzer.callAnalysis(AbstractConstraintAnalyzer.java:318)
... 180 more
Caused by: org.spoofax.interpreter.core.InterpreterException: Exception during evaluation: null
at org.spoofax.interpreter.core.Interpreter.evaluate(Interpreter.java:113)
at org.spoofax.interpreter.core.Interpreter.invoke(Interpreter.java:80)
at org.strategoxt.HybridInterpreter.invoke(HybridInterpreter.java:457)
at org.metaborg.spoofax.core.stratego.StrategoCommon.invoke(StrategoCommon.java:148)
... 181 more
Caused by: java.lang.NullPointerException
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at java.base/java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:603)
at java.base/java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:678)
at java.base/java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:737)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateParallel(ReduceOps.java:919)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
at mb.statix.spoofax.STX_solve_multi_file.call(STX_solve_multi_file.java:62)
at mb.statix.spoofax.StatixPrimitive.call(StatixPrimitive.java:84)
at mb.statix.spoofax.StatixPrimitive.call(StatixPrimitive.java:69)
at org.spoofax.interpreter.stratego.PrimT.eval(PrimT.java:61)
at org.spoofax.interpreter.stratego.Strategy.evaluate(Strategy.java:86)
at org.spoofax.interpreter.stratego.SDefT.evaluate(SDefT.java:213)
at org.strategoxt.lang.InteropStrategy.invokeDynamic(InteropStrategy.java:57)
at org.strategoxt.lang.DynamicStrategy.invoke(DynamicStrategy.java:22)
at org.strategoxt.stratego_lib.with_1_1.invoke(with_1_1.java:31)
at org.strategoxt.lang.Strategy.invokeDynamic(Strategy.java:44)
at org.strategoxt.lang.InteropSDefT.evaluate(InteropSDefT.java:192)
at org.strategoxt.lang.InteropSDefT.evaluate(InteropSDefT.java:183)
at org.strategoxt.lang.InteropSDefT$StrategyBody.evaluate(InteropSDefT.java:245)
at org.strategoxt.lang.InteropSDefT$StrategyBody.eval(InteropSDefT.java:238)
at org.spoofax.interpreter.stratego.Strategy.evaluate(Strategy.java:86)
at org.spoofax.interpreter.core.Interpreter.evaluate(Interpreter.java:105)
... 184 more
Caused by: java.lang.NullPointerException
at mb.statix.spec.ApplyRelaxed.apply(ApplyRelaxed.java:35)
at mb.statix.spec.RuleUtil.apply(RuleUtil.java:154)
at mb.statix.spec.RuleUtil.applyOrdered(RuleUtil.java:121)
at mb.statix.spec.RuleUtil.applyOrderedOne(RuleUtil.java:78)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:655)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:1)
at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:408)
at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:1)
at mb.statix.constraints.CExists.matchOrThrow(CExists.java:90)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:672)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:1)
at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:408)
at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:1)
at mb.statix.constraints.CExists.matchOrThrow(CExists.java:90)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:672)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:1)
at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:408)
at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:1)
at mb.statix.constraints.CExists.matchOrThrow(CExists.java:90)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:408)
at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:1)
at mb.statix.constraints.CExists.matchOrThrow(CExists.java:90)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:672)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:1)
at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:408)
at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:1)
at mb.statix.constraints.CExists.matchOrThrow(CExists.java:90)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:672)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:1)
at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:408)
at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:1)
at mb.statix.constraints.CExists.matchOrThrow(CExists.java:90)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:408)
at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:1)
at mb.statix.constraints.CExists.matchOrThrow(CExists.java:90)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:672)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:1)
at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:408)
at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:1)
at mb.statix.constraints.CExists.matchOrThrow(CExists.java:90)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
at mb.statix.solver.persistent.GreedySolver$1.caseConj(GreedySolver.java:354)
at mb.statix.solver.persistent.GreedySolver$1.caseConj(GreedySolver.java:1)
at mb.statix.constraints.CConj.matchOrThrow(CConj.java:59)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:672)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:1)
at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:408)
at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:1)
at mb.statix.constraints.CExists.matchOrThrow(CExists.java:90)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:672)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:1)
at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:672)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:1)
at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
at mb.statix.solver.persistent.GreedySolver$1.caseConj(GreedySolver.java:354)
at mb.statix.solver.persistent.GreedySolver$1.caseConj(GreedySolver.java:1)
at mb.statix.constraints.CConj.matchOrThrow(CConj.java:59)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:672)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:1)
at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:408)
at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:1)
at mb.statix.constraints.CExists.matchOrThrow(CExists.java:90)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:257)
at mb.statix.solver.persistent.GreedySolver.access$5(GreedySolver.java:213)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:672)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:1)
at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:321)
at mb.statix.solver.persistent.GreedySolver.solve(GreedySolver.java:180)
at mb.statix.solver.persistent.Solver.solve(Solver.java:63)
at mb.statix.spoofax.STX_solve_multi_file.solveConstraint(STX_solve_multi_file.java:75)
at mb.statix.spoofax.STX_solve_multi_file.lambda$3(STX_solve_multi_file.java:56)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
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$ReduceTask.doLeaf(ReduceOps.java:952)
at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:926)
at java.base/java.util.stream.AbstractTask.compute(AbstractTask.java:327)
at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:746)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
Stack trace from my laptop:
> Task :spoofax3.lwb.root:sdf3:test
AnalyzerTest > analyzeMultipleSuccess() FAILED
mb.constraint.common.ConstraintAnalyzerExceptions$StrategoInvokeFail: Constraint analyzer failed unexpectedly due to failure in Stratego execution
Caused by:
mb.stratego.common.StrategoExceptions$ExceptionalFail: Invoking Stratego strategy 'statix-editor-analyze' failed exceptionally
Stratego stack trace:
stx__solve_multi_file_0_5
with_1_1
stx__editor_analyze_2_3
stx_editor_analyze_2_3
statix_editor_analyze_0_0
Stratego input term:
AnalyzeMulti(
("java##jimfs://24c6350c-2fbe-4694-9b2e-7fad133810f5/", Added((){TermIndex("java##jimfs://24c6350c-2fbe-4694-9b2e-7fad133810f5/", 0)}))
, [ ( "java##jimfs://24c6350c-2fbe-4694-9b2e-7fad133810f5/b.sdf3"
, Added(
Module(
Unparameterized("b")
, [Imports([Module(Unparameterized("a"))])]
, [ SDFSection(CfSorts(["B"]))
, SDFSection(
ContextFreeSyntax(
[SdfProduction(SortDef("B"), Rhs([Sort("A")]), NoAttrs())]
)
)
]
)
)
)
, ( "java##jimfs://24c6350c-2fbe-4694-9b2e-7fad133810f5/a.sdf3"
, Added(
Module(
Unparameterized("a")
, []
, [ SDFSection(CfSorts(["A"]))
, SDFSection(
ContextFreeSyntax(
[ SdfProductionWithCons(
SortCons(SortDef("A"), Constructor("A"))
, Rhs([Lit("\"A\"")])
, NoAttrs()
)
]
)
)
]
)
)
)
, ( "java##jimfs://24c6350c-2fbe-4694-9b2e-7fad133810f5/c.sdf3"
, Added(
Module(
Unparameterized("c")
, [Imports([Module(Unparameterized("a")), Module(Unparameterized("b"))])]
, [ SDFSection(CfSorts(["C"]))
, SDFSection(
ContextFreeSyntax(
[SdfProduction(SortDef("C"), Rhs([Sort("A")]), NoAttrs())]
)
)
, SDFSection(
ContextFreeSyntax(
[SdfProduction(SortDef("C"), Rhs([Sort("B")]), NoAttrs())]
)
)
]
)
)
)
]
, ()
, BLOB_ThreadCancel()()
)
Caused by:
org.spoofax.interpreter.core.InterpreterException: Exception during evaluation: null
at org.spoofax.interpreter.core.Interpreter.evaluate(Interpreter.java:113)
at org.spoofax.interpreter.core.Interpreter.invoke(Interpreter.java:80)
at org.strategoxt.HybridInterpreter.invoke(HybridInterpreter.java:458)
at mb.stratego.common.StrategoRuntime.invokeOrNull(StrategoRuntime.java:169)
at mb.stratego.common.StrategoRuntime.invokeOrNull(StrategoRuntime.java:147)
at mb.stratego.common.StrategoRuntime.invoke(StrategoRuntime.java:56)
at mb.constraint.common.ConstraintAnalyzer.doAnalyze(ConstraintAnalyzer.java:383)
at mb.constraint.common.ConstraintAnalyzer.analyze(ConstraintAnalyzer.java:285)
at mb.spoofax.test.SingleBaseLanguageTestBase.analyze(SingleBaseLanguageTestBase.java:161)
at mb.sdf3.language.AnalyzerTest.analyzeMultipleSuccess(AnalyzerTest.java:86)
Caused by:
java.lang.NullPointerException
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at java.base/java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:603)
at java.base/java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:678)
at java.base/java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:737)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateParallel(ReduceOps.java:919)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
at mb.statix.spoofax.STX_solve_multi_file.call(STX_solve_multi_file.java:62)
at mb.statix.spoofax.StatixPrimitive.call(StatixPrimitive.java:91)
at mb.statix.spoofax.StatixPrimitive.call(StatixPrimitive.java:76)
at org.spoofax.interpreter.stratego.PrimT.eval(PrimT.java:61)
at org.spoofax.interpreter.stratego.Strategy.evaluate(Strategy.java:86)
at org.spoofax.interpreter.stratego.SDefT.evaluate(SDefT.java:213)
at org.strategoxt.lang.InteropStrategy.invokeDynamic(InteropStrategy.java:57)
at org.strategoxt.lang.DynamicStrategy.invoke(DynamicStrategy.java:22)
at org.strategoxt.stratego_lib.with_1_1.invoke(with_1_1.java:31)
at org.strategoxt.lang.Strategy.invokeDynamic(Strategy.java:44)
at org.strategoxt.lang.InteropSDefT.evaluate(InteropSDefT.java:192)
at org.strategoxt.lang.InteropSDefT.evaluate(InteropSDefT.java:183)
at org.strategoxt.lang.InteropSDefT$StrategyBody.evaluate(InteropSDefT.java:245)
at org.strategoxt.lang.InteropSDefT$StrategyBody.eval(InteropSDefT.java:238)
at org.spoofax.interpreter.stratego.Strategy.evaluate(Strategy.java:86)
at org.spoofax.interpreter.core.Interpreter.evaluate(Interpreter.java:105)
... 9 more
Caused by:
java.lang.NullPointerException
at mb.statix.spec.ApplyRelaxed.apply(ApplyRelaxed.java:35)
at mb.statix.spec.RuleUtil.apply(RuleUtil.java:157)
at mb.statix.spec.RuleUtil.applyOrdered(RuleUtil.java:124)
at mb.statix.spec.RuleUtil.applyOrderedOne(RuleUtil.java:81)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:664)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:323)
at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:323)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:258)
at mb.statix.solver.persistent.GreedySolver.access$400(GreedySolver.java:94)
at mb.statix.solver.persistent.GreedySolver$1.caseConj(GreedySolver.java:356)
at mb.statix.solver.persistent.GreedySolver$1.caseConj(GreedySolver.java:323)
at mb.statix.constraints.CConj.matchOrThrow(CConj.java:59)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:323)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:258)
at mb.statix.solver.persistent.GreedySolver.access$400(GreedySolver.java:94)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:681)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:323)
at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:323)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:258)
at mb.statix.solver.persistent.GreedySolver.access$400(GreedySolver.java:94)
at mb.statix.solver.persistent.GreedySolver$1.caseConj(GreedySolver.java:356)
at mb.statix.solver.persistent.GreedySolver$1.caseConj(GreedySolver.java:323)
at mb.statix.constraints.CConj.matchOrThrow(CConj.java:59)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:323)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:258)
at mb.statix.solver.persistent.GreedySolver.access$400(GreedySolver.java:94)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:681)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:323)
at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:323)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:258)
at mb.statix.solver.persistent.GreedySolver.access$400(GreedySolver.java:94)
at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:410)
at mb.statix.solver.persistent.GreedySolver$1.caseExists(GreedySolver.java:323)
at mb.statix.constraints.CExists.matchOrThrow(CExists.java:90)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:323)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:258)
at mb.statix.solver.persistent.GreedySolver.access$400(GreedySolver.java:94)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:681)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:323)
at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:323)
at mb.statix.solver.persistent.GreedySolver.success(GreedySolver.java:258)
at mb.statix.solver.persistent.GreedySolver.access$400(GreedySolver.java:94)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:681)
at mb.statix.solver.persistent.GreedySolver$1.caseUser(GreedySolver.java:323)
at mb.statix.constraints.CUser.matchOrThrow(CUser.java:89)
at mb.statix.solver.persistent.GreedySolver.k(GreedySolver.java:323)
at mb.statix.solver.persistent.GreedySolver.solve(GreedySolver.java:181)
at mb.statix.solver.persistent.Solver.solve(Solver.java:63)
at mb.statix.spoofax.STX_solve_multi_file.solveConstraint(STX_solve_multi_file.java:75)
at mb.statix.spoofax.STX_solve_multi_file.lambda$call$3(STX_solve_multi_file.java:56)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
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$ReduceTask.doLeaf(ReduceOps.java:952)
at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:926)
at java.base/java.util.stream.AbstractTask.compute(AbstractTask.java:327)
at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:746)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
I was trying to reproduce this, but unfortunately the Spoofax 3 build failed. See Slack for details. Can you comment when that is resolved? Then I'll try to reproduce and fix it.
Bug description
Sometimes, there is a
NullPointerException
atmb.statix.spec.ApplyRelaxed.apply(ApplyRelaxed.java:35)
when running the Statix solver.Versions
Spoofax version: Spoofax 3 development versions Statix setup:
multi-file
Steps to reproduce the behavior
Unfortunately, this only happens sometimes, I have not been able to reproduce it deterministically. I've seen it happen on the buildfarm on
pie.lang
and on my laptop onsdf3
in Spoofax 3.Observed behavior
NullPointerException
is thrown.Expected behavior
No exceptions are thrown.
Additional context
Stack trace from the buildfarm:
Stack trace from my laptop: