diff --git a/language-support/java/codegen/BUILD.bazel b/language-support/java/codegen/BUILD.bazel index 4af4d6fff6..dffdac8666 100644 --- a/language-support/java/codegen/BUILD.bazel +++ b/language-support/java/codegen/BUILD.bazel @@ -82,9 +82,11 @@ da_scala_test( "@maven//:org_scalatest_scalatest_matchers_core", "@maven//:org_scalatest_scalatest_shouldmatchers", "@maven//:org_scalaz_scalaz_core", + "@maven//:com_chuusai_shapeless", ], deps = [ ":lib", + ":test-daml-java.jar", "//bazel_tools/runfiles:scala_runfiles", "//daml-lf/archive:daml_lf_archive_reader", "//daml-lf/data", @@ -102,6 +104,17 @@ daml_compile( srcs = ["src/test/daml/Foo.daml"], ) +daml_compile( + name = "test-contract-id-daml", + srcs = ["src/test/daml/Bar.daml"], +) + +dar_to_java( + name = "test-daml-java", + src = ":test-contract-id-daml.dar", + package_prefix = "ut", +) + jar_jar( name = "shaded_binary", input_jar = "//language-support/java/codegen:codegen_deploy.jar", diff --git a/language-support/java/codegen/src/test/daml/Bar.daml b/language-support/java/codegen/src/test/daml/Bar.daml new file mode 100644 index 0000000000..4c3135729c --- /dev/null +++ b/language-support/java/codegen/src/test/daml/Bar.daml @@ -0,0 +1,23 @@ +-- Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +-- SPDX-License-Identifier: Apache-2.0 + +module Bar where + +template Bar + with + owner : Party + where + signatory owner + +data ParameterizedContractId a = ParameterizedContractId + with + parameterizedContractId: ContractId a + deriving (Eq, Show) + +template Haha + with + p : ParameterizedContractId Bar + owner : Party + where + signatory owner + diff --git a/language-support/java/codegen/src/test/scala/com/digitalasset/daml/lf/codegen/backend/java/FromValueSpec.scala b/language-support/java/codegen/src/test/scala/com/digitalasset/daml/lf/codegen/backend/java/FromValueSpec.scala new file mode 100644 index 0000000000..8eb45a3ca1 --- /dev/null +++ b/language-support/java/codegen/src/test/scala/com/digitalasset/daml/lf/codegen/backend/java/FromValueSpec.scala @@ -0,0 +1,30 @@ +// Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. +// SPDX-License-Identifier: Apache-2.0 + +package com.daml.lf.codegen.backend.java + +import org.scalatest.matchers.should.Matchers +import org.scalatest.wordspec.AnyWordSpec +import ut.bar.{Bar, ParameterizedContractId} +import com.daml.ledger.javaapi.data.codegen.ContractId +import shapeless.test.illTyped + +final class FromValueSpec extends AnyWordSpec with Matchers { + + "contractId" should { + "not be cast to Bar.ContractId" in { + val fromConstructor: ParameterizedContractId[Bar] = + new ParameterizedContractId(new Bar.ContractId("SomeID")) + + val parametrizedContractId: ParameterizedContractId[Bar] = + ParameterizedContractId.fromValue(fromConstructor.toValue(_.toValue), Bar.fromValue) + val contractIdBar: ContractId[Bar] = parametrizedContractId.parameterizedContractId + illTyped( + "contractIdBar: Bar.ContractId", + "type mismatch.+ContractId\\[.+Bar\\].+Bar.ContractId", + ) + + contractIdBar should not be a[Bar.ContractId] + } + } +}