[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" tag_filter="$tag_filter,-dont-run-on-darwin,-scaladoc,-pdfdocs"
fi fi
SKIP_DEV_CANTON_TESTS=false SKIP_DEV_CANTON_TESTS=true
if [ "$SKIP_DEV_CANTON_TESTS" = "true" ]; then if [ "$SKIP_DEV_CANTON_TESTS" = "true" ]; then
tag_filter="$tag_filter,-dev-canton-test" tag_filter="$tag_filter,-dev-canton-test"
fi fi

View File

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

View File

@ -58,6 +58,8 @@ class Context(
import Context._ import Context._
def devMode: Boolean = languageVersion == LanguageVersion.v1_dev
/** The package identifier to use for modules added to the context. /** The package identifier to use for modules added to the context.
* When decoding LF modules this package identifier should be used to rewrite * 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 * 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, warningLog: WarningLog,
commitLocation: Option[Ref.Location], commitLocation: Option[Ref.Location],
stackTrace: ImmArray[Ref.Location], stackTrace: ImmArray[Ref.Location],
devMode: Boolean,
) { ) {
private val empty: proto.Empty = proto.Empty.newBuilder.build private val empty: proto.Empty = proto.Empty.newBuilder.build
@ -247,17 +248,18 @@ final class Conversions(
builder.setCrash(s"Contract Id comparability Error") builder.setCrash(s"Contract Id comparability Error")
case NonComparableValues => case NonComparableValues =>
builder.setComparableValueError(proto.Empty.newBuilder) builder.setComparableValueError(proto.Empty.newBuilder)
case Limit(limitError) => case Dev(_, devError) if devMode =>
devError match {
case Dev.Limit(limitError) =>
limitError match { limitError match {
case Limit.ValueNesting(_) => case Dev.Limit.ValueNesting(_) =>
builder.setValueExceedsMaxNesting(proto.Empty.newBuilder) builder.setValueExceedsMaxNesting(proto.Empty.newBuilder)
// TODO https://github.com/digital-asset/daml/issues/11691 // TODO https://github.com/digital-asset/daml/issues/11691
// Handle the other cases properly. // Handle the other cases properly.
case _ => case _ =>
builder.setCrash(s"A limit was overpass when building the transaction") builder.setCrash(s"A limit was overpassed when building the transaction")
} }
case Dev.ChoiceGuardFailed(coid, templateId, choiceName, byInterface) =>
case ChoiceGuardFailed(coid, templateId, choiceName, byInterface) =>
val cgfBuilder = val cgfBuilder =
proto.ScenarioError.ChoiceGuardFailed.newBuilder proto.ScenarioError.ChoiceGuardFailed.newBuilder
.setContractRef(mkContractRef(coid, templateId)) .setContractRef(mkContractRef(coid, templateId))
@ -267,6 +269,9 @@ final class Conversions(
) )
builder.setChoiceGuardFailed(cgfBuilder.build) builder.setChoiceGuardFailed(cgfBuilder.build)
} }
case err @ Dev(_, _) =>
builder.setCrash(s"Unexpected Dev error: " + err.toString)
}
} }
case Error.ContractNotEffective(coid, tid, effectiveAt) => case Error.ContractNotEffective(coid, tid, effectiveAt) =>
builder.setScenarioContractNotEffective( builder.setScenarioContractNotEffective(

View File

@ -151,19 +151,27 @@ private[lf] object Pretty {
case ContractIdInContractKey(key) => case ContractIdInContractKey(key) =>
text("Contract IDs are not supported in contract keys:") & text("Contract IDs are not supported in contract keys:") &
prettyContractId(key.cids.head) prettyContractId(key.cids.head)
case Limit(error) => case Dev(_, error) =>
error match { error match {
case Limit.ValueNesting(limit) => case Dev.Limit(error) =>
error match {
case Dev.Limit.ValueNesting(limit) =>
text(s"Value exceeds maximum nesting value of $limit") text(s"Value exceeds maximum nesting value of $limit")
case Limit.ContractSignatories(cid @ _, templateId, arg @ _, signatories, limit) => case Dev.Limit.ContractSignatories(
cid @ _,
templateId,
arg @ _,
signatories,
limit,
) =>
text( text(
s"Create Fetch or exercise a Contract of type $templateId with ${signatories.size} signatories but the limit is $limit" 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) => case Dev.Limit.ContractObservers(cid @ _, templateId, arg @ _, observers, limit) =>
text( text(
s"Create Fetch or exercise a Contract of type $templateId ${observers.size} observes but the limit is $limit" s"Create Fetch or exercise a Contract of type $templateId ${observers.size} observes but the limit is $limit"
) )
case Limit.ChoiceControllers( case Dev.Limit.ChoiceControllers(
cid @ _, cid @ _,
templateId, templateId,
choiceName, choiceName,
@ -174,7 +182,7 @@ private[lf] object Pretty {
text( text(
s"Exercise the choice $templateId:$choiceName with ${controllers.size} controllers but the limit is $limit" s"Exercise the choice $templateId:$choiceName with ${controllers.size} controllers but the limit is $limit"
) )
case Limit.ChoiceObservers( case Dev.Limit.ChoiceObservers(
cid @ _, cid @ _,
templateId, templateId,
choiceName, choiceName,
@ -185,7 +193,7 @@ private[lf] object Pretty {
text( text(
s"Exercise the choice $templateId:$choiceName with ${observers.size} observers but the limit is $limit" s"Exercise the choice $templateId:$choiceName with ${observers.size} observers but the limit is $limit"
) )
case Limit.ChoiceAuthorizers( case Dev.Limit.ChoiceAuthorizers(
cid @ _, cid @ _,
templateId, templateId,
choiceName, choiceName,
@ -196,11 +204,10 @@ private[lf] object Pretty {
text( text(
s"Exercise the choice $templateId:$choiceName with ${authorizers.size} authorizers but the limit is $limit" s"Exercise the choice $templateId:$choiceName with ${authorizers.size} authorizers but the limit is $limit"
) )
case Limit.TransactionInputContracts(limit) => case Dev.Limit.TransactionInputContracts(limit) =>
text(s"Transaction exceeds maximum input contract number of $limit") text(s"Transaction exceeds maximum input contract number of $limit")
} }
case Dev.ChoiceGuardFailed(cid, templateId, choiceName, byInterface) =>
case ChoiceGuardFailed(cid, templateId, choiceName, byInterface) => (
text(s"Choice guard failed for") & prettyTypeConName(templateId) & text(s"Choice guard failed for") & prettyTypeConName(templateId) &
text(s"contract") & prettyContractId(cid) & text(s"contract") & prettyContractId(cid) &
text(s"when exercising choice $choiceName") & text(s"when exercising choice $choiceName") &
@ -208,7 +215,7 @@ private[lf] object Pretty {
case None => text("by template") case None => text("by template")
case Some(interfaceId) => text("by interface") & prettyTypeConName(interfaceId) 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 = { def go(v: SValue, maxNesting: Int = V.MAXIMUM_NESTING): V = {
if (maxNesting < 0) if (maxNesting < 0)
throw SError.SErrorDamlException( Speedy.throwLimitError(
interpretation.Error.Limit(interpretation.Error.Limit.ValueNesting(V.MAXIMUM_NESTING)) NameOf.qualifiedNameOfCurrentFunc,
interpretation.Error.Dev.Limit.ValueNesting(V.MAXIMUM_NESTING),
) )
val nextMaxNesting = maxNesting - 1 val nextMaxNesting = maxNesting - 1
v match { v match {
case SInt64(x) => V.ValueInt64(x) 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 = private[speedy] def throwLimitError(location: String, error: IError.Dev.Limit.Error): Nothing =
if (actual > limit) throw SError.SErrorDamlException(interpretation.Error.Dev(location, IError.Dev.Limit(error)))
throw SError.SErrorDamlException(IError.Limit(error(limit)))
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( final class UpdateMachine(
override val sexpr: SExpr, override val sexpr: SExpr,
@ -274,9 +281,10 @@ private[lf] object Speedy {
private[speedy] def updateCachedContracts(cid: V.ContractId, contract: CachedContract): Unit = { private[speedy] def updateCachedContracts(cid: V.ContractId, contract: CachedContract): Unit = {
enforceLimit( enforceLimit(
NameOf.qualifiedNameOfCurrentFunc,
contract.signatories.size, contract.signatories.size,
limits.contractSignatories, limits.contractSignatories,
IError.Limit IError.Dev.Limit
.ContractSignatories( .ContractSignatories(
cid, cid,
contract.templateId, contract.templateId,
@ -286,9 +294,10 @@ private[lf] object Speedy {
), ),
) )
enforceLimit( enforceLimit(
NameOf.qualifiedNameOfCurrentFunc,
contract.observers.size, contract.observers.size,
limits.contractObservers, limits.contractObservers,
IError.Limit IError.Dev.Limit
.ContractObservers( .ContractObservers(
cid, cid,
contract.templateId, contract.templateId,
@ -303,9 +312,10 @@ private[lf] object Speedy {
private[speedy] def addGlobalContract(coid: V.ContractId, contract: CachedContract): Unit = { private[speedy] def addGlobalContract(coid: V.ContractId, contract: CachedContract): Unit = {
numInputContracts += 1 numInputContracts += 1
enforceLimit( enforceLimit(
NameOf.qualifiedNameOfCurrentFunc,
numInputContracts, numInputContracts,
limits.transactionInputContracts, limits.transactionInputContracts,
IError.Limit.TransactionInputContracts, IError.Dev.Limit.TransactionInputContracts,
) )
updateCachedContracts(coid, contract) updateCachedContracts(coid, contract)
} }
@ -318,9 +328,10 @@ private[lf] object Speedy {
arg: V, arg: V,
): Unit = ): Unit =
enforceLimit( enforceLimit(
NameOf.qualifiedNameOfCurrentFunc,
controllers.size, controllers.size,
limits.choiceControllers, limits.choiceControllers,
IError.Limit.ChoiceControllers(cid, templateId, choiceName, arg, controllers, _), IError.Dev.Limit.ChoiceControllers(cid, templateId, choiceName, arg, controllers, _),
) )
private[speedy] def enforceChoiceObserversLimit( private[speedy] def enforceChoiceObserversLimit(
@ -331,9 +342,10 @@ private[lf] object Speedy {
arg: V, arg: V,
): Unit = ): Unit =
enforceLimit( enforceLimit(
NameOf.qualifiedNameOfCurrentFunc,
observers.size, observers.size,
limits.choiceObservers, limits.choiceObservers,
IError.Limit.ChoiceObservers(cid, templateId, choiceName, arg, observers, _), IError.Dev.Limit.ChoiceObservers(cid, templateId, choiceName, arg, observers, _),
) )
private[speedy] def enforceChoiceAuthorizersLimit( private[speedy] def enforceChoiceAuthorizersLimit(
@ -344,9 +356,10 @@ private[lf] object Speedy {
arg: V, arg: V,
): Unit = ): Unit =
enforceLimit( enforceLimit(
NameOf.qualifiedNameOfCurrentFunc,
authorizers.size, authorizers.size,
limits.choiceAuthorizers, 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. // 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], byInterface: Option[TypeConName],
) extends Kont { ) extends Kont {
def abort(): Nothing = 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 = { override def execute[Q](machine: Machine[Q], v: SValue): Control.Value = {
v match { v match {

View File

@ -615,7 +615,10 @@ class EvaluationOrderTest extends AnyFreeSpec with Matchers with Inside {
Array(SParty(alice), SParty(bob)), Array(SParty(alice), SParty(bob)),
Set(alice), Set(alice),
) )
inside(res) { case Success(Left(SErrorDamlException(IE.Limit(IE.Limit.ValueNesting(_))))) => inside(res) {
case Success(
Left(SErrorDamlException(IE.Dev(_, IE.Dev.Limit(IE.Dev.Limit.ValueNesting(_)))))
) =>
msgs shouldBe Seq( msgs shouldBe Seq(
"starts test", "starts test",
"precondition", "precondition",
@ -639,7 +642,10 @@ class EvaluationOrderTest extends AnyFreeSpec with Matchers with Inside {
Array(SParty(alice), SParty(bob)), Array(SParty(alice), SParty(bob)),
Set(alice), Set(alice),
) )
inside(res) { case Success(Left(SErrorDamlException(IE.Limit(IE.Limit.ValueNesting(_))))) => inside(res) {
case Success(
Left(SErrorDamlException(IE.Dev(_, IE.Dev.Limit(IE.Dev.Limit.ValueNesting(_)))))
) =>
msgs shouldBe Seq( msgs shouldBe Seq(
"starts test", "starts test",
"precondition", "precondition",
@ -809,7 +815,10 @@ class EvaluationOrderTest extends AnyFreeSpec with Matchers with Inside {
Array(SParty(alice), SParty(bob)), Array(SParty(alice), SParty(bob)),
Set(alice), Set(alice),
) )
inside(res) { case Success(Left(SErrorDamlException(IE.Limit(IE.Limit.ValueNesting(_))))) => inside(res) {
case Success(
Left(SErrorDamlException(IE.Dev(_, IE.Dev.Limit(IE.Dev.Limit.ValueNesting(_)))))
) =>
msgs shouldBe Seq( msgs shouldBe Seq(
"starts test", "starts test",
"precondition", "precondition",
@ -833,7 +842,10 @@ class EvaluationOrderTest extends AnyFreeSpec with Matchers with Inside {
Array(SParty(alice), SParty(bob)), Array(SParty(alice), SParty(bob)),
Set(alice), Set(alice),
) )
inside(res) { case Success(Left(SErrorDamlException(IE.Limit(IE.Limit.ValueNesting(_))))) => inside(res) {
case Success(
Left(SErrorDamlException(IE.Dev(_, IE.Dev.Limit(IE.Dev.Limit.ValueNesting(_)))))
) =>
msgs shouldBe Seq( msgs shouldBe Seq(
"starts test", "starts test",
"precondition", "precondition",
@ -1183,7 +1195,10 @@ class EvaluationOrderTest extends AnyFreeSpec with Matchers with Inside {
Set(alice), Set(alice),
getContract = getContract, getContract = getContract,
) )
inside(res) { case Success(Left(SErrorDamlException(IE.Limit(IE.Limit.ValueNesting(_))))) => inside(res) {
case Success(
Left(SErrorDamlException(IE.Dev(_, IE.Dev.Limit(IE.Dev.Limit.ValueNesting(_)))))
) =>
msgs shouldBe Seq( msgs shouldBe Seq(
"starts test", "starts test",
"queries contract", "queries contract",
@ -1208,7 +1223,10 @@ class EvaluationOrderTest extends AnyFreeSpec with Matchers with Inside {
Set(alice), Set(alice),
getContract = getContract, getContract = getContract,
) )
inside(res) { case Success(Left(SErrorDamlException(IE.Limit(IE.Limit.ValueNesting(_))))) => inside(res) {
case Success(
Left(SErrorDamlException(IE.Dev(_, IE.Dev.Limit(IE.Dev.Limit.ValueNesting(_)))))
) =>
msgs shouldBe Seq( msgs shouldBe Seq(
"starts test", "starts test",
"queries contract", "queries contract",
@ -1573,7 +1591,10 @@ class EvaluationOrderTest extends AnyFreeSpec with Matchers with Inside {
getContract = getContract, getContract = getContract,
getKey = getKey, getKey = getKey,
) )
inside(res) { case Success(Left(SErrorDamlException(IE.Limit(IE.Limit.ValueNesting(_))))) => inside(res) {
case Success(
Left(SErrorDamlException(IE.Dev(_, IE.Dev.Limit(IE.Dev.Limit.ValueNesting(_)))))
) =>
msgs shouldBe Seq( msgs shouldBe Seq(
"starts test", "starts test",
"maintainers", "maintainers",
@ -1599,7 +1620,10 @@ class EvaluationOrderTest extends AnyFreeSpec with Matchers with Inside {
getContract = getContract, getContract = getContract,
getKey = getKey, getKey = getKey,
) )
inside(res) { case Success(Left(SErrorDamlException(IE.Limit(IE.Limit.ValueNesting(_))))) => inside(res) {
case Success(
Left(SErrorDamlException(IE.Dev(_, IE.Dev.Limit(IE.Dev.Limit.ValueNesting(_)))))
) =>
msgs shouldBe Seq( msgs shouldBe Seq(
"starts test", "starts test",
"maintainers", "maintainers",
@ -2561,7 +2585,10 @@ class EvaluationOrderTest extends AnyFreeSpec with Matchers with Inside {
Array(SParty(alice), SParty(alice)), Array(SParty(alice), SParty(alice)),
Set(alice), Set(alice),
) )
inside(res) { case Success(Left(SErrorDamlException(IE.Limit(IE.Limit.ValueNesting(_))))) => inside(res) {
case Success(
Left(SErrorDamlException(IE.Dev(_, IE.Dev.Limit(IE.Dev.Limit.ValueNesting(_)))))
) =>
msgs shouldBe Seq("starts test", "maintainers") msgs shouldBe Seq("starts test", "maintainers")
} }
} }
@ -3121,7 +3148,10 @@ class EvaluationOrderTest extends AnyFreeSpec with Matchers with Inside {
Array(SParty(alice), SParty(alice)), Array(SParty(alice), SParty(alice)),
Set(alice), Set(alice),
) )
inside(res) { case Success(Left(SErrorDamlException(IE.Limit(IE.Limit.ValueNesting(_))))) => inside(res) {
case Success(
Left(SErrorDamlException(IE.Dev(_, IE.Dev.Limit(IE.Dev.Limit.ValueNesting(_)))))
) =>
msgs shouldBe Seq("starts test", "maintainers") msgs shouldBe Seq("starts test", "maintainers")
} }
} }

View File

@ -82,7 +82,12 @@ class LimitsSpec extends AnyWordSpec with Matchers with Inside with TableDrivenP
inside(result) { inside(result) {
case Left( case Left(
SError.SErrorDamlException( 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 templateId shouldBe T
@ -106,7 +111,12 @@ class LimitsSpec extends AnyWordSpec with Matchers with Inside with TableDrivenP
inside(result) { inside(result) {
case Left( case Left(
SError.SErrorDamlException( 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 templateId shouldBe T
@ -140,7 +150,12 @@ class LimitsSpec extends AnyWordSpec with Matchers with Inside with TableDrivenP
inside(result) { inside(result) {
case Left( case Left(
SError.SErrorDamlException( 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 templateId shouldBe T
@ -169,7 +184,12 @@ class LimitsSpec extends AnyWordSpec with Matchers with Inside with TableDrivenP
inside(result) { inside(result) {
case Left( case Left(
SError.SErrorDamlException( 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 templateId shouldBe T
@ -194,7 +214,12 @@ class LimitsSpec extends AnyWordSpec with Matchers with Inside with TableDrivenP
inside(result) { inside(result) {
case Left( case Left(
SError.SErrorDamlException( 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 templateId shouldBe T
@ -228,7 +253,12 @@ class LimitsSpec extends AnyWordSpec with Matchers with Inside with TableDrivenP
inside(result) { inside(result) {
case Left( case Left(
SError.SErrorDamlException( 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 templateId shouldBe T
@ -261,8 +291,10 @@ class LimitsSpec extends AnyWordSpec with Matchers with Inside with TableDrivenP
inside(result) { inside(result) {
case Left( case Left(
SError.SErrorDamlException( SError.SErrorDamlException(
IE.Limit( IE.Dev(
IE.Limit.ChoiceControllers( _,
IE.Dev.Limit(
IE.Dev.Limit.ChoiceControllers(
_, _,
templateId, templateId,
choiceName, choiceName,
@ -270,6 +302,7 @@ class LimitsSpec extends AnyWordSpec with Matchers with Inside with TableDrivenP
parties, parties,
reportedlimit, reportedlimit,
) )
),
) )
) )
) => ) =>
@ -313,8 +346,18 @@ class LimitsSpec extends AnyWordSpec with Matchers with Inside with TableDrivenP
inside(result) { inside(result) {
case Left( case Left(
SError.SErrorDamlException( SError.SErrorDamlException(
IE.Limit( IE.Dev(
IE.Limit.ChoiceObservers(_, templateId, choiceName, _, parties, reportedlimit) _,
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) { inside(result) {
case Left( case Left(
SError.SErrorDamlException( SError.SErrorDamlException(
IE.Limit(IE.Limit.TransactionInputContracts(reportedlimit)) IE.Dev(_, IE.Dev.Limit(IE.Dev.Limit.TransactionInputContracts(reportedlimit)))
) )
) => ) =>
reportedlimit shouldBe limit 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 // Because Z has a nesting of 1, toNat(Value.MAXIMUM_NESTING) has a nesting of
// Value.MAXIMUM_NESTING + 1 // Value.MAXIMUM_NESTING + 1
val x = Try(toNat(Value.MAXIMUM_NESTING).toUnnormalizedValue) val x = Try(toNat(Value.MAXIMUM_NESTING).toUnnormalizedValue)
x shouldBe inside(x) { case Failure(SError.SErrorDamlException(IError.Dev(_, error))) =>
Failure( error shouldBe IError.Dev.Limit(IError.Dev.Limit.ValueNesting(Value.MAXIMUM_NESTING))
SError.SErrorDamlException(IError.Limit(IError.Limit.ValueNesting(Value.MAXIMUM_NESTING))) }
)
} }
"accepts just right nesting" in { "accepts just right nesting" in {

View File

@ -160,8 +160,12 @@ object Error {
final case class ContractIdInContractKey(key: Value) extends Error final case class ContractIdInContractKey(key: Value) extends Error
@deprecated("use Limit.ValueNesting", since = "2.0.0") // Error that can be thrown by dev or PoC feature only
val ValueExceedsMaxNesting: Limit.ValueNesting.type = Limit.ValueNesting final case class Dev(location: String, error: Dev.Error) extends Error
object Dev {
sealed abstract class Error extends Serializable with Product
/** A choice guard returned false, invalidating some expectation. */ /** A choice guard returned false, invalidating some expectation. */
final case class ChoiceGuardFailed( final case class ChoiceGuardFailed(
@ -226,3 +230,5 @@ object Error {
} }
} }
}

