]> git.bitcoin.ninja Git - ldk-c-bindings/log
ldk-c-bindings
15 months agoInclude a `struct` before trait return fields
Matt Corallo [Sun, 30 Jul 2023 03:36:56 +0000 (03:36 +0000)]
Include a `struct` before trait return fields

EIther `struct Type` or `Type` work fine because of our type
declarations, but cbindgen uses `struct Type` everywhere so its
easiest if we match it, especially for downstream code.

15 months agoAllow generation of manual types in reference options
Matt Corallo [Sat, 22 Jul 2023 20:03:11 +0000 (20:03 +0000)]
Allow generation of manual types in reference options

The limiting of supported types in `write_template_generics` isn't
super useful as its only called once per type - later uses of the
same type with the reference flag set or wiped doesn't change
anything. Still, it is relied on somewhat, so we can't drop it
entirely.

Now that we've moved more of the `[u8; 32]` newtypes to option
wrappers, failing for non-primitive references spuriously breaks.
Instead, we just allow it for manually-mapped types and let the
compiler complain if we do something invalid.

15 months agoHandle all traits in type resolution, including no-export ones
Matt Corallo [Thu, 20 Jul 2023 22:51:01 +0000 (22:51 +0000)]
Handle all traits in type resolution, including no-export ones

In the previous commit, we set up handling of no-export traits with
only a single implementor. In order to utilize that, we need such
traits to participate in type resolution, which we add support for
here.

15 months agoHandle no-export traits which are only implemented once as the implementor
Matt Corallo [Mon, 17 Jul 2023 02:16:01 +0000 (02:16 +0000)]
Handle no-export traits which are only implemented once as the implementor

If we have a trait marked no-export, and there's a single
implementor, we can just pretend its always the implementor. This
makes sense in LDK, for example, for the `APeerManager` trait,
which is implemented for all `PeerManager`s, but doesn't make sense
in bindings.

15 months agoSupport Unit struct types
Matt Corallo [Sat, 22 Jul 2023 17:38:46 +0000 (17:38 +0000)]
Support Unit struct types

15 months agoAllow `?Sized` bounds in some cases
Matt Corallo [Mon, 17 Jul 2023 02:14:12 +0000 (02:14 +0000)]
Allow `?Sized` bounds in some cases

15 months agoDrop special handling for more Option types and all-0 array handling
Matt Corallo [Mon, 17 Jul 2023 01:59:11 +0000 (01:59 +0000)]
Drop special handling for more Option types and all-0 array handling

15 months agoCorrect `use` resolution for submodule use statements
Matt Corallo [Mon, 17 Jul 2023 02:19:46 +0000 (02:19 +0000)]
Correct `use` resolution for submodule use statements

Otherwise we fail to resolve a `use` that starts with a submodule
of the current module.

15 months agoDrop `#[must_use]` that rustc complains is ignored
Matt Corallo [Mon, 17 Jul 2023 01:58:00 +0000 (01:58 +0000)]
Drop `#[must_use]` that rustc complains is ignored

15 months agoMerge pull request #111 from TheBlueMatt/2023-07-0.0.115-aliasing-fix v0.0.115.3
Matt Corallo [Fri, 28 Jul 2023 23:00:25 +0000 (23:00 +0000)]
Merge pull request #111 from TheBlueMatt/2023-07-0.0.115-aliasing-fix

[0.0.115] Fix strict-aliasing violation on traits holding inner fields

15 months agoUpdate auto-generated bindings with aliasing fix. 2023-07-0.0.115-aliasing-fix
Matt Corallo [Fri, 28 Jul 2023 18:07:20 +0000 (18:07 +0000)]
Update auto-generated bindings with aliasing fix.

15 months agoPin quote and proc-macro2 in CI to meet MSRV
Matt Corallo [Tue, 25 Jul 2023 17:15:17 +0000 (17:15 +0000)]
Pin quote and proc-macro2 in CI to meet MSRV

15 months agoFix strict-aliasing violation on traits holding inner fields
Matt Corallo [Thu, 27 Jul 2023 20:00:25 +0000 (20:00 +0000)]
Fix strict-aliasing violation on traits holding inner fields

When we map a trait method which returns a reference to a struct,
we map it by storing said struct in the trait implementation
struct. Then, we create a setter method which ensures the new field
is set. Sadly, because the original Rust trait method may take a
non-mutable reference to self, we have to update the field without
a mutable reference to the trait implementation struct.

