Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
163 commits
Select commit Hold shift + click to select a range
2c42a21
Add ui test for shared event
ascjones Mar 31, 2022
21fd910
WIP adding ink::event_definition
ascjones Apr 1, 2022
27948f1
Merge branch 'master' into aj/shared-events
ascjones Apr 1, 2022
ba6734d
More event definition wiring
ascjones Apr 1, 2022
54fbe58
WIP building shared event def
ascjones Apr 4, 2022
400ea92
Merge branch 'master' into aj/shared-events
ascjones Apr 11, 2022
88f3722
Make event_definition attribute compile
ascjones Apr 11, 2022
63a30c6
Parse ink(event) attribute on type alias
ascjones Apr 12, 2022
90c2eb5
Combining IR for external and inline event definitions
ascjones Apr 13, 2022
ee9e74b
WIP generating Topics impls for inline events
ascjones Apr 13, 2022
0edba13
Remove duplicate topics impls
ascjones Apr 14, 2022
c1f7d30
Merge branch 'master' into aj/shared-events
ascjones Apr 14, 2022
2d2541d
WIP implementing event spec metadata generation
ascjones Apr 14, 2022
05d35b5
Add missing semicolon
ascjones Apr 14, 2022
e73e17c
Remove unused fields iterator
ascjones Apr 14, 2022
a1a04f0
Fix imported event ident
ascjones Apr 14, 2022
98c7f49
Update trybuild to run ui tests in parallel (#1220)
ascjones Apr 21, 2022
c931a38
Fix test errors
ascjones Apr 21, 2022
a2c60ea
Add todo
ascjones Apr 25, 2022
f5882ed
Merge branch 'master' into aj/shared-events
ascjones May 3, 2022
3f1978a
Fix test errors
ascjones May 3, 2022
8b393f3
Merge remote-tracking branch 'origin/aj/shared-events' into aj/shared…
ascjones May 3, 2022
0081544
Test out new interface api
ascjones May 5, 2022
13a1e62
Merge branch 'master' into aj/shared-events
ascjones Aug 1, 2022
7f35189
Revert "Test out new interface api"
ascjones Aug 1, 2022
5f3f2f0
Update example to latest syntax
ascjones Aug 4, 2022
35d8184
Fmt
ascjones Aug 4, 2022
6763b74
Remove EmitEvent impl
ascjones Aug 4, 2022
7063bd3
Remove EmitEvent impl and ContractBaseEvent
ascjones Aug 4, 2022
7e115ec
Add args to shared event test
ascjones Aug 5, 2022
100e53b
Convert inline event to use event_def codegen
ascjones Aug 5, 2022
71db312
Remove ink item Event
ascjones Aug 5, 2022
c73ea8d
Fmt
ascjones Aug 5, 2022
7628786
Merge branch 'master' into aj/shared-events
ascjones Aug 25, 2022
7e59e74
Rewire contract internal event definitions
ascjones Aug 25, 2022
c6a8cec
add todos
ascjones Aug 30, 2022
fd8fef2
Merge branch 'master' into aj/shared-events
ascjones Sep 2, 2022
0dfc495
WIP changing event def to be an enum
ascjones Sep 5, 2022
34da8a6
WIP adding EventVariantInfo trait for EVENT_SIGNATURE
ascjones Sep 6, 2022
14d6e30
WIP adapting to synstructure
ascjones Sep 6, 2022
babda7d
Merge branch 'master' into aj/shared-events
ascjones Sep 6, 2022
99bb6bd
WIP generating event signature topics impls
ascjones Sep 6, 2022
1e5dae3
Revert previous work attempting to use synstructure
ascjones Sep 6, 2022
65a8822
Restore wiring for inline contract events
ascjones Sep 6, 2022
8735978
WIP generating event enum impls
ascjones Sep 6, 2022
17609fe
Merge branch 'master' into aj/shared-events
ascjones Sep 28, 2022
6663383
Fix event def after merge
ascjones Sep 28, 2022
ca6247e
Merge branch 'master' into aj/shared-events
ascjones Sep 28, 2022
090219d
Fmt
ascjones Sep 28, 2022
2189719
Recover changes from master
ascjones Sep 28, 2022
42dc296
Fix up metadata compilation
ascjones Sep 28, 2022
3be3025
Fmt
ascjones Sep 28, 2022
a1ac0b4
Convert more events to enums
ascjones Sep 29, 2022
10ad8e5
Fix some crate paths
ascjones Sep 29, 2022
9383b40
Fix event def tests
ascjones Sep 29, 2022
5253a31
Start to rebuild topics impl
ascjones Sep 29, 2022
8e8af63
Fix some IR tests
ascjones Sep 29, 2022
d2ce784
WIP impl variant topics
ascjones Sep 29, 2022
dd2c398
Merge branch 'master' into aj/shared-events
ascjones Oct 5, 2022
504e1fe
WIP building push_topics impl
ascjones Oct 5, 2022
35561a7
WIP use const fn to generate event_variant_signature
ascjones Oct 6, 2022
a9d0559
WIP generate event variant match arms with remaining topics
ascjones Oct 6, 2022
23fe12e
Fix some errors
ascjones Oct 7, 2022
8db474f
Split InkEventDefinition constructors for inline and external events
ascjones Oct 7, 2022
1c4d382
Merge branch 'master' into aj/shared-events
ascjones Oct 7, 2022
5068804
Read anonymous from variant attributs, also fmt
ascjones Oct 7, 2022
9914bf4
Just allow only ink::event_definition
ascjones Oct 7, 2022
3e83f6e
WIP attempt to make trait-erc20 compile
ascjones Oct 7, 2022
a076821
Fix up field def gen error
ascjones Oct 17, 2022
2f81f67
Fix up trait-erc20 events emit
ascjones Oct 18, 2022
797ea95
Fix up ink_env refs in event_definition
ascjones Oct 18, 2022
2309dd3
Wire up event signature topic
ascjones Oct 18, 2022
d776c3f
Fix variant field bindings
ascjones Oct 18, 2022
a720d30
Generate EventVariantInfo SIGNATURE
ascjones Oct 19, 2022
9d2e334
WIP impl compile time signature topic calculation
ascjones Oct 19, 2022
9246664
Remove field topic prefix
ascjones Oct 19, 2022
343ae04
Resolve some warnings
ascjones Oct 19, 2022
4238fbd
Restore topics guard
ascjones Oct 20, 2022
216d684
Merge branch 'master' into aj/shared-events
ascjones Oct 20, 2022
87ac91c
WIP generate event metadata, introduce EventInfo trait
ascjones Oct 20, 2022
ec01087
Generate event variants metadata, wire it up
ascjones Oct 20, 2022
97cd765
Allow passing in of event metadata vec
ascjones Oct 25, 2022
354f81d
Generate event metadata custom sections and externs
ascjones Oct 26, 2022
ff3b2ed
Remove todo comment from event-shared-external.rs
ascjones Oct 26, 2022
6c94cb0
Filter topic fields and combine bindings
ascjones Oct 26, 2022
dbe237e
Merge branch 'master' into aj/shared-events
ascjones Oct 28, 2022
3beb5a7
Migrating erc721 to new event def
ascjones Oct 29, 2022
06bf240
Put event definition to the top of the contract file
ascjones Oct 20, 2022
e1c97de
Add ink event metadata custom section marker
ascjones Oct 31, 2022
2356ffa
Fix errors after merge
ascjones Oct 31, 2022
53189d5
Number of topics builder per variant
ascjones Oct 31, 2022
3a23e06
Fmt erc721
ascjones Oct 31, 2022
ca68223
Convert dns to event_definition enum
ascjones Oct 31, 2022
d922172
Fix up erc20 events
ascjones Oct 31, 2022
16aa615
Migrate rand-extension example
ascjones Oct 31, 2022
2ba841e
Migrate erc1155 example
ascjones Oct 31, 2022
55884db
Migrate payment-channel example
ascjones Oct 31, 2022
7d42db0
Migrate mother example
ascjones Oct 31, 2022
c91171a
Migrate multisig example
ascjones Oct 31, 2022
b4ddcac
WIP fixing topic attr validation
ascjones Oct 31, 2022
0343989
Merge branch 'master' into aj/shared-events
ascjones Nov 1, 2022
9af23c6
WIP use event def ids to call into metadata
ascjones Nov 1, 2022
82cff3d
Fix up topic field attribute validation, fix warnings
ascjones Nov 1, 2022
2261e9d
Revert using event definition ids in custom section
ascjones Nov 2, 2022
e8a74c2
Merge branch 'master' into aj/shared-events
ascjones Nov 3, 2022
a25b763
Fix compilation errors after merge
ascjones Nov 3, 2022
87a014a
Comment out TypeSpec::default for now
ascjones Nov 3, 2022
ce28c3c
Merge branch 'master' into aj/shared-events
ascjones Nov 3, 2022
abdb624
Fix clippy errors
ascjones Nov 4, 2022
1d6fbaf
Update `scale-info` requirement to 2.3
ascjones Nov 4, 2022
1e89578
Merge branch 'master' into aj/upgrade-scale-info-requirement
ascjones Nov 4, 2022
905b943
Merge branch 'aj/upgrade-scale-info-requirement' into aj/shared-events
ascjones Nov 4, 2022
495e830
Merge branch 'master' into aj/shared-events
ascjones Nov 4, 2022
22739eb
Fix up erc20 ui test
ascjones Nov 7, 2022
39da2d7
Fix and remove some tests
ascjones Nov 7, 2022
2aef9d5
Fix non pub test
ascjones Nov 7, 2022
2d16ec1
Fix up metadata specs
ascjones Nov 7, 2022
5862d55
Merge branch 'master' into aj/shared-events
ascjones Nov 8, 2022
64915ad
Merge branch 'master' into aj/shared-events
ascjones Nov 28, 2022
cdee107
Remove method after merge
ascjones Nov 28, 2022
148f43f
E2E: utilize `contract-build` crate
ascjones Nov 29, 2022
50e88c1
Merge branch 'master' into aj/contract-build-lib
ascjones Nov 29, 2022
52f2024
Build as debug so we can see the debug messages
ascjones Nov 29, 2022
8481f8b
Merge branch 'master' into aj/shared-events
ascjones Nov 29, 2022
8aebcf2
Merge branch 'master' into aj/shared-events
ascjones Nov 30, 2022
21c37f5
Merge branch 'master' into aj/contract-build-lib
ascjones Nov 30, 2022
9d84bbe
Merge branch 'master' into aj/shared-events
ascjones Nov 30, 2022
963cfee
Switch to using `contract-build` master branch
ascjones Dec 1, 2022
e9701ea
Add missing flag
ascjones Dec 1, 2022
cdbcbe0
Use released `contract-build` crate
ascjones Dec 1, 2022
98dfb4a
Merge branch 'aj/contract-build-lib' into aj/shared-events
ascjones Dec 1, 2022
4775cf3
Use custom `contract-build` branch
ascjones Dec 1, 2022
3777274
Remove duplicate generate_type_spec method
ascjones Dec 1, 2022
e9fe3e1
Update generate_metadata signature in ui test
ascjones Dec 2, 2022
9d9ef5e
Fix anonymous event ui test
ascjones Dec 2, 2022
5ef3525
Update event defs in some UI tests
ascjones Dec 2, 2022
ddd3559
More UI tests migration
ascjones Dec 5, 2022
e5d8163
Check for event definitions with no variants
ascjones Dec 5, 2022
b5a961a
Check for event definitions are not structs
ascjones Dec 5, 2022
38d74f9
Fix up single definition event UI test
ascjones Dec 5, 2022
f849e8e
Fix up too-many-topics UI test, succeeds but should fail...
ascjones Dec 5, 2022
7cb6c74
Merge branch 'master' into aj/shared-events
ascjones Dec 9, 2022
5d80691
Fix up generate_metadata extern in test
ascjones Dec 9, 2022
55813c6
Restore max topics len guard for environment
ascjones Dec 9, 2022
e96f9d6
Remove extra topic, max topics now includes signature topic
ascjones Dec 9, 2022
bba0e88
Update event-conflicting-storage.rs for event_definition
ascjones Dec 9, 2022
c999880
Fixed compilation errors events (#1533)
xgreenx Dec 12, 2022
dc32a9c
Merge branch 'master' into aj/shared-events
ascjones Jan 4, 2023
9155178
Merge branch 'master' into aj/shared-events
ascjones Jan 11, 2023
b883634
Merge branch 'master' into aj/shared-events
ascjones Jan 11, 2023
aae9fcb
Merge branch 'master' into aj/shared-events
ascjones Jan 11, 2023
706c600
Constrain emit_event environment
ascjones Jan 12, 2023
dc5d2eb
Merge branch 'master' into aj/shared-events
ascjones Jan 25, 2023
482b610
Merge branch 'master' into aj/shared-events
ascjones Feb 3, 2023
ea73683
Merge branch 'master' into aj/shared-events
ascjones Feb 13, 2023
7a95e98
Merge branch 'master' into aj/shared-events
ascjones Feb 20, 2023
e1674a9
Merge branch 'master' into aj/shared-events
ascjones Feb 27, 2023
d9ec19b
Merge branch 'master' into aj/shared-events
ascjones Apr 14, 2023
7ae9b85
Merge branch 'master' into aj/shared-events
ascjones Apr 20, 2023
468b226
Calculate signature topic in macro
ascjones Apr 21, 2023
203fe8b
Fix lifetime from merge
ascjones Apr 21, 2023
3854c49
Generate signature topic
ascjones Apr 21, 2023
06c7933
Add back method lost in merge
ascjones Apr 21, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Start to rebuild topics impl
  • Loading branch information
ascjones committed Sep 29, 2022
commit 5253a31dcadb09676844b14fdb623d577774a666
45 changes: 42 additions & 3 deletions crates/ink/codegen/src/generator/event_def.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,13 @@ impl GenerateCode for EventDefinition<'_> {
// let event_info_impl = self.generate_event_info_impl();
// let event_metadata_impl = self.generate_event_metadata_impl();
let event_variants_impls = self.generate_event_variant_info_impls();
let topics_impl = self.generate_topics_impl2();
let topics_impl = self.generate_topics_impl();
// let topics_guard = self.generate_topics_guard();
quote! {
#event_enum
// #event_info_impl
// #event_metadata_impl
// #topics_impl
#topics_impl
// #topics_guard
}
}
Expand Down Expand Up @@ -110,9 +110,48 @@ impl<'a> EventDefinition<'a> {
)
}

