From be6bbc82b97b3532d274aefbe1787f30615f053e Mon Sep 17 00:00:00 2001 From: Robin Krom Date: Tue, 8 Mar 2022 15:08:48 +0100 Subject: [PATCH] ifaces: tests: check for interface collisions in ast (#13196) * ifaces: tests: check for interface collisions in ast We add a test to check for interface name collisions in the daml-lf AST. CHANGELOG_BEGIN CHANGELOG_END * Update daml-lf/language/src/test/scala/com/digitalasset/daml/lf/language/AstSpec.scala Co-authored-by: Remy Co-authored-by: Remy --- .../daml/lf/language/AstSpec.scala | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/daml-lf/language/src/test/scala/com/digitalasset/daml/lf/language/AstSpec.scala b/daml-lf/language/src/test/scala/com/digitalasset/daml/lf/language/AstSpec.scala index f59d4a95e8..42a5b6e816 100644 --- a/daml-lf/language/src/test/scala/com/digitalasset/daml/lf/language/AstSpec.scala +++ b/daml-lf/language/src/test/scala/com/digitalasset/daml/lf/language/AstSpec.scala @@ -60,6 +60,14 @@ class AstSpec extends AnyWordSpec with TableDrivenPropertyChecks with Matchers { key = None, implements = VectorMap.empty, ) + def interface = DefInterface( + param = Name.assertFromString("x"), + precond = ETrue, + fixedChoices = Map.empty, + methods = Map.empty, + requires = Set.empty, + ) + def exception = DefException( message = eText ) @@ -137,6 +145,40 @@ class AstSpec extends AnyWordSpec with TableDrivenPropertyChecks with Matchers { ) } + "catch interface collisions" in { + + Module.build( + name = modName1, + definitions = List( + defName("defName1") -> recordDef, + defName("defName2") -> recordDef, + ), + interfaces = List( + defName("defName1") -> interface + ), + exceptions = List.empty, + templates = List.empty, + featureFlags = FeatureFlags.default, + ) + + a[PackageError] shouldBe thrownBy( + Module.build( + name = modName1, + definitions = List( + defName("defName1") -> recordDef, + defName("defName2") -> recordDef, + ), + interfaces = List( + defName("defName1") -> interface, + defName("defName1") -> interface, + ), + templates = List.empty, + exceptions = List.empty, + featureFlags = FeatureFlags.default, + ) + ) + } + "catch exception collisions" in { Module.build( name = modName1,