Previously we did this by simply unsafe-casting a pointer to
mutable, which violates the aliasing rules in Rust. In a recent
rustc (at least on macOS), this broke.

Here, we convert the stored struct to wrap it in an `UnsafeCell`,
which fixes the issue.

17 months agoMerge pull request #108 from TheBlueMatt/main v0.0.115.2
Matt Corallo [Sat, 3 Jun 2023 21:15:16 +0000 (21:15 +0000)]
Merge pull request #108 from TheBlueMatt/main

Skip address sanitizer builds on OSX

17 months agoSkip address sanitizer builds on OSX
Matt Corallo [Sat, 3 Jun 2023 17:50:02 +0000 (17:50 +0000)]
Skip address sanitizer builds on OSX

...cause it appears broken on newer macOS and I'm skeptical its
detecting real leaks.

17 months agoMerge pull request #107 from TheBlueMatt/main
Matt Corallo [Sat, 3 Jun 2023 02:04:53 +0000 (02:04 +0000)]
Merge pull request #107 from TheBlueMatt/main

Support Building OSX binaries on Linux

17 months agoUpdate the set of OSX runners since github removed 10.15
Matt Corallo [Sat, 3 Jun 2023 02:04:12 +0000 (02:04 +0000)]
Update the set of OSX runners since github removed 10.15

17 months agoBuild OSX releases on Linux if `MACOS_SDK` is set
Matt Corallo [Fri, 2 Jun 2023 19:32:42 +0000 (19:32 +0000)]
Build OSX releases on Linux if `MACOS_SDK` is set

17 months agoMake `clang-lto-link-osx` work on Linux (by forcing bash)
Matt Corallo [Fri, 2 Jun 2023 18:35:45 +0000 (18:35 +0000)]
Make `clang-lto-link-osx` work on Linux (by forcing bash)

17 months agoMerge pull request #106 from TheBlueMatt/main v0.0.115.1
Matt Corallo [Wed, 31 May 2023 22:54:10 +0000 (22:54 +0000)]
Merge pull request #106 from TheBlueMatt/main

Make `BitEndianScalar` clonable

17 months agoUpdate auto-generated bindings
Matt Corallo [Wed, 31 May 2023 20:40:00 +0000 (20:40 +0000)]
Update auto-generated bindings

17 months agoMake `BitEndianScalar` clonable
Matt Corallo [Thu, 27 Apr 2023 05:38:33 +0000 (05:38 +0000)]
Make `BitEndianScalar` clonable

17 months agoMerge pull request #105 from arik-so/2023-05-115-debugging
Matt Corallo [Wed, 31 May 2023 20:27:17 +0000 (20:27 +0000)]
Merge pull request #105 from arik-so/2023-05-115-debugging

Add debugging lines to demo.cpp

17 months agoAdd debugging lines to demo.cpp
Arik Sosman [Tue, 23 May 2023 02:52:31 +0000 (19:52 -0700)]
Add debugging lines to demo.cpp

18 months agoMerge pull request #103 from TheBlueMatt/main v0.0.115.0
Matt Corallo [Wed, 26 Apr 2023 20:26:20 +0000 (20:26 +0000)]
Merge pull request #103 from TheBlueMatt/main

Update to LDK 0.0.115

18 months agoUpdate CI+Cargo.toml bindings branch to 0.0.115
Matt Corallo [Wed, 26 Apr 2023 01:08:26 +0000 (01:08 +0000)]
Update CI+Cargo.toml bindings branch to 0.0.115

18 months agoUpdate auto-generated bindings for LDK 0.0.115
Matt Corallo [Wed, 26 Apr 2023 01:03:19 +0000 (01:03 +0000)]
Update auto-generated bindings for LDK 0.0.115

18 months agoUpdate C++ demo application to LDK 0.0.115
Matt Corallo [Tue, 25 Apr 2023 22:17:42 +0000 (22:17 +0000)]
Update C++ demo application to LDK 0.0.115

18 months agoEnsure an option always unwraps to a non-reference type
Matt Corallo [Tue, 25 Apr 2023 22:13:38 +0000 (22:13 +0000)]
Ensure an option always unwraps to a non-reference type

18 months agoHandle Option<Vec<_>> with a much cleaner option converter
Matt Corallo [Tue, 25 Apr 2023 20:21:03 +0000 (20:21 +0000)]
Handle Option<Vec<_>> with a much cleaner option converter

