Introduce InvocationParameter to instantiateArguments.
This commit is contained in:
parent
b102237bb8
commit
8c25d50ea5
|
|
@ -24,7 +24,6 @@ package jetbrains.mps.logic.reactor.logical;
|
|||
*/
|
||||
public interface LogicalContext {
|
||||
|
||||
|
||||
<V> Logical<V> variable(MetaLogical<V> metaLogical);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
package jetbrains.mps.logic.reactor.program;
|
||||
|
||||
|
||||
import jetbrains.mps.logic.reactor.evaluation.InvocationContext;
|
||||
import jetbrains.mps.logic.reactor.logical.LogicalContext;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -38,6 +39,16 @@ public abstract class Program {
|
|||
|
||||
public abstract Iterable<Handler> handlers();
|
||||
|
||||
public abstract List<?> instantiateArguments(List<?> arguments, LogicalContext logicalContext);
|
||||
/**
|
||||
* @deprecated use the overloaded method with InvocationContext parameter
|
||||
*/
|
||||
@Deprecated
|
||||
public List<?> instantiateArguments(List<?> arguments, LogicalContext logicalContext) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public List<?> instantiateArguments(List<?> arguments, LogicalContext logicalContext, InvocationContext ignore) {
|
||||
return instantiateArguments(arguments, logicalContext);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -271,7 +271,7 @@ class Controller(
|
|||
}
|
||||
|
||||
private fun activateConstraint(constraint: Constraint, context: Context) : Boolean {
|
||||
val args = program.instantiateArguments(constraint.arguments(), context.logicalContext)
|
||||
val args = program.instantiateArguments(constraint.arguments(), context.logicalContext, context)
|
||||
return context.updateState { state ->
|
||||
process(constraint.occurrence(context.logicalContext, args, frameStack), state)
|
||||
}
|
||||
|
|
@ -281,7 +281,7 @@ class Controller(
|
|||
profiler.profile<Boolean>("ask_${predicate.symbol()}") {
|
||||
|
||||
context.evalSafe { state ->
|
||||
val args = program.instantiateArguments(predicate.arguments(), context.logicalContext)
|
||||
val args = program.instantiateArguments(predicate.arguments(), context.logicalContext, context)
|
||||
if (session.sessionSolver().ask(predicate.invocation(args, context.logicalContext, context)))
|
||||
state
|
||||
else
|
||||
|
|
@ -294,7 +294,7 @@ class Controller(
|
|||
profiler.profile<Boolean>("tell_${predicate.symbol()}") {
|
||||
|
||||
context.runSafe {
|
||||
val args = program.instantiateArguments(predicate.arguments(), context.logicalContext)
|
||||
val args = program.instantiateArguments(predicate.arguments(), context.logicalContext, context)
|
||||
session.sessionSolver().tell(predicate.invocation(args, context.logicalContext, context))
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -112,20 +112,22 @@ class EqualsSolver : Solver {
|
|||
infix fun <T : Any> T.is_eq(value: T): Boolean = EvaluationSession.current().let { session ->
|
||||
val logicalContext = mockLogicalContext()
|
||||
val predicate = EqualsSolver.eq(this, value)
|
||||
val args = session.program().instantiateArguments(predicate.arguments(), logicalContext)
|
||||
val inv = predicate.invocation(args, logicalContext, object : InvocationContext {
|
||||
val invocationContext: InvocationContext = object : InvocationContext {
|
||||
override fun report(feedback: EvaluationFeedback) = TODO()
|
||||
})
|
||||
}
|
||||
val args = session.program().instantiateArguments(predicate.arguments(), logicalContext, invocationContext)
|
||||
val inv = predicate.invocation(args, logicalContext, invocationContext)
|
||||
session.sessionSolver().ask(inv)
|
||||
}
|
||||
|
||||
infix fun <T : Any> T.eq(value: T) = EvaluationSession.current().let { session ->
|
||||
val logicalContext = mockLogicalContext()
|
||||
val predicate = EqualsSolver.eq(this, value)
|
||||
val args = session.program().instantiateArguments(predicate.arguments(), logicalContext)
|
||||
val inv = predicate.invocation(args, logicalContext, object : InvocationContext {
|
||||
val invocationContext: InvocationContext = object : InvocationContext {
|
||||
override fun report(feedback: EvaluationFeedback) = TODO()
|
||||
})
|
||||
}
|
||||
val args = session.program().instantiateArguments(predicate.arguments(), logicalContext, invocationContext)
|
||||
val inv = predicate.invocation(args, logicalContext, invocationContext)
|
||||
session.sessionSolver().tell(inv)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue