[LF] make generic Dev interpretation error (#16859)

This commit is contained in:
Remy 2023-05-18 15:01:43 +02:00 committed by GitHub
parent 195ef9a95e
commit 912e9a9f33
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 485 additions and 376 deletions

View File

@ -18,7 +18,7 @@ if [[ "$(uname)" == "Darwin" ]]; then
tag_filter="$tag_filter,-dont-run-on-darwin,-scaladoc,-pdfdocs"
fi
SKIP_DEV_CANTON_TESTS=false
SKIP_DEV_CANTON_TESTS=true
if [ "$SKIP_DEV_CANTON_TESTS" = "true" ]; then
tag_filter="$tag_filter,-dev-canton-test"
fi

View File

@ -307,6 +307,7 @@ class ScenarioService(
error.warningLog,
error.currentSubmission.flatMap(_.commitLocation),
error.stackTrace,
context.devMode,
)
.convertScenarioError(error.error)
)
@ -320,6 +321,7 @@ class ScenarioService(
success.warningLog,
None,
ImmArray.Empty,
context.devMode,
)
.convertScenarioResult(success.resultValue)
)

View File

@ -58,6 +58,8 @@ class Context(
import Context._
def devMode: Boolean = languageVersion == LanguageVersion.v1_dev
/** The package identifier to use for modules added to the context.
* When decoding LF modules this package identifier should be used to rewrite
* self-references. We only care that the identifier is disjunct from the package ids

View File

@ -29,6 +29,7 @@ final class Conversions(
warningLog: WarningLog,
commitLocation: Option[Ref.Location],
stackTrace: ImmArray[Ref.Location],
devMode: Boolean,
) {
private val empty: proto.Empty = proto.Empty.newBuilder.build
@ -247,25 +248,29 @@ final class Conversions(
builder.setCrash(s"Contract Id comparability Error")
case NonComparableValues =>
builder.setComparableValueError(proto.Empty.newBuilder)
case Limit(limitError) =>
limitError match {
case Limit.ValueNesting(_) =>
builder.setValueExceedsMaxNesting(proto.Empty.newBuilder)
// TODO https://github.com/digital-asset/daml/issues/11691
// Handle the other cases properly.
case _ =>
builder.setCrash(s"A limit was overpass when building the transaction")
case Dev(_, devError) if devMode =>
devError match {
case Dev.Limit(limitError) =>
limitError match {
case Dev.Limit.ValueNesting(_) =>
builder.setValueExceedsMaxNesting(proto.Empty.newBuilder)
// TODO https://github.com/digital-asset/daml/issues/11691
// Handle the other cases properly.
case _ =>
builder.setCrash(s"A limit was overpassed when building the transaction")
}
case Dev.ChoiceGuardFailed(coid, templateId, choiceName, byInterface) =>
val cgfBuilder =
proto.ScenarioError.ChoiceGuardFailed.newBuilder
.setContractRef(mkContractRef(coid, templateId))
.setChoiceId(choiceName)
byInterface.foreach(ifaceId =>
cgfBuilder.setByInterface(convertIdentifier(ifaceId))
)
builder.setChoiceGuardFailed(cgfBuilder.build)
}
case ChoiceGuardFailed(coid, templateId, choiceName, byInterface) =>
val cgfBuilder =
proto.ScenarioError.ChoiceGuardFailed.newBuilder
.setContractRef(mkContractRef(coid, templateId))
.setChoiceId(choiceName)
byInterface.foreach(ifaceId =>
cgfBuilder.setByInterface(convertIdentifier(ifaceId))
)
builder.setChoiceGuardFailed(cgfBuilder.build)
case err @ Dev(_, _) =>
builder.setCrash(s"Unexpected Dev error: " + err.toString)
}
}
case Error.ContractNotEffective(coid, tid, effectiveAt) =>

View File

@ -151,64 +151,71 @@ private[lf] object Pretty {
case ContractIdInContractKey(key) =>
text("Contract IDs are not supported in contract keys:") &
prettyContractId(key.cids.head)
case Limit(error) =>
case Dev(_, error) =>
error match {
case Limit.ValueNesting(limit) =>
text(s"Value exceeds maximum nesting value of $limit")
case Limit.ContractSignatories(cid @ _, templateId, arg @ _, signatories, limit) =>
text(
s"Create Fetch or exercise a Contract of type $templateId with ${signatories.size} signatories but the limit is $limit"
)
case Limit.ContractObservers(cid @ _, templateId, arg @ _, observers, limit) =>
text(
s"Create Fetch or exercise a Contract of type $templateId ${observers.size} observes but the limit is $limit"
)
case Limit.ChoiceControllers(
cid @ _,
templateId,
choiceName,
arg @ _,
controllers,
limit,
) =>
text(
s"Exercise the choice $templateId:$choiceName with ${controllers.size} controllers but the limit is $limit"
)
case Limit.ChoiceObservers(
cid @ _,
templateId,
choiceName,
arg @ _,
observers,
limit,
) =>
text(
s"Exercise the choice $templateId:$choiceName with ${observers.size} observers but the limit is $limit"
)
case Limit.ChoiceAuthorizers(
cid @ _,
templateId,
choiceName,
arg @ _,
authorizers,
limit,
) =>
text(
s"Exercise the choice $templateId:$choiceName with ${authorizers.size} authorizers but the limit is $limit"
)
case Limit.TransactionInputContracts(limit) =>
text(s"Transaction exceeds maximum input contract number of $limit")
case Dev.Limit(error) =>
error match {
case Dev.Limit.ValueNesting(limit) =>
text(s"Value exceeds maximum nesting value of $limit")
case Dev.Limit.ContractSignatories(
cid @ _,
templateId,
arg @ _,
signatories,
limit,
) =>
text(
s"Create Fetch or exercise a Contract of type $templateId with ${signatories.size} signatories but the limit is $limit"
)
case Dev.Limit.ContractObservers(cid @ _, templateId, arg @ _, observers, limit) =>
text(
s"Create Fetch or exercise a Contract of type $templateId ${observers.size} observes but the limit is $limit"
)
case Dev.Limit.ChoiceControllers(
cid @ _,
templateId,
choiceName,
arg @ _,
controllers,
limit,
) =>
text(
s"Exercise the choice $templateId:$choiceName with ${controllers.size} controllers but the limit is $limit"
)
case Dev.Limit.ChoiceObservers(
cid @ _,
templateId,
choiceName,
arg @ _,
observers,
limit,
) =>
text(
s"Exercise the choice $templateId:$choiceName with ${observers.size} observers but the limit is $limit"
)
case Dev.Limit.ChoiceAuthorizers(
cid @ _,
templateId,
choiceName,
arg @ _,
authorizers,
limit,
) =>
text(
s"Exercise the choice $templateId:$choiceName with ${authorizers.size} authorizers but the limit is $limit"
)
case Dev.Limit.TransactionInputContracts(limit) =>
text(s"Transaction exceeds maximum input contract number of $limit")
}
case Dev.ChoiceGuardFailed(cid, templateId, choiceName, byInterface) =>
text(s"Choice guard failed for") & prettyTypeConName(templateId) &
text(s"contract") & prettyContractId(cid) &
text(s"when exercising choice $choiceName") &
(byInterface match {
case None => text("by template")
case Some(interfaceId) => text("by interface") & prettyTypeConName(interfaceId)
})
}
case ChoiceGuardFailed(cid, templateId, choiceName, byInterface) => (
text(s"Choice guard failed for") & prettyTypeConName(templateId) &
text(s"contract") & prettyContractId(cid) &
text(s"when exercising choice $choiceName") &
(byInterface match {
case None => text("by template")
case Some(interfaceId) => text("by interface") & prettyTypeConName(interfaceId)
})
)
}
}

View File

@ -57,9 +57,11 @@ sealed abstract class SValue {
def go(v: SValue, maxNesting: Int = V.MAXIMUM_NESTING): V = {
if (maxNesting < 0)
throw SError.SErrorDamlException(
interpretation.Error.Limit(interpretation.Error.Limit.ValueNesting(V.MAXIMUM_NESTING))
Speedy.throwLimitError(
NameOf.qualifiedNameOfCurrentFunc,
interpretation.Error.Dev.Limit.ValueNesting(V.MAXIMUM_NESTING),
)
val nextMaxNesting = maxNesting - 1
v match {
case SInt64(x) => V.ValueInt64(x)

View File

@ -147,9 +147,16 @@ private[lf] object Speedy {
)
}
private[this] def enforceLimit(actual: Int, limit: Int, error: Int => IError.Limit.Error): Unit =
if (actual > limit)
throw SError.SErrorDamlException(IError.Limit(error(limit)))
private[speedy] def throwLimitError(location: String, error: IError.Dev.Limit.Error): Nothing =
throw SError.SErrorDamlException(interpretation.Error.Dev(location, IError.Dev.Limit(error)))
private[this] def enforceLimit(
location: String,
actual: Int,
limit: Int,
error: Int => IError.Dev.Limit.Error,
): Unit =
if (actual > limit) throwLimitError(location, error(limit))
final class UpdateMachine(
override val sexpr: SExpr,
@ -274,9 +281,10 @@ private[lf] object Speedy {
private[speedy] def updateCachedContracts(cid: V.ContractId, contract: CachedContract): Unit = {
enforceLimit(
NameOf.qualifiedNameOfCurrentFunc,
contract.signatories.size,
limits.contractSignatories,
IError.Limit
IError.Dev.Limit
.ContractSignatories(
cid,
contract.templateId,
@ -286,9 +294,10 @@ private[lf] object Speedy {
),
)
enforceLimit(
NameOf.qualifiedNameOfCurrentFunc,
contract.observers.size,
limits.contractObservers,
IError.Limit
IError.Dev.Limit
.ContractObservers(
cid,
contract.templateId,
@ -303,9 +312,10 @@ private[lf] object Speedy {
private[speedy] def addGlobalContract(coid: V.ContractId, contract: CachedContract): Unit = {
numInputContracts += 1
enforceLimit(
NameOf.qualifiedNameOfCurrentFunc,
numInputContracts,
limits.transactionInputContracts,
IError.Limit.TransactionInputContracts,
IError.Dev.Limit.TransactionInputContracts,
)
updateCachedContracts(coid, contract)
}
@ -318,9 +328,10 @@ private[lf] object Speedy {
arg: V,
): Unit =
enforceLimit(
NameOf.qualifiedNameOfCurrentFunc,
controllers.size,
limits.choiceControllers,
IError.Limit.ChoiceControllers(cid, templateId, choiceName, arg, controllers, _),
IError.Dev.Limit.ChoiceControllers(cid, templateId, choiceName, arg, controllers, _),
)
private[speedy] def enforceChoiceObserversLimit(
@ -331,9 +342,10 @@ private[lf] object Speedy {
arg: V,
): Unit =
enforceLimit(
NameOf.qualifiedNameOfCurrentFunc,
observers.size,
limits.choiceObservers,
IError.Limit.ChoiceObservers(cid, templateId, choiceName, arg, observers, _),
IError.Dev.Limit.ChoiceObservers(cid, templateId, choiceName, arg, observers, _),
)
private[speedy] def enforceChoiceAuthorizersLimit(
@ -344,9 +356,10 @@ private[lf] object Speedy {
arg: V,
): Unit =
enforceLimit(
NameOf.qualifiedNameOfCurrentFunc,
authorizers.size,
limits.choiceAuthorizers,
IError.Limit.ChoiceAuthorizers(cid, templateId, choiceName, arg, authorizers, _),
IError.Dev.Limit.ChoiceAuthorizers(cid, templateId, choiceName, arg, authorizers, _),
)
// The set of create events for the disclosed contracts that are used by the generated transaction.
@ -1748,7 +1761,12 @@ private[lf] object Speedy {
byInterface: Option[TypeConName],
) extends Kont {
def abort(): Nothing =
throw SErrorDamlException(IError.ChoiceGuardFailed(coid, templateId, choiceName, byInterface))
throw SErrorDamlException(
IError.Dev(
NameOf.qualifiedNameOfCurrentFunc,
IError.Dev.ChoiceGuardFailed(coid, templateId, choiceName, byInterface),
)
)
override def execute[Q](machine: Machine[Q], v: SValue): Control.Value = {
v match {

View File

@ -615,16 +615,19 @@ class EvaluationOrderTest extends AnyFreeSpec with Matchers with Inside {
Array(SParty(alice), SParty(bob)),
Set(alice),
)
inside(res) { case Success(Left(SErrorDamlException(IE.Limit(IE.Limit.ValueNesting(_))))) =>
msgs shouldBe Seq(
"starts test",
"precondition",
"contract agreement",
"contract signatories",
"contract observers",
"key",
"maintainers",
)
inside(res) {
case Success(
Left(SErrorDamlException(IE.Dev(_, IE.Dev.Limit(IE.Dev.Limit.ValueNesting(_)))))
) =>
msgs shouldBe Seq(
"starts test",
"precondition",
"contract agreement",
"contract signatories",
"contract observers",
"key",
"maintainers",
)
}
}
@ -639,16 +642,19 @@ class EvaluationOrderTest extends AnyFreeSpec with Matchers with Inside {
Array(SParty(alice), SParty(bob)),
Set(alice),
)
inside(res) { case Success(Left(SErrorDamlException(IE.Limit(IE.Limit.ValueNesting(_))))) =>
msgs shouldBe Seq(
"starts test",
"precondition",
"contract agreement",
"contract signatories",
"contract observers",
"key",
"maintainers",
)
inside(res) {
case Success(
Left(SErrorDamlException(IE.Dev(_, IE.Dev.Limit(IE.Dev.Limit.ValueNesting(_)))))
) =>
msgs shouldBe Seq(
"starts test",
"precondition",
"contract agreement",
"contract signatories",
"contract observers",
"key",
"maintainers",
)
}
}
}
@ -809,16 +815,19 @@ class EvaluationOrderTest extends AnyFreeSpec with Matchers with Inside {
Array(SParty(alice), SParty(bob)),
Set(alice),
)
inside(res) { case Success(Left(SErrorDamlException(IE.Limit(IE.Limit.ValueNesting(_))))) =>
msgs shouldBe Seq(
"starts test",
"precondition",
"contract agreement",
"contract signatories",
"contract observers",
"key",
"maintainers",
)
inside(res) {
case Success(
Left(SErrorDamlException(IE.Dev(_, IE.Dev.Limit(IE.Dev.Limit.ValueNesting(_)))))
) =>
msgs shouldBe Seq(
"starts test",
"precondition",
"contract agreement",
"contract signatories",
"contract observers",
"key",
"maintainers",
)
}
}
@ -833,16 +842,19 @@ class EvaluationOrderTest extends AnyFreeSpec with Matchers with Inside {
Array(SParty(alice), SParty(bob)),
Set(alice),
)
inside(res) { case Success(Left(SErrorDamlException(IE.Limit(IE.Limit.ValueNesting(_))))) =>
msgs shouldBe Seq(
"starts test",
"precondition",
"contract agreement",
"contract signatories",
"contract observers",
"key",
"maintainers",
)
inside(res) {
case Success(
Left(SErrorDamlException(IE.Dev(_, IE.Dev.Limit(IE.Dev.Limit.ValueNesting(_)))))
) =>
msgs shouldBe Seq(
"starts test",
"precondition",
"contract agreement",
"contract signatories",
"contract observers",
"key",
"maintainers",
)
}
}
}
@ -1183,19 +1195,22 @@ class EvaluationOrderTest extends AnyFreeSpec with Matchers with Inside {
Set(alice),
getContract = getContract,
)
inside(res) { case Success(Left(SErrorDamlException(IE.Limit(IE.Limit.ValueNesting(_))))) =>
msgs shouldBe Seq(
"starts test",
"queries contract",
"contract agreement",
"contract signatories",
"contract observers",
"key",
"maintainers",
"template choice controllers",
"template choice observers",
"template choice authorizers",
)
inside(res) {
case Success(
Left(SErrorDamlException(IE.Dev(_, IE.Dev.Limit(IE.Dev.Limit.ValueNesting(_)))))
) =>
msgs shouldBe Seq(
"starts test",
"queries contract",
"contract agreement",
"contract signatories",
"contract observers",
"key",
"maintainers",
"template choice controllers",
"template choice observers",
"template choice authorizers",
)
}
}
@ -1208,20 +1223,23 @@ class EvaluationOrderTest extends AnyFreeSpec with Matchers with Inside {
Set(alice),
getContract = getContract,
)
inside(res) { case Success(Left(SErrorDamlException(IE.Limit(IE.Limit.ValueNesting(_))))) =>
msgs shouldBe Seq(
"starts test",
"queries contract",
"contract agreement",
"contract signatories",
"contract observers",
"key",
"maintainers",
"template choice controllers",
"template choice observers",
"template choice authorizers",
"choice body",
)
inside(res) {
case Success(
Left(SErrorDamlException(IE.Dev(_, IE.Dev.Limit(IE.Dev.Limit.ValueNesting(_)))))
) =>
msgs shouldBe Seq(
"starts test",
"queries contract",
"contract agreement",
"contract signatories",
"contract observers",
"key",
"maintainers",
"template choice controllers",
"template choice observers",
"template choice authorizers",
"choice body",
)
}
}
}
@ -1573,19 +1591,22 @@ class EvaluationOrderTest extends AnyFreeSpec with Matchers with Inside {
getContract = getContract,
getKey = getKey,
)
inside(res) { case Success(Left(SErrorDamlException(IE.Limit(IE.Limit.ValueNesting(_))))) =>
msgs shouldBe Seq(
"starts test",
"maintainers",
"queries key",
"queries contract",
"contract agreement",
"contract signatories",
"contract observers",
"template choice controllers",
"template choice observers",
"template choice authorizers",
)
inside(res) {
case Success(
Left(SErrorDamlException(IE.Dev(_, IE.Dev.Limit(IE.Dev.Limit.ValueNesting(_)))))
) =>
msgs shouldBe Seq(
"starts test",
"maintainers",
"queries key",
"queries contract",
"contract agreement",
"contract signatories",
"contract observers",
"template choice controllers",
"template choice observers",
"template choice authorizers",
)
}
}
@ -1599,20 +1620,23 @@ class EvaluationOrderTest extends AnyFreeSpec with Matchers with Inside {
getContract = getContract,
getKey = getKey,
)
inside(res) { case Success(Left(SErrorDamlException(IE.Limit(IE.Limit.ValueNesting(_))))) =>
msgs shouldBe Seq(
"starts test",
"maintainers",
"queries key",
"queries contract",
"contract agreement",
"contract signatories",
"contract observers",
"template choice controllers",
"template choice observers",
"template choice authorizers",
"choice body",
)
inside(res) {
case Success(
Left(SErrorDamlException(IE.Dev(_, IE.Dev.Limit(IE.Dev.Limit.ValueNesting(_)))))
) =>
msgs shouldBe Seq(
"starts test",
"maintainers",
"queries key",
"queries contract",
"contract agreement",
"contract signatories",
"contract observers",
"template choice controllers",
"template choice observers",
"template choice authorizers",
"choice body",
)
}
}
@ -2561,8 +2585,11 @@ class EvaluationOrderTest extends AnyFreeSpec with Matchers with Inside {
Array(SParty(alice), SParty(alice)),
Set(alice),
)
inside(res) { case Success(Left(SErrorDamlException(IE.Limit(IE.Limit.ValueNesting(_))))) =>
msgs shouldBe Seq("starts test", "maintainers")
inside(res) {
case Success(
Left(SErrorDamlException(IE.Dev(_, IE.Dev.Limit(IE.Dev.Limit.ValueNesting(_)))))
) =>
msgs shouldBe Seq("starts test", "maintainers")
}
}
}
@ -3121,8 +3148,11 @@ class EvaluationOrderTest extends AnyFreeSpec with Matchers with Inside {
Array(SParty(alice), SParty(alice)),
Set(alice),
)
inside(res) { case Success(Left(SErrorDamlException(IE.Limit(IE.Limit.ValueNesting(_))))) =>
msgs shouldBe Seq("starts test", "maintainers")
inside(res) {
case Success(
Left(SErrorDamlException(IE.Dev(_, IE.Dev.Limit(IE.Dev.Limit.ValueNesting(_)))))
) =>
msgs shouldBe Seq("starts test", "maintainers")
}
}
}

View File

@ -82,7 +82,12 @@ class LimitsSpec extends AnyWordSpec with Matchers with Inside with TableDrivenP
inside(result) {
case Left(
SError.SErrorDamlException(
IE.Limit(IE.Limit.ContractSignatories(_, templateId, _, parties, reportedlimit))
IE.Dev(
_,
IE.Dev.Limit(
IE.Dev.Limit.ContractSignatories(_, templateId, _, parties, reportedlimit)
),
)
)
) =>
templateId shouldBe T
@ -106,7 +111,12 @@ class LimitsSpec extends AnyWordSpec with Matchers with Inside with TableDrivenP
inside(result) {
case Left(
SError.SErrorDamlException(
IE.Limit(IE.Limit.ContractSignatories(_, templateId, _, parties, reportedlimit))
IE.Dev(
_,
IE.Dev.Limit(
IE.Dev.Limit.ContractSignatories(_, templateId, _, parties, reportedlimit)
),
)
)
) =>
templateId shouldBe T
@ -140,7 +150,12 @@ class LimitsSpec extends AnyWordSpec with Matchers with Inside with TableDrivenP
inside(result) {
case Left(
SError.SErrorDamlException(
IE.Limit(IE.Limit.ContractSignatories(_, templateId, _, parties, reportedlimit))
IE.Dev(
_,
IE.Dev.Limit(
IE.Dev.Limit.ContractSignatories(_, templateId, _, parties, reportedlimit)
),
)
)
) =>
templateId shouldBe T
@ -169,7 +184,12 @@ class LimitsSpec extends AnyWordSpec with Matchers with Inside with TableDrivenP
inside(result) {
case Left(
SError.SErrorDamlException(
IE.Limit(IE.Limit.ContractObservers(_, templateId, _, parties, reportedlimit))
IE.Dev(
_,
IE.Dev.Limit(
IE.Dev.Limit.ContractObservers(_, templateId, _, parties, reportedlimit)
),
)
)
) =>
templateId shouldBe T
@ -194,7 +214,12 @@ class LimitsSpec extends AnyWordSpec with Matchers with Inside with TableDrivenP
inside(result) {
case Left(
SError.SErrorDamlException(
IE.Limit(IE.Limit.ContractObservers(_, templateId, _, parties, reportedlimit))
IE.Dev(
_,
IE.Dev.Limit(
IE.Dev.Limit.ContractObservers(_, templateId, _, parties, reportedlimit)
),
)
)
) =>
templateId shouldBe T
@ -228,7 +253,12 @@ class LimitsSpec extends AnyWordSpec with Matchers with Inside with TableDrivenP
inside(result) {
case Left(
SError.SErrorDamlException(
IE.Limit(IE.Limit.ContractObservers(_, templateId, _, parties, reportedlimit))
IE.Dev(
_,
IE.Dev.Limit(
IE.Dev.Limit.ContractObservers(_, templateId, _, parties, reportedlimit)
),
)
)
) =>
templateId shouldBe T
@ -261,15 +291,18 @@ class LimitsSpec extends AnyWordSpec with Matchers with Inside with TableDrivenP
inside(result) {
case Left(
SError.SErrorDamlException(
IE.Limit(
IE.Limit.ChoiceControllers(
_,
templateId,
choiceName,
_,
parties,
reportedlimit,
)
IE.Dev(
_,
IE.Dev.Limit(
IE.Dev.Limit.ChoiceControllers(
_,
templateId,
choiceName,
_,
parties,
reportedlimit,
)
),
)
)
) =>
@ -313,8 +346,18 @@ class LimitsSpec extends AnyWordSpec with Matchers with Inside with TableDrivenP
inside(result) {
case Left(
SError.SErrorDamlException(
IE.Limit(
IE.Limit.ChoiceObservers(_, templateId, choiceName, _, parties, reportedlimit)
IE.Dev(
_,
IE.Dev.Limit(
IE.Dev.Limit.ChoiceObservers(
_,
templateId,
choiceName,
_,
parties,
reportedlimit,
)
),
)
)
) =>
@ -343,7 +386,7 @@ class LimitsSpec extends AnyWordSpec with Matchers with Inside with TableDrivenP
inside(result) {
case Left(
SError.SErrorDamlException(
IE.Limit(IE.Limit.TransactionInputContracts(reportedlimit))
IE.Dev(_, IE.Dev.Limit(IE.Dev.Limit.TransactionInputContracts(reportedlimit)))
)
) =>
reportedlimit shouldBe limit

View File

@ -35,10 +35,9 @@ class SValueTest extends AnyWordSpec with Inside with Matchers with TableDrivenP
// Because Z has a nesting of 1, toNat(Value.MAXIMUM_NESTING) has a nesting of
// Value.MAXIMUM_NESTING + 1
val x = Try(toNat(Value.MAXIMUM_NESTING).toUnnormalizedValue)
x shouldBe
Failure(
SError.SErrorDamlException(IError.Limit(IError.Limit.ValueNesting(Value.MAXIMUM_NESTING)))
)
inside(x) { case Failure(SError.SErrorDamlException(IError.Dev(_, error))) =>
error shouldBe IError.Dev.Limit(IError.Dev.Limit.ValueNesting(Value.MAXIMUM_NESTING))
}
}
"accepts just right nesting" in {

View File

@ -160,69 +160,75 @@ object Error {
final case class ContractIdInContractKey(key: Value) extends Error
@deprecated("use Limit.ValueNesting", since = "2.0.0")
val ValueExceedsMaxNesting: Limit.ValueNesting.type = Limit.ValueNesting
// Error that can be thrown by dev or PoC feature only
final case class Dev(location: String, error: Dev.Error) extends Error
/** A choice guard returned false, invalidating some expectation. */
final case class ChoiceGuardFailed(
coid: ContractId,
templateId: TypeConName,
choiceName: ChoiceName,
byInterface: Option[TypeConName],
) extends Error
final case class Limit(error: Limit.Error) extends Error
object Limit {
object Dev {
sealed abstract class Error extends Serializable with Product
final case class ValueNesting(limit: Int) extends Error
final case class ContractSignatories(
coid: Value.ContractId,
templateId: TypeConName,
arg: Value,
signatories: Set[Party],
limit: Int,
) extends Error
final case class ContractObservers(
coid: Value.ContractId,
templateId: TypeConName,
arg: Value,
observers: Set[Party],
limit: Int,
) extends Error
final case class ChoiceControllers(
cid: Value.ContractId,
/** A choice guard returned false, invalidating some expectation. */
final case class ChoiceGuardFailed(
coid: ContractId,
templateId: TypeConName,
choiceName: ChoiceName,
arg: Value,
controllers: Set[Party],
limit: Int,
byInterface: Option[TypeConName],
) extends Error
final case class ChoiceObservers(
cid: Value.ContractId,
templateId: TypeConName,
choiceName: ChoiceName,
arg: Value,
observers: Set[Party],
limit: Int,
) extends Error
final case class Limit(error: Limit.Error) extends Error
final case class ChoiceAuthorizers(
cid: Value.ContractId,
templateId: TypeConName,
choiceName: ChoiceName,
arg: Value,
observers: Set[Party],
limit: Int,
) extends Error
object Limit {
sealed abstract class Error extends Serializable with Product
final case class ValueNesting(limit: Int) extends Error
final case class ContractSignatories(
coid: Value.ContractId,
templateId: TypeConName,
arg: Value,
signatories: Set[Party],
limit: Int,
) extends Error
final case class ContractObservers(
coid: Value.ContractId,
templateId: TypeConName,
arg: Value,
observers: Set[Party],
limit: Int,
) extends Error
final case class ChoiceControllers(
cid: Value.ContractId,
templateId: TypeConName,
choiceName: ChoiceName,
arg: Value,
controllers: Set[Party],
limit: Int,
) extends Error
final case class ChoiceObservers(
cid: Value.ContractId,
templateId: TypeConName,
choiceName: ChoiceName,
arg: Value,
observers: Set[Party],
limit: Int,
) extends Error
final case class ChoiceAuthorizers(
cid: Value.ContractId,
templateId: TypeConName,
choiceName: ChoiceName,
arg: Value,
observers: Set[Party],
limit: Int,
) extends Error
final case class TransactionInputContracts(limit: Int) extends Error
}
final case class TransactionInputContracts(limit: Int) extends Error
}
}

View File

@ -130,17 +130,12 @@ object RejectionGenerators {
.Error(
renderedMessage
)
case LfInterpretationError.Limit(_) =>
LedgerApiErrors.CommandExecution.Interpreter.InvalidArgumentInterpretationError
.Error(
renderedMessage
)
case _: LfInterpretationError.ContractIdComparability =>
LedgerApiErrors.CommandExecution.Interpreter.InvalidArgumentInterpretationError
.Error(
renderedMessage
)
case _: LfInterpretationError.ChoiceGuardFailed =>
case LfInterpretationError.Dev(_, _) =>
LedgerApiErrors.CommandExecution.Interpreter.InvalidArgumentInterpretationError
.Error(
renderedMessage

View File

@ -37,122 +37,122 @@
## Integrity:
- Evaluation order of create with authorization failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L558)
- Evaluation order of create with contract ID in contract key: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L581)
- Evaluation order of create with contract key exceeding max nesting: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L631)
- Evaluation order of create with contract key exceeding max nesting: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L634)
- Evaluation order of create with create argument exceeding max nesting: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L608)
- Evaluation order of create with duplicate contract key: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L509)
- Evaluation order of create with empty contract key maintainers: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L534)
- Evaluation order of create with failed precondition: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L491)
- Evaluation order of create_interface with authorization failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L752)
- Evaluation order of create_interface with contract ID in contract key: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L775)
- Evaluation order of create_interface with contract key exceeding max nesting: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L825)
- Evaluation order of create_interface with create argument exceeding max nesting: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L802)
- Evaluation order of create_interface with duplicate contract key: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L701)
- Evaluation order of create_interface with empty contract key maintainers: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L726)
- Evaluation order of create_interface with failed precondition: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L683)
- Evaluation order of exercise by interface of a cached global contract that does not implement the interface.: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1777)
- Evaluation order of exercise by interface of an inactive global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1759)
- Evaluation order of exercise by interface of cached global contract with failed authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1817)
- Evaluation order of exercise of a cached global contract with failure authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1138)
- Evaluation order of exercise of a non-cached global contract with failure authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L896)
- Evaluation order of exercise of a non-cached global contract with inconsistent key: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L922)
- Evaluation order of exercise of a wrongly typed cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L996)
- Evaluation order of exercise of a wrongly typed non-cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L881)
- Evaluation order of exercise of an inactive global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L979)
- Evaluation order of exercise of an inactive local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1080)
- Evaluation order of exercise of an unknown contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1163)
- Evaluation order of exercise of an wrongly typed local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1099)
- Evaluation order of exercise of cached global contract with failure authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1032)
- Evaluation order of exercise with argument exceeding max nesting: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1177)
- Evaluation order of exercise with output exceeding max nesting: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1202)
- Evaluation order of exercise-by-key of a cached global contract with visibility failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1424)
- Evaluation order of exercise-by-key of a non-cached global contract with visibility failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1304)
- Evaluation order of exercise_by_key of a cached global contract with failure authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1492)
- Evaluation order of exercise_by_key of a local contract with visibility failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1516)
- Evaluation order of exercise_by_key of a non-cached global contract with failure authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1277)
- Evaluation order of exercise_by_key of a wrongly typed cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1380)
- Evaluation order of exercise_by_key of an inactive global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1361)
- Evaluation order of exercise_by_key of an inactive local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1472)
- Evaluation order of exercise_by_key of an unknown contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1551)
- Evaluation order of exercise_by_key of cached global contract with failure authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1399)
- Evaluation order of exercise_by_key with argument exceeding max nesting: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1566)
- Evaluation order of exercise_by_key with contract ID in contract key: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1633)
- Evaluation order of exercise_by_key with result exceeding max nesting: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1592)
- Evaluation order of exercise_interface of a cached local contract with failed authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1929)
- Evaluation order of exercise_interface of a non-cached global contract with failed authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1704)
- Evaluation order of exercise_interface of an inactive local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1867)
- Evaluation order of exercise_interface of an local contract not implementing the interface: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1886)
- Evaluation order of exercise_vy_key with empty contract key maintainers: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1619)
- Evaluation order of fetch of a cached global contract with failure authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2214)
- Evaluation order of fetch of a non-cached global contract with failure authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2007)
- Evaluation order of fetch of a non-cached global contract with inconsistent key: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2030)
- Evaluation order of fetch of a wrongly typed cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2093)
- Evaluation order of fetch of a wrongly typed disclosed contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2234)
- Evaluation order of fetch of a wrongly typed non-cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1992)
- Evaluation order of fetch of an inactive global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2077)
- Evaluation order of fetch of an inactive local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2162)
- Evaluation order of fetch of an unknown contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2253)
- Evaluation order of fetch of an wrongly typed local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2179)
- Evaluation order of fetch of cached global contract with failure authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2127)
- Evaluation order of fetch-by-key of a cached global contract with visibility failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2424)
- Evaluation order of fetch-by-key of a non-cached global contract with visibility failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2340)
- Evaluation order of fetch_by_key of a cached global contract with authorization failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2407)
- Evaluation order of fetch_by_key of a local contract with authorization failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2483)
- Evaluation order of fetch_by_key of a non-cached global contract with authorization failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2317)
- Evaluation order of fetch_by_key of an inactive global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2388)
- Evaluation order of fetch_by_key of an inactive global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2465)
- Evaluation order of fetch_by_key of an unknown contract key: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2512)
- Evaluation order of fetch_by_key with contract ID in contract key: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2542)
- Evaluation order of fetch_by_key with contract key exceeding max nesting: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2556)
- Evaluation order of fetch_by_key with empty contract key maintainers: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2528)
- Evaluation order of fetch_interface of a cached global contract not implementing the interface.: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2676)
- Evaluation order of fetch_interface of a cached global contract with failure authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2800)
- Evaluation order of fetch_interface of a non-cached global contract that doesn't implement interface.: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2598)
- Evaluation order of fetch_interface of a non-cached global contract with failed authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2615)
- Evaluation order of fetch_interface of an inactive global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2659)
- Evaluation order of fetch_interface of an inactive local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2747)
- Evaluation order of fetch_interface of an local contract not implementing the interface: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2764)
- Evaluation order of fetch_interface of an unknown contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2818)
- Evaluation order of fetch_interface of cached global contract with failure authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2712)
- Evaluation order of lookup of a cached global contract with visibility failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2968)
- Evaluation order of lookup of a non-cached global contract with visibility failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2885)
- Evaluation order of lookup_by_key of a cached global contract with authorization failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2951)
- Evaluation order of lookup_by_key of a local contract with authorization failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L3042)
- Evaluation order of lookup_by_key of a local contract with failure authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L3026)
- Evaluation order of lookup_by_key of a non-cached global contract with authorization failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2862)
- Evaluation order of lookup_by_key of an inactive global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2933)
- Evaluation order of lookup_by_key of an inactive local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L3009)
- Evaluation order of lookup_by_key of an unknown contract key: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L3072)
- Evaluation order of lookup_by_key with contract ID in contract key: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L3102)
- Evaluation order of lookup_by_key with contract key exceeding max nesting: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L3116)
- Evaluation order of lookup_by_key with empty contract key maintainers: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L3088)
- Evaluation order of create_interface with authorization failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L758)
- Evaluation order of create_interface with contract ID in contract key: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L781)
- Evaluation order of create_interface with contract key exceeding max nesting: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L834)
- Evaluation order of create_interface with create argument exceeding max nesting: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L808)
- Evaluation order of create_interface with duplicate contract key: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L707)
- Evaluation order of create_interface with empty contract key maintainers: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L732)
- Evaluation order of create_interface with failed precondition: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L689)
- Evaluation order of exercise by interface of a cached global contract that does not implement the interface.: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1801)
- Evaluation order of exercise by interface of an inactive global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1783)
- Evaluation order of exercise by interface of cached global contract with failed authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1841)
- Evaluation order of exercise of a cached global contract with failure authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1150)
- Evaluation order of exercise of a non-cached global contract with failure authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L908)
- Evaluation order of exercise of a non-cached global contract with inconsistent key: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L934)
- Evaluation order of exercise of a wrongly typed cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1008)
- Evaluation order of exercise of a wrongly typed non-cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L893)
- Evaluation order of exercise of an inactive global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L991)
- Evaluation order of exercise of an inactive local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1092)
- Evaluation order of exercise of an unknown contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1175)
- Evaluation order of exercise of an wrongly typed local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1111)
- Evaluation order of exercise of cached global contract with failure authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1044)
- Evaluation order of exercise with argument exceeding max nesting: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1189)
- Evaluation order of exercise with output exceeding max nesting: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1217)
- Evaluation order of exercise-by-key of a cached global contract with visibility failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1442)
- Evaluation order of exercise-by-key of a non-cached global contract with visibility failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1322)
- Evaluation order of exercise_by_key of a cached global contract with failure authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1510)
- Evaluation order of exercise_by_key of a local contract with visibility failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1534)
- Evaluation order of exercise_by_key of a non-cached global contract with failure authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1295)
- Evaluation order of exercise_by_key of a wrongly typed cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1398)
- Evaluation order of exercise_by_key of an inactive global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1379)
- Evaluation order of exercise_by_key of an inactive local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1490)
- Evaluation order of exercise_by_key of an unknown contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1569)
- Evaluation order of exercise_by_key of cached global contract with failure authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1417)
- Evaluation order of exercise_by_key with argument exceeding max nesting: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1584)
- Evaluation order of exercise_by_key with contract ID in contract key: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1657)
- Evaluation order of exercise_by_key with result exceeding max nesting: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1613)
- Evaluation order of exercise_interface of a cached local contract with failed authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1953)
- Evaluation order of exercise_interface of a non-cached global contract with failed authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1728)
- Evaluation order of exercise_interface of an inactive local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1891)
- Evaluation order of exercise_interface of an local contract not implementing the interface: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1910)
- Evaluation order of exercise_vy_key with empty contract key maintainers: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1643)
- Evaluation order of fetch of a cached global contract with failure authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2238)
- Evaluation order of fetch of a non-cached global contract with failure authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2031)
- Evaluation order of fetch of a non-cached global contract with inconsistent key: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2054)
- Evaluation order of fetch of a wrongly typed cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2117)
- Evaluation order of fetch of a wrongly typed disclosed contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2258)
- Evaluation order of fetch of a wrongly typed non-cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2016)
- Evaluation order of fetch of an inactive global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2101)
- Evaluation order of fetch of an inactive local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2186)
- Evaluation order of fetch of an unknown contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2277)
- Evaluation order of fetch of an wrongly typed local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2203)
- Evaluation order of fetch of cached global contract with failure authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2151)
- Evaluation order of fetch-by-key of a cached global contract with visibility failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2448)
- Evaluation order of fetch-by-key of a non-cached global contract with visibility failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2364)
- Evaluation order of fetch_by_key of a cached global contract with authorization failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2431)
- Evaluation order of fetch_by_key of a local contract with authorization failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2507)
- Evaluation order of fetch_by_key of a non-cached global contract with authorization failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2341)
- Evaluation order of fetch_by_key of an inactive global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2412)
- Evaluation order of fetch_by_key of an inactive global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2489)
- Evaluation order of fetch_by_key of an unknown contract key: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2536)
- Evaluation order of fetch_by_key with contract ID in contract key: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2566)
- Evaluation order of fetch_by_key with contract key exceeding max nesting: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2580)
- Evaluation order of fetch_by_key with empty contract key maintainers: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2552)
- Evaluation order of fetch_interface of a cached global contract not implementing the interface.: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2703)
- Evaluation order of fetch_interface of a cached global contract with failure authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2827)
- Evaluation order of fetch_interface of a non-cached global contract that doesn't implement interface.: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2625)
- Evaluation order of fetch_interface of a non-cached global contract with failed authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2642)
- Evaluation order of fetch_interface of an inactive global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2686)
- Evaluation order of fetch_interface of an inactive local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2774)
- Evaluation order of fetch_interface of an local contract not implementing the interface: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2791)
- Evaluation order of fetch_interface of an unknown contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2845)
- Evaluation order of fetch_interface of cached global contract with failure authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2739)
- Evaluation order of lookup of a cached global contract with visibility failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2995)
- Evaluation order of lookup of a non-cached global contract with visibility failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2912)
- Evaluation order of lookup_by_key of a cached global contract with authorization failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2978)
- Evaluation order of lookup_by_key of a local contract with authorization failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L3069)
- Evaluation order of lookup_by_key of a local contract with failure authorization: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L3053)
- Evaluation order of lookup_by_key of a non-cached global contract with authorization failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2889)
- Evaluation order of lookup_by_key of an inactive global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2960)
- Evaluation order of lookup_by_key of an inactive local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L3036)
- Evaluation order of lookup_by_key of an unknown contract key: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L3099)
- Evaluation order of lookup_by_key with contract ID in contract key: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L3129)
- Evaluation order of lookup_by_key with contract key exceeding max nesting: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L3143)
- Evaluation order of lookup_by_key with empty contract key maintainers: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L3115)
- Evaluation order of successful create: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L467)
- Evaluation order of successful create_interface: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L658)
- Evaluation order of successful exercise by interface of a non-cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1658)
- Evaluation order of successful exercise of a cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L955)
- Evaluation order of successful exercise of a local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1057)
- Evaluation order of successful exercise of a non-cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L854)
- Evaluation order of successful exercise_by_key of a cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1335)
- Evaluation order of successful exercise_by_key of a local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1448)
- Evaluation order of successful exercise_by_key of a non-cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1233)
- Evaluation order of successful exercise_interface of a cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1734)
- Evaluation order of successful exercise_interface of a local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1843)
- Evaluation order of successful fetch of a cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2060)
- Evaluation order of successful fetch of a local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2147)
- Evaluation order of successful fetch of a non-cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1969)
- Evaluation order of successful fetch_by_key of a cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2371)
- Evaluation order of successful fetch_by_key of a local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2449)
- Evaluation order of successful fetch_by_key of a non-cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2272)
- Evaluation order of successful fetch_interface of a cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2642)
- Evaluation order of successful fetch_interface of a local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2732)
- Evaluation order of successful fetch_interface of a non-cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2574)
- Evaluation order of successful lookup_by_key of a cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2916)
- Evaluation order of successful lookup_by_key of a local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2993)
- Evaluation order of successful lookup_by_key of a non-cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2838)
- Evaluation order of successful create_interface: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L664)
- Evaluation order of successful exercise by interface of a non-cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1682)
- Evaluation order of successful exercise of a cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L967)
- Evaluation order of successful exercise of a local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1069)
- Evaluation order of successful exercise of a non-cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L866)
- Evaluation order of successful exercise_by_key of a cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1353)
- Evaluation order of successful exercise_by_key of a local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1466)
- Evaluation order of successful exercise_by_key of a non-cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1251)
- Evaluation order of successful exercise_interface of a cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1758)
- Evaluation order of successful exercise_interface of a local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1867)
- Evaluation order of successful fetch of a cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2084)
- Evaluation order of successful fetch of a local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2171)
- Evaluation order of successful fetch of a non-cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1993)
- Evaluation order of successful fetch_by_key of a cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2395)
- Evaluation order of successful fetch_by_key of a local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2473)
- Evaluation order of successful fetch_by_key of a non-cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2296)
- Evaluation order of successful fetch_interface of a cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2669)
- Evaluation order of successful fetch_interface of a local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2759)
- Evaluation order of successful fetch_interface of a non-cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2601)
- Evaluation order of successful lookup_by_key of a cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2943)
- Evaluation order of successful lookup_by_key of a local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L3020)
- Evaluation order of successful lookup_by_key of a non-cached global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2865)
- Exceptions, throw/catch.: [ExceptionTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/ExceptionTest.scala#L26)
- Rollback creates cannot be exercise: [EngineTest.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/EngineTest.scala#L2175)
- This checks that type checking in exercise_interface is done after checking activeness.: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1909)
- This checks that type checking is done after checking activeness.: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1799)
- This checks that type checking is done after checking activeness.: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2782)
- This checks that type checking in exercise_interface is done after checking activeness.: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1933)
- This checks that type checking is done after checking activeness.: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1823)
- This checks that type checking is done after checking activeness.: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2809)
- contract key behaviour (non-unique mode): [ContractKeySpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ContractKeySpec.scala#L410)
- contract key behaviour (unique mode): [ContractKeySpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ContractKeySpec.scala#L420)
- contract keys must have a non-empty set of maintainers: [ContractKeySpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ContractKeySpec.scala#L218)
@ -161,7 +161,7 @@
- ensure builtin operators have the correct type: [TypingSpec.scala](daml-lf/validation/src/test/scala/com/digitalasset/daml/lf/validation/TypingSpec.scala#L48)
- ensure expression forms have the correct type: [TypingSpec.scala](daml-lf/validation/src/test/scala/com/digitalasset/daml/lf/validation/TypingSpec.scala#L108)
- exercise-by-interface command is rejected for a: [ApiCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ApiCommandPreprocessorSpec.scala#L171)
- exercise_interface with a contract instance that does not implement the interface fails.: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1686)
- exercise_interface with a contract instance that does not implement the interface fails.: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1710)
- ill-formed create API command is rejected: [ApiCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ApiCommandPreprocessorSpec.scala#L159)
- ill-formed create replay command is rejected: [ReplayCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ReplayCommandPreprocessorSpec.scala#L109)
- ill-formed create-and-exercise API command is rejected: [ApiCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ApiCommandPreprocessorSpec.scala#L184)