Reinstate WronglyTypedContractSoft as Dev error (#16891)

This commit is contained in:
Moisés Ackerman 2023-05-22 20:28:28 +02:00 committed by GitHub
parent 81272e313d
commit b55d80a881
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 36 additions and 42 deletions

View File

@ -203,15 +203,6 @@ final class Conversions(
.setContractRef(mkContractRef(coid, actual))
.setExpected(convertIdentifier(expected))
)
// TODO https://github.com/digital-asset/daml/issues/16151
// Reinstate when #16859 lands
/*case WronglyTypedContractSoft(coid, expected, accepted, actual) =>
builder.setWronglyTypedContractSoft(
proto.ScenarioError.WronglyTypedContractSoft.newBuilder
.setContractRef(mkContractRef(coid, actual))
.setExpected(convertIdentifier(expected))
.addAllAccepted(accepted.map(convertIdentifier(_)).asJava)
)*/
case ContractDoesNotImplementInterface(interfaceId, coid, templateId) =>
builder.setContractDoesNotImplementInterface(
proto.ScenarioError.ContractDoesNotImplementInterface.newBuilder
@ -268,6 +259,13 @@ final class Conversions(
cgfBuilder.setByInterface(convertIdentifier(ifaceId))
)
builder.setChoiceGuardFailed(cgfBuilder.build)
case Dev.WronglyTypedContractSoft(coid, expected, accepted, actual) =>
builder.setWronglyTypedContractSoft(
proto.ScenarioError.WronglyTypedContractSoft.newBuilder
.setContractRef(mkContractRef(coid, actual))
.setExpected(convertIdentifier(expected))
.addAllAccepted(accepted.map(convertIdentifier(_)).asJava)
)
}
case err @ Dev(_, _) =>
builder.setCrash(s"Unexpected Dev error: " + err.toString)

View File

@ -98,21 +98,6 @@ private[lf] object Pretty {
) & prettyTypeConName(
actual
)
// TODO https://github.com/digital-asset/daml/issues/16151
// Reinstate when #16859 lands
/*case WronglyTypedContractSoft(coid, expected, accepted, actual) =>
text("Update failed due to wrongly typed contract id") & prettyContractId(coid) /
text("Expected contract of type") & prettyTypeConName(expected) & (
if (accepted.nonEmpty)
intercalate(comma + lineOrSpace, accepted.map(prettyTypeConName))
.tightBracketBy(text("or one of its ancestors: ("), char(')'))
else
Doc.empty
) & text(
"but got"
) & prettyTypeConName(
actual
)*/
case ContractDoesNotImplementInterface(interfaceId, coid, templateId) =>
text("Update failed due to contract") & prettyContractId(coid) & text(
"not implementing an interface"
@ -215,6 +200,19 @@ private[lf] object Pretty {
case None => text("by template")
case Some(interfaceId) => text("by interface") & prettyTypeConName(interfaceId)
})
case Dev.WronglyTypedContractSoft(coid, expected, accepted, actual) =>
text("Update failed due to wrongly typed contract id") & prettyContractId(coid) /
text("Expected contract of type") & prettyTypeConName(expected) & (
if (accepted.nonEmpty)
intercalate(comma + lineOrSpace, accepted.map(prettyTypeConName))
.tightBracketBy(text("or one of its ancestors: ("), char(')'))
else
Doc.empty
) & text(
"but got"
) & prettyTypeConName(
actual
)
}
}
}

View File

@ -1110,10 +1110,10 @@ private[lf] object SBuiltin {
Control.Value(record.copy(id = templateId))
} else {
Control.Error(
// TODO https://github.com/digital-asset/daml/issues/16151
// Use an existing error constructor until #16859 lands
IE.WronglyTypedContract(coid, templateId, actualTemplateId)
// IE.WronglyTypedContractSoft(coid, templateId, acceptedTemplateIds, actualTemplateId)
IE.Dev(
NameOf.qualifiedNameOfCurrentFunc,
IE.Dev.WronglyTypedContractSoft(coid, templateId, acceptedTemplateIds, actualTemplateId),
)
)
}
}

View File

@ -109,20 +109,6 @@ object Error {
actual: TypeConName,
) extends Error
// TODO: https://github.com/digital-asset/daml/issues/16151
// Reinstate when #16859 lands
/*
/** We tried to soft fetch / soft exercise a contract of the wrong type --
* see <https://github.com/digital-asset/daml/issues/16151>.
*/
final case class WronglyTypedContractSoft(
coid: ContractId,
expected: TypeConName,
accepted: List[TypeConName],
actual: TypeConName,
) extends Error
*/
/** We tried to fetch / exercise a contract by interface, but
* the contract does not implement this interface.
*/
@ -175,6 +161,18 @@ object Error {
byInterface: Option[TypeConName],
) extends Error
// TODO https://github.com/digital-asset/daml/issues/16151
// Move outside Dev when the feature goes GA.
/** We tried to soft fetch / soft exercise a contract of the wrong type --
* see <https://github.com/digital-asset/daml/issues/16151>.
*/
final case class WronglyTypedContractSoft(
coid: ContractId,
expected: TypeConName,
accepted: List[TypeConName],
actual: TypeConName,
) extends Error
final case class Limit(error: Limit.Error) extends Error
object Limit {