Port upgrading changes from 2.x (#18733)

Includes:
Pass package resolution into reinterpret (#18286)
Enable upgrading based on language version (#18239)
This commit is contained in:
Simon Maxen 2024-03-22 12:12:15 +00:00 committed by GitHub
parent db54939c92
commit 6e5763b40f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
30 changed files with 299 additions and 327 deletions

View File

@ -5,7 +5,6 @@ package com.daml.lf
package engine
import java.util.concurrent.ConcurrentHashMap
import com.daml.lf.data.Ref.PackageId
import com.daml.lf.engine.ConcurrentCompiledPackages.AddPackageState
import com.daml.lf.language.Ast.{Package, PackageSignature}
@ -109,7 +108,7 @@ private[lf] final class ConcurrentCompiledPackages(compilerConfig: Compiler.Conf
val defns =
try {
new speedy.Compiler(extendedSignatures, compilerConfig)
.unsafeCompilePackage(pkgId, pkg, compilerConfig.enableContractUpgrading)
.unsafeCompilePackage(pkgId, pkg)
} catch {
case e: validation.ValidationError =>
return ResultError(Error.Package.Validation(e))

View File

@ -71,7 +71,6 @@ class Engine(val config: EngineConfig) {
new preprocessing.Preprocessor(
compiledPackages = compiledPackages,
requireV1ContractIdSuffix = config.requireSuffixedGlobalContractId,
enableContractUpgrading = config.enableContractUpgrading,
)
def info = new EngineInfo(config)

View File

@ -48,7 +48,7 @@ final case class EngineConfig(
limits: interpretation.Limits = interpretation.Limits.Lenient,
checkAuthorization: Boolean = true,
iterationsBetweenInterruptions: Long = 10000,
enableContractUpgrading: Boolean = false,
enableContractUpgrading: Boolean = true, // Will be removed once removed from Canton
) {
private[lf] def getCompilerConfig: speedy.Compiler.Config =
speedy.Compiler.Config(
@ -68,7 +68,6 @@ final case class EngineConfig(
speedy.Compiler.FullProfile
else
speedy.Compiler.NoProfile,
enableContractUpgrading = enableContractUpgrading,
)
private[lf] def authorizationChecker: AuthorizationChecker =

View File

@ -55,6 +55,7 @@ sealed trait Result[+A] extends Product with Serializable {
pkgs: PartialFunction[PackageId, Package] = PartialFunction.empty,
keys: PartialFunction[GlobalKeyWithMaintainers, ContractId] = PartialFunction.empty,
grantNeedAuthority: Boolean = false,
grantUpgradeVerification: Option[String] = Some("not validated!"),
): Either[Error, A] = {
@tailrec
def go(res: Result[A]): Either[Error, A] =
@ -66,7 +67,8 @@ sealed trait Result[+A] extends Product with Serializable {
case ResultNeedPackage(pkgId, resume) => go(resume(pkgs.lift(pkgId)))
case ResultNeedKey(key, resume) => go(resume(keys.lift(key)))
case ResultNeedAuthority(_, _, resume) => go(resume(grantNeedAuthority))
case ResultNeedUpgradeVerification(_, _, _, _, resume) => go(resume(Some("not validated!")))
case ResultNeedUpgradeVerification(_, _, _, _, resume) =>
go(resume(grantUpgradeVerification))
}
go(this)
}

View File

@ -14,35 +14,10 @@ import com.daml.scalautil.Statement.discard
private[lf] final class CommandPreprocessor(
pkgInterface: language.PackageInterface,
requireV1ContractIdSuffix: Boolean,
enableContractUpgrading: Boolean,
) {
import Preprocessor._
// config for createArgument in ApiCommand
private[this] val LenientCreateArgTranslateConfig =
if (enableContractUpgrading)
ValueTranslator.Config.Upgradeable
else
ValueTranslator.Config.Strict
// config for non createArgument in ApiCommand
private[this] val LenientNonCreateArgTranslateConfig =
if (enableContractUpgrading)
// in case of upgrade
// - we need to ignore package id
ValueTranslator.Config.Coerceable
else
ValueTranslator.Config.Strict
// Config for all values translation in ReplayCommand and explicit disclosure
// is it strict in the sens, upgrade is completely disable.
// TODO: https://github.com/digital-asset/daml/issues/17082
// We allow field reordering for backward compatibility reason
// However we probably could and should prevent it
private[this] val StrictTranslateConfig =
ValueTranslator.Config.Strict
private val valueTranslator =
new ValueTranslator(
pkgInterface = pkgInterface,
@ -51,18 +26,21 @@ private[lf] final class CommandPreprocessor(
import valueTranslator.validateCid
private[this] def translateUpgradableArg(typ: Ast.Type, value: Value, strict: Boolean) =
private def valueTranslatorConfig(strict: Boolean) =
if (strict) ValueTranslator.Config.Strict else ValueTranslator.Config.Upgradeable
private def translateUpgradableArg(typ: Ast.Type, value: Value, strict: Boolean) =
valueTranslator.unsafeTranslateValue(
ty = typ,
value = value,
config = if (strict) StrictTranslateConfig else LenientCreateArgTranslateConfig,
config = valueTranslatorConfig(strict),
)
private[this] def translateNonUpgradableArg(typ: Ast.Type, value: Value, strict: Boolean) =
private def translateNonUpgradableArg(typ: Ast.Type, value: Value, strict: Boolean) =
valueTranslator.unsafeTranslateValue(
ty = typ,
value = value,
config = if (strict) StrictTranslateConfig else LenientNonCreateArgTranslateConfig,
config = valueTranslatorConfig(strict),
)
// This is used by value enricher,
@ -139,11 +117,7 @@ private[lf] final class CommandPreprocessor(
templateId = templateId,
contractId = valueTranslator.unsafeTranslateCid(contractId),
choiceId = choiceId,
argument = translateUpgradableArg(
choice.argBinder._2,
argument,
strict = strict,
),
argument = translateUpgradableArg(choice.argBinder._2, argument, strict = strict),
)
}
@ -159,11 +133,7 @@ private[lf] final class CommandPreprocessor(
interfaceId = ifaceId,
contractId = valueTranslator.unsafeTranslateCid(contractId),
choiceId = choiceId,
argument = translateNonUpgradableArg(
choice.argBinder._2,
argument,
strict = strict,
),
argument = translateNonUpgradableArg(choice.argBinder._2, argument, strict = strict),
)
}
@ -179,16 +149,8 @@ private[lf] final class CommandPreprocessor(
pkgInterface.lookupTemplateChoice(templateId, choiceId)
).argBinder._2
val ckTtype = handleLookup(pkgInterface.lookupTemplateKey(templateId)).typ
val arg = translateUpgradableArg(
choiceArgType,
argument,
strict = strict,
)
val key = translateNonUpgradableArg(
ckTtype,
contractKey,
strict = strict,
)
val arg = translateUpgradableArg(choiceArgType, argument, strict = strict)
val key = translateNonUpgradableArg(ckTtype, contractKey, strict = strict)
speedy.Command.ExerciseByKey(templateId, key, choiceId, arg)
}
@ -221,11 +183,7 @@ private[lf] final class CommandPreprocessor(
strict: Boolean,
): speedy.Command.LookupByKey = {
val ckTtype = handleLookup(pkgInterface.lookupTemplateKey(templateId)).typ
val key = translateNonUpgradableArg(
ckTtype,
contractKey,
strict = strict,
)
val key = translateNonUpgradableArg(ckTtype, contractKey, strict = strict)
speedy.Command.LookupByKey(templateId, key)
}
@ -328,19 +286,11 @@ private[lf] final class CommandPreprocessor(
}
case command.ReplayCommand.FetchByKey(templateId, key) =>
val ckTtype = handleLookup(pkgInterface.lookupTemplateKey(templateId)).typ
val sKey = translateNonUpgradableArg(
ckTtype,
key,
strict = true,
)
val sKey = translateNonUpgradableArg(ckTtype, key, strict = true)
speedy.Command.FetchByKey(templateId, sKey)
case command.ReplayCommand.LookupByKey(templateId, key) =>
val ckTtype = handleLookup(pkgInterface.lookupTemplateKey(templateId)).typ
val sKey = translateNonUpgradableArg(
ckTtype,
key,
strict = true,
)
val sKey = translateNonUpgradableArg(ckTtype, key, strict = true)
speedy.Command.LookupByKey(templateId, sKey)
}
@ -381,12 +331,9 @@ private[lf] final class CommandPreprocessor(
discard(handleLookup(pkgInterface.lookupInterface(interfaceId)))
discard(handleLookup(pkgInterface.lookupInterfaceInstance(interfaceId, templateId)))
val arg = translateNonUpgradableArg(
Ast.TTyCon(templateId),
argument,
strict = true,
)
val arg = translateNonUpgradableArg(Ast.TTyCon(templateId), argument, strict = true)
speedy.InterfaceView(templateId, arg, interfaceId)
}
}

View File

@ -37,7 +37,6 @@ import scala.annotation.tailrec
private[engine] final class Preprocessor(
compiledPackages: MutableCompiledPackages,
requireV1ContractIdSuffix: Boolean = true,
enableContractUpgrading: Boolean = false,
) {
import Preprocessor._
@ -48,7 +47,6 @@ private[engine] final class Preprocessor(
new CommandPreprocessor(
pkgInterface = pkgInterface,
requireV1ContractIdSuffix = requireV1ContractIdSuffix,
enableContractUpgrading = enableContractUpgrading,
)
val transactionPreprocessor = new TransactionPreprocessor(commandPreprocessor)

View File

@ -121,7 +121,6 @@ class ApiCommandPreprocessorSpec(majorLanguageVersion: LanguageMajorVersion)
new CommandPreprocessor(
compiledPackage.pkgInterface,
requireV1ContractIdSuffix = false,
enableContractUpgrading = false,
)
"reject improperly typed ApiCommands" in {
@ -273,7 +272,6 @@ class ApiCommandPreprocessorSpec(majorLanguageVersion: LanguageMajorVersion)
val cmdPreprocessor = new CommandPreprocessor(
compiledPackage.pkgInterface,
requireV1ContractIdSuffix = false,
enableContractUpgrading = false,
)
val cids = List(
@ -299,7 +297,6 @@ class ApiCommandPreprocessorSpec(majorLanguageVersion: LanguageMajorVersion)
val cmdPreprocessor = new CommandPreprocessor(
compiledPackage.pkgInterface,
requireV1ContractIdSuffix = true,
enableContractUpgrading = false,
)
val List(aLegalCid, anotherLegalCid) =
List("a legal Contract ID", "another legal Contract ID").map(s =>

View File

@ -55,13 +55,22 @@ class ContractKeySpec(majorLanguageVersion: LanguageMajorVersion)
private[this] implicit def logContext: LoggingContext = LoggingContext.ForTesting
private def loadPackage(resource: String): (PackageId, Package, Map[PackageId, Package]) = {
private[this] val suffixLenientEngine = Engine.DevEngine(majorLanguageVersion)
private[this] val compiledPackages = ConcurrentCompiledPackages(
suffixLenientEngine.config.getCompilerConfig
)
private[this] val preprocessor = new preprocessing.Preprocessor(compiledPackages)
private def loadAndAddPackage(resource: String): (PackageId, Package, Map[PackageId, Package]) = {
val packages = UniversalArchiveDecoder.assertReadFile(new File(rlocation(resource)))
val (mainPkgId, mainPkg) = packages.main
assert(
compiledPackages.addPackage(mainPkgId, mainPkg).consume(pkgs = packages.all.toMap).isRight
)
(mainPkgId, mainPkg, packages.all.toMap)
}
private val (basicTestsPkgId, basicTestsPkg, allPackages) = loadPackage(
private val (basicTestsPkgId, basicTestsPkg, allPackages) = loadAndAddPackage(
s"daml-lf/engine/BasicTests-v${majorLanguageVersion.pretty}dev.dar"
)
@ -135,12 +144,6 @@ class ContractKeySpec(majorLanguageVersion: LanguageMajorVersion)
toContractId("BasicTests:WithKey:1")
}
private[this] val suffixLenientEngine = Engine.DevEngine(majorLanguageVersion)
private[this] val preprocessor =
new preprocessing.Preprocessor(
ConcurrentCompiledPackages(suffixLenientEngine.config.getCompilerConfig)
)
"contract key" should {
val now = Time.Timestamp.now()
val submissionSeed = crypto.Hash.hashPrivateKey("contract key")
@ -273,7 +276,7 @@ class ContractKeySpec(majorLanguageVersion: LanguageMajorVersion)
)
)
val (multiKeysPkgId, multiKeysPkg, allMultiKeysPkgs) =
loadPackage(s"daml-lf/tests/MultiKeys-v${majorLanguageVersion.pretty}dev.dar")
loadAndAddPackage(s"daml-lf/tests/MultiKeys-v${majorLanguageVersion.pretty}dev.dar")
val keyedId = Identifier(multiKeysPkgId, "MultiKeys:Keyed")
val opsId = Identifier(multiKeysPkgId, "MultiKeys:KeyOperations")
val let = Time.Timestamp.now()

View File

@ -52,6 +52,7 @@ import scala.annotation.nowarn
import scala.collection.immutable.HashMap
import scala.language.implicitConversions
import scala.math.Ordered.orderingToOrdered
import scala.util.Right
class EngineTestV2 extends EngineTest(LanguageMajorVersion.V2)
@ -240,16 +241,18 @@ class EngineTest(majorLanguageVersion: LanguageMajorVersion)
val Right((tx, _)) = interpretResult(templateId, signatories, submitters)
val replaySubmitters = submitters + party
val replayResult = suffixLenientEngine.replay(
submitters = replaySubmitters,
tx = tx,
ledgerEffectiveTime = let,
participantId = participant,
submissionTime = let,
submissionSeed = submissionSeed,
)
val replayResult = suffixLenientEngine
.replay(
submitters = replaySubmitters,
tx = tx,
ledgerEffectiveTime = let,
participantId = participant,
submissionTime = let,
submissionSeed = submissionSeed,
)
.consume(grantUpgradeVerification = None)
replayResult shouldBe a[ResultDone[_]]
replayResult shouldBe a[Right[_, _]]
}
}
@ -338,6 +341,7 @@ class EngineTest(majorLanguageVersion: LanguageMajorVersion)
let,
lookupPackage,
defaultContracts,
grantUpgradeVerification = None,
)
isReplayedBy(stx, rtx) shouldBe Right(())
}
@ -346,7 +350,7 @@ class EngineTest(majorLanguageVersion: LanguageMajorVersion)
val ntx = SubmittedTransaction(Normalization.normalizeTx(tx))
val validated = suffixLenientEngine
.validate(Set(submitter), ntx, let, participant, let, submissionSeed)
.consume(lookupContract, lookupPackage, lookupKey)
.consume(lookupContract, lookupPackage, lookupKey, grantUpgradeVerification = None)
validated match {
case Left(e) =>
fail(e.message)
@ -476,7 +480,7 @@ class EngineTest(majorLanguageVersion: LanguageMajorVersion)
val ntx = SubmittedTransaction(Normalization.normalizeTx(tx))
val validated = suffixLenientEngine
.validate(submitters, ntx, let, participant, let, submissionSeed)
.consume(lookupContract, lookupPackage, lookupKey)
.consume(lookupContract, lookupPackage, lookupKey, grantUpgradeVerification = None)
validated match {
case Left(e) =>
fail(e.message)
@ -823,7 +827,16 @@ class EngineTest(majorLanguageVersion: LanguageMajorVersion)
val stx = suffix(tx)
val Right((rtx, _)) =
reinterpret(suffixStrictEngine, Set(party), stx.roots, stx, txMeta, let, lookupPackage)
reinterpret(
suffixStrictEngine,
Set(party),
stx.roots,
stx,
txMeta,
let,
lookupPackage,
grantUpgradeVerification = None,
)
isReplayedBy(stx, rtx) shouldBe Right(())
}
@ -1100,6 +1113,7 @@ class EngineTest(majorLanguageVersion: LanguageMajorVersion)
let,
lookupPackage,
defaultContracts,
grantUpgradeVerification = None,
)
isReplayedBy(rtx, stx) shouldBe Right(())
@ -1306,7 +1320,7 @@ class EngineTest(majorLanguageVersion: LanguageMajorVersion)
txMeta.submissionTime,
let,
)
.consume(lookupContract, lookupPackage, lookupKey)
.consume(lookupContract, lookupPackage, lookupKey, grantUpgradeVerification = None)
isReplayedBy(fetchTx, reinterpreted) shouldBe Right(())
}
}
@ -1359,7 +1373,7 @@ class EngineTest(majorLanguageVersion: LanguageMajorVersion)
val reinterpreted =
engine
.reinterpret(submitters, fetchNode, None, let, let)
.consume(lookupContract, lookupPackage, lookupKey)
.consume(lookupContract, lookupPackage, lookupKey, grantUpgradeVerification = None)
reinterpreted shouldBe a[Right[_, _]]
}
@ -1465,7 +1479,7 @@ class EngineTest(majorLanguageVersion: LanguageMajorVersion)
txMeta.submissionTime,
now,
)
.consume(lookupContract, lookupPackage, lookupKey)
.consume(lookupContract, lookupPackage, lookupKey, grantUpgradeVerification = None)
firstLookupNode(reinterpreted.transaction).map(_._2) shouldEqual Some(lookupNode)
}
@ -1967,6 +1981,7 @@ class EngineTest(majorLanguageVersion: LanguageMajorVersion)
txMeta,
let,
lookupPackage,
grantUpgradeVerification = None,
) shouldBe a[Right[_, _]]
}
@ -1976,7 +1991,7 @@ class EngineTest(majorLanguageVersion: LanguageMajorVersion)
val (exceptionsPkgId, exceptionsPkg, allExceptionsPkgs) =
// TODO(https://github.com/digital-asset/daml/issues/18457): split key test cases and revert
// to non-dev dar
loadPackage(s"daml-lf/tests/Exceptions-v${majorLanguageVersion.pretty}dev.dar")
loadAndAddPackage(s"daml-lf/tests/Exceptions-v${majorLanguageVersion.pretty}dev.dar")
val kId = Identifier(exceptionsPkgId, "Exceptions:K")
val tId = Identifier(exceptionsPkgId, "Exceptions:T")
val let = Time.Timestamp.now()
@ -2127,7 +2142,7 @@ class EngineTest(majorLanguageVersion: LanguageMajorVersion)
val (exceptionsPkgId, exceptionsPkg, allExceptionsPkgs) =
// TODO(https://github.com/digital-asset/daml/issues/18457): split key test cases and revert
// to non-dev dar
loadPackage(s"daml-lf/tests/Exceptions-v${majorLanguageVersion.pretty}dev.dar")
loadAndAddPackage(s"daml-lf/tests/Exceptions-v${majorLanguageVersion.pretty}dev.dar")
val kId = Identifier(exceptionsPkgId, "Exceptions:K")
val seedId = Identifier(exceptionsPkgId, "Exceptions:NodeSeeds")
val let = Time.Timestamp.now()
@ -2206,7 +2221,7 @@ class EngineTest(majorLanguageVersion: LanguageMajorVersion)
val (exceptionsPkgId, exceptionsPkg, allExceptionsPkgs) =
// TODO(https://github.com/digital-asset/daml/issues/18457): split key test cases and revert
// to non-dev dar
loadPackage(s"daml-lf/tests/Exceptions-v${majorLanguageVersion.pretty}dev.dar")
loadAndAddPackage(s"daml-lf/tests/Exceptions-v${majorLanguageVersion.pretty}dev.dar")
val kId = Identifier(exceptionsPkgId, "Exceptions:K")
val tId = Identifier(exceptionsPkgId, "Exceptions:GlobalLookups")
val let = Time.Timestamp.now()
@ -2310,7 +2325,7 @@ class EngineTest(majorLanguageVersion: LanguageMajorVersion)
)
val devVersion = majorLanguageVersion.dev
val (_, _, allPackagesDev) = new EngineTestHelpers(majorLanguageVersion).loadPackage(
val (_, _, allPackagesDev) = new EngineTestHelpers(majorLanguageVersion).loadAndAddPackage(
s"daml-lf/engine/BasicTests-v${majorLanguageVersion.pretty}dev.dar"
)
val compatibleLanguageVersions = LanguageVersion.All
@ -2402,7 +2417,21 @@ class EngineTestHelpers(majorLanguageVersion: LanguageMajorVersion) {
implicit def toName(s: String): Name =
Name.assertFromString(s)
val (basicTestsPkgId, basicTestsPkg, allPackages) = loadPackage(
val suffixStrictEngine: Engine = newEngine(requireCidSuffixes = true)
val suffixLenientEngine = newEngine()
val compiledPackages = ConcurrentCompiledPackages(suffixLenientEngine.config.getCompilerConfig)
val preprocessor = new preprocessing.Preprocessor(compiledPackages)
def loadAndAddPackage(resource: String): (PackageId, Package, Map[PackageId, Package]) = {
val packages = UniversalArchiveDecoder.assertReadFile(new File(rlocation(resource)))
val (mainPkgId, mainPkg) = packages.main
assert(
compiledPackages.addPackage(mainPkgId, mainPkg).consume(pkgs = packages.all.toMap).isRight
)
(mainPkgId, mainPkg, packages.all.toMap)
}
val (basicTestsPkgId, basicTestsPkg, allPackages) = loadAndAddPackage(
// TODO(https://github.com/digital-asset/daml/issues/18457): split key test cases and revert to
// non-dev dar
s"daml-lf/engine/BasicTests-v${majorLanguageVersion.pretty}dev.dar"
@ -2482,19 +2511,6 @@ class EngineTestHelpers(majorLanguageVersion: LanguageMajorVersion) {
val lookupContract = defaultContracts
val suffixLenientEngine: Engine = newEngine()
val suffixStrictEngine: Engine = newEngine(requireCidSuffixes = true)
val preprocessor =
new preprocessing.Preprocessor(
ConcurrentCompiledPackages(suffixLenientEngine.config.getCompilerConfig)
)
def loadPackage(resource: String): (PackageId, Package, Map[PackageId, Package]) = {
val packages = UniversalArchiveDecoder.assertReadFile(new File(rlocation(resource)))
val (mainPkgId, mainPkg) = packages.main
(mainPkgId, mainPkg, packages.all.toMap)
}
val lookupPackage = allPackages
val lookupKey: PartialFunction[GlobalKeyWithMaintainers, ContractId] = {
@ -2553,6 +2569,7 @@ class EngineTestHelpers(majorLanguageVersion: LanguageMajorVersion) {
lookupPackages: PartialFunction[PackageId, Package],
contracts: Map[ContractId, VersionedContractInstance] = Map.empty,
keys: Map[GlobalKeyWithMaintainers, ContractId] = Map.empty,
grantUpgradeVerification: Option[String] = None,
): Either[Error, (VersionedTransaction, Tx.Metadata)] = {
val nodeSeedMap = txMeta.nodeSeeds.toSeq.toMap
@ -2603,6 +2620,7 @@ class EngineTestHelpers(majorLanguageVersion: LanguageMajorVersion) {
state.contracts,
lookupPackages,
state.keys,
grantUpgradeVerification = grantUpgradeVerification,
)
(tr0, meta0) = currentStep
tr1 = suffix(tr0)

View File

@ -45,21 +45,26 @@ class InterfacesTest(majorLanguageVersion: LanguageMajorVersion)
import InterfacesTest._
private def loadPackage(resource: String): (PackageId, Package, Map[PackageId, Package]) = {
private[this] val engine = Engine.DevEngine(majorLanguageVersion)
private[this] val compiledPackages = ConcurrentCompiledPackages(engine.config.getCompilerConfig)
private[this] val preprocessor = new preprocessing.Preprocessor(compiledPackages)
private def loadAndAddPackage(resource: String): (PackageId, Package, Map[PackageId, Package]) = {
val packages = UniversalArchiveDecoder.assertReadFile(new File(rlocation(resource)))
val (mainPkgId, mainPkg) = packages.main
assert(
compiledPackages.addPackage(mainPkgId, mainPkg).consume(pkgs = packages.all.toMap).isRight
)
(mainPkgId, mainPkg, packages.all.toMap)
}
private[this] val engine = Engine.DevEngine(majorLanguageVersion)
private[this] val preprocessor =
new preprocessing.Preprocessor(
ConcurrentCompiledPackages(engine.config.getCompilerConfig)
)
"interfaces" should {
val (interfacesPkgId, interfacesPkg, allInterfacesPkgs) =
loadPackage(s"daml-lf/tests/Interfaces-v${majorLanguageVersion.pretty}.dar")
loadAndAddPackage(s"daml-lf/tests/Interfaces-v${majorLanguageVersion.pretty}.dar")
val packageNameMap = Map(interfacesPkg.name -> interfacesPkgId)
val idI1 = Identifier(interfacesPkgId, "Interfaces:I1")
val idI2 = Identifier(interfacesPkgId, "Interfaces:I2")
val idT1 = Identifier(interfacesPkgId, "Interfaces:T1")
@ -101,6 +106,7 @@ class InterfacesTest(majorLanguageVersion: LanguageMajorVersion)
ledgerTime = let,
submissionTime = let,
seeding = seeding,
packageResolution = packageNameMap,
)
} yield result
def runApi(cmd: ApiCommand): Either[Error, (SubmittedTransaction, Transaction.Metadata)] =

View File

@ -165,7 +165,7 @@ class NodeSeedsTest(majorLanguageVersion: LanguageMajorVersion) extends AnyWordS
time,
time,
)(LoggingContext.empty)
.consume(pcs = contracts, pkgs = packages)
.consume(pcs = contracts, pkgs = packages, grantUpgradeVerification = None)
rTx.nodes.values.collect { case create: Node.Create => create }.toSet
}

View File

@ -87,7 +87,7 @@ class ReinterpretTest(majorLanguageVersion: LanguageMajorVersion)
time,
time,
)
.consume(pcs = defaultContracts, pkgs = allPackages)
.consume(pcs = defaultContracts, pkgs = allPackages, grantUpgradeVerification = None)
res match {
case Right((tx, _)) => Right(tx)
case Left(e) => Left(e)

View File

@ -85,7 +85,6 @@ class ReplayCommandPreprocessorSpec(majorLanguageVersion: LanguageMajorVersion)
new CommandPreprocessor(
compiledPackage.pkgInterface,
requireV1ContractIdSuffix = false,
enableContractUpgrading = false,
)
"reject improperly typed ApiCommands" in {
@ -238,7 +237,6 @@ class ReplayCommandPreprocessorSpec(majorLanguageVersion: LanguageMajorVersion)
val cmdPreprocessor = new CommandPreprocessor(
compiledPackage.pkgInterface,
requireV1ContractIdSuffix = false,
enableContractUpgrading = false,
)
val cids = List(
@ -264,7 +262,6 @@ class ReplayCommandPreprocessorSpec(majorLanguageVersion: LanguageMajorVersion)
val cmdPreprocessor = new CommandPreprocessor(
compiledPackage.pkgInterface,
requireV1ContractIdSuffix = true,
enableContractUpgrading = false,
)
val List(aLegalCid, anotherLegalCid) =
List("a legal Contract ID", "another legal Contract ID").map(s =>

View File

@ -26,9 +26,7 @@ object LoadDarFunction extends App {
val compilerConfig =
Compiler.Config
.Default(packages.main._2.languageVersion.major)
.copy(
stacktracing = Compiler.NoStackTrace
)
.copy(stacktracing = Compiler.NoStackTrace)
val compiledPackages: CompiledPackages =
PureCompiledPackages.assertBuild(packages.all.toMap, compilerConfig)

View File

@ -70,7 +70,6 @@ private[lf] object Compiler {
packageValidation: PackageValidationMode,
profiling: ProfilingMode,
stacktracing: StackTraceMode,
enableContractUpgrading: Boolean = false,
)
object Config {
@ -103,10 +102,11 @@ private[lf] object Compiler {
): Either[String, Map[t.SDefinitionRef, SDefinition]] = {
val compiler = new Compiler(pkgInterface, compilerConfig)
try {
Right(packages.foldLeft(Map.empty[t.SDefinitionRef, SDefinition]) {
case (acc, (pkgId, pkg)) =>
acc ++ compiler.compilePackage(pkgId, pkg, compilerConfig.enableContractUpgrading)
})
Right(
packages.foldLeft(Map.empty[t.SDefinitionRef, SDefinition]) { case (acc, (pkgId, pkg)) =>
acc ++ compiler.compilePackage(pkgId, pkg)
}
)
} catch {
case CompilationError(msg) => Left(s"Compilation Error: $msg")
case PackageNotFound(pkgId, context) =>
@ -149,9 +149,8 @@ private[lf] final class Compiler(
def unsafeCompilePackage(
pkgId: PackageId,
pkg: Package,
enableContractUpgrading: Boolean = false,
): Iterable[(t.SDefinitionRef, SDefinition)] = {
compilePackage(pkgId, pkg, enableContractUpgrading)
compilePackage(pkgId, pkg)
}
@throws[PackageNotFound]
@ -160,7 +159,7 @@ private[lf] final class Compiler(
pkgId: PackageId,
module: Module,
): Iterable[(t.SDefinitionRef, SDefinition)] = {
compileModule(pkgId, module, enableContractUpgrading = false)
compileModule(pkgId, module)
}
@throws[PackageNotFound]
@ -351,11 +350,7 @@ private[lf] final class Compiler(
private[this] def pipeline(sexpr: s.SExpr): t.SExpr =
flattenToAnf(closureConvert(sexpr))
private[this] def compileModule(
pkgId: PackageId,
module: Module,
enableContractUpgrading: Boolean,
): Iterable[(t.SDefinitionRef, SDefinition)] = {
private def compileModule(pkgId: PackageId, module: Module) = {
val builder = Iterable.newBuilder[(t.SDefinitionRef, SDefinition)]
def addDef(binding: (t.SDefinitionRef, SDefinition)): Unit = discard(builder += binding)
@ -374,15 +369,10 @@ private[lf] final class Compiler(
module.templates.foreach { case (tmplName, tmpl) =>
val tmplId = Identifier(pkgId, QualifiedName(module.name, tmplName))
val optTargetTemplateId =
if (enableContractUpgrading) {
Some(tmplId) // soft
} else {
None // hard
}
val targetTemplateId = Some(tmplId)
addDef(compileCreate(tmplId, tmpl))
addDef(compileFetchTemplate(tmplId, optTargetTemplateId))
addDef(compileFetchTemplate(tmplId, targetTemplateId))
addDef(compileTemplatePreCondition(tmplId, tmpl))
addDef(compileSignatories(tmplId, tmpl))
addDef(compileObservers(tmplId, tmpl))
@ -398,26 +388,26 @@ private[lf] final class Compiler(
}
tmpl.choices.values.foreach { choice =>
addDef(compileTemplateChoice(tmplId, tmpl, choice, optTargetTemplateId))
addDef(compileTemplateChoice(tmplId, tmpl, choice, targetTemplateId))
addDef(compileChoiceController(tmplId, tmpl.param, choice))
addDef(compileChoiceObserver(tmplId, tmpl.param, choice))
}
tmpl.key.foreach { tmplKey =>
addDef(compileContractKeyWithMaintainers(tmplId, tmpl, tmplKey))
addDef(compileFetchByKey(tmplId, tmplKey, optTargetTemplateId))
addDef(compileLookupByKey(tmplId, tmplKey, optTargetTemplateId))
addDef(compileFetchByKey(tmplId, tmplKey, targetTemplateId))
addDef(compileLookupByKey(tmplId, tmplKey, targetTemplateId))
tmpl.choices.values.foreach { x =>
addDef(compileChoiceByKey(tmplId, tmpl, tmplKey, x, optTargetTemplateId))
addDef(compileChoiceByKey(tmplId, tmpl, tmplKey, x, targetTemplateId))
}
}
}
module.interfaces.foreach { case (ifaceName, iface) =>
val ifaceId = Identifier(pkgId, QualifiedName(module.name, ifaceName))
addDef(compileFetchInterface(ifaceId, soft = enableContractUpgrading))
addDef(compileFetchInterface(ifaceId, soft = true))
iface.choices.values.foreach { choice =>
addDef(compileInterfaceChoice(ifaceId, iface.param, choice, soft = enableContractUpgrading))
addDef(compileInterfaceChoice(ifaceId, iface.param, choice, soft = true))
addDef(compileChoiceController(ifaceId, iface.param, choice))
addDef(compileChoiceObserver(ifaceId, iface.param, choice))
}
@ -433,11 +423,7 @@ private[lf] final class Compiler(
*
* @throws ValidationError if the package does not pass validations.
*/
private def compilePackage(
pkgId: PackageId,
pkg: Package,
enableContractUpgrading: Boolean,
): Iterable[(t.SDefinitionRef, SDefinition)] = {
private def compilePackage(pkgId: PackageId, pkg: Package) = {
logger.trace(s"compilePackage: Compiling $pkgId...")
val t0 = Time.Timestamp.now()
@ -460,7 +446,8 @@ private[lf] final class Compiler(
val t1 = Time.Timestamp.now()
val result = pkg.modules.values.flatMap(compileModule(pkgId, _, enableContractUpgrading))
val result =
pkg.modules.values.flatMap((module: GenModule[Expr]) => compileModule(pkgId, module))
val t2 = Time.Timestamp.now()
logger.trace(

View File

@ -2282,7 +2282,7 @@ private[lf] object SBuiltinFun {
}
}
case None =>
crash(s"unexpected contract instance without packageName")
crash(s"Could not resolve packageName to packageId: $packageName")
}
}
}

View File

@ -67,6 +67,7 @@ class SBuiltinInterfaceTest(majorLanguageVersion: LanguageMajorVersion)
evalApp(
e"\(cid: ContractId Mod:Iface) -> fetch_interface @Mod:Iface cid",
Array(SContractId(cid), SToken),
packageResolution = basePkgNameMap,
getContract = Map(
cid -> Versioned(
TransactionVersion.StableVersions.max,
@ -83,6 +84,7 @@ class SBuiltinInterfaceTest(majorLanguageVersion: LanguageMajorVersion)
evalApp(
e"\(cid: ContractId Mod:Iface) -> fetch_interface @Mod:Iface cid",
Array(SContractId(cid), SToken),
packageResolution = basePkgNameMap,
getContract = Map(
cid -> Versioned(
TransactionVersion.StableVersions.max,
@ -99,6 +101,7 @@ class SBuiltinInterfaceTest(majorLanguageVersion: LanguageMajorVersion)
evalApp(
e"\(cid: ContractId Mod:Iface) -> fetch_interface @Mod:Iface cid",
Array(SContractId(cid), SToken),
packageResolution = basePkgNameMap,
getContract = Map(
cid -> Versioned(
TransactionVersion.StableVersions.max,
@ -168,6 +171,9 @@ final class SBuiltinInterfaceTestHelpers(majorLanguageVersion: LanguageMajorVers
val extraPkgId = Ref.PackageId.assertFromString("-extra-package-id-")
require(extraPkgId != basePkgId)
val basePkgNameMap =
List(basePkg.name, extraPkgName).map(n => n -> basePkgId).toMap
lazy val extendedPkgs = {
val modifiedParserParameters: parser.ParserParameters[this.type] =
@ -210,6 +216,7 @@ final class SBuiltinInterfaceTestHelpers(majorLanguageVersion: LanguageMajorVers
def eval(e: Expr): Try[Either[SError, SValue]] =
evalSExpr(
compiledBasePkgs.compiler.unsafeCompile(e),
Map.empty,
PartialFunction.empty,
PartialFunction.empty,
PartialFunction.empty,
@ -218,6 +225,7 @@ final class SBuiltinInterfaceTestHelpers(majorLanguageVersion: LanguageMajorVers
def evalApp(
e: Expr,
args: Array[SValue],
packageResolution: Map[Ref.PackageName, Ref.PackageId] = Map.empty,
getPkg: PartialFunction[Ref.PackageId, CompiledPackages] = PartialFunction.empty,
getContract: PartialFunction[Value.ContractId, Value.VersionedContractInstance] =
PartialFunction.empty,
@ -225,6 +233,7 @@ final class SBuiltinInterfaceTestHelpers(majorLanguageVersion: LanguageMajorVers
): Try[Either[SError, SValue]] =
evalSExpr(
SEApp(compiledBasePkgs.compiler.unsafeCompile(e), args),
packageResolution,
getPkg,
getContract,
getKey,
@ -232,6 +241,7 @@ final class SBuiltinInterfaceTestHelpers(majorLanguageVersion: LanguageMajorVers
def evalSExpr(
e: SExpr,
packageResolution: Map[Ref.PackageName, Ref.PackageId] = Map.empty,
getPkg: PartialFunction[Ref.PackageId, CompiledPackages] = PartialFunction.empty,
getContract: PartialFunction[Value.ContractId, Value.VersionedContractInstance],
getKey: PartialFunction[GlobalKeyWithMaintainers, Value.ContractId],
@ -239,6 +249,7 @@ final class SBuiltinInterfaceTestHelpers(majorLanguageVersion: LanguageMajorVers
val machine =
Speedy.Machine.fromUpdateSExpr(
compiledBasePkgs,
packageResolution = packageResolution,
transactionSeed = crypto.Hash.hashPrivateKey("SBuiltinTest"),
updateSE = SELet1(e, SEMakeClo(Array(SELocS(1)), 1, SELocF(0))),
committers = Set(alice),

View File

@ -25,6 +25,7 @@ import org.scalatest.freespec.AnyFreeSpec
import org.scalatest.matchers.should.Matchers
import scala.collection.mutable.ArrayBuffer
import scala.math.Ordered.orderingToOrdered
import scala.util.{Failure, Success, Try}
class TestTraceLog extends TraceLog {
@ -54,8 +55,11 @@ class EvaluationOrderTest(languageVersion: LanguageVersion)
private[this] implicit def logContext: LoggingContext = LoggingContext.ForTesting
private val packageId = Ref.PackageId.assertFromString("-pkg-")
private[this] implicit val parserParameters: ParserParameters[this.type] =
ParserParameters(Ref.PackageId.assertFromString("-pkg-"), languageVersion = languageVersion)
ParserParameters(packageId, languageVersion = languageVersion)
private val upgradingEnabled = languageVersion >= LanguageVersion.Features.packageUpgrades
val pkg = p""" metadata ( 'evaluation-order-test' : '1.0.0' )
module M {
@ -282,6 +286,8 @@ class EvaluationOrderTest(languageVersion: LanguageVersion)
private val pkgs: PureCompiledPackages = SpeedyTestLib.typeAndCompile(pkg)
private val packageNameMap = Map(pkg.name -> packageId)
private[this] val List(alice, bob, charlie) =
List("alice", "bob", "charlie").map(Ref.Party.assertFromString)
@ -423,6 +429,7 @@ class EvaluationOrderTest(languageVersion: LanguageVersion)
args: Array[SValue],
parties: Set[Party],
readAs: Set[Party] = Set.empty,
packageResolution: Map[Ref.PackageName, Ref.PackageId] = packageNameMap,
disclosedContracts: Iterable[(Value.ContractId, Speedy.ContractInfo)] = Iterable.empty,
getContract: PartialFunction[Value.ContractId, Value.VersionedContractInstance] =
PartialFunction.empty,
@ -437,6 +444,7 @@ class EvaluationOrderTest(languageVersion: LanguageVersion)
if (args.isEmpty) se else SEApp(se, args),
parties,
readAs,
packageResolution = packageResolution,
traceLog = traceLog,
)
disclosedContracts.foreach { case (cid, contract) =>
@ -1060,7 +1068,7 @@ class EvaluationOrderTest(languageVersion: LanguageVersion)
}
}
// This checks that type checking is done after checking activeness.
// This checks that type checking is done after checking activeness (pre upgrading)
"wrongly typed inactive contract" in {
val (res, msgs) = evalUpdateApp(
pkgs,
@ -1073,7 +1081,11 @@ class EvaluationOrderTest(languageVersion: LanguageVersion)
getContract = getWronglyTypedContract,
)
inside(res) {
case Success(Left(SErrorDamlException(IE.ContractNotActive(_, Dummy, _)))) =>
case Success(Left(SErrorDamlException(IE.ContractNotActive(_, Dummy, _))))
if !upgradingEnabled =>
msgs shouldBe Seq("starts test")
case Success(Left(SErrorDamlException(IE.WronglyTypedContract(_, T, Dummy))))
if upgradingEnabled =>
msgs shouldBe Seq("starts test")
}
}
@ -2251,7 +2263,11 @@ class EvaluationOrderTest(languageVersion: LanguageVersion)
getContract = getWronglyTypedContract,
)
inside(res) {
case Success(Left(SErrorDamlException(IE.ContractNotActive(_, Dummy, _)))) =>
case Success(Left(SErrorDamlException(IE.ContractNotActive(_, Dummy, _))))
if !upgradingEnabled =>
msgs shouldBe Seq("starts test")
case Success(Left(SErrorDamlException(IE.WronglyTypedContract(_, T, Dummy))))
if upgradingEnabled =>
msgs shouldBe Seq("starts test")
}
}

View File

@ -210,9 +210,7 @@ private[speedy] object SpeedyTestLib {
pkgs,
Compiler.Config
.Dev(majorLanguageVersion)
.copy(
stacktracing = Compiler.FullStackTrace
),
.copy(stacktracing = Compiler.FullStackTrace),
)
}

View File

@ -121,7 +121,7 @@ class UpgradeTest(majorLanguageVersion: LanguageMajorVersion)
private lazy val pkgs =
PureCompiledPackages.assertBuild(
Map(pkgId1 -> pkg1, pkgId2 -> pkg2, pkgId3 -> pkg3),
Compiler.Config.Dev(majorLanguageVersion).copy(enableContractUpgrading = true),
Compiler.Config.Dev(majorLanguageVersion),
)
private val alice = Ref.Party.assertFromString("alice")

View File

@ -609,8 +609,8 @@ object Repl {
)
def devCompilerConfig(majorLanguageVersion: LanguageMajorVersion): Compiler.Config =
defaultCompilerConfig(majorLanguageVersion).copy(
allowedLanguageVersions = LV.AllVersions(majorLanguageVersion)
defaultCompilerConfig(majorLanguageVersion).copy(allowedLanguageVersions =
LV.AllVersions(majorLanguageVersion)
)
private val nextSeed =

View File

@ -430,7 +430,11 @@ private[lf] object ScenarioRunner {
doEnrichment: Boolean = true,
)(implicit loggingContext: LoggingContext): SubmissionResult[R] = {
val ledgerMachine = Speedy.UpdateMachine(
packageResolution = Map.empty,
packageResolution = Map(
PackageName.assertFromString("-dummy-package-name-") -> PackageId.assertFromString(
"-homePackageId-"
)
),
compiledPackages = compiledPackages,
submissionTime = Time.Timestamp.MinValue,
initialSeeding = InitialSeeding.TransactionSeed(seed),

View File

@ -71,7 +71,6 @@ class IdeLedgerClient(
new preprocessing.CommandPreprocessor(
compiledPackages.pkgInterface,
requireV1ContractIdSuffix = false,
enableContractUpgrading = true,
)
private var _ledger: ScenarioLedger = ScenarioLedger.initialLedger(Time.Timestamp.Epoch)

View File

@ -79,7 +79,6 @@ class IdeLedgerClient(
new preprocessing.CommandPreprocessor(
compiledPackages.pkgInterface,
requireV1ContractIdSuffix = false,
enableContractUpgrading = true,
)
private[this] def partialFunctionFilterNot[A](f: A => Boolean): PartialFunction[A, A] = {

View File

@ -24,7 +24,6 @@ class DevIT(override val majorLanguageVersion: LanguageMajorVersion)
with Matchers {
final override protected lazy val devMode = true
// TODO: https://github.com/digital-asset/daml/issues/17082
final override protected lazy val enableContractUpgrading = true
final override protected val disableUpgradeValidation = true
final override protected lazy val timeMode = ScriptTimeMode.WallClock

View File

@ -33,7 +33,6 @@ class UpgradesIT extends AsyncWordSpec with AbstractScriptTest with Inside with
final override protected lazy val timeMode = ScriptTimeMode.WallClock
final override protected lazy val devMode = true
final override protected lazy val enableContractUpgrading = true
final override protected val disableUpgradeValidation = true
// TODO(https://github.com/digital-asset/daml/issues/18457): split the test into one with contract

View File

@ -32,155 +32,155 @@
- ensure correct privacy for rollback subtree: [BlindingSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/BlindingSpec.scala#L224)
## Integrity:
- Evaluation order of create with authorization failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L562)
- 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#L596)
- 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#L647)
- 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#L622)
- Evaluation order of create with duplicate contract key: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L513)
- Evaluation order of create with empty contract key maintainers: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L537)
- Evaluation order of create with failed precondition: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L495)
- Evaluation order of create_interface with authorization failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L769)
- 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#L803)
- 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#L854)
- 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#L829)
- Evaluation order of create_interface with duplicate contract key: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L720)
- 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#L744)
- Evaluation order of create_interface with failed precondition: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L700)
- 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#L1867)
- 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#L1849)
- 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#L1909)
- 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#L1205)
- 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#L927)
- 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#L971)
- 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#L1045)
- 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#L912)
- Evaluation order of exercise of an inactive global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1028)
- Evaluation order of exercise of an inactive local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1147)
- Evaluation order of exercise of an unknown contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1248)
- 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#L1166)
- 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#L1081)
- Evaluation order of exercise with argument exceeding max nesting: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1262)
- Evaluation order of exercise with output exceeding max nesting: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1290)
- 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#L1570)
- 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#L1368)
- 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#L1461)
- 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#L1442)
- 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#L1550)
- 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#L1613)
- 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#L1480)
- 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#L1628)
- 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#L1703)
- 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#L1657)
- 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#L2041)
- 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#L1774)
- 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#L1977)
- 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#L1996)
- 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#L1687)
- 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#L2358)
- 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#L2127)
- 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#L2162)
- 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#L2225)
- 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#L2390)
- 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#L2112)
- Evaluation order of fetch of an inactive global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2209)
- Evaluation order of fetch of an inactive local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2306)
- Evaluation order of fetch of an unknown contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2409)
- 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#L2323)
- 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#L2259)
- 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#L2548)
- 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#L2614)
- 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#L2473)
- 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#L2529)
- 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#L2596)
- 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#L2644)
- 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#L2676)
- 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#L2690)
- 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#L2660)
- 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#L2827)
- 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#L2967)
- 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#L2735)
- 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#L2754)
- 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#L2810)
- 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#L2912)
- 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#L2929)
- Evaluation order of fetch_interface of an unknown contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2997)
- 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#L2865)
- 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#L3114)
- 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#L3179)
- 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#L3041)
- 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#L3096)
- 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#L3162)
- 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#L3209)
- 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#L3241)
- 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#L3255)
- 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#L3225)
- Evaluation order of successful create: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L472)
- Evaluation order of successful create_interface: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L676)
- 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#L1728)
- 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#L1004)
- Evaluation order of successful exercise of a local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1124)
- 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#L885)
- 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#L1416)
- 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#L1526)
- 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#L1324)
- 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#L1824)
- 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#L1953)
- 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#L2192)
- Evaluation order of successful fetch of a local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2291)
- 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#L2089)
- 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#L2512)
- 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#L2580)
- 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#L2428)
- 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#L2793)
- 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#L2897)
- 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#L2711)
- 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#L3079)
- 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#L3146)
- 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#L3017)
- Evaluation order of create with authorization failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L570)
- 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#L604)
- 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#L655)
- 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#L630)
- Evaluation order of create with duplicate contract key: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L521)
- Evaluation order of create with empty contract key maintainers: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L545)
- Evaluation order of create with failed precondition: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L503)
- Evaluation order of create_interface with authorization failure: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L777)
- 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#L811)
- 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#L862)
- 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#L837)
- Evaluation order of create_interface with duplicate contract key: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L728)
- 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#L752)
- Evaluation order of create_interface with failed precondition: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L708)
- 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#L1879)
- 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#L1861)
- 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#L1921)
- 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#L1217)
- 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#L935)
- 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#L979)
- 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#L1053)
- 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#L920)
- Evaluation order of exercise of an inactive global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1036)
- Evaluation order of exercise of an inactive local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1159)
- Evaluation order of exercise of an unknown contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1260)
- 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#L1178)
- 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#L1093)
- Evaluation order of exercise with argument exceeding max nesting: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1274)
- Evaluation order of exercise with output exceeding max nesting: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1302)
- 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#L1582)
- 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#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#L1473)
- 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#L1454)
- 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#L1562)
- 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#L1625)
- 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#L1492)
- 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#L1640)
- 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#L1715)
- 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#L1669)
- 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#L2053)
- 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#L1786)
- 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#L1989)
- 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#L2008)
- 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#L1699)
- 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#L2374)
- 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#L2139)
- 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#L2174)
- 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#L2237)
- 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#L2406)
- 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#L2124)
- Evaluation order of fetch of an inactive global contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2221)
- Evaluation order of fetch of an inactive local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2322)
- Evaluation order of fetch of an unknown contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2425)
- 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#L2339)
- 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#L2275)
- 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#L2564)
- 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#L2630)
- 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#L2489)
- 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#L2545)
- 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#L2612)
- 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#L2660)
- 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#L2692)
- 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#L2706)
- 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#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#L2843)
- 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#L2983)
- 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#L2751)
- 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#L2770)
- 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#L2826)
- 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#L2928)
- 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#L2945)
- Evaluation order of fetch_interface of an unknown contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L3013)
- 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#L2881)
- 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#L3130)
- 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#L3195)
- 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#L3057)
- 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#L3112)
- 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#L3178)
- 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#L3225)
- 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#L3257)
- 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#L3271)
- 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#L3241)
- Evaluation order of successful create: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L480)
- Evaluation order of successful create_interface: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L684)
- 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#L1740)
- 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#L1012)
- Evaluation order of successful exercise of a local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L1136)
- 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#L893)
- 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#L1428)
- 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#L1538)
- 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#L1336)
- 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#L1836)
- 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#L1965)
- 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#L2204)
- Evaluation order of successful fetch of a local contract: [EvaluationOrderTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/EvaluationOrderTest.scala#L2307)
- 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#L2101)
- 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#L2528)
- 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#L2596)
- 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#L2444)
- 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#L2809)
- 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#L2913)
- 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#L2727)
- 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#L3095)
- 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#L3162)
- 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#L3033)
- Exceptions, throw/catch.: [ExceptionTest.scala](daml-lf/interpreter/src/test/scala/com/digitalasset/daml/lf/speedy/ExceptionTest.scala#L28)
- Rollback creates cannot be exercise: [EngineTest.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/EngineTest.scala#L2085)
- 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#L2021)
- 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#L1891)
- 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#L2949)
- contract key behaviour (non-unique mode): [ContractKeySpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ContractKeySpec.scala#L407)
- contract key behaviour (unique mode): [ContractKeySpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ContractKeySpec.scala#L417)
- 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#L222)
- contract keys should be evaluated after ensure clause: [ContractKeySpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ContractKeySpec.scala#L190)
- contract keys should be evaluated only when executing create: [ContractKeySpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ContractKeySpec.scala#L149)
- Rollback creates cannot be exercise: [EngineTest.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/EngineTest.scala#L2100)
- 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#L2033)
- 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#L1903)
- 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#L2965)
- 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#L225)
- contract keys should be evaluated after ensure clause: [ContractKeySpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ContractKeySpec.scala#L193)
- contract keys should be evaluated only when executing create: [ContractKeySpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ContractKeySpec.scala#L152)
- ensure builtin operators have the correct type: [TypingSpec.scala](daml-lf/validation/src/test/scala/com/digitalasset/daml/lf/validation/TypingSpec.scala#L70)
- ensure expression forms have the correct type: [TypingSpec.scala](daml-lf/validation/src/test/scala/com/digitalasset/daml/lf/validation/TypingSpec.scala#L130)
- exercise-by-interface command is rejected for a: [ApiCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ApiCommandPreprocessorSpec.scala#L189)
- 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#L1756)
- ill-formed create API command is rejected: [ApiCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ApiCommandPreprocessorSpec.scala#L177)
- ill-formed create replay command is rejected: [ReplayCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ReplayCommandPreprocessorSpec.scala#L122)
- ill-formed create-and-exercise API command is rejected: [ApiCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ApiCommandPreprocessorSpec.scala#L202)
- exercise-by-interface command is rejected for a: [ApiCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ApiCommandPreprocessorSpec.scala#L188)
- 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#L1768)
- ill-formed create API command is rejected: [ApiCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ApiCommandPreprocessorSpec.scala#L176)
- ill-formed create replay command is rejected: [ReplayCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ReplayCommandPreprocessorSpec.scala#L121)
- ill-formed create-and-exercise API command is rejected: [ApiCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ApiCommandPreprocessorSpec.scala#L201)
- ill-formed exception definitions are rejected: [TypingSpec.scala](daml-lf/validation/src/test/scala/com/digitalasset/daml/lf/validation/TypingSpec.scala#L1710)
- ill-formed exercise API command is rejected: [ApiCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ApiCommandPreprocessorSpec.scala#L182)
- ill-formed exercise replay command is rejected: [ReplayCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ReplayCommandPreprocessorSpec.scala#L127)
- ill-formed exercise-by-key API command is rejected: [ApiCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ApiCommandPreprocessorSpec.scala#L193)
- ill-formed exercise-by-key replay command is rejected: [ReplayCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ReplayCommandPreprocessorSpec.scala#L134)
- ill-formed exercise API command is rejected: [ApiCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ApiCommandPreprocessorSpec.scala#L181)
- ill-formed exercise replay command is rejected: [ReplayCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ReplayCommandPreprocessorSpec.scala#L126)
- ill-formed exercise-by-key API command is rejected: [ApiCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ApiCommandPreprocessorSpec.scala#L192)
- ill-formed exercise-by-key replay command is rejected: [ReplayCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ReplayCommandPreprocessorSpec.scala#L133)
- ill-formed expressions are rejected: [TypingSpec.scala](daml-lf/validation/src/test/scala/com/digitalasset/daml/lf/validation/TypingSpec.scala#L476)
- ill-formed fetch command is rejected: [ReplayCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ReplayCommandPreprocessorSpec.scala#L181)
- ill-formed fetch-by-key command is rejected: [ReplayCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ReplayCommandPreprocessorSpec.scala#L184)
- ill-formed fetch command is rejected: [ReplayCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ReplayCommandPreprocessorSpec.scala#L180)
- ill-formed fetch-by-key command is rejected: [ReplayCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ReplayCommandPreprocessorSpec.scala#L183)
- ill-formed interfaces are rejected: [TypingSpec.scala](daml-lf/validation/src/test/scala/com/digitalasset/daml/lf/validation/TypingSpec.scala#L1442)
- ill-formed kinds are rejected: [TypingSpec.scala](daml-lf/validation/src/test/scala/com/digitalasset/daml/lf/validation/TypingSpec.scala#L42)
- ill-formed lookup command is rejected: [ReplayCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ReplayCommandPreprocessorSpec.scala#L189)
- ill-formed lookup command is rejected: [ReplayCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ReplayCommandPreprocessorSpec.scala#L188)
- ill-formed records are rejected: [TypingSpec.scala](daml-lf/validation/src/test/scala/com/digitalasset/daml/lf/validation/TypingSpec.scala#L1855)
- ill-formed templates are rejected: [TypingSpec.scala](daml-lf/validation/src/test/scala/com/digitalasset/daml/lf/validation/TypingSpec.scala#L1087)
- ill-formed type synonyms applications are rejected: [TypingSpec.scala](daml-lf/validation/src/test/scala/com/digitalasset/daml/lf/validation/TypingSpec.scala#L1834)
- ill-formed type synonyms definitions are rejected: [TypingSpec.scala](daml-lf/validation/src/test/scala/com/digitalasset/daml/lf/validation/TypingSpec.scala#L1901)
- ill-formed types are rejected: [TypingSpec.scala](daml-lf/validation/src/test/scala/com/digitalasset/daml/lf/validation/TypingSpec.scala#L122)
- ill-formed variants are rejected: [TypingSpec.scala](daml-lf/validation/src/test/scala/com/digitalasset/daml/lf/validation/TypingSpec.scala#L1878)
- well formed create API command is accepted: [ApiCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ApiCommandPreprocessorSpec.scala#L129)
- well formed create replay command is accepted: [ReplayCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ReplayCommandPreprocessorSpec.scala#L93)
- well formed create-and-exercise API command is accepted: [ApiCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ApiCommandPreprocessorSpec.scala#L157)
- well formed exercise API command is accepted: [ApiCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ApiCommandPreprocessorSpec.scala#L134)
- well formed exercise replay command is accepted: [ReplayCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ReplayCommandPreprocessorSpec.scala#L98)
- well formed exercise-by-interface command is accepted: [ApiCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ApiCommandPreprocessorSpec.scala#L150)
- well formed exercise-by-key API command is accepted: [ApiCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ApiCommandPreprocessorSpec.scala#L142)
- well formed exercise-by-key command is accepted: [ReplayCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ReplayCommandPreprocessorSpec.scala#L106)
- well formed fetch replay command is accepted: [ReplayCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ReplayCommandPreprocessorSpec.scala#L158)
- well formed fetch-by-key replay command is accepted: [ReplayCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ReplayCommandPreprocessorSpec.scala#L163)
- well formed lookup replay command is accepted: [ReplayCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ReplayCommandPreprocessorSpec.scala#L168)
- well formed create API command is accepted: [ApiCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ApiCommandPreprocessorSpec.scala#L128)
- well formed create replay command is accepted: [ReplayCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ReplayCommandPreprocessorSpec.scala#L92)
- well formed create-and-exercise API command is accepted: [ApiCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ApiCommandPreprocessorSpec.scala#L156)
- well formed exercise API command is accepted: [ApiCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ApiCommandPreprocessorSpec.scala#L133)
- well formed exercise replay command is accepted: [ReplayCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ReplayCommandPreprocessorSpec.scala#L97)
- well formed exercise-by-interface command is accepted: [ApiCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ApiCommandPreprocessorSpec.scala#L149)
- well formed exercise-by-key API command is accepted: [ApiCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ApiCommandPreprocessorSpec.scala#L141)
- well formed exercise-by-key command is accepted: [ReplayCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ReplayCommandPreprocessorSpec.scala#L105)
- well formed fetch replay command is accepted: [ReplayCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ReplayCommandPreprocessorSpec.scala#L157)
- well formed fetch-by-key replay command is accepted: [ReplayCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ReplayCommandPreprocessorSpec.scala#L162)
- well formed lookup replay command is accepted: [ReplayCommandPreprocessorSpec.scala](daml-lf/engine/src/test/scala/com/digitalasset/daml/lf/engine/ReplayCommandPreprocessorSpec.scala#L167)

View File

@ -55,7 +55,6 @@ final case class CantonConfig(
tlsEnable: Boolean = false,
debug: Boolean = false,
bootstrapScript: Option[String] = None,
enableUpgrade: Boolean = false,
targetScope: Option[String] = None,
disableUpgradeValidation: Boolean = false,
) {

View File

@ -56,7 +56,6 @@ trait CantonFixtureWithResource[A]
protected lazy val nParticipants: Int = 1
protected lazy val timeProviderType: TimeProviderType = TimeProviderType.WallClock
protected lazy val tlsEnable: Boolean = false
protected lazy val enableContractUpgrading: Boolean = false
protected lazy val bootstrapScript: Option[String] = Option.empty
protected lazy val applicationId: Option[Ref.ApplicationId] =
Some(Ref.ApplicationId.assertFromString(getClass.getName))
@ -125,7 +124,6 @@ trait CantonFixtureWithResource[A]
tlsEnable = tlsEnable,
debug = cantonFixtureDebugModeIsDebug,
bootstrapScript = bootstrapScript,
enableUpgrade = enableContractUpgrading,
targetScope = targetScope,
disableUpgradeValidation = disableUpgradeValidation,
)

View File

@ -99,7 +99,7 @@ object CantonRunner {
| storage.type = memory
| parameters = {
| enable-engine-stack-traces = true
| enable-contract-upgrading = ${config.enableUpgrade}
| enable-contract-upgrading = true
| dev-version-support = ${config.devMode}
| disable-upgrade-validation = ${config.disableUpgradeValidation}
| }