Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.

Commit ba58289

Browse files
committed
Factor in module path while generating enum variant or fn names
1 parent 1f8e903 commit ba58289

File tree

5 files changed

+27
-12
lines changed

5 files changed

+27
-12
lines changed

frame/support/procedural/src/construct_runtime/expand/event.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ fn expand_event_variant(
9999
generics: &Generics,
100100
) -> TokenStream {
101101
let pallet_is_generic = !generics.params.is_empty();
102-
let mod_name = &path.inner.segments.last().unwrap().ident;
102+
let mod_name = &path.mod_name();
103103

104104
match (instance, pallet_is_generic) {
105105
(Some(inst), true) => {
@@ -125,11 +125,11 @@ fn expand_event_conversion(
125125
instance: Option<&Ident>,
126126
pallet_event: &TokenStream,
127127
) -> TokenStream {
128-
let mod_name = &path.inner.segments.last().unwrap().ident;
129-
let variant = if let Some(inst) = &instance {
128+
let mod_name = path.mod_name();
129+
let variant = if let Some(inst) = instance {
130130
format_ident!("{}_{}", mod_name, inst)
131131
} else {
132-
mod_name.clone()
132+
mod_name
133133
};
134134

135135
quote!{
@@ -156,7 +156,7 @@ fn expand_event_metadata(
156156
path: &PalletPath,
157157
pallet_event: &TokenStream,
158158
) -> TokenStream {
159-
let mod_name = &path.inner.segments.last().unwrap().ident;
159+
let mod_name = path.mod_name();
160160

161161
quote!{(stringify!(#mod_name), #scrate::event::FnEncode(#pallet_event::metadata)),}
162162
}
@@ -167,7 +167,7 @@ fn expand_pallet_event_fn(
167167
instance: Option<&Ident>,
168168
pallet_event: &TokenStream,
169169
) -> TokenStream {
170-
let mod_name = &path.inner.segments.last().unwrap().ident;
170+
let mod_name = path.mod_name();
171171
let fn_name = if let Some(inst) = instance {
172172
format_ident!("__module_events_{}_{}", mod_name, inst)
173173
} else {

frame/support/procedural/src/construct_runtime/expand/metadata.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ fn expand_pallet_metadata_events(
135135
decl: &Pallet,
136136
) -> TokenStream {
137137
if filtered_names.contains(&"Event") {
138-
let mod_name = &decl.pallet.inner.segments.last().unwrap().ident;
138+
let mod_name = decl.pallet.mod_name();
139139
let event = if let Some(instance) = decl.instance.as_ref() {
140140
format_ident!("__module_events_{}_{}", mod_name, instance)
141141
} else {

frame/support/procedural/src/construct_runtime/expand/origin.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ fn expand_origin_caller_variant(
257257
generics: &Generics,
258258
) -> TokenStream {
259259
let pallet_is_generic = !generics.params.is_empty();
260-
let mod_name = &path.inner.segments.last().unwrap().ident;
260+
let mod_name = &path.mod_name();
261261

262262
match (instance, pallet_is_generic) {
263263
(Some(inst), true) => {
@@ -284,11 +284,11 @@ fn expand_origin_pallet_conversions(
284284
instance: Option<&Ident>,
285285
generics: &Generics,
286286
) -> TokenStream {
287-
let mod_name = &path.inner.segments.last().unwrap().ident;
288-
let variant = if let Some(inst) = &instance {
287+
let mod_name = path.mod_name();
288+
let variant = if let Some(inst) = instance {
289289
format_ident!("{}_{}", mod_name, inst)
290290
} else {
291-
mod_name.clone()
291+
mod_name
292292
};
293293

294294
let pallet_is_generic = !generics.params.is_empty();

frame/support/procedural/src/construct_runtime/parse.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,21 @@ impl Parse for PalletPath {
228228
}
229229
}
230230

231+
impl PalletPath {
232+
/// Return the snake-cased module name for this path.
233+
pub fn mod_name(&self) -> Ident {
234+
let mut iter = self.inner.segments.iter();
235+
let mut mod_name =
236+
iter.next().expect("Path should always have 1 segment; qed").ident.clone();
237+
238+
for segment in iter {
239+
mod_name = quote::format_ident!("{}_{}", mod_name, segment.ident);
240+
}
241+
242+
mod_name
243+
}
244+
}
245+
231246
impl quote::ToTokens for PalletPath {
232247
fn to_tokens(&self, tokens: &mut TokenStream) {
233248
self.inner.to_tokens(tokens);

frame/support/test/tests/construct_runtime.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ fn origin_codec() {
272272
let origin = OriginCaller::module1_Instance2(module1::Origin(Default::default()));
273273
assert_eq!(origin.encode()[0], 33);
274274

275-
let origin = OriginCaller::module3(nested::module3::Origin);
275+
let origin = OriginCaller::nested_module3(nested::module3::Origin);
276276
assert_eq!(origin.encode()[0], 34);
277277

278278
let origin = OriginCaller::module1_Instance6(module1::Origin(Default::default()));

0 commit comments

Comments
 (0)