diff --git a/src/protocol/ast.rs b/src/protocol/ast.rs index 83ae094fbfd5a4aad116353aef5f60c9c8c6c1f5..95195aef473b46c535fb2b034a712da10bf953ca 100644 --- a/src/protocol/ast.rs +++ b/src/protocol/ast.rs @@ -1647,6 +1647,12 @@ pub struct SlicingExpression { pub unique_id_in_definition: i32, } +#[derive(Debug, Clone)] +pub enum SelectKind { + StructField(Identifier), + TupleMember(u64), // u64 is overkill, but space is taken up by `StructField` variant anyway +} + #[derive(Debug, Clone)] pub struct SelectExpression { pub this: SelectExpressionId, @@ -1654,7 +1660,7 @@ pub struct SelectExpression { pub operator_span: InputSpan, // of the '.' pub full_span: InputSpan, // includes subject and field pub subject: ExpressionId, - pub field_name: Identifier, + pub kind: SelectKind, // Validator/Linker pub parent: ExpressionParent, pub unique_id_in_definition: i32,