18 months agoHandle use of `#[doc]` in the original source
Matt Corallo [Tue, 25 Apr 2023 20:20:13 +0000 (20:20 +0000)]
Handle use of `#[doc]` in the original source

18 months agoReplace type resolution assertions with failures
Matt Corallo [Tue, 25 Apr 2023 17:14:37 +0000 (17:14 +0000)]
Replace type resolution assertions with failures

Type resolution now supports failing, but some assertions are still
left over from when it didn't. Replace some of those which now fail
on LDK 0.0.115.

18 months agoUpdate hard-coded type definitions
Matt Corallo [Mon, 17 Apr 2023 17:43:13 +0000 (17:43 +0000)]
Update hard-coded type definitions

19 months agoFix documentation on generated _hash methods for std::hash::Hash
Matt Corallo [Mon, 17 Apr 2023 17:42:40 +0000 (17:42 +0000)]
Fix documentation on generated _hash methods for std::hash::Hash

19 months agoSupport the new no-exported tag that is more human readable
Matt Corallo [Mon, 17 Apr 2023 15:50:18 +0000 (15:50 +0000)]
Support the new no-exported tag that is more human readable

20 months agoMerge pull request #102 from TheBlueMatt/main v0.0.114.1
Matt Corallo [Thu, 9 Mar 2023 19:50:04 +0000 (19:50 +0000)]
Merge pull request #102 from TheBlueMatt/main

Fix C++ demo bindings build due to function signature mismatch

20 months agoFix C++ demo bindings build due to function signature mismatch
Matt Corallo [Thu, 9 Mar 2023 19:49:19 +0000 (19:49 +0000)]
Fix C++ demo bindings build due to function signature mismatch

20 months agoMerge pull request #101 from TheBlueMatt/main
Matt Corallo [Thu, 9 Mar 2023 19:40:54 +0000 (19:40 +0000)]
Merge pull request #101 from TheBlueMatt/main

Update to use `find_route_with_id` to match upstream changes

20 months agoUpdate to use `find_route_with_id` to match upstream changes
Matt Corallo [Thu, 9 Mar 2023 19:35:49 +0000 (19:35 +0000)]
Update to use `find_route_with_id` to match upstream changes

20 months agoMerge pull request #100 from TheBlueMatt/main v0.0.114.0
Matt Corallo [Tue, 7 Mar 2023 17:16:45 +0000 (17:16 +0000)]
Merge pull request #100 from TheBlueMatt/main

LDK 0.0.114

20 months agoWorkaround github actions brokenness
Matt Corallo [Mon, 6 Mar 2023 20:50:13 +0000 (20:50 +0000)]
Workaround github actions brokenness

20 months agoUpdate `rust-lightning` branch to 0.0.114-bindings
Matt Corallo [Mon, 6 Mar 2023 04:11:24 +0000 (04:11 +0000)]
Update `rust-lightning` branch to 0.0.114-bindings

20 months agoUpdate auto-generated bindings
Matt Corallo [Wed, 1 Mar 2023 05:53:56 +0000 (05:53 +0000)]
Update auto-generated bindings

20 months agoNote that cross-language LTO requires lld in addition to clang
Matt Corallo [Tue, 28 Feb 2023 06:58:25 +0000 (06:58 +0000)]
Note that cross-language LTO requires lld in addition to clang

20 months agoPrint something for custom messages in C++ demo
Matt Corallo [Wed, 1 Mar 2023 00:13:01 +0000 (00:13 +0000)]
Print something for custom messages in C++ demo

20 months agoFix connection race in C++ demo
Matt Corallo [Tue, 28 Feb 2023 06:54:29 +0000 (06:54 +0000)]
Fix connection race in C++ demo

20 months agoUpdate C/C++ Demos to latest upstream API
Matt Corallo [Tue, 28 Feb 2023 02:31:15 +0000 (02:31 +0000)]
Update C/C++ Demos to latest upstream API

20 months agoAdd `lightning-background-processor`'s new std feature
Matt Corallo [Fri, 3 Mar 2023 02:04:32 +0000 (02:04 +0000)]
Add `lightning-background-processor`'s new std feature

20 months agoSupport new rust-bitcoin type mappings for various hashes
Matt Corallo [Mon, 27 Feb 2023 21:45:53 +0000 (21:45 +0000)]
Support new rust-bitcoin type mappings for various hashes

20 months agoIgnore discriminants on enum variants
Matt Corallo [Mon, 27 Feb 2023 21:45:29 +0000 (21:45 +0000)]
Ignore discriminants on enum variants