View File

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

View File

@ -37,122 +37,122 @@
## Integrity: ## 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 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 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 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 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 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 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 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#L775) - 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#L825) - 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#L802) - 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#L701) - 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#L726) - 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#L683) - 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#L1777) - 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#L1759) - 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#L1817) - 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#L1138) - 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#L896) - 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#L922) - 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#L996) - 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#L881) - 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#L979) - 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#L1080) - 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#L1163) - 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#L1099) - 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#L1032) - 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#L1177) - 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#L1202) - 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#L1424) - 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#L1304) - 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#L1492) - 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#L1516) - 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#L1277) - 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#L1380) - 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#L1361) - 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#L1472) - 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#L1551) - 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#L1399) - 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#L1566) - 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#L1633) - 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#L1592) - 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#L1929) - 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#L1704) - 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#L1867) - 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#L1886) - 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#L1619) - 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#L2214) - 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#L2007) - 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#L2030) - 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#L2093) - 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#L2234) - 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#L1992) - 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#L2077) - 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#L2162) - 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#L2253) - 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#L2179) - 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#L2127) - 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#L2424) - 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#L2340) - 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#L2407) - 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#L2483) - 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#L2317) - 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#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#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#L2465) - 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#L2512) - 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#L2542) - 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#L2556) - 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#L2528) - 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#L2676) - 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#L2800) - 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#L2598) - 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#L2615) - 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#L2659) - 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#L2747) - 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#L2764) - 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#L2818) - 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#L2712) - 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#L2968) - 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#L2885) - 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#L2951) - 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#L3042) - 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#L3026) - 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#L2862) - 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#L2933) - 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#L3009) - 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#L3072) - 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#L3102) - 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#L3116) - 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#L3088) - 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: [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 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#L1658) - 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#L955) - 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#L1057) - 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#L854) - 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#L1335) - 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#L1448) - 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#L1233) - 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#L1734) - 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#L1843) - 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#L2060) - 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#L2147) - 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#L1969) - 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#L2371) - 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#L2449) - 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#L2272) - 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#L2642) - 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#L2732) - 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#L2574) - 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#L2916) - 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#L2993) - 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#L2838) - 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) - 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) - 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 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#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#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#L2782) - 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 (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 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) - 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 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) - 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-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 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 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) - 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)