From 85a10e511396e63e4ab0f7110517b87c4562b4fe Mon Sep 17 00:00:00 2001 From: fabiotudone-da Date: Wed, 4 Mar 2020 08:18:05 +0100 Subject: [PATCH] Ensure `NodeInfo` derived properties `informeesOfNode` and `requireAuthorizers` always return (#4554) Fail with a more explanatory message if `Fetch.actingParties` is `None` CHANGELOG_BEGIN CHANGELOG_END --- .../digitalasset/daml/lf/transaction/NodeInfo.scala | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/daml-lf/transaction/src/main/scala/com/digitalasset/daml/lf/transaction/NodeInfo.scala b/daml-lf/transaction/src/main/scala/com/digitalasset/daml/lf/transaction/NodeInfo.scala index 5a2bd54590..07e0997096 100644 --- a/daml-lf/transaction/src/main/scala/com/digitalasset/daml/lf/transaction/NodeInfo.scala +++ b/daml-lf/transaction/src/main/scala/com/digitalasset/daml/lf/transaction/NodeInfo.scala @@ -49,8 +49,15 @@ object NodeInfo { def stakeholders: Set[Party] def actingParties: Option[Set[Party]] - final def requiredAuthorizers: Set[Party] = actingParties.get - final def informeesOfNode: Set[Party] = signatories | actingParties.get + final def requiredAuthorizers: Set[Party] = + actingPartiesOrThrow + final def informeesOfNode: Set[Party] = + signatories | actingPartiesOrThrow + + private[this] def actingPartiesOrThrow: Set[Party] = + actingParties.fold( + throw new IllegalStateException( + "'Fetch.actingParties' should always be present but is 'None'"))(identity) } trait Exercise extends NodeInfo {