neo_solidity/solidity/convert/
events.rs1fn convert_event(event: EventIR) -> EventMetadata {
2 let normalized = normalize_event_signature(&event.name, &event.parameters);
3 EventMetadata {
4 name: event.name,
5 normalized_name: normalized,
6 parameters: event
7 .parameters
8 .into_iter()
9 .map(|param| EventParameter {
10 name: param.name,
11 ty: param.ty,
12 indexed: param.indexed,
13 })
14 .collect(),
15 }
16}
17
18fn normalize_event_signature(name: &str, params: &[crate::frontend::EventParameterIR]) -> String {
19 fn canonical_param_type(ty: &str) -> String {
20 let mut parts = ty.split_whitespace();
21 match parts.next() {
22 Some("struct" | "enum") => parts.next().unwrap_or_default().to_string(),
23 Some(first) => first.to_string(),
24 None => String::new(),
25 }
26 }
27
28 let base = name.trim().to_ascii_lowercase();
29 let param_types: Vec<String> = params
30 .iter()
31 .map(|param| canonical_param_type(¶m.ty).to_ascii_lowercase())
32 .collect();
33
34 if param_types.is_empty() {
36 format!("{base}()")
37 } else {
38 format!("{base}({})", param_types.join(","))
41 }
42}