macros: Allow variable event types in event_enum!
… the generated `*EventType`s aren't correct yet though.
This commit is contained in:
		
							parent
							
								
									ef9c84716c
								
							
						
					
					
						commit
						a860fdaa86
					
				| @ -6,7 +6,8 @@ event_enum! { | ||||
|         "m.direct", | ||||
|         #[cfg(test)] | ||||
|         "m.ignored_user_list", | ||||
|         "m.push_rules", | ||||
|         // Doesn't actually have a wildcard, but this should work as a wildcard test
 | ||||
|         "m.push_rules.*", | ||||
|         #[cfg(any())] | ||||
|         "m.ruma_test", | ||||
|     } | ||||
|  | ||||
| @ -525,9 +525,7 @@ fn to_event_path( | ||||
|     var: EventKindVariation, | ||||
|     ruma_common: &TokenStream, | ||||
| ) -> TokenStream { | ||||
|     let name_val = name.value(); | ||||
|     let path = name_val.strip_prefix("m.").unwrap().split('.').map(|s| Ident::new(s, name.span())); | ||||
| 
 | ||||
|     let path = event_module_path(name); | ||||
|     let event = m_prefix_name_to_type_name(name).unwrap(); | ||||
|     let event_name = if kind == EventKind::ToDevice { | ||||
|         assert_eq!(var, EventKindVariation::Full); | ||||
| @ -544,9 +542,7 @@ fn to_event_content_path( | ||||
|     prefix: Option<&str>, | ||||
|     ruma_common: &TokenStream, | ||||
| ) -> TokenStream { | ||||
|     let name_val = name.value(); | ||||
|     let path = name_val.strip_prefix("m.").unwrap().split('.').map(|s| Ident::new(s, name.span())); | ||||
| 
 | ||||
|     let path = event_module_path(name); | ||||
|     let event = m_prefix_name_to_type_name(name).unwrap(); | ||||
|     let content_str = match kind { | ||||
|         EventKind::ToDevice => { | ||||
| @ -560,6 +556,17 @@ fn to_event_content_path( | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| fn event_module_path(name: &LitStr) -> Vec<Ident> { | ||||
|     let value = name.value(); | ||||
|     let value = value.strip_prefix("m.").unwrap(); | ||||
|     value | ||||
|         .strip_suffix(".*") | ||||
|         .unwrap_or(value) | ||||
|         .split('.') | ||||
|         .map(|s| Ident::new(s, name.span())) | ||||
|         .collect() | ||||
| } | ||||
| 
 | ||||
| fn field_return_type( | ||||
|     name: &str, | ||||
|     var: EventKindVariation, | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user