Coverage Summary for Class: PrimitiveArgumentsKt (it.unibo.tuprolog.argumentation.core.primitives)

Class Class, % Method, % Branch, % Line, % Instruction, %
PrimitiveArgumentsKt 100% (1/1) 100% (2/2) 50% (3/6) 100% (7/7) 80.4% (45/56)


 package it.unibo.tuprolog.argumentation.core.primitives
 
 import it.unibo.tuprolog.argumentation.core.runtime.Arg2pUnificator
 import it.unibo.tuprolog.core.Term
 import it.unibo.tuprolog.solve.ExecutionContext
 import it.unibo.tuprolog.solve.exception.error.TypeError
 import it.unibo.tuprolog.solve.primitive.Solve
 import it.unibo.tuprolog.core.List as LogicList
 
 // Arguments and replies of the native primitives
 
 /** Identifiers in the list argument at the given index */
 internal fun Solve.Request<ExecutionContext>.ids(index: Int): List<Term> {
     val ids = arguments[index]
     if (ids !is LogicList) throw TypeError.forGoal(context, signature, TypeError.Expected.LIST, ids)
     return ids.toList()
 }
 
 /** A reply binding the argument at the given index to the list of values, if they unify */
 internal fun Solve.Request<ExecutionContext>.replyList(
     index: Int,
     values: List<Term>,
 ): Solve.Response? =
     Arg2pUnificator
         .mgu(arguments[index], LogicList.of(values))
         .takeIf { it.isSuccess }
         ?.let { replyWith(it) }