While this loses the value information, its better than failing to
generate bindings at all.

20 months agoSupport tuples containing array elements
Matt Corallo [Tue, 28 Feb 2023 23:31:11 +0000 (23:31 +0000)]
Support tuples containing array elements

20 months agoAdd type for 8 u16s (which is used for the scoring data)
Matt Corallo [Tue, 28 Feb 2023 23:25:38 +0000 (23:25 +0000)]
Add type for 8 u16s (which is used for the scoring data)

20 months agoSupport non-u8 (primitive) arrays
Matt Corallo [Tue, 28 Feb 2023 23:25:26 +0000 (23:25 +0000)]
Support non-u8 (primitive) arrays

20 months agoSupport supertraits-of-supertraits
Matt Corallo [Mon, 27 Feb 2023 21:25:27 +0000 (21:25 +0000)]
Support supertraits-of-supertraits

If we have a supertrait that requires an in-crate supertrait, we
handle that here by writing the required impls. We don't support
a supertrait-of-a-supertrait-of-a-supertrait.

20 months agoFix typo in path resolution leading to a "crate name" of a full path
Matt Corallo [Mon, 27 Feb 2023 21:45:14 +0000 (21:45 +0000)]
Fix typo in path resolution leading to a "crate name" of a full path

20 months agoSupport passing `Option<&OpaqueStruct>` to C
Matt Corallo [Mon, 27 Feb 2023 18:51:59 +0000 (18:51 +0000)]
Support passing `Option<&OpaqueStruct>` to C

Luckily the solution is trivial - just treat the conversion for the
inner pointer as `ptr_for_ref`, because we ultimately want a
pointer on the inside, not on the outside.

22 months agoMerge pull request #98 from TheBlueMatt/main v0.0.113.1
Matt Corallo [Fri, 13 Jan 2023 06:12:12 +0000 (06:12 +0000)]
Merge pull request #98 from TheBlueMatt/main

Fix OSX building by not redirecting to `/dev/null`

22 months agoFix OSX building by not redirecting to `/dev/null`
Matt Corallo [Fri, 13 Jan 2023 06:09:30 +0000 (06:09 +0000)]
Fix OSX building by not redirecting to `/dev/null`

Somehow this results in a broken pipe error...cause macOS is trash.

22 months agoMerge pull request #97 from TheBlueMatt/main
Matt Corallo [Fri, 13 Jan 2023 04:12:57 +0000 (04:12 +0000)]
Merge pull request #97 from TheBlueMatt/main

Fix LTO compilation with latest ld.lld on OSX

22 months agoStop timing C++ demo bindings run cause OSX is, as usual, garbage
Matt Corallo [Fri, 13 Jan 2023 03:34:59 +0000 (03:34 +0000)]
Stop timing C++ demo bindings run cause OSX is, as usual, garbage

22 months agoUpdate CI references to OSX clang 15.0.3
Matt Corallo [Thu, 12 Jan 2023 23:28:27 +0000 (23:28 +0000)]
Update CI references to OSX clang 15.0.3

22 months agoFix LTO compilation with latest ld.lld on OSX
Matt Corallo [Thu, 12 Jan 2023 23:27:19 +0000 (23:27 +0000)]
Fix LTO compilation with latest ld.lld on OSX

22 months agoMerge pull request #96 from TheBlueMatt/main v0.0.113.0
Matt Corallo [Tue, 10 Jan 2023 20:24:45 +0000 (20:24 +0000)]
Merge pull request #96 from TheBlueMatt/main

0.0.113 Bindings

22 months agoUpdate CI and Cargo.toml references to 0.0.113
Matt Corallo [Tue, 10 Jan 2023 17:43:53 +0000 (17:43 +0000)]
Update CI and Cargo.toml references to 0.0.113

22 months agoSet the C target to wasm32-wasi rather than wasm32
Matt Corallo [Sat, 24 Dec 2022 18:14:37 +0000 (18:14 +0000)]
Set the C target to wasm32-wasi rather than wasm32

We need at least a partial C stdlib anyway, so there's no real
difference going ahead and linking wasm32-wasi on the C side vs
only on the Rust side. This fixes compilation on Debian testing
with OS packages installed.

22 months agoUpdate C/C++ demo bindings to latest upstream API
Matt Corallo [Fri, 23 Dec 2022 20:14:01 +0000 (20:14 +0000)]
Update C/C++ demo bindings to latest upstream API

