From c582a453c824fc53e6b285e3e26f6641844d1b0e Mon Sep 17 00:00:00 2001 From: Leandro Santiago Date: Sat, 13 Sep 2025 12:01:33 +0200 Subject: [PATCH] WIP: fix validation of passing enum as var_in_out TODO: implement unit tests and check code generation --- src/index.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/index.rs b/src/index.rs index 9fb5c6019ea..2ca29217197 100644 --- a/src/index.rs +++ b/src/index.rs @@ -1609,8 +1609,18 @@ impl Index { /// Returns all enum variants of the given variable. pub fn get_enum_variants_by_variable(&self, variable: &VariableIndexEntry) -> Vec<&VariableIndexEntry> { let Some(var) = self.type_index.find_type(&variable.data_type_name) else { return vec![] }; - let DataTypeInformation::Enum { variants, .. } = var.get_type_information() else { return vec![] }; - variants.iter().collect() + + match var.get_type_information() { + DataTypeInformation::Enum { variants, .. } => variants.iter().collect(), + DataTypeInformation::Pointer { name, inner_type_name, .. } => { + let Some(inner_type) = self.type_index.find_type(inner_type_name) else { return vec![] }; + let DataTypeInformation::Enum { variants, .. } = inner_type.get_type_information() else { + return vec![]; + }; + variants.iter().collect() + } + _ => vec![], + } } /// Tries to return an enum variant defined within a POU