Name binding This() throws stacktrace
Steps to reproduce
1) create a new entity project
2) add this-expressions
Property.Property = <<ID> : <Type> = <Exp>> Exp.This = <this>
3) add def sites for this
Entity(x, _) : defines Entity x of type Type(x) scopes Property implicitly defines This This() of type Type(x) scopes This
4) add use site
This() : refers to This This()
Up until 3 everything worked fine. Adding 4 makes analysis fail with the following stacktrace.
Internal error evaluating editor-analyze (InterpreterException; see error log) rewriting failed, trace: editor_analyze_0_0 analysis_single_default_3_1 analyze_one_1_3 analyze_collect_1_2 measure_time_2_1 measure_time_2_0 n_44712 measure_time_2_1 measure_time_2_0 n_44712 nabl_collect_0_2 nabl_collect_1_4 preserve_annos_1_0 origin_track_forced_1_0 q_44790 nabl_siblings_0_4 nabl_siblings_0_4 nabl_collect_1_4 preserve_annos_1_0 origin_track_forced_1_0 q_44790 nabl_siblings_0_4 nabl_siblings_0_4 nabl_siblings_0_4 nabl_collect_1_4 preserve_annos_1_0 origin_track_forced_1_0 q_44790 nabl_siblings_0_4 nabl_siblings_0_4 nabl_collect_1_4 preserve_annos_1_0 origin_track_forced_1_0 q_44790 nabl_siblings_0_4 nabl_collect_1_4 preserve_annos_1_0 origin_track_forced_1_0 q_44790 nabl_siblings_0_4 nabl_siblings_0_4 nabl_siblings_0_4 nabl_collect_1_4 nabl_annotate_properties_0_3 try_1_0 nabl_hiding_task_0_1 nabl_uri_0_0 fetch_elem_1_0 nabl_collect_one_resolved_def_0_0 insert_results_or_delay_0_0 task_delay_0_0 task_api_delay_0_1
Java trace
Submitted by Daco Harkes on 6 March 2014 at 13:28org.spoofax.interpreter.core.InterpreterException: Exception during evaluation at org.spoofax.interpreter.core.Interpreter.evaluate(Interpreter.java:120) at org.spoofax.interpreter.core.Interpreter.invoke(Interpreter.java:82) at org.strategoxt.HybridInterpreter.invoke(HybridInterpreter.java:424) at org.strategoxt.imp.debug.core.str.launching.DebuggableHybridInterpreter.invoke(DebuggableHybridInterpreter.java:150) at org.strategoxt.imp.runtime.services.StrategoObserver.invoke(StrategoObserver.java:637) at org.strategoxt.imp.runtime.services.StrategoObserver.invokeSilent(StrategoObserver.java:695) at org.strategoxt.imp.runtime.services.StrategoObserver.update(StrategoObserver.java:399) at org.strategoxt.imp.runtime.services.StrategoObserverUpdateJob.analyze(StrategoObserverUpdateJob.java:30) at org.strategoxt.imp.runtime.services.StrategoAnalysisQueue$UpdateJob.run(StrategoAnalysisQueue.java:82) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53) Caused by: java.lang.RuntimeException: Cannot delay task while no task evaluation is in progress. at org.metaborg.runtime.task.primitives.task_api_delay_0_1.call(task_api_delay_0_1.java:26) at org.spoofax.interpreter.stratego.PrimT.eval(PrimT.java:63) at org.spoofax.interpreter.stratego.Strategy.evaluate(Strategy.java:76) 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.lang.compat.override.performance_tweaks.lifted6945.invoke(lifted6945.java:24) at org.strategoxt.lang.SRTS_one.fetchMaintainAnnos(SRTS_one.java:57) at org.strategoxt.lang.SRTS_one.invoke(SRTS_one.java:21) at org.strategoxt.lang.compat.override.performance_tweaks.fetch_elem_1_0_override.invoke(fetch_elem_1_0_override.java:27) at org.strategoxt.lang.Strategy.invokeDynamic(Strategy.java:40) 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:76) 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.try_1_0.invoke(try_1_0.java:28) at org.strategoxt.lang.Strategy.invokeDynamic(Strategy.java:40) 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:76) 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.preserve_annos_1_0.invoke(preserve_annos_1_0.java:29) at org.strategoxt.lang.Strategy.invokeDynamic(Strategy.java:40) 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:76) 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.preserve_annos_1_0.invoke(preserve_annos_1_0.java:29) at org.strategoxt.lang.Strategy.invokeDynamic(Strategy.java:40) 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:76) 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.preserve_annos_1_0.invoke(preserve_annos_1_0.java:29) at org.strategoxt.lang.Strategy.invokeDynamic(Strategy.java:40) 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:76) 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.preserve_annos_1_0.invoke(preserve_annos_1_0.java:29) at org.strategoxt.lang.Strategy.invokeDynamic(Strategy.java:40) 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:76) 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.preserve_annos_1_0.invoke(preserve_annos_1_0.java:29) at org.strategoxt.lang.Strategy.invokeDynamic(Strategy.java:40) 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:76) at org.spoofax.interpreter.core.Interpreter.evaluate(Interpreter.java:109) ... 9 more
Issue Log
On 6 March 2014 at 13:31 Daco Harkes commented:
Oops, there was a typo.
Entity(x, _) : defines Entity x of type Type(x) scopes Property implicitly defines This This() [[and not "this"]] of type Type(x) scopes This
Fixing the typo makes This() resolve, but after hitting reset and reanalyse the stacktrace is back.
On 6 March 2014 at 13:52 Guido Wachsmuth commented:
This is caused by an error in the default task creation for hiding errors. When you turn them of, this should work again.
On 6 March 2014 at 13:56 Daco Harkes commented:
Disabling hiding errors does not solve the stacktrace.
check.str
// ... strategies nabl-check-disable-hiding(|uri, ns) = id
On 6 March 2014 at 14:07 Guido Wachsmuth commented:
Ok, that’s strange.
The error should be somewhere here:
nabl_annotate_properties_0_3 try_1_0 nabl_hiding_task_0_1 nabl_uri_0_0 fetch_elem_1_0 nabl_collect_one_resolved_def_0_0 insert_results_or_delay_0_0 task_delay_0_0 task_api_delay_0_1
On 11 June 2014 at 12:56 Daco Harkes commented:
Steps to reproduce this error do no longer result in errors.
On 11 June 2014 at 12:56 Daco Harkes closed this issue.
Log in to post comments