22 months agoUpdate auto-generated bindings to 0.0.113
Matt Corallo [Fri, 23 Dec 2022 20:25:40 +0000 (20:25 +0000)]
Update auto-generated bindings to 0.0.113

22 months agoSupport new upstream manually-mapped types
Matt Corallo [Fri, 23 Dec 2022 20:24:00 +0000 (20:24 +0000)]
Support new upstream manually-mapped types

22 months agoAdd support for witnesses via a manual mapping
Matt Corallo [Sat, 24 Dec 2022 01:14:33 +0000 (01:14 +0000)]
Add support for witnesses via a manual mapping

22 months agoSupport u128 values
Matt Corallo [Fri, 23 Dec 2022 20:23:16 +0000 (20:23 +0000)]
Support u128 values

22 months agoUse the resolved name, not original ident, for Vec naming
Matt Corallo [Sat, 24 Dec 2022 22:57:55 +0000 (22:57 +0000)]
Use the resolved name, not original ident, for Vec naming

This will be useful in the next commit when we rename `u5` to `U5`

22 months agoIgnore async functions as mapping them would be substantial work
Matt Corallo [Sat, 24 Dec 2022 05:01:45 +0000 (05:01 +0000)]
Ignore async functions as mapping them would be substantial work

22 months agoAllow enums with lifetime-only generics
Matt Corallo [Sat, 24 Dec 2022 05:01:25 +0000 (05:01 +0000)]
Allow enums with lifetime-only generics

22 months agoUse `Clone::clone(a)` rather than `a.clone` to avoid deref recursion
Matt Corallo [Sat, 24 Dec 2022 22:57:17 +0000 (22:57 +0000)]
Use `Clone::clone(a)` rather than `a.clone` to avoid deref recursion

23 months agoSome initial support for `pub(.*) use` aliasing in type resolution
Matt Corallo [Fri, 23 Dec 2022 20:18:34 +0000 (20:18 +0000)]
Some initial support for `pub(.*) use` aliasing in type resolution

2 years agoMake rustc stop complaining about unused `Box::from_raw`s
Matt Corallo [Fri, 28 Oct 2022 21:14:28 +0000 (21:14 +0000)]
Make rustc stop complaining about unused `Box::from_raw`s

2 years agoMerge pull request #94 from TheBlueMatt/main v0.0.112.0
Matt Corallo [Fri, 28 Oct 2022 03:25:30 +0000 (03:25 +0000)]
Merge pull request #94 from TheBlueMatt/main

Update for 0.0.112

2 years agoUpdate Cargo.toml and CI references to 0.0.112
Matt Corallo [Thu, 27 Oct 2022 23:19:38 +0000 (23:19 +0000)]
Update Cargo.toml and CI references to 0.0.112

2 years agoUpdate auto-generated bindings
Matt Corallo [Thu, 27 Oct 2022 03:52:14 +0000 (03:52 +0000)]
Update auto-generated bindings

2 years agoUpdate C/C++ demos for latest upstream API
Matt Corallo [Thu, 27 Oct 2022 00:24:49 +0000 (00:24 +0000)]
Update C/C++ demos for latest upstream API

2 years agoMap `io::ErrorKind` the same as `io::Error`, we only use the kind
Matt Corallo [Thu, 27 Oct 2022 00:21:21 +0000 (00:21 +0000)]
Map `io::ErrorKind` the same as `io::Error`, we only use the kind

2 years agoHandle path types that start with `crate::`
Matt Corallo [Thu, 27 Oct 2022 00:20:38 +0000 (00:20 +0000)]
Handle path types that start with `crate::`

2 years agoHandle multiple `impl`s of the same trait in the same file
Matt Corallo [Thu, 27 Oct 2022 00:18:18 +0000 (00:18 +0000)]
Handle multiple `impl`s of the same trait in the same file

This should be easy, but we end up with redundant `use` statements.
Thus, we instead track which use statements we want and put them at
the end when generating new files

2 years ago(Partially) support supertraits with generic bounds
Matt Corallo [Thu, 27 Oct 2022 00:15:31 +0000 (00:15 +0000)]
(Partially) support supertraits with generic bounds

If we extend a supertrait where the supertrait is generic, we will
ultimately need to genericize the supertrait into a derived object.
This doesn't implement that part, but it does implement the
subtrait-writing code to make it compatible with such a future.