fn generate_topics_impl2(&self) -> TokenStream2 {
fn generate_topics_impl(&self) -> TokenStream2 {
let span = self.event_def.span();
let event_ident = self.event_def.ident();
let len_topics = self
.event_def
.max_len_topics();

// Anonymous events require 1 fewer topics since they do not include their signature.
let anonymous_topics_offset = if self.event_def.anonymous { 0 } else { 1 };
let remaining_topics_ty = match len_topics + anonymous_topics_offset {
0 => quote_spanned!(span=> ::ink::env::topics::state::NoRemainingTopics),
n => {
quote_spanned!(span=> [::ink::env::topics::state::HasRemainingTopics; #n])
}
};

quote_spanned!(span =>
const _: () = {
impl ::ink_env::Topics for #event_ident {
type RemainingTopics = #remaining_topics_ty;

fn topics<E, B>(
&self,
builder: ::ink::env::topics::TopicsBuilder<::ink::env::topics::state::Uninit, E, B>,
) -> <B as ::ink::env::topics::TopicsBuilderBackend<E>>::Output
where
E: ::ink::env::Environment,
B: ::ink::env::topics::TopicsBuilderBackend<E>,
{
todo!()
// const EVENT_SIGNATURE: &[u8] = <#event_ident as ::ink::reflect::EventInfo>::PATH.as_bytes();
//
// builder
// .build::<Self>()
// #event_signature_topic
// #(
// #topic_impls
// )*
// .finish()
}
}
};
)
}

Expand Down
2 changes: 0 additions & 2 deletions crates/ink/tests/ui/contract/pass/event-shared-external.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
use ink_lang as ink;

// todo: add the wiring to detect the events metadata, and in cargo-contract merge together
// todo: consider the possibility of enforcing shared events to be an enum, and tied to an ink! trait def
// only a single event type per interface which encapsulates all the possible events
Expand Down