* include retro-implements in TS interface type decls
* split interface exercise test into two sub-tests
* test that contract ID conversion resolves
CHANGELOG_BEGIN
- [TypeScript codegen] Support for retroactive interface implementations
included. Choice inheritance is deprecated and `will be removed
<https://github.com/digital-asset/daml/issues/14893>`__; to invoke an
interface choice on a template-typed contract ID, convert it to an
interface-typed ID with *TemplateName*``.toInterface``.
CHANGELOG_END
* declare Interface, ToInterface, FromInterface in @daml/types library
* generate ToInterface and FromTemplate companion declarations
* add toInterface and unsafeFromInterface to template companion implementations
* declare marker types for every interface
* remove type parameter from interface companions' types
* add the union for forward implements
CHANGELOG_BEGIN
- [TypeScript codegen] To exercise an interface choice on a
template-typed contract ID, you must now explicitly convert the
contract ID to an interface-typed ID. For example, where ``cid:
ContractId<TemplateName>``, you can use
``TemplateName.toInterface(InterfaceName, cid)`` to produce a
``ContractId<InterfaceName>``.
Interface contract IDs are also now typed as shown above; for example,
the former type ``ContractId<InterfaceNameInterface<TemplateName>>``
would now simply be ``ContractId<InterfaceName>``.
CHANGELOG_END
* fixes#14822, added test case to ensure retroactive implements works in java code gen
CHANGELOG_BEGIN
CHANGELOG_END
* fixes#14822, added test case to ensure retroactive implements works in java code gen
* format
* address Stephen's comment
* fmt
* new names in daml-script/runner
* new names in json-api
* new names in Scala bindings/codegen
* new names in Java bindings/codegen
* new names in daml-lf interpreter tests
* more new names in daml-script tests
* new names in navigator backend
* deprecate all iface symbols and old method names
CHANGELOG_BEGIN
- [Scala API] ``com.daml.lf.iface`` has been deprecated, as discussed
further in
`issue #14783 <https://github.com/digital-asset/daml/pull/14783>`__.
Use the deprecation warnings as guidance to the new names.
CHANGELOG_END
* prefix cases in OrderingSpec
- suggested by @remyhaemmerle-da; thanks
* use new names in json-api
* use new names in java codegen
* use new names in Scala codegen
* use new names in TypedValueGenerators
CHANGELOG_BEGIN
CHANGELOG_END
* move interface directory to api-type-signature; change bazel target; move scala files
* rename iface package to typesig; rename EnvironmentInterface to EnvironmentSignature
* rename Interface to PackageSignature
* rename fromReaderInterfaces to fromPackageSignatures
* rename InterfaceReader to SignatureReader
* rename InterfaceReader to SignatureReader in deprecation note
* rename readInterface to readPackageSignature
* rename InterfaceReaderError to Error
* rename InterfaceReaderMain to SignatureReaderMain
* rename InterfaceType to PackageSignature.TypeDecl
* rename astInterfaces to interfaces
* rename astInterfaces to interfaces in PackageSignature
* rename findAstInterface to findInterface
* rename a couple arguments
CHANGELOG_BEGIN
- [Scala API] The "quasi-public" API in ``com.daml.lf.iface`` has moved
to the new ``com.daml.lf.typesig`` package, with many accompanying
name changes as documented in `issue #13669
<https://github.com/digital-asset/daml/issues/13669>`__.
Daml 2.5.0 or later will remove the old names, and also rename the
Maven artifact from ``daml-lf-interface`` to
``daml-lf-api-type-signature``. We recommend that users of this API
use the deprecation guidance in 2.4.0 to port their applications
before this happens.
CHANGELOG_END
* Extract qualifyLocally in LFConversion
* Update ghc rev
* Add parent type argument to interface instance desugaring types
* Check interface instance parent in LFConversion
* Convert interface instances in interface declarations
* Update daml-test-files to use 'interface instance' syntax
* Update other tests to use 'interface instance' syntax
* Update interface reference docs to use 'interface instance' syntax
* Update other files to use 'interface instance' syntax
* Add todo in DA.Daml.LF.Ast.Pretty
* Add daml-test-files for retroactive interface instances
changelog_begin
changelog_end
* declare InterfaceFilter counterpart
* add interfaceIds to InclusiveFilter
* mark InclusiveFilter final
* add interface views to CreatedEvent
* there are only two Filter.Interfaces
- suggested by @stefanobaghino-da; thanks
CHANGELOG_BEGIN
- [Java bindings] The existing ``CreatedEvent`` constructor has been
deprecated in favor of a new one that includes new interface-related
arguments. Most users should not be using this constructor directly,
preferring ``fromProto`` instead, but the remainder should pass in
empty maps as the new arguments.
Likewise, the ``InclusiveFilter`` constructor has been deprecated.
Existing callers should use the ``ofTemplateIds`` static method
instead to replace current calls, keeping in mind that it will not be
valid to pass ``Identifier``s representing interface IDs to this
method.
CHANGELOG_END
* remove callers of deprecated InterfaceFilter constructor
* generate only valid InterfaceViews, include in Java data
* testing from value contract id
CHANGELOG_BEGIN
CHANGELOG_END
* delete commented code
CHANGELOG_BEGIN
CHANGELOG_END
* separate Bar template from Foo daml Modules
* Add DA_Internal_Interface to convertTypeDef exclusion check
* Move desugared types/values for interface views into DA.Internal.Desugar
* Convert viewtype and view method declarations
* Typecheck view types and view declarations
* Add unit viewtypes to InterfaceChoiceCollision tests
* Add unit viewtypes to more compiler/damlc tests
* Modify empty interfaces/implements to have viewtypes/views
* Add unit viewtypes to remaining Interface tests
* Test for error thrown when viewtype not specified
* Fix daml-lf/ interface tests to use new syntax / unit views
* Add placeholder view of type Unit to TestInterfaces
CHANGELOG_BEGIN
CHANGELOG_END
* Fix typescript interface tests with unit viewtype
* Add unit viewtype to Java & Scala codegen
* Add unit viewtype to triggers tests interface
* Add unit viewtypes to ledger/test-common
* Add unit viewtypes to ledger-service/http-json
* Fix some damlc tests
* Use viewtype syntax in InterfaceViewNonSerializable test
* Remove HasInferfaceView instances in convertBind
* Add unit view to QualifiedInterface.daml test
* Generate HasInterfaceView instances in DataDependencies
* Add unit viewtypes and views to compiler/damlc/tests
* Document reconstruction of HasInterfaceView
* Move desugared types/values for interface views into DA.Internal.Desugar
* Add desugarable function view w/ EViewInterface desugaring
* Remove templateName and viewtype from generated EViewInterface
* Update desugared-daml
* Proof of concept: use _view -> EViewInterface prim via HasInterfaceView
* Move view, HasInterfaceView to DA.Internal.Interface
* Update desugared-daml tests
* Stop removing and re-generating HasInterfaceView instances
* Do not generate docs for generated "_view_" methods
* Report errors with interface TypeConNames prettily
* Fix InterfaceViewNotSpecified @ERROR to reflect new error text
* Don't import magic `view` method from Prelude to avoid name clash
* Update shake interface goto definition test locations
* Temp disable view spec tests, will re-implement views in speedy
* Add unit viewtype to Java code snippet docs
* Update Interface syntax docs for views
* Add unit viewtype to Transferrable.daml
* Add back "empty" interface implementation to interfaces.rst
* Re-enable view tests by having _view methods on InterfaceViews.daml file
* Remove deprecated commented-out view desugaring code
* remove hasInterfaceId, add Optional to type
* add some missing properties in ExercisedEvent to equals, hashCode, toString
* mark ExercisedEvent final, as with other events
CHANGELOG_BEGIN
- [Java bindings] ``ExercisedEvent#getInterfaceId`` has a different type
since 2.3.x, indicating its optionality.
CHANGELOG_END
* add a test that breaks on missing identifier
* fix both hasInterfaceId boolean inversions
- confirmed that the test in parent breaks unless both changes are made
* add changelog
CHANGELOG_BEGIN
- [Java bindings] Fix a regression found in 2.3.0 RC with the
introduction of interface IDs in ``ExercisedEvent``s.
CHANGELOG_END
* add resolveRetroImplements to EnvironmentInterface
* test that resolveRetroImplements does nothing with no data
* resolve retroactive interfaces in Java codegen
* resolve retroactive interfaces in Scala codegen
* resolve retroactive interfaces in json-api
CHANGELOG_BEGIN
CHANGELOG_END
Fixes#14073.
CHANGELOG_BEGIN
- [js] Type ``LedgerOptions``, the type of `new Ledger` arguments, can
be imported by name from ``@daml/ledger``, and is included in the
documentation.
CHANGELOG_END
These are not referenced from anywhere in the repo, and running them
manually is made very annoying by the removal of the Scala codegen and
the `quickstart-scala` template.
If they were deliberately kept to serve as examples of using the Scala
bindings (which I understand are still in use despite being deprecated),
I think we should find another way to keep that bit of documentation
alive, specifically a way that actually gets tested.
CHANGELOG_BEGIN
CHANGELOG_END
* Removal of Sandbox Classic in Haskell code.
CHANGELOG_BEGIN
CHANGELOG_END
* Further sandbox-classic removals
* Upload dar files when withSandbox is used.
* fix formatting
* Moved upload of dars in createSandbox.
* Fixed test by passing the token before the token file is created.
* Added implicit party allocation argument for haskell tests.
* DPP-1073 Infer sandbox token from the shared secret.
* Different slicing of runLedgerUploadDar
Co-authored-by: Andreas Triantafyllos <andreas.triantafyllos@digitalasset.com>
Co-authored-by: Moritz Kiefer <moritz.kiefer@purelyfunctional.org>
- The "version replacement" step was broken: it replaced
`0.0.0-SDKVERSION` with `{sdk_version}` instead of the current SDK
version. This is fixed by adding a `format` call in the `ts_docs`
Bazel rule.
- The section removal was broken as it assumed the version number was
not replaced at all (so tried to detect `0.0.0-SDKVERSION` still).
This is fixed by using a more robust "section removal" method.
CHANGELOG_BEGIN
CHANGELOG_END
* move template/interface combination to daml/types library
* interface collision stops overloading at runtime
* include Omit in template extends interfaces clauses
CHANGELOG_BEGIN
- [codegen js] When a choice is inherited from two or more interfaces,
the template object no longer inherits one of the choices at random.
Such choices must always be invoked directly by referring to the
interface object.
CHANGELOG_END
Co-authored-by: Moisés Ackerman <6054733+akrmn@users.noreply.github.com>
* inherited choices are gone, convert to interface
* use toInterface for conformance tests on interfaces
CHANGELOG_BEGIN
- [Scala codegen] Interface choices can no longer be invoked directly on
template IDs, or via ``createAnd`` or ``key`` directly. Instead, use
``toInterface[Ifn]`` before calling the relevant ``exercise*`` method.
The resulting ledger commands now contain the correct interface ID
rather than template ID for looking up the choice, but see #13993 for
a caveat regarding create-and-exercise and exercise-by-key.
CHANGELOG_END
* Template.Implements marker, and toInterface for contract IDs
* unsafeToTemplate for interface contract IDs
* toInterface for create-and-exercise, exercise by key
CHANGELOG_BEGIN
- [Scala codegen] Template contract IDs and interface contract IDs have
new coercion methods, ``toInterface`` and ``unsafeToTemplate``,
respectively.
``toInterface`` can also be used with ``createAnd`` as well as ``key``
for create-and-exercise and exercise-by-key respectively; however, see
#13993 for a caveat regarding ledger API support.
CHANGELOG_END
* define Interface and InterfaceCompanion parent classes
* generate package ID aliases for interface-only modules
* generate choice methods for interfaces
* include all interfaces in what to write from Scala codegen
* handle interface references in variance resolution
CHANGELOG_BEGIN
- [Scala codegen] Interface contract ID types, and references to them in
serializable types, are now supported, as is exercise of interface
choices on interface contract IDs. To support this, ``DomainCommand``
now includes a ``ContractTypeCompanion``, which may describe either a
template or an interface, rather than a ``TemplateCompanion``.
CHANGELOG_END
CHANGELOG_BEGIN
- [Java codegen] The two-argument overload for ``fromIdAndRecord``,
deprecated since SDK 0.12.18, has been removed. Code that still uses
this should use either ``fromCreatedEvent``, or the remaining overload
of ``fromIdAndRecord`` if no ``CreatedEvent`` is available.
CHANGELOG_END
* stop resolving in Java codegen, and use direct choices only
* wrong issue reference in Scala codegen
CHANGELOG_BEGIN
- [Java codegen] Direct invocation of interface exercise methods on
templates is no longer supported, and the ``exercise*`` methods, which
could generate invalid commands in some cases anyway, are removed.
Use ``toInterface`` to access interface exercise methods.
CHANGELOG_END
* reproduce
This produces no files for EmptyIfaceOnly and yields the error
src/__tests__/test.ts(571,39): error TS2339: Property 'EmptyIfaceOnly' does not
exist on type 'typeof import(".../node_modules/@daml.js/build-and-lint-1.0.0/lib/Lib/index")'.
* generate files with no serializable types, but interfaces
- fixes parent test
CHANGELOG_BEGIN
- [codegen js] Files are now generated for Daml modules with interfaces
even if no serializable types are present, and the module contents are
generally propagated as if they had serializable types in them.
CHANGELOG_END
* new getCompanion methods generated for contract IDs
* document new output for exercise methods
* link to #14039
CHANGELOG_BEGIN
- [Java codegen] ``createAndExercise*`` and ``exerciseByKey*`` methods
are deprecated; instead, use the new ``createAnd().exercise*`` and
``byKey(key).exercise*`` methods.
When the ledger API supports it, interface choices will be reachable
via ``createAnd().toInterface(Ifc.INTERFACE).exercise*`` and
``byKey(key).toInterface(Ifc.INTERFACE).exercise*``, exactly the
syntax supported by contract-ID exercise; see #14056.
CHANGELOG_END
* InterfaceCompanion marker parent
* define INTERFACE singleton class and sole value with every interface
* don't allow instantiation of interface classes; they are never what you want
* use singleton for to<interface>, rename unsafeFrom<interface> to unsafeFromInterface
* rename to<interface> to toInterface
* document Java interface output changes
CHANGELOG_BEGIN
- [Java codegen] For interface types ``Ifc``, the template contract ID
conversion method ``toIfc()`` has been removed and replaced with
``toInterface(Ifc.INTERFACE)``, and the interface contract ID
conversion method ``unsafeFromIfc`` has been replaced with
``unsafeFromInterface``, always the same name.
CHANGELOG_END
* introduce TemplateChoices to mediate template choice resolution
* if any resolutions fail in EnvironmentInterface, discard the template's resolution
* if any resolutions fail in Interface, discard the remaining unresolved
CHANGELOG_BEGIN
CHANGELOG_END
To be clear, this is a hotfix. Whoever is responsible for this test
should provide a more comprehensive fix with a fairly high degree of
urgency.
Current main is broken because we have a transitive dependency on
`@types/prettier` with a version constraint of `"*"`, and the latest
version (`2.6.1`) is not compatible with our pinned-down version of the
TypeScript compiler (`3.8.3`). A short-term solution would seem to be to
generally bump most of our npm dependencies in this test.
Currently, main tests are _not_ failing because they're still using the
cache, which has a success for this test (and its inputs, as far as
Bazel can determine, have not changed). This is in my opinion a more
important failure (that it doesn't fail), and so a proper fix of this
issue should include pinning down all of our transitive dependencies
(not just `@types/prettier` as I've done here). Arguably _in addition
to_ bumping most of them to recent-ish versions.
The daily releases break because the version string invalidates the
cache, which is how the problem surfaced.
CHANGELOG_BEGIN
CHANGELOG_END
* add inherited choices for Scala codegen, test output exercises
CHANGELOG_BEGIN
- [scala codegen] Choices inherited from interfaces may be exercised
directly from those templates via ``createAnd``, contract ID, or
exercise-by-key. Exercise by interface-contract-ID and
interface-contract-ID types in signatures are not supported.
See `issue #13858 <https://github.com/digital-asset/daml/pull/13858>`__.
CHANGELOG_END