2 years agoSupport trait methods that return enums in the C++ sed script
Matt Corallo [Thu, 27 Oct 2022 00:08:55 +0000 (00:08 +0000)]
Support trait methods that return enums in the C++ sed script

2 years agoMerge pull request #93 from TheBlueMatt/main
Arik [Thu, 6 Oct 2022 20:24:44 +0000 (13:24 -0700)]
Merge pull request #93 from TheBlueMatt/main

Expose the `rapid-gossip-sync` crate for no-std builds

2 years agoUpdate auto-generated bindings for backport of RGS-no-std support
Matt Corallo [Thu, 6 Oct 2022 00:44:02 +0000 (00:44 +0000)]
Update auto-generated bindings for backport of RGS-no-std support

2 years agoExpose the `rapid-gossip-sync` crate for no-std builds
Matt Corallo [Thu, 6 Oct 2022 00:11:11 +0000 (00:11 +0000)]
Expose the `rapid-gossip-sync` crate for no-std builds

2 years agoMerge pull request #92 from TheBlueMatt/main v0.0.111.0
Arik [Mon, 3 Oct 2022 21:22:28 +0000 (14:22 -0700)]
Merge pull request #92 from TheBlueMatt/main

Add a convinience constructor for the new BigEndianScalar

2 years agoUpdate auto-generated bindings
Matt Corallo [Mon, 3 Oct 2022 21:20:59 +0000 (21:20 +0000)]
Update auto-generated bindings

2 years agoAdd a convinience constructor for the new BigEndianScalar
Matt Corallo [Mon, 3 Oct 2022 21:15:58 +0000 (21:15 +0000)]
Add a convinience constructor for the new BigEndianScalar

2 years agoMerge pull request #91 from TheBlueMatt/main
Arik [Mon, 3 Oct 2022 21:14:38 +0000 (14:14 -0700)]
Merge pull request #91 from TheBlueMatt/main

0.0.111

2 years agoUpdate auto-generated bindings
Matt Corallo [Mon, 19 Sep 2022 15:18:31 +0000 (15:18 +0000)]
Update auto-generated bindings

2 years agoUpdate C++ bindings demo to latest upstream API
Matt Corallo [Mon, 19 Sep 2022 10:44:47 +0000 (10:44 +0000)]
Update C++ bindings demo to latest upstream API

2 years agoAdd Scalar and SharedSecret type mappings for new secp256k1 types
Matt Corallo [Fri, 23 Sep 2022 20:47:17 +0000 (20:47 +0000)]
Add Scalar and SharedSecret type mappings for new secp256k1 types

2 years agoUpdate bindings branch to 0.0.111 and update rust-bitcoin and secp
Matt Corallo [Mon, 19 Sep 2022 14:56:41 +0000 (14:56 +0000)]
Update bindings branch to 0.0.111 and update rust-bitcoin and secp

2 years agoAllow liftime bounds on generic bounds
Matt Corallo [Mon, 19 Sep 2022 12:51:02 +0000 (12:51 +0000)]
Allow liftime bounds on generic bounds

While liftime bounds require bindings users to ensure liftime
requirements are met, they're important for allowing us to export
lock wrappers. Thus, we relax the simple-bounds assertions checks
here.

2 years agoDon't use a turbofish when all parameters are lifetimes.
Matt Corallo [Fri, 23 Sep 2022 18:57:13 +0000 (18:57 +0000)]
Don't use a turbofish when all parameters are lifetimes.

For some reason rustc doesn't like this, and its easy, so whatever.

2 years agoUse trait, not impl, definition for X_as_Trait functions
Matt Corallo [Fri, 23 Sep 2022 16:18:55 +0000 (16:18 +0000)]
Use trait, not impl, definition for X_as_Trait functions

When we map a trait impl block, we historically didn't know how to
resolve the types in the trait context, so we just used the impl
context definitions and assumed the types were the same. Sadly, if
we have an associated type that is bounded by a trait, we need to
use the trait bound to figure out what to write for the X_as_Trait
method declarations.

Since we now have the ability to generate full trait-context type
resolvers, we do so here.

2 years agoSupport mapping `Readable` `impl`s outside of the `lightning` crate
Matt Corallo [Mon, 19 Sep 2022 10:16:38 +0000 (10:16 +0000)]
Support mapping `Readable` `impl`s outside of the `lightning` crate

In order to map `Readable` `impl` blocks in crates other than the
`lightning` main crate we simply have to update the type references
to include crate name, which we do here.