diff --git a/rust/extractor/src/generated/.generated.list b/rust/extractor/src/generated/.generated.list index 7335c95f7b8c..0f781aae8dab 100644 --- a/rust/extractor/src/generated/.generated.list +++ b/rust/extractor/src/generated/.generated.list @@ -1,2 +1,2 @@ mod.rs 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7 -top.rs cdfb9890318d847e6db320abd8b9e9939524ecc47bcdc8491b9c8253bd3178c2 cdfb9890318d847e6db320abd8b9e9939524ecc47bcdc8491b9c8253bd3178c2 +top.rs 7a5bbe75eae6069f4f255db13787a3575e706742af1f57122c02d46895de9a1b 7a5bbe75eae6069f4f255db13787a3575e706742af1f57122c02d46895de9a1b diff --git a/rust/extractor/src/generated/top.rs b/rust/extractor/src/generated/top.rs index 13a0adecbca4..eb1f16f8cc66 100644 --- a/rust/extractor/src/generated/top.rs +++ b/rust/extractor/src/generated/top.rs @@ -3568,97 +3568,6 @@ impl From> for trap::Label { } } -#[derive(Debug)] -pub struct BlockExpr { - pub id: trap::TrapId, - pub attrs: Vec>, - pub is_async: bool, - pub is_const: bool, - pub is_gen: bool, - pub is_move: bool, - pub is_try: bool, - pub is_unsafe: bool, - pub label: Option>, - pub stmt_list: Option>, -} - -impl trap::TrapEntry for BlockExpr { - fn extract_id(&mut self) -> trap::TrapId { - std::mem::replace(&mut self.id, trap::TrapId::Star) - } - - fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("block_exprs", vec![id.into()]); - for (i, v) in self.attrs.into_iter().enumerate() { - out.add_tuple("block_expr_attrs", vec![id.into(), i.into(), v.into()]); - } - if self.is_async { - out.add_tuple("block_expr_is_async", vec![id.into()]); - } - if self.is_const { - out.add_tuple("block_expr_is_const", vec![id.into()]); - } - if self.is_gen { - out.add_tuple("block_expr_is_gen", vec![id.into()]); - } - if self.is_move { - out.add_tuple("block_expr_is_move", vec![id.into()]); - } - if self.is_try { - out.add_tuple("block_expr_is_try", vec![id.into()]); - } - if self.is_unsafe { - out.add_tuple("block_expr_is_unsafe", vec![id.into()]); - } - if let Some(v) = self.label { - out.add_tuple("block_expr_labels", vec![id.into(), v.into()]); - } - if let Some(v) = self.stmt_list { - out.add_tuple("block_expr_stmt_lists", vec![id.into(), v.into()]); - } - } -} - -impl trap::TrapClass for BlockExpr { - fn class_name() -> &'static str { "BlockExpr" } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme BlockExpr is a subclass of AstNode - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme BlockExpr is a subclass of Element - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme BlockExpr is a subclass of Expr - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme BlockExpr is a subclass of Locatable - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - #[derive(Debug)] pub struct BoxPat { pub id: trap::TrapId, @@ -4582,81 +4491,6 @@ impl From> for trap::Label { } } -#[derive(Debug)] -pub struct ForExpr { - pub id: trap::TrapId, - pub attrs: Vec>, - pub iterable: Option>, - pub label: Option>, - pub loop_body: Option>, - pub pat: Option>, -} - -impl trap::TrapEntry for ForExpr { - fn extract_id(&mut self) -> trap::TrapId { - std::mem::replace(&mut self.id, trap::TrapId::Star) - } - - fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("for_exprs", vec![id.into()]); - for (i, v) in self.attrs.into_iter().enumerate() { - out.add_tuple("for_expr_attrs", vec![id.into(), i.into(), v.into()]); - } - if let Some(v) = self.iterable { - out.add_tuple("for_expr_iterables", vec![id.into(), v.into()]); - } - if let Some(v) = self.label { - out.add_tuple("for_expr_labels", vec![id.into(), v.into()]); - } - if let Some(v) = self.loop_body { - out.add_tuple("for_expr_loop_bodies", vec![id.into(), v.into()]); - } - if let Some(v) = self.pat { - out.add_tuple("for_expr_pats", vec![id.into(), v.into()]); - } - } -} - -impl trap::TrapClass for ForExpr { - fn class_name() -> &'static str { "ForExpr" } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme ForExpr is a subclass of AstNode - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme ForExpr is a subclass of Element - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme ForExpr is a subclass of Expr - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme ForExpr is a subclass of Locatable - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - #[derive(Debug)] pub struct ForType { pub id: trap::TrapId, @@ -5168,6 +5002,51 @@ impl From> for trap::Label { } } +#[derive(Debug)] +pub struct LabelableExpr { + _unused: () +} + +impl trap::TrapClass for LabelableExpr { + fn class_name() -> &'static str { "LabelableExpr" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme LabelableExpr is a subclass of AstNode + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme LabelableExpr is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme LabelableExpr is a subclass of Expr + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme LabelableExpr is a subclass of Locatable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + #[derive(Debug)] pub struct LetExpr { pub id: trap::TrapId, @@ -5559,66 +5438,58 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct LoopExpr { - pub id: trap::TrapId, - pub attrs: Vec>, - pub label: Option>, - pub loop_body: Option>, +pub struct MacroExpr { + pub id: trap::TrapId, + pub macro_call: Option>, } -impl trap::TrapEntry for LoopExpr { +impl trap::TrapEntry for MacroExpr { fn extract_id(&mut self) -> trap::TrapId { std::mem::replace(&mut self.id, trap::TrapId::Star) } fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("loop_exprs", vec![id.into()]); - for (i, v) in self.attrs.into_iter().enumerate() { - out.add_tuple("loop_expr_attrs", vec![id.into(), i.into(), v.into()]); - } - if let Some(v) = self.label { - out.add_tuple("loop_expr_labels", vec![id.into(), v.into()]); - } - if let Some(v) = self.loop_body { - out.add_tuple("loop_expr_loop_bodies", vec![id.into(), v.into()]); + out.add_tuple("macro_exprs", vec![id.into()]); + if let Some(v) = self.macro_call { + out.add_tuple("macro_expr_macro_calls", vec![id.into(), v.into()]); } } } -impl trap::TrapClass for LoopExpr { - fn class_name() -> &'static str { "LoopExpr" } +impl trap::TrapClass for MacroExpr { + fn class_name() -> &'static str { "MacroExpr" } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme LoopExpr is a subclass of AstNode +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MacroExpr is a subclass of AstNode unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme LoopExpr is a subclass of Element +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MacroExpr is a subclass of Element unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme LoopExpr is a subclass of Expr +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MacroExpr is a subclass of Expr unsafe { Self::from_untyped(value.as_untyped()) } } } -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme LoopExpr is a subclass of Locatable +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme MacroExpr is a subclass of Locatable unsafe { Self::from_untyped(value.as_untyped()) } @@ -5626,85 +5497,26 @@ impl From> for trap::Label { } #[derive(Debug)] -pub struct MacroExpr { - pub id: trap::TrapId, +pub struct MacroPat { + pub id: trap::TrapId, pub macro_call: Option>, } -impl trap::TrapEntry for MacroExpr { +impl trap::TrapEntry for MacroPat { fn extract_id(&mut self) -> trap::TrapId { std::mem::replace(&mut self.id, trap::TrapId::Star) } fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("macro_exprs", vec![id.into()]); + out.add_tuple("macro_pats", vec![id.into()]); if let Some(v) = self.macro_call { - out.add_tuple("macro_expr_macro_calls", vec![id.into(), v.into()]); + out.add_tuple("macro_pat_macro_calls", vec![id.into(), v.into()]); } } } -impl trap::TrapClass for MacroExpr { - fn class_name() -> &'static str { "MacroExpr" } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MacroExpr is a subclass of AstNode - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MacroExpr is a subclass of Element - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MacroExpr is a subclass of Expr - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme MacroExpr is a subclass of Locatable - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - -#[derive(Debug)] -pub struct MacroPat { - pub id: trap::TrapId, - pub macro_call: Option>, -} - -impl trap::TrapEntry for MacroPat { - fn extract_id(&mut self) -> trap::TrapId { - std::mem::replace(&mut self.id, trap::TrapId::Star) - } - - fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("macro_pats", vec![id.into()]); - if let Some(v) = self.macro_call { - out.add_tuple("macro_pat_macro_calls", vec![id.into(), v.into()]); - } - } -} - -impl trap::TrapClass for MacroPat { - fn class_name() -> &'static str { "MacroPat" } +impl trap::TrapClass for MacroPat { + fn class_name() -> &'static str { "MacroPat" } } impl From> for trap::Label { @@ -7914,77 +7726,6 @@ impl From> for trap::Label { } } -#[derive(Debug)] -pub struct WhileExpr { - pub id: trap::TrapId, - pub attrs: Vec>, - pub condition: Option>, - pub label: Option>, - pub loop_body: Option>, -} - -impl trap::TrapEntry for WhileExpr { - fn extract_id(&mut self) -> trap::TrapId { - std::mem::replace(&mut self.id, trap::TrapId::Star) - } - - fn emit(self, id: trap::Label, out: &mut trap::Writer) { - out.add_tuple("while_exprs", vec![id.into()]); - for (i, v) in self.attrs.into_iter().enumerate() { - out.add_tuple("while_expr_attrs", vec![id.into(), i.into(), v.into()]); - } - if let Some(v) = self.condition { - out.add_tuple("while_expr_conditions", vec![id.into(), v.into()]); - } - if let Some(v) = self.label { - out.add_tuple("while_expr_labels", vec![id.into(), v.into()]); - } - if let Some(v) = self.loop_body { - out.add_tuple("while_expr_loop_bodies", vec![id.into(), v.into()]); - } - } -} - -impl trap::TrapClass for WhileExpr { - fn class_name() -> &'static str { "WhileExpr" } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme WhileExpr is a subclass of AstNode - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme WhileExpr is a subclass of Element - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme WhileExpr is a subclass of Expr - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - -impl From> for trap::Label { - fn from(value: trap::Label) -> Self { - // SAFETY: this is safe because in the dbscheme WhileExpr is a subclass of Locatable - unsafe { - Self::from_untyped(value.as_untyped()) - } - } -} - #[derive(Debug)] pub struct WildcardPat { pub id: trap::TrapId, @@ -8166,6 +7907,106 @@ impl From> for trap::Label { } } +#[derive(Debug)] +pub struct BlockExpr { + pub id: trap::TrapId, + pub label: Option>, + pub attrs: Vec>, + pub is_async: bool, + pub is_const: bool, + pub is_gen: bool, + pub is_move: bool, + pub is_try: bool, + pub is_unsafe: bool, + pub stmt_list: Option>, +} + +impl trap::TrapEntry for BlockExpr { + fn extract_id(&mut self) -> trap::TrapId { + std::mem::replace(&mut self.id, trap::TrapId::Star) + } + + fn emit(self, id: trap::Label, out: &mut trap::Writer) { + out.add_tuple("block_exprs", vec![id.into()]); + if let Some(v) = self.label { + out.add_tuple("labelable_expr_labels", vec![id.into(), v.into()]); + } + for (i, v) in self.attrs.into_iter().enumerate() { + out.add_tuple("block_expr_attrs", vec![id.into(), i.into(), v.into()]); + } + if self.is_async { + out.add_tuple("block_expr_is_async", vec![id.into()]); + } + if self.is_const { + out.add_tuple("block_expr_is_const", vec![id.into()]); + } + if self.is_gen { + out.add_tuple("block_expr_is_gen", vec![id.into()]); + } + if self.is_move { + out.add_tuple("block_expr_is_move", vec![id.into()]); + } + if self.is_try { + out.add_tuple("block_expr_is_try", vec![id.into()]); + } + if self.is_unsafe { + out.add_tuple("block_expr_is_unsafe", vec![id.into()]); + } + if let Some(v) = self.stmt_list { + out.add_tuple("block_expr_stmt_lists", vec![id.into(), v.into()]); + } + } +} + +impl trap::TrapClass for BlockExpr { + fn class_name() -> &'static str { "BlockExpr" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme BlockExpr is a subclass of AstNode + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme BlockExpr is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme BlockExpr is a subclass of Expr + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme BlockExpr is a subclass of LabelableExpr + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme BlockExpr is a subclass of Locatable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + #[derive(Debug)] pub struct CallExpr { pub id: trap::TrapId, @@ -8842,6 +8683,60 @@ impl From> for trap::Label { } } +#[derive(Debug)] +pub struct LoopingExpr { + _unused: () +} + +impl trap::TrapClass for LoopingExpr { + fn class_name() -> &'static str { "LoopingExpr" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme LoopingExpr is a subclass of AstNode + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme LoopingExpr is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme LoopingExpr is a subclass of Expr + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme LoopingExpr is a subclass of LabelableExpr + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme LoopingExpr is a subclass of Locatable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + #[derive(Debug)] pub struct MacroCall { pub id: trap::TrapId, @@ -10005,3 +9900,270 @@ impl From> for trap::Label { } } } + +#[derive(Debug)] +pub struct ForExpr { + pub id: trap::TrapId, + pub label: Option>, + pub loop_body: Option>, + pub attrs: Vec>, + pub iterable: Option>, + pub pat: Option>, +} + +impl trap::TrapEntry for ForExpr { + fn extract_id(&mut self) -> trap::TrapId { + std::mem::replace(&mut self.id, trap::TrapId::Star) + } + + fn emit(self, id: trap::Label, out: &mut trap::Writer) { + out.add_tuple("for_exprs", vec![id.into()]); + if let Some(v) = self.label { + out.add_tuple("labelable_expr_labels", vec![id.into(), v.into()]); + } + if let Some(v) = self.loop_body { + out.add_tuple("looping_expr_loop_bodies", vec![id.into(), v.into()]); + } + for (i, v) in self.attrs.into_iter().enumerate() { + out.add_tuple("for_expr_attrs", vec![id.into(), i.into(), v.into()]); + } + if let Some(v) = self.iterable { + out.add_tuple("for_expr_iterables", vec![id.into(), v.into()]); + } + if let Some(v) = self.pat { + out.add_tuple("for_expr_pats", vec![id.into(), v.into()]); + } + } +} + +impl trap::TrapClass for ForExpr { + fn class_name() -> &'static str { "ForExpr" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ForExpr is a subclass of AstNode + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ForExpr is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ForExpr is a subclass of Expr + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ForExpr is a subclass of LabelableExpr + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ForExpr is a subclass of Locatable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme ForExpr is a subclass of LoopingExpr + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +#[derive(Debug)] +pub struct LoopExpr { + pub id: trap::TrapId, + pub label: Option>, + pub loop_body: Option>, + pub attrs: Vec>, +} + +impl trap::TrapEntry for LoopExpr { + fn extract_id(&mut self) -> trap::TrapId { + std::mem::replace(&mut self.id, trap::TrapId::Star) + } + + fn emit(self, id: trap::Label, out: &mut trap::Writer) { + out.add_tuple("loop_exprs", vec![id.into()]); + if let Some(v) = self.label { + out.add_tuple("labelable_expr_labels", vec![id.into(), v.into()]); + } + if let Some(v) = self.loop_body { + out.add_tuple("looping_expr_loop_bodies", vec![id.into(), v.into()]); + } + for (i, v) in self.attrs.into_iter().enumerate() { + out.add_tuple("loop_expr_attrs", vec![id.into(), i.into(), v.into()]); + } + } +} + +impl trap::TrapClass for LoopExpr { + fn class_name() -> &'static str { "LoopExpr" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme LoopExpr is a subclass of AstNode + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme LoopExpr is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme LoopExpr is a subclass of Expr + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme LoopExpr is a subclass of LabelableExpr + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme LoopExpr is a subclass of Locatable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme LoopExpr is a subclass of LoopingExpr + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +#[derive(Debug)] +pub struct WhileExpr { + pub id: trap::TrapId, + pub label: Option>, + pub loop_body: Option>, + pub attrs: Vec>, + pub condition: Option>, +} + +impl trap::TrapEntry for WhileExpr { + fn extract_id(&mut self) -> trap::TrapId { + std::mem::replace(&mut self.id, trap::TrapId::Star) + } + + fn emit(self, id: trap::Label, out: &mut trap::Writer) { + out.add_tuple("while_exprs", vec![id.into()]); + if let Some(v) = self.label { + out.add_tuple("labelable_expr_labels", vec![id.into(), v.into()]); + } + if let Some(v) = self.loop_body { + out.add_tuple("looping_expr_loop_bodies", vec![id.into(), v.into()]); + } + for (i, v) in self.attrs.into_iter().enumerate() { + out.add_tuple("while_expr_attrs", vec![id.into(), i.into(), v.into()]); + } + if let Some(v) = self.condition { + out.add_tuple("while_expr_conditions", vec![id.into(), v.into()]); + } + } +} + +impl trap::TrapClass for WhileExpr { + fn class_name() -> &'static str { "WhileExpr" } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme WhileExpr is a subclass of AstNode + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme WhileExpr is a subclass of Element + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme WhileExpr is a subclass of Expr + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme WhileExpr is a subclass of LabelableExpr + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme WhileExpr is a subclass of Locatable + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} + +impl From> for trap::Label { + fn from(value: trap::Label) -> Self { + // SAFETY: this is safe because in the dbscheme WhileExpr is a subclass of LoopingExpr + unsafe { + Self::from_untyped(value.as_untyped()) + } + } +} diff --git a/rust/ql/.generated.list b/rust/ql/.generated.list index 1d4dabf28710..6c3cf6ea6a07 100644 --- a/rust/ql/.generated.list +++ b/rust/ql/.generated.list @@ -1,4 +1,4 @@ -lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll a2d9717410e73aca512cad3af633700158ddd80b1c07dfd6ebe0f84723b4ac5b 3cfd6ae768958db3a4d633b4d781a8f4be80eb7a0d2ee871773584128e4551fd +lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll 4005dd5213c45c8f96e12f08d8a6a7532692d68a3cd9e3a0fd55d7f982a92f23 ec753357ac4fc76706acc0cf1d9208e63a0688e480ece52e4314d7dc2a743de5 lib/codeql/rust/elements/Abi.qll 4c973d28b6d628f5959d1f1cc793704572fd0acaae9a97dfce82ff9d73f73476 250f68350180af080f904cd34cb2af481c5c688dc93edf7365fd0ae99855e893 lib/codeql/rust/elements/ArgList.qll 661f5100f5d3ef8351452d9058b663a2a5c720eea8cf11bedd628969741486a2 28e424aac01a90fb58cd6f9f83c7e4cf379eea39e636bc0ba07efc818be71c71 lib/codeql/rust/elements/ArrayExpr.qll a3e6e122632f4011644ec31b37f88b32fe3f2b7e388e7e878a6883309937049f 12ccb5873d95c433da5606fd371d182ef2f71b78d0c53c2d6dec10fa45852bdc @@ -12,7 +12,7 @@ lib/codeql/rust/elements/Attr.qll 53887a49513b95e38344b57d824a7474331467561f1edf lib/codeql/rust/elements/AwaitExpr.qll d8b37c01f7d27f0ec40d92a533a8f09a06af7ece1ae832b4ea8f2450c1762511 92cdb7ff0efddf26bed2b7b2729fddd197e26c1a11c8fec0c747aab642710c21 lib/codeql/rust/elements/BecomeExpr.qll 7a3cfc4894feb6be1cde664f675b18936434e68ccea52e55314c33d01491e34f 49666eca509b30d44bb02702bda67239c76bf8d9f231022c9cf6ecca123f8616 lib/codeql/rust/elements/BinaryExpr.qll 394522da3bc3a716fc7bc40c3560143ca840f5d210cfcba2a752c3026dd0f725 fbbd6fb79bf16a7d9820613654c584cd7ff3e7a29988f3920b6cfbe746acfd8d -lib/codeql/rust/elements/BlockExpr.qll b952fd44b89de248931d4089834d2c9406f6f2fc1a3f5c2365156be4e55157cf daccc07ab11ac696679b9fadc99f40b1bf579c90bf6c7cca6e82eaa313932ede +lib/codeql/rust/elements/BlockExpr.qll b5cf57119b15f27d0bc258dfa375b0ef2730c157870ff543f0dc7a8cfe514182 f6a01999606b010c81ef9c6ff1385e6640632b6f5ce067ffeb0ef0af0a0aeb92 lib/codeql/rust/elements/BoxPat.qll 1b2c3fff171aa6aa238c9460b122f26c79e04577cea67fa856de99842ba873d4 0caf8d23ed6e0997a6b8751def27641582151fba6e24fccf798712a4690b42f1 lib/codeql/rust/elements/BreakExpr.qll 7ca3807a20e9a9a988d1fd7abebf240325ed422fcb45c719ba46272f031f94db dffb7379d3f3ba220acfbd05eb7bb6cfd9cfda211e9c8b1f5240ca5fa61be3fc lib/codeql/rust/elements/CallExpr.qll f336500ca7a611b164d48b90e80edb0c0d3816792b0ececce659ac1ff1ffeb3e f99a9c55466418ef53860c44d9f2d6161af4b492178ddd9e5870dff742b70ae5 @@ -39,7 +39,7 @@ lib/codeql/rust/elements/ExternItemList.qll bc96f188970e8dc0cd1e77dea3e49b715edf lib/codeql/rust/elements/FieldExpr.qll 8102cd659f9059cf6af2a22033cfcd2aae9c35204b86f7d219a05f1f8de54b3b f818169dddf5102095ae1410583615f80031376a08b5307d0c464e79953c3975 lib/codeql/rust/elements/FieldList.qll bd243adc4696c60f636055a1c2da28039fe2028476c9247eb6a68003b849b757 ab63cdf410afd1e515f873b49f46bb5c2bf27e6c78fd206ccbdba064c4c0a4b2 lib/codeql/rust/elements/FnPtrType.qll c4a90dc660cf620972dc23b95494f5caf9f050eabd4bdb52fdc061f8797ba9a1 f8defc91582fa503607664668f9e2e6c2cd8b320c7c449610f21e52e332a129f -lib/codeql/rust/elements/ForExpr.qll 312804d53dd9236a2f2a15c9d6ec348b46e139a54eb5893e7e12487725df7444 fa5e20099b1179033bc209bad3548e3d1d4019c7fe0e455cec8ca1a9d48692ab +lib/codeql/rust/elements/ForExpr.qll 0cc8bfe10b8baf62a1ff65c8463cfb17ab64b41c30c9e1edb962a227df2036d9 b1be73294e6da0f49fd32177ad0b05fecf26081d5ce424f288be99a4bd59cc84 lib/codeql/rust/elements/ForType.qll 0036bed8749358c356d78c4a0eef40d73e2796284293cde5604ae70ddd6d0470 4edcaf8f7c67d42ebe3ebb1be6a7643758717d4fe88f5f648b6a1c5ff4ee4de7 lib/codeql/rust/elements/Format.qll 51222fa2d2e85d496ab093d74d3bc606ede3ce48f926106e059dc8478e657203 b4da6be38413c86f2e9d82004624abab16e23ef238197a5c85246009cce276d5 lib/codeql/rust/elements/FormatArgsArg.qll 5bc9b4cd1bac7131165836e93838c45452a08ea6011741cbddace3cbf9c69440 f825140e98dc9800d5c045402186793c7b21511448e2f6bf6402d1e06305219c @@ -60,6 +60,7 @@ lib/codeql/rust/elements/InferType.qll c71184ae6aa181be94e299882503350e057493e17 lib/codeql/rust/elements/Item.qll 5c9148ff0eaeb4404c2d8156e7df0ef5753fd44ead972da05a49659ddaa25480 78446f788617e40525d4d4b489848e75f2143a90e18d40974c3bff7b1e7c825c lib/codeql/rust/elements/ItemList.qll c33e46a9ee45ccb194a0fe5b30a6ad3bcecb0f51486c94e0191a943710a17a7d 5a69c4e7712b4529681c4406d23dc1b6b9e5b3c03552688c55addab271912ed5 lib/codeql/rust/elements/Label.qll a31d41db351af7f99a55b26cdbbc7f13b4e96b660a74e2f1cc90c17ee8df8d73 689f87cb056c8a2aefe1a0bfc2486a32feb44eb3175803c61961a6aeee53d66e +lib/codeql/rust/elements/LabelableExpr.qll 598be487cd051b004ab95cbbc3029100069dc9955851c492029d80f230e56f0d 92c49b3cfdaba07982f950e18a8d62dae4e96f5d9ae0d7d2f4292628361f0ddc lib/codeql/rust/elements/LetElse.qll 85d16cb9cb2162493a9bacfe4b9e6a3b325d9466175b6d1a8e649bdf2191b864 c268d0878e9f82e8ede930b3825745c39ab8cd4db818eb9be6dc5ca49bee7579 lib/codeql/rust/elements/LetExpr.qll 435f233890799a9f52972a023e381bc6fe2e0b3df1e696dc98b21682a3c1d88e b34da72dd222a381e098f160551ec614ebb98eb46af35c6e1d337e173d8ec4b9 lib/codeql/rust/elements/LetStmt.qll e589d750ff87c25e28e15dab61e1a3555a45ced42158b05c991c6f5873abd86a 383484181b825cd7bc20e014fc4d5888f66e1f257502e1893f3d55aed2cdef3d @@ -69,7 +70,8 @@ lib/codeql/rust/elements/LifetimeParam.qll db9f2c7bb32d49808993b400875e79560ac54 lib/codeql/rust/elements/LiteralExpr.qll 40b67404b7c2b81e5afabc53a2a93e0a503f687bb31a2b4bfa4e07b2d764eb8d 67ab1be2286e769fba7a50ca16748e3c141760ccaefaebae99faa71f523a43d5 lib/codeql/rust/elements/LiteralPat.qll daffb5f380a47543669c8cc92628b0e0de478c3ac82685802c63e8d75a206bed adfe9796598cf6ca4a9170c89ffd871e117f1cea6dd7dd80ecbbb947327a1a5d lib/codeql/rust/elements/Locatable.qll 2855efa4a469b54e0ca85daa89309a8b991cded6f3f10db361010831ba1e11d3 00c3406d14603f90abea11bf074eaf2c0b623a30e29cf6afc3a247cb58b92f0f -lib/codeql/rust/elements/LoopExpr.qll 58ade0bc4a01a1cc361363682fde3ea56f4c5fbb4b28f5723ceff52ebaf897d7 fa299162c742bcf3b2211dc20821b312e3c133350c288a050eb26e6f8b5a5c78 +lib/codeql/rust/elements/LoopExpr.qll ee171177650fa23eef102a9580765f4b6073a1cc41bab1ec31ad4f84ffe6c2c9 bfcf0cca4dc944270d9748a202829a38c64dfae167c0d3a4202788ceb9daf5f6 +lib/codeql/rust/elements/LoopingExpr.qll 7ad7d4bbfd05adc0bb9b4ca90ff3377b8298121ca5360ffb45d5a7a1e20fe37a 964168b2045ee9bad827bba53f10a64d649b3513f2d1e3c17a1b1f11d0fc7f3a lib/codeql/rust/elements/MacroCall.qll a39a11d387355f59af3007dcbab3282e2b9e3289c1f8f4c6b96154ddb802f8c3 88d4575e462af2aa780219ba1338a790547fdfc1d267c4b84f1b929f4bc08d05 lib/codeql/rust/elements/MacroDef.qll acb39275a1a3257084314a46ad4d8477946130f57e401c70c5949ad6aafc5c5f 6a8a8db12a3ec345fede51ca36e8c6acbdce58c5144388bb94f0706416fa152a lib/codeql/rust/elements/MacroExpr.qll ea9fed13f610bab1a2c4541c994510e0cb806530b60beef0d0c36b23e3b620f0 ad11a6bbd3a229ad97a16049cc6b0f3c8740f9f75ea61bbf4eebb072db9b12d2 @@ -97,12 +99,12 @@ lib/codeql/rust/elements/ParenExpr.qll b635f0e5d300cd9cf3651cfcefd58316c21727295 lib/codeql/rust/elements/ParenPat.qll 40d033de6c85ad042223e0da80479adebab35494396ab652da85d3497e435c5a 8f2febe5d5cefcb076d201ae9607d403b9cfe8169d2f4b71d13868e0af43dc25 lib/codeql/rust/elements/ParenType.qll e1f5695b143c97b98ccdb460a5cf872461cfc13b83a4f005f26c288dc0afae10 1164f8efae7f255925411bddb33939fab0bf1c07955a16fef173b3f4675d09ae lib/codeql/rust/elements/Pat.qll 56211c5cb4709e7c12a2bfd2da5e413a451672d99e23a8386c08ad0b999fd45c b1b1893a13a75c4f0390f7e2a14ee98a46f067cfdc991a8d43adc82497d20aff -lib/codeql/rust/elements/Path.qll a0078e6d57dfd5a3b7fb2be4587f55f8e9c65ee042815a8a5b8dbd5273b4076a 0e2d4f8cbd54bd60aa4929b5fd50fe214346b6c0451f73e45143445d15420108 +lib/codeql/rust/elements/Path.qll 94869df09b929c4a60bae42b7e3a66c007f41078c08b7d9c6defb705b953ce8e eb317f75b89978d41fd3b166c7e3d871da4c04b3e17afbbcd0a5d73881e0d1d9 lib/codeql/rust/elements/PathExpr.qll 906df1d80c662b79f1b0b0428c39754b7f8dbcb2234919dd45dd8206a099dd36 1d6015afab6378c926c5838c9a5772cfcfeedf474e2eeca3e46085300ff8d4e1 lib/codeql/rust/elements/PathExprBase.qll bb41092ec690ae926e3233c215dcaf1fd8e161b8a6955151949f492e02dba13a b2257072f8062d31c29c63ee1311b07e0d2eb37075f582cfc76bb542ef773198 lib/codeql/rust/elements/PathPat.qll 6897e69bcb24b56d39ede796cf5767988dcd5741e02333fa8495dd7c814f771a 2a011fb92f17e4b4ff713e6d29f591054dfede22a9aaa006e67fca2c23ab76bf -lib/codeql/rust/elements/PathSegment.qll 536a8fe172db367e5f1dc678a014e2350eadfc379242d2b5451725e826ab1448 1a3a237f56c1d9ccdce6832ec6417fed25cd3e29ba836363cc6085e2125de4c5 -lib/codeql/rust/elements/PathType.qll a7bd3b05dc2c0e96c91c5485db508a1f5bb8fe3a01486be6815ae9dabb163add b11e996b6c0cc21a3d8d1ddc23c37e4d54a78e84a9278b3ceca1e94cb7321532 +lib/codeql/rust/elements/PathSegment.qll 9560551cf8b65e84705e7f302e12b48330e048613129e87c0f65a7eb297a6cc3 3aa75a5fd81f8ea32bd2b4bf0c51c386de57cbe9ab035fe3ec68ad7fcf51b375 +lib/codeql/rust/elements/PathType.qll 257ede178bb74ebdb8e266ebaa95082e7fb7cc8d921ef476f4df268ee8a1366c c48f6e04a8945a11f965e71819f68c00abc53a055042882b61716feda3ca63ae lib/codeql/rust/elements/PrefixExpr.qll 107e7bd111b637fd6d76026062d54c2780760b965f172ef119c50dd0714a377d 46954a9404e561c51682395729daac3bda5442113f29839d043e9605d63f7f6d lib/codeql/rust/elements/PtrType.qll b137f47a53e41b3b30c7d80dbdd6724bf15f99530ca40cc264a04af5f07aa878 b2ffdf739bfb7564d942fe54409834a59511c0b305b6d5b2219a8ee0ef594332 lib/codeql/rust/elements/RangeExpr.qll 43785bea08a6a537010db1138e68ae92eed7e481744188dfb3bad119425ff740 5e81cfbdf4617372a73d662a248a0b380c1f40988a5daefb7f00057cae10d3d4 @@ -161,7 +163,7 @@ lib/codeql/rust/elements/VariantList.qll 07adfe5750b2d5b50c8629f36feba24edd84f75 lib/codeql/rust/elements/Visibility.qll d2cf0727efaf8df6b3808cb4a6b2e26d18e42db766d92e97ad3ef046d91cb9e5 8947a1e2d48b532c6455ddf143fa5b1dff28c40da1f1c6a72769fc9db7ecbaf6 lib/codeql/rust/elements/WhereClause.qll da51212766700e40713fff968078a0172a4f73eebc5425d8e0d60b03c2fe59fa 0ec036aea729b8f4af0eb8118911dce715e2eb4640ae7b5e40a007a48da03899 lib/codeql/rust/elements/WherePred.qll 4815cd8f2a536c895e1f6831bef2ee6b9ea42c4fea12df1f164de1c965795bc1 3b46806767d81218d2e21656afe39c957c364ff7067c9af3ae8bacbf7f93858b -lib/codeql/rust/elements/WhileExpr.qll 9c12c26f953163c70020669327bd8c931493ef7fb4b75e6711202c0bab1d2697 2e2c96425bcd4414c65d9069a71a5123a3a10dd1449cafc121ac08f91ea49728 +lib/codeql/rust/elements/WhileExpr.qll 9e0c23057bf3fa3e050d5f6de0650f554ce576861783ea7d1e4c7d35db129ad3 b294c4f6e4dea922a4274779287edcb484409b2654a553298626ded9d1e8c5a4 lib/codeql/rust/elements/WildcardPat.qll 4f941afc5f9f8d319719312399a8f787c75a0dbb709ec7cf488f019339635aab a9140a86da752f9126e586ddb9424b23b3fb4841a5420bac48108c38bb218930 lib/codeql/rust/elements/YeetExpr.qll 4172bf70de31cab17639da6eed4a12a7afcefd7aa9182216c3811c822d3d6b17 88223aab1bef696f508e0605615d6b83e1eaef755314e6a651ae977edd3757c3 lib/codeql/rust/elements/YieldExpr.qll de2dc096a077f6c57bba9d1c2b2dcdbecce501333753b866d77c3ffbe06aa516 1f3e8949689c09ed356ff4777394fe39f2ed2b1e6c381fd391790da4f5d5c76a @@ -170,7 +172,6 @@ lib/codeql/rust/elements/internal/AbiImpl.qll 01439712ecadc9dc8da6f74d2e19cee13c lib/codeql/rust/elements/internal/ArgListConstructor.qll a73685c8792ae23a2d628e7357658efb3f6e34006ff6e9661863ef116ec0b015 0bee572a046e8dfc031b1216d729843991519d94ae66280f5e795d20aea07a22 lib/codeql/rust/elements/internal/ArgListImpl.qll 19664651c06b46530f0ae5745ccb3233afc97b9152e053761d641de6e9c62d38 40af167e571f5c255f264b3be7cc7f5ff42ec109661ca03dcee94e92f8facfc6 lib/codeql/rust/elements/internal/ArrayExprConstructor.qll f4ac4efefe5fe4fe1e666f35b1ee92d2243d977b3f3308151c89f61582203c09 4167ae58ec869f7dbd8467093c4a53afd7c1efcf1cc865efa62b4eb484bd7ff8 -lib/codeql/rust/elements/internal/ArrayExprImpl.qll 205db9816ec56409db1a0c3987e3a64b8e88b9942055d4bcf84a5fd5943efded 094c954c2861fa7dea69247c9c16ddc6c8699dcd3201a993c72229450bed1490 lib/codeql/rust/elements/internal/ArrayTypeConstructor.qll 9e92e6c40df992b4d71ae0e80392e81499604c7586a671b89d31d2d98060380e 76a1915a88f50ffa60bf129237bae2d66cf26d2a9018aca8ccb343929e847531 lib/codeql/rust/elements/internal/ArrayTypeImpl.qll e22d4f4eb21ba1ea44dd53e0c80aa60ec3a42818c1fc2d512c92dc496a6e2cb3 1b4a7347dbb9310ace1e9e3d08c3ba53c1dc441539cebcb4a78f64a58097bc0a lib/codeql/rust/elements/internal/AsmExprConstructor.qll 36c68023b58beec30af9f05d9d902a4c49faa0206b5528d6aad494a91da07941 4d91b7d30def03e634b92c0d7b99b47c3aadd75f4499f425b80355bc775ea5b6 @@ -183,25 +184,19 @@ lib/codeql/rust/elements/internal/AssocTypeArgImpl.qll 429f12a1a53c81634fc35331b lib/codeql/rust/elements/internal/AttrConstructor.qll de1dd30692635810277430291ba3889a456344dbd25938d9f8289ab22506d5cd 57b62b2b07dee4a9daeed241e0b4514ba36fd5ec0abb089869a4d5b2c79d6e72 lib/codeql/rust/elements/internal/AttrImpl.qll 486d307f74a48e6475fe014b07d5e0e13bbdf493ea80823e77e39747edf470d7 0847aa78d0e075aedbe46c10935969046bde4a7ab842da9d184739eb99a777c2 lib/codeql/rust/elements/internal/AwaitExprConstructor.qll 44ff1653e73d5b9f6885c0a200b45175bb8f2ceb8942c0816520976c74f1fc77 11e6f4a1e1462a59e2652925c8bd6663e0346c311c0b60ebe80daa3b55b268b0 -lib/codeql/rust/elements/internal/AwaitExprImpl.qll 97eb9abc0f30ead9385f31c87b461e6f1bbfbeaac17810838bb94543bfca181f 66357ffc8c106aae565524d7110e9f50f2b3f573b1508c1d1b02db02af4cc52e lib/codeql/rust/elements/internal/BecomeExprConstructor.qll ba073aaa256cb8827a0307c3128d50f62b11aac0b1f324e48c95f30351a9b942 3a787ded505c3158fa4f4923f66e8ecdcb7b5f86f27f64c5412dc32dca031f18 -lib/codeql/rust/elements/internal/BecomeExprImpl.qll 8522410257ca9ff09e5314c3a39fba02f6ba18e1d4349b91f8823586317f3e47 073a877a6d72c5b762aac64cdd843fd2872aaefb9e264fb90eac8c25753a6e07 lib/codeql/rust/elements/internal/BinaryExprConstructor.qll 7f9b17757f78b9fb7c46e21d2040a77fa50083bef4911c8464991c3d1ad91d87 a59390cd8e896c0bfbdc9ba0674e06d980ffcefa710fbc9886be52ed427e9717 lib/codeql/rust/elements/internal/BlockExprConstructor.qll 438337c807645e98a01440f3f4610d68b0567ba15c8f51dc43bf5a30c9af3696 48ce7a546910c884619762349b8ada9836284f8008298fdb0070a38f7ddf25a0 lib/codeql/rust/elements/internal/BlockExprImpl.qll 36ac09e4a6eeeec22919b62b1d004bdb5bb2527e67932c308aec383a770768d6 3b4b2a2014f6fe075c63a2d633b297566b548ef2e4343cadf067a9edbcadc876 lib/codeql/rust/elements/internal/BoxPatConstructor.qll 153f110ba25fd6c889092bfd16f73bb610fa60d6e0c8965d5f44d2446fcd48a2 9324cf0d8aa29945551bf8ab64801d598f57aab8cd4e19bcd4e9ef8a4a4e06eb -lib/codeql/rust/elements/internal/BoxPatImpl.qll d62a3cc1d5bab6bd258f702ec731ec57f0e5ef2672ab9de4b6f3b558078629eb 26b4fabb676adbbdb0d7f81449e493ee49380ea04d131f779714ac2434bb323a lib/codeql/rust/elements/internal/BreakExprConstructor.qll 356be043c28e0b34fdf925a119c945632ee883c6f5ebb9a27003c6a8d250afd9 bb77e66b04bb9489340e7506931559b94285c6904b6f9d2f83b214cba4f3cfd5 lib/codeql/rust/elements/internal/CallExprBaseImpl.qll d2749cc1a9d7ee8bf7f34b6c3e0238a576a68e439a8c10a503c164ff45ffcbeb ffc7b0a8841945fe6736b0e1aed7d9ed69185db03dee2b16da121325b39397c7 lib/codeql/rust/elements/internal/CallExprConstructor.qll 742b38e862e2cf82fd1ecc4d4fc5b4782a9c7c07f031452b2bae7aa59d5aa13a cad6e0a8be21d91b20ac2ec16cab9c30eae810b452c0f1992ed87d5c7f4144dc -lib/codeql/rust/elements/internal/CallExprImpl.qll 7e48610680ba6f2876a1a005ab0743496dd2364b9c44aca441bd33e11317e2d7 bb12c3c28156b40796fe3ba112760f87bb5abb323aab3c5b7bb3e0facaef8d35 lib/codeql/rust/elements/internal/CallableImpl.qll 917a7d298583e15246428f32fba4cde6fc57a1790262731be27a96baddd8cf5e c5c0848024e0fe3fbb775e7750cf1a2c2dfa454a5aef0df55fec3d0a6fe99190 lib/codeql/rust/elements/internal/CastExprConstructor.qll f3d6e10c4731f38a384675aeab3fba47d17b9e15648293787092bb3247ed808d d738a7751dbadb70aa1dcffcf8af7fa61d4cf8029798369a7e8620013afff4ed -lib/codeql/rust/elements/internal/CastExprImpl.qll 3c57b75f01efc70013ba3f05bd79fe2747fe1d1de47b84ff73b06ad38b4f1093 da813adc3390d23ec0643e37226a58e8afdb78e889380ad265d7531a344b841c lib/codeql/rust/elements/internal/ClosureBinderConstructor.qll 6e376ab9d40308e95bcdaf1cc892472c92099d477720192cd382d2c4e0d9c8a1 60a0efe50203ad5bb97bdfc06d602182edcc48ac9670f2d27a9675bd9fd8e19f lib/codeql/rust/elements/internal/ClosureBinderImpl.qll 58c6b17d34d678802ce3484f556482f3f6e3c3ff9a4be0e845bc2077818ab6fb 467261e12cba46f324364f5366bdb0034bf3c922b08307d39441ea5181e3f5f8 lib/codeql/rust/elements/internal/ClosureExprConstructor.qll a348229d2b25c7ebd43b58461830b7915e92d31ae83436ec831e0c4873f6218a 70a1d2ac33db3ac4da5826b0e8628f2f29a8f9cdfd8e4fd0e488d90ce0031a38 -lib/codeql/rust/elements/internal/ClosureExprImpl.qll 5ae3d211273b3effc3bff9f06bcef480f8264084e0509e69b8ff29bc29f47b05 ff562bc8d15ecb76ada3111c7c74dd990a0e80f41a32477f5f2f7db9e8f71102 lib/codeql/rust/elements/internal/CommentConstructor.qll 0b4a6a976d667bf7595500dfb91b9cfc87460a501837ba5382d9a8d8321d7736 7d02d8c94a319dc48e7978d5270e33fc5c308d443768ff96b618236d250123f1 lib/codeql/rust/elements/internal/ConstArgConstructor.qll f63021dc1ca2276786da3a981d06c18d7a360b5e75c08bca5d1afece4f7c4a83 487a870cbf5ed6554d671a8e159edd9261d853eba2d28ce2bd459759f47f11f2 lib/codeql/rust/elements/internal/ConstArgImpl.qll 234fe6533c208a1731cdb423aa3a28909bd7e042dbc28bbedfd4f62e42b6f21e c576a49006f7a10483041fc07f2f0d089710ac61840be61a2e71140db709f9c6 @@ -215,7 +210,6 @@ lib/codeql/rust/elements/internal/ContinueExprConstructor.qll cd93f1b35ccdb031d7 lib/codeql/rust/elements/internal/DynTraitTypeConstructor.qll 2bfd81fdf116b76f4a62b47bed5f0a730c04ce79747ecd1d3b683b8de22ff4aa 375c57350c432351396b92f28fded1e95a8002e3a1b31f3b66039f9b3d9bdea9 lib/codeql/rust/elements/internal/DynTraitTypeImpl.qll 8ccf27db0b898f518874ae094e5c97206384ad2fd3f82f81a5ecaad953278f71 e28ab56b8814a804e23afa790ca0f9a2665195b0b316d6cc52936e76ce5c0011 lib/codeql/rust/elements/internal/EnumConstructor.qll eca1a13937faacb1db50e4cf69d175f992f2204a5aaed9144bb6f3cb63814ac5 1bafba78b2729fdb052a25a1ba3f4f70871564aa4df632b4a1d467858a437924 -lib/codeql/rust/elements/internal/EnumImpl.qll c4dfa97b0c656957390417ab09c81b29b67fbff1b7b14976d65625ebea6b2c11 940303d4d4cec130f1981d309f8eaea6803c14a41174bbe9a87dd12ce4975945 lib/codeql/rust/elements/internal/ExprImpl.qll ab20ee174e2e786f34af6e5dedf3ec071bb89fc266b3e91df6377f72aa38d3f2 f68192700f449bf1c229cfbaabd5353c7c559941c915d5a0c88752cf9844194b lib/codeql/rust/elements/internal/ExprStmtConstructor.qll dd6bb06a7d48c12f630aafd611621cc50ce0f3e7d9abba5484a695f90879264b dc8b6ec8acc314e041ae71868803630c5d4cab488c72c1ea929bb756e1847c52 lib/codeql/rust/elements/internal/ExprStmtImpl.qll 420221c64245b490dab85f4e50d6b408cf488349869eb87312c166e185ad8145 2c2a4c71eea8c1ad8823e8e22780fadebb38ae502b3a7b9b062923a188fef692 @@ -227,12 +221,10 @@ lib/codeql/rust/elements/internal/ExternItemImpl.qll 577c8ac387c47746e3b45f94337 lib/codeql/rust/elements/internal/ExternItemListConstructor.qll 9e4f6a036707c848c0553119272fd2b11c1740dd9910a626a9a0cf68a55b249b efde86b18bd419154fb5b6d28790a14ea989b317d84b5c1ddbdfb29c6924fd86 lib/codeql/rust/elements/internal/ExternItemListImpl.qll e89d0cf938f6e137ba1ce7907a923b1ab2be7be2fdd642c3b7a722f11b9199f8 85906d3ce89e5abc301cc96ea5104d53e90af3f5f22f8d54ec437687096e39d8 lib/codeql/rust/elements/internal/FieldExprConstructor.qll b3be2c4ccaf2c8a1283f3d5349d7f4f49f87b35e310ef33491023c5ab6f3abc5 645d0d4073b032f6b7284fc36a10a6ec85596fb95c68f30c09504f2c5a6f789f -lib/codeql/rust/elements/internal/FieldExprImpl.qll bae3828bdee6fa3b36219e831cecc2a09fd3c40c4a945f8a19fb5d8765c6f302 be4b89e39013a380bc172ac46e496f14ebdebb1d93e1b7ffb3bab98e08db3f6f lib/codeql/rust/elements/internal/FieldListImpl.qll 02a09d1d146030c68cead4614f4eef75854f19e55ed1eda60b34c4858a8d4a88 9b9f5e77546434c771d2f785119577ec46569a18473daa4169fb84a097369493 lib/codeql/rust/elements/internal/FnPtrTypeConstructor.qll 494c53ee599039c02145f91394d8dfe7635b32d03f9fcde5efcc99ced437fec8 992462b1b6b9e64b6201f3c6c232ca524f126efcb562c9f0c176677bb559f33c lib/codeql/rust/elements/internal/FnPtrTypeImpl.qll 5d70f71e08341dfa851fc53a47cf362786b57f44244a636e2fbbad3d1c41371e 51d6a1b1132204129bb8ee9d2b72c6d13ce4b3ec8b185d3732d2e64d3f80e807 lib/codeql/rust/elements/internal/ForExprConstructor.qll d79b88dac19256300b758ba0f37ce3f07e9f848d6ae0c1fdb87bd348e760aa3e 62123b11858293429aa609ea77d2f45cb8c8eebae80a1d81da6f3ad7d1dbc19b -lib/codeql/rust/elements/internal/ForExprImpl.qll 88fc37b7030d3bfca6071f275c4eac6760ad7dea9a01135cee2079170efeb9d5 cd7216c460f8382498dfb0d61d65d83a9aa608b6a9b6657ccd552b82b55ffc5a lib/codeql/rust/elements/internal/ForTypeConstructor.qll 32c40b78aded314b5f51af904bfbd5ae4f1f0ea65854dd6249983cc26b8601bc 729069d58fac648a4b212b0068fb6bca348443b502c38978f171a7539b24333f lib/codeql/rust/elements/internal/ForTypeImpl.qll b515639844778d0fbe51e6161a2ec19201b0ba15156a91cdfecc93523081fd61 ab0c09ee415e55db6abcc07493a5d880c5ae0974f0cb760194e40b68a961676b lib/codeql/rust/elements/internal/FormatArgsArgConstructor.qll 8bd9b4e035ef8adeb3ac510dd68043934c0140facb933be1f240096d01cdfa11 74e9d3bbd8882ae59a7e88935d468e0a90a6529a4e2af6a3d83e93944470f0ee @@ -241,45 +233,33 @@ lib/codeql/rust/elements/internal/FormatArgsExprConstructor.qll ce29ff5a839b885b lib/codeql/rust/elements/internal/FunctionConstructor.qll b50aea579938d03745dfbd8b5fa8498f7f83b967369f63d6875510e09ab7f5d2 19cca32aeaecaf9debc27329e8c39ecec69464bb1d89d7b09908a1d73a8d92a2 lib/codeql/rust/elements/internal/GenericArgImpl.qll 6b1b804c357425c223f926e560a688e81506f5a35b95485cecf704e88cc009ee cc1ccf6a23dadc397e82664f3911d4b385d4c8ca80b1ee16d5275d9c936148dd lib/codeql/rust/elements/internal/GenericArgListConstructor.qll 46859bb3eb09d77987a18642d65ba2e13471a4dc9c0a83a192fddc82e37c335c 2c7d54c876269a88d3461b05745e73b06532b1616cae9b614ac94b28735d8fc4 -lib/codeql/rust/elements/internal/GenericArgListImpl.qll 1a39ba7080147abccaaba451852c9c124fb6177f2ebd64e38ee74014444a34e1 80df3150c961936037ac02b46ef5f775c3f82e66490afbca00a016cb9eee798a lib/codeql/rust/elements/internal/GenericParamImpl.qll f435f80d7f275803c1311d362467f4a367deb5a2c0245b17a9e12468a2c3ce2f 8e8fcc29f510efa03ce194ad3a1e2ae3fbd7f8e04ab5a4a2d1db03e95f388446 lib/codeql/rust/elements/internal/GenericParamListConstructor.qll 7221146d1724e0add3a8e70e0e46670142589eb7143425e1871ac4358a8c8bdb 2fbb7576444d6b2da6164245e2660d592d276ae2c1ca9f2bda5656b1c5c0a73a lib/codeql/rust/elements/internal/GenericParamListImpl.qll 524aa0949df6d4d2cb9bee6226650f63a6f181d7644933fa265673b281074885 27b0210e5eaa2040bc8a093e35e1394befb6994b25369544738d0447ef269a9c lib/codeql/rust/elements/internal/IdentPatConstructor.qll 09792f5a070996b65f095dc6b1b9e0fb096a56648eed26c0643c59f82377cab0 0bb1a9fcdc62b5197aef3dd6e0ea4d679dde10d5be54b57b5209727ba66e078b lib/codeql/rust/elements/internal/IfExprConstructor.qll 03088b54c8fa623f93a5b5a7eb896f680e8b0e9025488157a02c48aaebc6ad56 906f916c3690d0721a31dd31b302dcdcec4233bb507683007d82cf10793a648f -lib/codeql/rust/elements/internal/IfExprImpl.qll 96dc5be0a650a74f96e0c2214eb58f1af5278ad1695ad790b660fdecb6738c14 06a292fcc459297ef3a0ef5c75c887f993ccd6350eb3fb0d2493e5b7c7199b6b lib/codeql/rust/elements/internal/ImplConstructor.qll 24edccca59f70d812d1458b412a45310ddc096d095332f6e3258903c54c1bb44 7eb673b3ab33a0873ee5ce189105425066b376821cce0fc9eb8ace22995f0bc7 -lib/codeql/rust/elements/internal/ImplImpl.qll 33a57be871fe3ab08467a65f2e2e9fb7df9f096c98e9f86d8a755eaf6da6e446 f01d0e9bfccf3926ae9720d3d660ba97e1c094f318bfb252449b2d387176f6a9 lib/codeql/rust/elements/internal/ImplTraitTypeConstructor.qll b47501280b026a4e9c21ace21d9ae59f4d126a3a1e03a6088ca38cd676cc4f6d 3b0b325ab0139b290a81355559227050ba3096a58f9ff01c4c0f5c5fb5beb6ee lib/codeql/rust/elements/internal/ImplTraitTypeImpl.qll 9826a676525c98c30019f62f3c5943b4f62f278ed738dcc023d15f82f36a9d32 da369a61b95685c29fce3c07082d2a58ab633d526d094fa9eaefa82f564609f6 lib/codeql/rust/elements/internal/IndexExprConstructor.qll 99bdc3d793c4dbd993860da60abe2b7c604345d645e86916462bc55a6939a5d1 3fe9d7da725956903707806aadbecac8d5b3874e8bed63c9bab54fff630e75dd -lib/codeql/rust/elements/internal/IndexExprImpl.qll 7914bace26dadf2c1752b65afad2ed226165507e20f3dba7949696103f3d586e 708a9f7eff1cbfcf93841ee009dc01354f4ea3d2e1e00608924e670070410e20 lib/codeql/rust/elements/internal/InferTypeConstructor.qll fb8f2aec6cd1e681cd84a7bd574459e19b9b2a152009290e2eac550f012a06b7 e2b1694f00a4e6a82b13d08d7bb95c98a73792370c1155263d696e60d39b2c3b -lib/codeql/rust/elements/internal/InferTypeImpl.qll 9d0bf471a7e0c2671aae52cebadc763ed13e6a62451bf22da3061d7781d8f0bf 4e9e218862e48700523d882eb64d24135289216653cf92195f74eb8a35f50d7c lib/codeql/rust/elements/internal/ItemImpl.qll 3eaa97dcbdb8870acaebc1e11a37a5cfdfa200751461e54d3a52ca48b90ba9bd 41fbd1110b0e24f4d5a3deee0a51c02d206178111a361a1e94501ca1ab70d7f7 lib/codeql/rust/elements/internal/ItemListConstructor.qll 08af3bd12536941c3dd4a43c81cc861be24325e242e2593c087a3ce632674291 2fa166159c409d2aaffa73a30babb40829a6de580bd40894d909ee6152801082 lib/codeql/rust/elements/internal/ItemListImpl.qll fb27417bb3ee17a739ae966dd7c6f382bc2a1de3e7efdfe1586d76a257c0b573 dee7ded650df8ef46b2ac9d472718536fd76dffee86bc208b5a6144060221886 lib/codeql/rust/elements/internal/LabelConstructor.qll 1f814c94251e664bfa1b1a606aef995382e40e78d4f953350ec951ee0bc8bd34 3157fb8c7c6bd365a739f217ad73ba1e0b65ccd59b922e5ab034e3449915b36c -lib/codeql/rust/elements/internal/LabelImpl.qll e1934c3f01e6c9a2517001285bc8e36166757a50ff63be09f9000171c04130f7 4f93e722af890b5241bf55674b29ac5cb134cfefb47eba983503dbd4212abb20 lib/codeql/rust/elements/internal/LetElseConstructor.qll b2b5d68e5701379a0870aa6278078e09f06aa18ddd14045fc6ae62e90827ece7 7359e70bea8a78bcaf6e6ecc8cc37c5135ae31415b74645594456cc8daa82118 -lib/codeql/rust/elements/internal/LetElseImpl.qll 1c801275993b809e80a847736f080a9b650710ef8862797504495d62904a3a71 b79d4760d8e333893e984e45f21eb463dce7f2a49ebd0708321c8653aa8c20cb lib/codeql/rust/elements/internal/LetExprConstructor.qll 66f27cbdafb2b72b31d99645ec5ed72f4b762a7d6f5d292d7639dd8b86272972 7da048f4d7f677919c41d5c87ead301eacc12ece634d30b30a8ae1fab580ff30 -lib/codeql/rust/elements/internal/LetExprImpl.qll d9e2f8a2f4c7cf3b80178012b5f38b029064a52e705301b99c7477ec1d9fe479 1a059d383a5988b32ade329d2ac809f3a830eb9c54020e3271861aa9ef136ab8 lib/codeql/rust/elements/internal/LetStmtConstructor.qll 7ee0d67bebd6d3b9c7560137c165675d17b231318c084952ba4a2226d61e501f 84199ba755bb6c00579eee245b2bca41da478ca813b202b05abaa1246dcf13d8 -lib/codeql/rust/elements/internal/LetStmtImpl.qll 2f3f387a78d1751652bd22dc0ea6cb39f0e186847b6f0dafd74d0f89e2db495a 2ab5a17f588e385f614c8a104a17a91859389227635bd239694a799643727ffc lib/codeql/rust/elements/internal/LifetimeArgConstructor.qll 270f7de475814d42e242e5bfe45d7365a675e62c10257110286e6a16ce026454 643d644b60bfe9943507a77011e5360231ac520fbc2f48e4064b80454b96c19b lib/codeql/rust/elements/internal/LifetimeArgImpl.qll 2d31b328c07b8922e2c448137d577af429150245170d26fe4a9220cba1a26bfe 18c5f5747ff4be87820c78cadd899d57e1d52c5cd6ae3f4e56ee2f5d3164bd41 lib/codeql/rust/elements/internal/LifetimeConstructor.qll 2babe40165547ac53f69296bb966201e8634d6d46bc413a174f52575e874d8cd ef419ae0e1b334d8b03cdb96bc1696787b8e76de5d1a08716e2ff5bd7d6dc60d -lib/codeql/rust/elements/internal/LifetimeImpl.qll 14ec1a4fa0c84fa9e75ea0babebae9c666909239806ed21325c32e47e11c8806 891168f29d4e06a927ec01ef8fd21ff6e0a0a3deadcf1481c99c74bf2ef20536 lib/codeql/rust/elements/internal/LifetimeParamConstructor.qll 530c59a701d814ebc5e12dc35e3bfb84ed6ee9b5be7a0956ea7ada65f75ff100 ff6507e5d82690e0eec675956813afabbbcfb89626b2dbfffe3da34baeff278c lib/codeql/rust/elements/internal/LifetimeParamImpl.qll 8909288801bff8d3e87096dff4b45f434a4c064a9d69d8943a0b30970e011ef9 6d8f80eca24112b5eb659fe5d5fca4fd91c3df20ecab1085dfee9176091237b8 lib/codeql/rust/elements/internal/LiteralExprConstructor.qll 8ea3569bd50704ce7d57be790d2dfd38f4c40cb0b12e0dd60d6830e8145a686f 88d07ad3298003f314f74bd8e3d64a3094de32080ad42a7e6741c416c3856095 lib/codeql/rust/elements/internal/LiteralPatConstructor.qll b660cb428a0cba0b713fc7b07d5d2921de4a2f65a805535fb6387684c40620de 2dbc9fbc56e9de53d24265d6b13738ef5b9ced33cc3c4c1c270e04dc2fc1330f -lib/codeql/rust/elements/internal/LiteralPatImpl.qll af74456649e3949bf27e91f2127389e5c9f2ee99241958afeaa5b55276170994 b8b744b1d0c1b85ec86c535a35fc75d6289636a0e1988500debf236faf24a2cd lib/codeql/rust/elements/internal/LoopExprConstructor.qll 45f3f8f7441fcab6adc58831421679ee07bac68ac0417f3cbc90c97426cc805b f7ab3361b4a11e898126378ea277d76949466946762cd6cb5e9e9b4bb9860420 -lib/codeql/rust/elements/internal/LoopExprImpl.qll 068b98978296b22ae59bf9e941e7e2683f4fee0f6c1affbda1fa42c93f015114 e40e384aeff61099d102a681e5dca1aabc6dd6694731f8570d6358e0197368b0 +lib/codeql/rust/elements/internal/LoopingExprImpl.qll 17885c1bcf7b5a3f9c7bbad3d4d55e24372af0dedd5e7fc0efcfc0a8b2cdad70 104dc45ca399b9f6e8227ad561679f728d60170398a52b31fc90cb2a2dd3c33c lib/codeql/rust/elements/internal/MacroCallConstructor.qll 707fee4fba1fd632cd00128f493e8919eaaea552ad653af4c1b7a138e362907d b49e7e36bf9306199f2326af042740ff858871b5c79f6aeddf3d5037044dbf1f -lib/codeql/rust/elements/internal/MacroCallImpl.qll 7732221a0d8677f32695be3e6263f6e5f8857225cf98cc31eb91592e175df260 7c4e15e092abbf3a6070141669f2614909eb0accaaee0da6f70495de6087337b lib/codeql/rust/elements/internal/MacroDefConstructor.qll 382a3bdf46905d112ee491620cc94f87d584d72f49e01eb1483f749e4709c055 eb61b90d8d8d655c2b00ff576ae20c8da9709eeef754212bc64d8e1558ad05ce lib/codeql/rust/elements/internal/MacroDefImpl.qll f26e787ffd43e8cb079db01eba04412dbf32c338938acf1bc09a2f094bbdfdfe 044f43bc94fe4b6df22afae32e9f039d1d0d9e85ad9f24b6388be71211c37ce5 lib/codeql/rust/elements/internal/MacroExprConstructor.qll b12edb21ea189a1b28d96309c69c3d08e08837621af22edd67ff9416c097d2df d35bc98e7b7b5451930214c0d93dce33a2c7b5b74f36bf99f113f53db1f19c14 @@ -295,7 +275,6 @@ lib/codeql/rust/elements/internal/MacroStmtsImpl.qll 27faff9da93ad7f22a6236c73eb lib/codeql/rust/elements/internal/MacroTypeConstructor.qll 0a23573a6f69b38f3d7470050b16197601d67bdd5a4b1a43a155b0b99ccdf6b5 19b623962e8e1f73e55e3ed9712d2a3fe84b9510b99062173902feb2458ec12a lib/codeql/rust/elements/internal/MacroTypeImpl.qll b8711279f09f521b05bb67568c089271b7913f863ee64dfdeec2c502de2cbdc8 51bd9d3a2fb2065bce7b193b485e225ca5c8ba2029e60cab427d43a90baf0880 lib/codeql/rust/elements/internal/MatchArmConstructor.qll b41c1d5822d54127ce376ef62c6a5fa60e11697319fc7d9c9c54fd313d784a93 96cca80e5684e5893c0e9c0dff365ef8ad9e15ff648c9969ba42d91f95abea05 -lib/codeql/rust/elements/internal/MatchArmImpl.qll 065dff16fc70b51924eb4db57be121283f4b5651105320901558bc93bfdf2641 37f4f6ecd23c5170ee5cb0041625c19a8d3245d56f6f1587a2e588eb86baecf9 lib/codeql/rust/elements/internal/MatchArmListConstructor.qll 8bc5ac978fe1158ef70d0ac06bdad9e02aadd657decb64abcc4ea03f6715a87a 4604ab0e524d0de6e19c16711b713f2090c95a8708909816a2b046f1bd83fe24 lib/codeql/rust/elements/internal/MatchArmListImpl.qll 896c6f1650e7ceb60d0b3d90e2b95fe7f8dc529203ddfec58edb063fa9b2871f a668fed1eb68806abfb021913786168d124de47b25da470e7b57f56bf8556891 lib/codeql/rust/elements/internal/MatchExprConstructor.qll 0355ca543a0f9ad56697bc2e1e2511fa3f233bc1f6344d9e1c2369106901c696 78622807a1c4bff61b751c715639510146c7a713e0c4f63246e9a2cf302f4875 @@ -307,46 +286,35 @@ lib/codeql/rust/elements/internal/MethodCallExprConstructor.qll a1b3c4587f0ae60d lib/codeql/rust/elements/internal/MissingConstructor.qll aab0b7f2846f14a5914661a18c7c9eae71b9bde2162a3c5e5e8a8ecafa20e854 8f30b00b5b7918a7500786cc749b61695158b5b3cc8e9f2277b6b6bf0f7850a0 lib/codeql/rust/elements/internal/MissingImpl.qll e81caa383797dfe837cf101fb78d23ab150b32fef7b47ffcc5489bfcd942ac3e 9f3212d45d77e5888e435e7babd55c1e6b42c3c16f5b1f71170ac41f93ee8d0b lib/codeql/rust/elements/internal/ModuleConstructor.qll 31cc83c9d8f25ac07375d19e568f05c068e1f5aa205ff3d9ac31c2510e6f8468 8a70f3f1c18ff87f17e6baf2f05ccaed55c70469288192fc39ef0bb5531b8c0e -lib/codeql/rust/elements/internal/ModuleImpl.qll bbff32cadbad54bdb613df8c1ac6da8cd2a80d0576361b843f1529e6c63b1938 7342473026561b8e4923625a083ba52c31d3b6797f9061accd1a712598244410 lib/codeql/rust/elements/internal/NameConstructor.qll a760134c6d4fc785746e1a5dc042a6bf25b8adaa3947a6897c31e50fd91dd5fd 1359f903d57112bcc1f62a609febb288301bfa810e569aa12e1045fd48b5b5c9 lib/codeql/rust/elements/internal/NameRefConstructor.qll 5ff6eacc614fd41f98b54cbb4960a07a1471cf4ea291758d33e54a48fd5d1bc4 c538d65414a24dfdbeb49cfd997588227559ba038f0b55d14bb5d89ed1a016f2 lib/codeql/rust/elements/internal/NeverTypeConstructor.qll 6a86bff9d885eddf39a159698710def40d693ccfd0888aefd090a283cb59ae95 9c51d6569f267dde5597067a8470d19d7714304399de4f730e7b85ca21feee20 -lib/codeql/rust/elements/internal/NeverTypeImpl.qll 8c7464cb76f9d081dab318d743817d87ecd69672f382d27323ade94c82e8e0f6 55351661214854bbf7faed6c7d17d598459d4e88eaba130a9b3a9f43f6665c37 lib/codeql/rust/elements/internal/OffsetOfExprConstructor.qll 616e146562adb3ac0fba4d6f55dd6ce60518ed377c0856f1f09ba49593e7bfab 80518ce90fc6d08011d6f5fc2a543958067739e1b0a6a5f2ed90fc9b1db078f0 lib/codeql/rust/elements/internal/OffsetOfExprImpl.qll e52d4596068cc54719438121f7d5afcaab04e0c70168ac5e4df1a3a0969817a6 6ab37e659d79e02fb2685d6802ae124157bf14b6f790b31688f437c87f40f52c lib/codeql/rust/elements/internal/OrPatConstructor.qll 4ef583e07298487c0c4c6d7c76ffcc04b1e5fe58aba0c1da3e2c8446a9e0c92b 980a6bd176ae5e5b11c134569910c5468ba91f480982d846e222d031a6a05f1a lib/codeql/rust/elements/internal/ParamConstructor.qll b98a2d8969f289fdcc8c0fb11cbd19a3b0c71be038c4a74f5988295a2bae52f0 77d81b31064167945b79b19d9697b57ca24462c3a7cc19e462c4693ce87db532 -lib/codeql/rust/elements/internal/ParamImpl.qll 8a5101559f5d636b60ab80237057944b537823ce054d760c3dbd58b2acf05a46 e7a08cefeb6a290a975899045b7b19a9624f5a2b0946cba0866b1854cc0c0fb0 lib/codeql/rust/elements/internal/ParamListConstructor.qll 3123142ab3cab46fb53d7f3eff6ba2d3ff7a45b78839a53dc1979a9c6a54920e 165f3d777ea257cfcf142cc4ba9a0ebcd1902eb99842b8a6657c87087f3df6fe lib/codeql/rust/elements/internal/ParamListImpl.qll 0ed6e9affe1dc0144641502292c2ddd51958fe3d503419caf15198176e3a4174 92d053cc5fdf40a2d98acb665083b5da15403d7da205779a97a4ee66fac0add4 lib/codeql/rust/elements/internal/ParenExprConstructor.qll 104b67dc3fd53ab52e2a42ffde37f3a3a50647aa7bf35df9ba9528e9670da210 d1f5937756e87a477710c61698d141cdad0ccce8b07ecb51bab00330a1ca9835 -lib/codeql/rust/elements/internal/ParenExprImpl.qll 185e7c0f8f377f62a7ccf1c0d168caf500afd0654b82d47569bfcb97e368a26d 25a41998ce0ff3490d677676bf02fea1861d6c01db99a02fc940cc37ae580db6 lib/codeql/rust/elements/internal/ParenPatConstructor.qll 9aea3c3b677755177d85c63e20234c234f530a16db20ab699de05ca3f1b59787 29f24aed0d880629a53b30550467ade09a0a778dbf88891769c1e11b0b239f98 -lib/codeql/rust/elements/internal/ParenPatImpl.qll 39c45b3736c4d0329af7a1eec28a8470c3f244efd58a6ba62af482a0e9b4a842 d8aa9e6f8987666cd51cb65f81700d3b4584d3dc7d070836e52a9bc64e572d9e lib/codeql/rust/elements/internal/ParenTypeConstructor.qll d62e656a4a3c8ffd4eb87d49585a7a3bfb5dbe3826fbcbd11cb87b46f34c19ae febf6535965afa0f6eac4d2b08730f5a07bbb36a7434abe0a7663d7264961a3f -lib/codeql/rust/elements/internal/ParenTypeImpl.qll 6f7b4fade4ac0af69bf9766ee7d73da3da1742ba8a7c12d2a067b71c7f96d849 f065ea466111a5abca33d97b9878ef2fcc221f286fc65bec87f3a9c2fd5d57fc lib/codeql/rust/elements/internal/PatImpl.qll 37c9b1da7aa625117644e2cd74ec0b174f69a38cf66926add01786a05d5ad2ad 143685a0b4873fa0b73b204285dca956e59b32d527bfac6cc336326d244994b7 lib/codeql/rust/elements/internal/PathConstructor.qll 5c6354c28faf9f28f3efee8e19bdb82773adcf4b0c1a38788b06af25bcb6bc4a 3e2aeef7b6b9cda7f7f45a6c8119c98803aa644cf6a492cf0fce318eba40fe8f lib/codeql/rust/elements/internal/PathExprBaseImpl.qll e8b09447ee41b4123f7d94c6b366b2602d8022c9644f1088c670c7794307ab2e 96b9b328771aaf19ba18d0591e85fcc915c0f930b2479b433de3bfdd2ea25249 lib/codeql/rust/elements/internal/PathExprConstructor.qll cf6e0a338a8ed2d1042bdee4c2c49be5827e8c572d8c56e828db265d39e59ae3 36a3d1b7c5cc2cf527616be787b32071b9e2a6613a4f6b3f82e2a3b0e02a516f lib/codeql/rust/elements/internal/PathPatConstructor.qll 966c4ea22218ef71e000d7ce8dd5b570c39ad96b9239a3aa8a38292e2a9f36d2 8a1f348e9257ffc6e6bedcd70389b8e7ec2a3ed6e7b3733744ddfab284826e57 -lib/codeql/rust/elements/internal/PathPatImpl.qll 6ab5b5959cfd94e74f60422cbdbd764a5f51ff541db428938c36ba3a512d1d6b 47585157460e8384047de307b0b05deaab758d0f07fd0183d874f7bb9d8bda4b lib/codeql/rust/elements/internal/PathSegmentConstructor.qll 2d9639e42035dc7e73b7d6ddb8a977beadc6b4492dee4292b2f85b4409344441 c337fc3b9ef56366428772563e3f25f711474d16e860d3e89c1395a95d9e83e7 lib/codeql/rust/elements/internal/PathTypeConstructor.qll 8949742c7ab7fcfa3a3f6469e87355a6888931ab9ac7a6a07d2bd51e3fdf8283 fb1a402e94e9a1f33b7757338d7e95b107933339615a4fe86de33e41206dd94a -lib/codeql/rust/elements/internal/PathTypeImpl.qll 0e3b85df054d1194505796e457ee31a8dac2a2a77284c077cbf1a3bfc179294e c198d4fdf8d1d55f1cf57685a9ad2adf88cc2d6d4f84bafa1e9f039192761399 lib/codeql/rust/elements/internal/PrefixExprConstructor.qll 90c50b0df2d4b4cbf5e2b7d67a9d243a1af9bfff660b7a70d8b9c7859c28bca7 1a1b5ea1f06ed8d41a658c872e8e1915c241a7c799c691df81b9a7b55d8f2f1e lib/codeql/rust/elements/internal/PtrTypeConstructor.qll ee3c4326ea3f198d2537a914dd6eb51d0cf247310f037e13e87632fbd6cfb50a 3814218b5271f3c6c45b52082cca2a3250a2573abced43fe53e1b4145374afe3 lib/codeql/rust/elements/internal/PtrTypeImpl.qll ff4283ffab39b4a3c0e55e7d655dfdb846171cde0907bf1f893c86b35d2c1135 e54d3a6fb0b5a1484f00fd5a4631455902bab80642c3bb076e538ddcc29a85a4 lib/codeql/rust/elements/internal/RangeExprConstructor.qll a0aa90a1c38c5deea56475399016afae2a00a858b961fbbab8ddeb3bc6a08103 0ddf1bcf28aafc56d7334e6138fb268f9b36a429e4cbdd982cd8384e0644076b -lib/codeql/rust/elements/internal/RangeExprImpl.qll a6ff92a27e44c2184f5c2d8483de1d0d4a77eb7a5154ff93a8f3a9fc8b63e561 d53d44bc1c1ae426f208595002adcddb88643e1027bbee7445095ca09e433331 lib/codeql/rust/elements/internal/RangePatConstructor.qll fe4345cb41d970ab64196ca37eccb26e5b9cf85fab4253cacfd2b31de03bd070 1d09d5ec8203d76aed2dfb7e7f14c0c07d6559c8f589e11860fff8a2c682c1a6 lib/codeql/rust/elements/internal/RangePatImpl.qll ef11ab2c002896036553231741a7cf896fafa09e22e920e15661b9cbe4393cae 24ac2dcce3055a77f3a5e0b38cf13aebefd2eeaefa53674ff144a6225634ac0d lib/codeql/rust/elements/internal/RecordExprConstructor.qll 742198bd8223902b5625b4a574a9e3539a8b6cf8e48eecc57cc2de4e980fba6e 0a99e454e234e8b7b59dc11b167172a5fcd31b8a5282349956d6fd861ec735df lib/codeql/rust/elements/internal/RecordExprFieldConstructor.qll 11620bc4e2dc7b3903be764cd9510a8e002892722b502876cf3467994aa7a63c e42e50747dd9453a44705b2d6a05e7a4a8c6debed988a0335a774a547d8f7157 -lib/codeql/rust/elements/internal/RecordExprFieldImpl.qll 8af196cbaeeb7997e933fde9ddba50ec099df51f66e03501f00157f238505fe7 29ae10546577a354b0439876ce5deb5ab13455028f02c01fe3903b11eaee35e2 lib/codeql/rust/elements/internal/RecordExprFieldListConstructor.qll 3a0d6ec872792c400d3a0a5ed1c5051b248a597a4b17ada1a078ea5d972b6721 52bae8222e7aa5bc89b73bec3fd1c3c1de0fe11bf30ccf5668454f63fbfc9b83 lib/codeql/rust/elements/internal/RecordExprFieldListImpl.qll 1210c23c0495f5d1a72409afc8c559f8da2b8c71340ff2944af9d1f684d0a856 fea96b053cad4135ab09b1c070a4c9f26507dd890a62c30772cf3e2358686640 -lib/codeql/rust/elements/internal/RecordExprImpl.qll 233b3f7ee8dbd1e5431bea5436c6b7ee38e631c041111dcf53e45c6c4c08a6cf 9537497edb739c535d75ce80122f597ad93241bff5399b1dae17a7bfff1c15cd lib/codeql/rust/elements/internal/RecordFieldConstructor.qll 9fc05f5101e48a45a028c479b35ec3d2f1a3cc33f0938667fcb813c5a4ab9526 98791dcf7f3209524f6132f9c26980e499cbcf94c1559e95c67544732245f05b lib/codeql/rust/elements/internal/RecordFieldImpl.qll 2612dae3c95c9064420a3494872213f7fd7a3e1133243f4adea8a30808a209ae 143b75bb539a1bfea16e1c764a1f549522ef9c8d6d5de3fef377bbf67ba42075 lib/codeql/rust/elements/internal/RecordFieldListConstructor.qll 9f1d916f3784092dcbff7224451c8f4f0daf6f8293a466b0a30ec9b92cd41358 8aafe377714a134287362c4b96439c1c6baa5a31c2c36a544bd5f73e9213477a @@ -356,22 +324,17 @@ lib/codeql/rust/elements/internal/RecordPatFieldConstructor.qll 6e1880ed05401b39 lib/codeql/rust/elements/internal/RecordPatFieldImpl.qll 04bc31b857c8250096d9d1bf3fad1e556a28d83bb3f3b48a3f049048d1e6785f 5853105e55650d05a4b196f17b89baf12b898df0a010e4f88289ce01d16a0379 lib/codeql/rust/elements/internal/RecordPatFieldListConstructor.qll b8f0ef9b75ffe6be6ce7e601d528f0a1b871123c63e39cead3fd13b8bd4f54b7 166f07c708ab8b3de6bfaf193bac93081b2aacad046aa86de7441085dd20a8c5 lib/codeql/rust/elements/internal/RecordPatFieldListImpl.qll 2d1dd9910480eb65c59fcef2e1576ce639be85c35d90e4bce721ce22ec742ba3 1e788a2d7d00e9f96dbf7e93d3a18d5bfb4d7749194ff8e9810e9053fa88a94b -lib/codeql/rust/elements/internal/RecordPatImpl.qll 3c7086be84e336c069f4c7b538c7ad32a7728e7fbf42e4dc7f04c4c99d393c0d 8020215f38639965398c62ddb36c3560579d63928e71e0d773b254e121a68cc3 lib/codeql/rust/elements/internal/RefExprConstructor.qll 9ad08c0f3d980a56a2af8857cb84db589941d20ab3ae5c8ece004ccaccaaf950 4cac3ace31b7ed77a72e989fce9cdbae2247f03c28a3f0c50d67385d02c7f193 -lib/codeql/rust/elements/internal/RefExprImpl.qll 56ed831a3b30ed375e7369b0a60b9b7635a1b00f058364a6b15078031a85af5f ca7e772b409514363e49d56a174ae9bd2e076755cbd09c4e7e5b732d09acdb25 lib/codeql/rust/elements/internal/RefPatConstructor.qll d8b88c2c468b08072f6f853306eb61eb88ee1e6c5cfb63958f115a64a9715bb3 0c1d6a8af6a66912698acce47e89d4e3239e67f89c228a36a141f9c685c36394 -lib/codeql/rust/elements/internal/RefPatImpl.qll 3e06e8130d412b47267497097cffc9f4b930b9e54bc90465ab5ac620fbe52048 b8ac844ec99f30605ce476f89ced4fb1159d2df0df43c631f60b3c868e0e1fd7 lib/codeql/rust/elements/internal/RefTypeConstructor.qll e1952aa69586b440f878400a52d09b2d12d5a29dbe9651360344631cb9493cd4 e4ae45e89472dfd4547d647c75e1635cf065a7d221ed60ed34554f265c0c5405 lib/codeql/rust/elements/internal/RefTypeImpl.qll f72b760a8a26be21170435da2cb2981638513617fd82742f45f38bc437d9f2c4 f32df49f0b6df85ca5fc4393ccd341ac4304b4947a282ccea48468a26837ef3d lib/codeql/rust/elements/internal/RenameConstructor.qll 65fa2e938978d154701e6cac05b56320b176ee014ef5c20a7b66f3e94fd5c4a7 dfc0ff4606b8e1c14003cc93a0811f4d62ec993b07ff3c1aa0776746577ed103 lib/codeql/rust/elements/internal/RenameImpl.qll 4f5943fbda4ec772203e651ed4b7dd1fb072219ddc0cb208c0a0951af5e72bd6 b9854cdcf02e70ee372330a4e0bfdb03012bc81af79dd12af2a567fd7fc4672b lib/codeql/rust/elements/internal/ResolvableImpl.qll 7599625454fe81c3490a122943363a2a2522a7877b78a80649e93155a418fedd 442072c3d70bdaababd7de8bc6c9382f4a50bab41d13759dcd1a5bee9ea32e49 lib/codeql/rust/elements/internal/RestPatConstructor.qll 45430925ddf08fba70ede44c7f413ddb41b3113c149b7efc276e0c2bf72507b4 25c678898d72446e7a975bb8b7f2fde51e55b59dbd42f2cca997c833b1a995f1 -lib/codeql/rust/elements/internal/RestPatImpl.qll 1b83464367e5fdc28b0b3946ae74c67c64d30b286c39268b4118337539250e51 83a03308cba4cb3344d48f0a0730b1d3e41a73f16f729d39dc2bae6d3f57f232 lib/codeql/rust/elements/internal/RetTypeConstructor.qll a96d803c6e4b40be49cfed0853a3e04ae917c47351e5c880fcab06eddf1af9cc d06a0a191cb14c270c0441ffc3d289263808170dcbe05e01847a35ac9d61dfb3 lib/codeql/rust/elements/internal/RetTypeImpl.qll 0e96f1075ccade28ce5664ab0f5c2e98984ae1d0ed708bc02e40e882672d9e2f 350725d16bcb1e8911bfdd87d9dd21be73ec66d23c2a35827c8c8525c48dc885 lib/codeql/rust/elements/internal/ReturnExprConstructor.qll 57be5afbe20aa8db6e63c1f2871914c19c186730ad7dccaa424038c6305730d5 4d3c4f2e9b38a4b54ff26a0032455cdcca3d35fec201b6c932072a9e31fbb4fe -lib/codeql/rust/elements/internal/ReturnExprImpl.qll eef4960a8c27eaa0540d048fe88893cfe9a6ac377a770cc23d72ebe05d5782f1 b7f35650d80f2f8b4893f0091fea74646341af406b6248f75c477112aca96dea lib/codeql/rust/elements/internal/ReturnTypeSyntaxConstructor.qll 8994672e504d1674e5773157d0ad8a0dc3aad3d64ef295e7722e647e78e36c11 abe7df754721f4ff7f3e3bb22d275976b2e9a1ef51436a461fe52ebd2d29cff1 lib/codeql/rust/elements/internal/ReturnTypeSyntaxImpl.qll d47a3dcfcc2b02a6a9eaeefe9a7a4be2074ecd2019da129dda0f218bc3fbd94b 87198db7c0620ed49369da160f09287015e0cd1718784e1ba28ec3ec5a0bb4a8 lib/codeql/rust/elements/internal/SelfParamConstructor.qll a63af1d1ccde6013c09e0397f1247f5ab3efd97f3410dd1b6c15e1fb6cd96e54 0d8977653c074d5010c78144327f8b6c4da07f09d21e5cc3342082cd50107a81 @@ -395,7 +358,6 @@ lib/codeql/rust/elements/internal/TokenTreeImpl.qll c61574f2b551db24640258117e0c lib/codeql/rust/elements/internal/TraitAliasConstructor.qll d2f159cac53b9d65ec8176b8c8ccb944541cd35c64f0d1ceabb32cd975c000bf 6564981793de762af2775cc729e25054ea788648509d151cbfdbdf99fc9ed364 lib/codeql/rust/elements/internal/TraitAliasImpl.qll f338dba5388973ec0c5928d4c60664737f75a93d0c7db5fb34053bc41c107641 f2e437469e4ba1d8dd321bc670978e7eed76508e728d1e08e52ddcf52a461d3a lib/codeql/rust/elements/internal/TraitConstructor.qll 1f790e63c32f1a22ae1b039ca585b5fe6ffef6339c1e2bf8bca108febb433035 535cebd676001bfbbb724d8006fa2da94e585951b8fd54c7dc092732214615b5 -lib/codeql/rust/elements/internal/TraitImpl.qll 776a0c10c944146b89d616e3bf1311502de9e1e84f0c9d5d7de5aecfc97b87e3 3795d920e98620b30f7e2c218cfb57ae91b37956f9165325b5da6705df8beffa lib/codeql/rust/elements/internal/TryExprConstructor.qll 98e3077ebc4d76f687488b344f532b698512af215b66f0a74b5cea8ed180836c b95603c10c262911eeffdf4ccba14849e8443916b360e287963d5f2582d8e434 lib/codeql/rust/elements/internal/TryExprImpl.qll 00635685db339557cfb89fad0bfc134e53efc6d88c68cce400b72c2dd428ef9f 43559b46e45c009f985b58896b542881b81a3e6b82a6f51b784e8a712ae3da2b lib/codeql/rust/elements/internal/TupleExprConstructor.qll 71c38786723225d3d90399b8a085b2b2664c62256654db9e1288fadd56745b9d 639ad70b49ebadc027127fbdc9de14e5180169a4285908233bc38ccac6f14110 @@ -422,12 +384,10 @@ lib/codeql/rust/elements/internal/TypeParamConstructor.qll a6e57cccd6b54fa68742d lib/codeql/rust/elements/internal/TypeParamImpl.qll 9e7169e8254e2d9d13b11a17cbe04e874f72fb67a75c3585e70eddec71ba5c7f b8c862b2cd53bc211caea23261d9832613418aae51f63ef08922d300c2d1f4f2 lib/codeql/rust/elements/internal/TypeRefImpl.qll cfc08bdcc8e7e588f533c7e64c0c08d317d63cdb50f4cba4b4b3e589b37b0fea b46ee7de9b5e9894807004e1bedf39e7d25912ed79de6ac5adfb37a43aa4804b lib/codeql/rust/elements/internal/UnderscoreExprConstructor.qll 8dc27831adb49c1a47b9f8997d6065e82b4e48e41e3c35bd8d35255cea459905 6c5a5272d37f83f1c1b17475f8adb7d867e95025d201320e20a32dab1f69f7bf -lib/codeql/rust/elements/internal/UnderscoreExprImpl.qll 4277b23a09a4ba5e53ca2cfbb20eba6a5f66039b6268da79410e0be30332fedd b9ed79468157a7e751f78aa7597165672cbc38191d5f85ecc15cfdaff388a26a lib/codeql/rust/elements/internal/UnextractedImpl.qll 5c23df7e448184d76ccab2c22757ace24663b8be2592a3fa2a44bef43159ebd3 77b0c9fe75a307adc08c422cc88423c5349756878793cf9e79c006c83b4c403b lib/codeql/rust/elements/internal/UnimplementedConstructor.qll 70b0489fdc75fed389de8203947ed9c8eabb91373a1264eb2c8018ddbb2d9baa 0f2592c1697a2f2f913014ecd73b0e3ff1ec5b038ba1c3a22e7939bf8759e664 lib/codeql/rust/elements/internal/UnimplementedImpl.qll 06771abc088e0a8fc24032c9d2633618e8e40343ef8757a68cc0a70f1617165a 5738f626f1f4f573fdf7dcd5bd57a0948d290ed89342b9160e95ef3c84044f9a lib/codeql/rust/elements/internal/UnionConstructor.qll d650551a1b3ef29c5a770bdad626269cf539ed0c675af954bc847d2c6111f3f6 aca9064ad653a126ab4f03703e96b274587c852dc5e7ff3fea0fec4d45993f10 -lib/codeql/rust/elements/internal/UnionImpl.qll f1765a7a37fb29eff98d67d166c35df4921eafc8cb61c11c7848185535f0497b 9f041f6ee82bd3cda2ddea0ee58d7a996123b1713b9d127f764eb74a9387f685 lib/codeql/rust/elements/internal/UseConstructor.qll a4f790795e18abc29a50d6fbaa0db64cba781e3259a42cbf0468c24ac66b63e7 2fa288f073ac094a838c11f091def2c790b347b6a1b79407c11b10c73d6bff57 lib/codeql/rust/elements/internal/UseImpl.qll ba779517c3c928ab6e794360b6344829e84ec6da5e1de1b03b4eaf8bdae58ce9 0f4ead9eecb584eb9827502276ffe8cb1da0d2fa4b8f660d2afc26ac4e0fba86 lib/codeql/rust/elements/internal/UseTreeConstructor.qll 3e6e834100fcc7249f8a20f8bd9debe09b705fcf5a0e655537e71ac1c6f7956b cdbc84b8f1b009be1e4a7aaba7f5237823cea62c86b38f1794aad97e3dfcf64b @@ -445,9 +405,7 @@ lib/codeql/rust/elements/internal/WhereClauseImpl.qll 59d33533e641ce3851e493de30 lib/codeql/rust/elements/internal/WherePredConstructor.qll f331c37085792a01159e8c218e9ef827e80e99b7c3d5978b6489808f05bd11f8 179cad3e4c5aaaf27755891694ef3569322fcf34c5290e6af49e5b5e3f8aa732 lib/codeql/rust/elements/internal/WherePredImpl.qll aad95f448ca051d5dcd462429fa1ca95dcec6df2e70b6f64a480bd6839307581 411a66a5d866aa8cb4911c5106849adb103a063e1b90a9ecc5d16db3022bb1f8 lib/codeql/rust/elements/internal/WhileExprConstructor.qll 01eb17d834584b3cba0098d367324d137aacfc60860752d9053ec414180897e7 e5e0999fb48a48ba9b3e09f87d8f44f43cc3d8a276059d9f67e7714a1852b8a5 -lib/codeql/rust/elements/internal/WhileExprImpl.qll 5e716498402be3a1a8ed3594e13a03938bb793ac80f2a648bc93c0d746028d8b efcee38fe5e984a690c33f8bfdc78c677c2b0cdc5902525e2196a68fdabb6823 lib/codeql/rust/elements/internal/WildcardPatConstructor.qll 5980c4e5724f88a8cb91365fc2b65a72a47183d01a37f3ff11dcd2021e612dd9 c015e94953e02dc405f8cdc1f24f7cae6b7c1134d69878e99c6858143fc7ab34 -lib/codeql/rust/elements/internal/WildcardPatImpl.qll 01e5fac111cce3bb139fc290dbdb2a80e7369a90952178228efeb025915d40b7 875e91fb1354ab8d94d5fa426b63714c70904f53d7bab15158fcbc290c62a0f1 lib/codeql/rust/elements/internal/YeetExprConstructor.qll 7763e1717d3672156587250a093dd21680ad88c8224a815b472e1c9bba18f976 70dd1fd50824902362554c8c6075468060d0abbe3b3335957be335057512a417 lib/codeql/rust/elements/internal/YeetExprImpl.qll e8924147c3ebe0c32d04c5b33edfd82ae965c32479acfd4429eeab525cf42efb b2debcfa42df901f254c58705a5009825ec153464c9ab4b323aa439e5924e59e lib/codeql/rust/elements/internal/YieldExprConstructor.qll 8cbfa6405acb151ee31ccc7c89336948a597d783e8890e5c3e53853850871712 966f685eb6b9063bc359213323d3ff760b536158ecd17608e7618a3e9adf475f @@ -465,7 +423,7 @@ lib/codeql/rust/elements/internal/generated/Attr.qll 2e7983b2c462750065ed58cc10c lib/codeql/rust/elements/internal/generated/AwaitExpr.qll 1d71af702a1f397fb231fae3e0642b3deeba0cd5a43c1d8fabdff29cac979340 e0bfa007bdecc5a09a266d449d723ae35f5a24fbdfc11e4e48aeea3ec0c5147c lib/codeql/rust/elements/internal/generated/BecomeExpr.qll 7a211b785a4a2f961242d1d73fd031d381aad809f7b600ce7f7f864518bb7242 17a0388680007871748cfdc6621f700a7c2817b9601e1bd817fb48561e7c63ad lib/codeql/rust/elements/internal/generated/BinaryExpr.qll 64e9bd9c571edd6e5f3e7662b956b1d87fa0354ce6fe95da9caf25ac16b66c68 3fca09fdbe879db2ca3293618896a462e96376a2963d15cce3d5b1baac552fcb -lib/codeql/rust/elements/internal/generated/BlockExpr.qll ccfbdc7bd268735a0424ff08dcf37d0e1fed61d5fe0520593c23f2490d400438 0facad59f6aba13ee0c069b691c99f52c04b723a2bfad4da226190c3c42dcabf +lib/codeql/rust/elements/internal/generated/BlockExpr.qll 5a5ddbe34bc478a7bd9b0d07d3b6f017c2d1f20581d859251a963314e6514d1f 9804c30b8b279038b864c52557535f854bd012bacdfe8e5840f1f777c74e52df lib/codeql/rust/elements/internal/generated/BoxPat.qll ec946a3e671ab7417e04b0207967adad004df512c570c4f0780ca5816d12d75f b0e64860855c4e85914042b1a51034899ff7cd1b2c6857188de89310a2726ea3 lib/codeql/rust/elements/internal/generated/BreakExpr.qll 0f428a8b2f4209b134c2ffc3e1c93c30bc6b0e9c9172f140cefa88c1f77d8690 957b39f38ff6befe9061f55bc0b403c2f1c366dd0cf63b874bae6f8216576d76 lib/codeql/rust/elements/internal/generated/CallExpr.qll 23ee64e3bf643cd5e6ff705181d2bb31e1aeaffecb5bdce73836172dbf15f12f 34b280139b1f8f70d78e1432392f03c971be392e8cb68d014eb325d0c101bddd @@ -492,7 +450,7 @@ lib/codeql/rust/elements/internal/generated/ExternItemList.qll 6bc97fdae6c411cab lib/codeql/rust/elements/internal/generated/FieldExpr.qll 3e506b5cb93793ec30f56bb637a600db869fcba6181b068516a671d55c362739 7bbf953696d763ad6b210f378f487ba85b875fa115b22c0c0508599a63633502 lib/codeql/rust/elements/internal/generated/FieldList.qll 43c13c6e3c9ba75a7a4cb870fc4f18752001584d48b9df0734055a6ebb789331 7c51b0b13eb02f1286d3365e53a976ba2655c4dbd8e735bc11c8b205c829e1ee lib/codeql/rust/elements/internal/generated/FnPtrType.qll 748d766dbefd19a7d644734c57885eeede66897029bbfe1b87919517f43bfde2 5a7d80acc00e56594ed85026a8ea4923104d2e98c2e42db8c5bcd32ddd164e48 -lib/codeql/rust/elements/internal/generated/ForExpr.qll 541b62b48911d4999f9ed64ab6c8b9910073ac4add0225761f319677328cf120 976c3a91c9eedfb1e2d9ea76ac501348643b3d23c723d7a777042258d416d091 +lib/codeql/rust/elements/internal/generated/ForExpr.qll d81751e9599874a1292a0aace80b2de60ab36fc43f74ec08fbdfe044fc19e5c1 34a64586f8ffbadd44d0e747f69ab550a16149b658a9c92d9593689cb9a4f6fc lib/codeql/rust/elements/internal/generated/ForType.qll 3d43d044a1189281f09c55caafb6c8020a836f49e2866077086101925a573cf2 646b59bfd1b428aaf7211f574c49f79cb4c6a79ca151aa0663b2b31480298721 lib/codeql/rust/elements/internal/generated/Format.qll df7ef61e6ba61fa0eb093f8e6b3e7a0329104e03f659c9507db9535b8b4ea759 ef8ddd98405fc84938ad8cd5f87d2858e01d06a6bb00566a785a984b60a79dc6 lib/codeql/rust/elements/internal/generated/FormatArgsArg.qll e07a1ae310f590003f1b88fada7dcf4847c99adb9d4c838d1c88e66e1da85c5f 0ef7342451fe2cb06e765fb4b33bb8c4a9b927f5edbc8feb5c6ba3655697f447 @@ -513,6 +471,7 @@ lib/codeql/rust/elements/internal/generated/InferType.qll 23ee25135c59ea5578cdf7 lib/codeql/rust/elements/internal/generated/Item.qll 25e645cb41222c21065798fb6cb0488bfef007aeb9b89717f58913f9b29d5559 3146941e55db2ff7c51ec030b4414e20d66d154cf6854b1a3fa42e74a09dfb77 lib/codeql/rust/elements/internal/generated/ItemList.qll 73c8398a96d4caa47a2dc114d76c657bd3fcc59e4c63cb397ffac4a85b8cf8ab 540a13ca68d414e3727c3d53c6b1cc97687994d572bc74b3df99ecc8b7d8e791 lib/codeql/rust/elements/internal/generated/Label.qll 6630fe16e9d2de6c759ff2684f5b9950bc8566a1525c835c131ebb26f3eea63e 671143775e811fd88ec90961837a6c0ee4db96e54f42efd80c5ae2571661f108 +lib/codeql/rust/elements/internal/generated/LabelableExpr.qll 896fd165b438b60d7169e8f30fa2a94946490c4d284e1bbadfec4253b909ee6c 5c6b029ea0b22cf096df2b15fe6f9384ad3e65b50b253cae7f19a2e5ffb04a58 lib/codeql/rust/elements/internal/generated/LetElse.qll 7ca556118b5446bfc85abba8f0edd4970e029b30d414ea824a1b5f568310a76c a403540881336f9d0269cbcdb4b87107a17ab234a985247dc52a380f150a1641 lib/codeql/rust/elements/internal/generated/LetExpr.qll 9af0f89b294c8a0a751317e7074fe370339563d36c1df4911d1ea082a4df77fd 68272593d1feb88990bfbd0b8c222776f085e49694894384fc6d96e9464ba734 lib/codeql/rust/elements/internal/generated/LetStmt.qll aa1852db86ec29f857a90677f0c6b4a07f0fd965fc193d4141be95ce15862fca 40f32a37c0cc161b099fe0b4c7d713da928781d3e2c3de90db991df1d9062647 @@ -522,7 +481,8 @@ lib/codeql/rust/elements/internal/generated/LifetimeParam.qll bcbde38bfb99034e47 lib/codeql/rust/elements/internal/generated/LiteralExpr.qll f3a564d0a3ed0d915f5ab48e12246777e4972ad987cd9deaafeb94cf407b2877 2337c3d5f60361bd10f6aeca301e88255f5dffb85301cf36cbbfa1a65bfad1cd lib/codeql/rust/elements/internal/generated/LiteralPat.qll ecc2bfe559abfce1be873fbf7b61b5728897c9afc3bb3f69551d8320d273da71 42196fb6a4a0ff9b570fd0bdbc920f24744b3f46772efbb46648af7fbfe1fbda lib/codeql/rust/elements/internal/generated/Locatable.qll c897dc1bdd4dfcb6ded83a4a93332ca3d8f421bae02493ea2a0555023071775e b32d242f8c9480dc9b53c1e13a5cb8dcfce575b0373991c082c1db460a3e37b8 -lib/codeql/rust/elements/internal/generated/LoopExpr.qll 22b755dfaf238ecea722c0c94c399992014e23481ec6fdd61f803bbec012b6f9 08731630c2dc05aa1e0ada222a6057752d9ce737329c62076708828247a358be +lib/codeql/rust/elements/internal/generated/LoopExpr.qll db6bc87e795c9852426ec661fa2c2c54106805897408b43a67f5b82fb4657afd 1492866ccf8213469be85bbdbcae0142f4e2a39df305d4c0d664229ecd1ebdb9 +lib/codeql/rust/elements/internal/generated/LoopingExpr.qll 0792c38d84b8c68114da2bbdfef32ef803b696cb0fd06e10e101756d5c46976c 111fe961fad512722006323c3f2a075fddf59bd3eb5c7afc349835fcec8eb102 lib/codeql/rust/elements/internal/generated/MacroCall.qll fc8988696493992cc4fdce8c0e5610c54ee92ea52ebb05262338f8b612353f50 188a2d7a484bd402a521787371e64f6e00e928306c8d437e6b19bf890a7aa14e lib/codeql/rust/elements/internal/generated/MacroDef.qll e9b3f07ba41aa12a8e0bd6ec1437b26a6c363065ce134b6d059478e96c2273a6 87470dea99da1a6afb3a19565291f9382e851ba864b50a995ac6f29589efbd70 lib/codeql/rust/elements/internal/generated/MacroExpr.qll 03a1daa41866f51e479ac20f51f8406d04e9946b24f3875e3cf75a6b172c3d35 1ae8ca0ee96bd2be32575d87c07cc999a6ff7770151b66c0e3406f9454153786 @@ -549,20 +509,20 @@ lib/codeql/rust/elements/internal/generated/ParamList.qll c808c9d84dd7800573832b lib/codeql/rust/elements/internal/generated/ParenExpr.qll bc0731505bfe88516205ec360582a4222d2681d11342c93e15258590ddee82f2 d4bd6e0c80cf1d63746c88d4bcb3a01d4c75732e5da09e3ebd9437ced227fb60 lib/codeql/rust/elements/internal/generated/ParenPat.qll ce24b8f8ecbf0f204af200317405724063887257460c80cf250c39b2fdf37185 e7c87d37e1a0ca7ea03840017e1aa9ddb7f927f1f3b6396c0305b46aeee33db6 lib/codeql/rust/elements/internal/generated/ParenType.qll 9cc954d73f8330dcac7b475f97748b63af5c8766dee9d2f2872c0a7e4c903537 c07534c8a9c683c4a9b11d490095647e420de0a0bfc23273eaf6f31b00244273 -lib/codeql/rust/elements/internal/generated/ParentChild.qll c1eca840f6c97dc3c7fec5deaf1be98c17558610ffc37b503571779afdadc912 9564f6ae3803505c2bc086b76e43570127a13374655d2013c77ce1863e0c1397 +lib/codeql/rust/elements/internal/generated/ParentChild.qll 52186ab2aead10bbbaab401272afff0b8247b0050064123d0e45d972ec501dee f082318c0da678845763d6070283872b94b59425fbaa305582b5fe72da03e7e6 lib/codeql/rust/elements/internal/generated/Pat.qll 3605ac062be2f294ee73336e9669027b8b655f4ad55660e1eab35266275154ee 7f9400db2884d336dd1d21df2a8093759c2a110be9bf6482ce8e80ae0fd74ed4 -lib/codeql/rust/elements/internal/generated/Path.qll f2b1be2f8f44001a6533533c978c4a9a8b7d64838d6f39eef5f0c0e7890611b8 d724a00a38f42429ffa8fb3bffbb5ec69e16a32ceeeb1d1f026fc7adf87424a8 +lib/codeql/rust/elements/internal/generated/Path.qll 4c1c8e840ed57880e574142b081b11d7a7428a009f10e3aa8f4645e211f6b2e0 989668cf0f1bdee7557e2f97c01e41d2a56848227fed41477833f5fc1e1d35f6 lib/codeql/rust/elements/internal/generated/PathExpr.qll 2096e3c1db22ee488a761690adabfc9cfdea501c99f7c5d96c0019cb113fc506 54245ce0449c4e263173213df01e079d5168a758503a5dbd61b25ad35a311140 lib/codeql/rust/elements/internal/generated/PathExprBase.qll d8218e201b8557fa6d9ca2c30b764e5ad9a04a2e4fb695cc7219bbd7636a6ac2 4ef178426d7095a156f4f8c459b4d16f63abc64336cb50a6cf883a5f7ee09113 lib/codeql/rust/elements/internal/generated/PathPat.qll 98c9938d6a359fd717829b196eb09701d2c798e18c1f43fa7b2a9145afdf6c19 caba2e629cae08682baac90a76ae9a48cda2d7d6f9c23d506fa0ff3f292978a4 -lib/codeql/rust/elements/internal/generated/PathSegment.qll 4621597fd86246f788b8f9ca73f6b0f27929fc04261ce3ccf85da1183071431d aadda8bce386a3b7a9c53b98465eedcc4f724e37b8a904c1775af5b7ffb041ee -lib/codeql/rust/elements/internal/generated/PathType.qll 45de78e5374d6eb0446e2112ec72d3692c2811df9fa2ad03d0127e426940abe3 622cf70408413a565a0dac58f451035ac1339c8d0ee5b24f630680201cb0aa48 +lib/codeql/rust/elements/internal/generated/PathSegment.qll 0fa07886deb0fc4d909d7edf691238a344f2739900aafb168cbac171eb1729a8 8f4bb418d8bea5e40128a87977c57d0a9183d06d111601ad93130c8615c11465 +lib/codeql/rust/elements/internal/generated/PathType.qll df6fd322ba0d99d6cb315edce8dbf099b661b84fdfcc3ad629fdd1fd066c1986 e11c8615cd7b02034b47b58f30a7b6fcbc6d33ec53303288dfd34d9a25f5a186 lib/codeql/rust/elements/internal/generated/PrefixExpr.qll c9ede5f2deb7b41bc8240969e8554f645057018fe96e7e9ad9c2924c8b14722b 5ae2e3c3dc8fa73e7026ef6534185afa6b0b5051804435d8b741dd3640c864e1 lib/codeql/rust/elements/internal/generated/PtrType.qll 40099c5a4041314b66932dfd777c9e2bef90a0711fb8d7c2c2cec764c003ac4a cf8297d93557356a572223d3e8acca701837c4b1f54e8d4351ba195fb7ed27f8 lib/codeql/rust/elements/internal/generated/PureSynthConstructors.qll ea294a3ba33fd1bc632046c4fedbcb84dcb961a8e4599969d65893b19d90e590 ea294a3ba33fd1bc632046c4fedbcb84dcb961a8e4599969d65893b19d90e590 lib/codeql/rust/elements/internal/generated/RangeExpr.qll 23cca03bf43535f33b22a38894f70d669787be4e4f5b8fe5c8f7b964d30e9027 18624cef6c6b679eeace2a98737e472432e0ead354cca02192b4d45330f047c9 lib/codeql/rust/elements/internal/generated/RangePat.qll efd93730de217cf50dcba5875595263a5eadf9f7e4e1272401342a094d158614 229b251b3d118932e31e78ac4dfb75f48b766f240f20d436062785606d44467b -lib/codeql/rust/elements/internal/generated/Raw.qll d679e866776a927f61d62ba980203e1142454606bdac69cc9b6720679ca5bbdd f47922df7f8c8efba0e2e5adde030247e43f02e9df7d263096c697bfe65c4277 +lib/codeql/rust/elements/internal/generated/Raw.qll b23d3574920376ca7c52858d6ad2ea6670640812422329f9c44f699075c16d89 13c1a199de3e71f012bdab0fa2b982f1c92f95536b07bbbe816e680a0e64ad71 lib/codeql/rust/elements/internal/generated/RecordExpr.qll eb6cb662e463f9260efae1a6ce874fa781172063b916ef1963f861e9942d308d 1a21cbccc8f3799ff13281e822818ebfb21d81591720a427cac3625512cb9d40 lib/codeql/rust/elements/internal/generated/RecordExprField.qll 7e9f8663d3b74ebbc9603b10c9912f082febba6bd73d344b100bbd3edf837802 fbe6b578e7fd5d5a6f21bbb8c388957ab7210a6a249ec71510a50fb35b319ea1 lib/codeql/rust/elements/internal/generated/RecordExprFieldList.qll 179a97211fe7aa6265085d4d54115cdbc0e1cd7c9b2135591e8f36d6432f13d3 dd44bbbc1e83a1ed3a587afb729d7debf7aeb7b63245de181726af13090e50c0 @@ -588,7 +548,7 @@ lib/codeql/rust/elements/internal/generated/Static.qll 5fbd6879858cf356d4bdaa6da lib/codeql/rust/elements/internal/generated/Stmt.qll 8473ff532dd5cc9d7decaddcd174b94d610f6ca0aec8e473cc051dad9f3db917 6ef7d2b5237c2dbdcacbf7d8b39109d4dc100229f2b28b5c9e3e4fbf673ba72b lib/codeql/rust/elements/internal/generated/StmtList.qll a667193e32341e17400867c6e359878c4e645ef9f5f4d97676afc0283a33a026 a320ed678ee359302e2fc1b70a9476705cd616fcfa44a499d32f0c7715627f73 lib/codeql/rust/elements/internal/generated/Struct.qll 4d57f0db12dc7ad3e31e750a24172ef1505406b4dab16386af0674bd18bf8f4b 1a73c83df926b996f629316f74c61ea775be04532ab61b56af904223354f033e -lib/codeql/rust/elements/internal/generated/Synth.qll 1ba88215c3f0640558a644534b954e4b93acb15a0f51a1e4887230f451718aa9 747eb3bec1c7245e59ea2b500604f5b4e614e4f061473d1a22fa398ee48ba080 +lib/codeql/rust/elements/internal/generated/Synth.qll 0e5767568fd119df13928adf00950586f5f9f355dae520059b2d6daa7a2bda56 219b40f6458fec2cc436dc2cf80bb1dbfb34dfdbe8576606b5e25f78d36d6210 lib/codeql/rust/elements/internal/generated/SynthConstructors.qll e929c49ea60810a2bbc19ad38110b8bbaf21db54dae90393b21a3459a54abf6f e929c49ea60810a2bbc19ad38110b8bbaf21db54dae90393b21a3459a54abf6f lib/codeql/rust/elements/internal/generated/Token.qll 77a91a25ca5669703cf3a4353b591cef4d72caa6b0b9db07bb9e005d69c848d1 2fdffc4882ed3a6ca9ac6d1fb5f1ac5a471ca703e2ffdc642885fa558d6e373b lib/codeql/rust/elements/internal/generated/TokenTree.qll 8577c2b097c1be2f0f7daa5acfcf146f78674a424d99563e08a84dd3e6d91b46 d2f30764e84dbfc0a6a5d3d8a5f935cd432413688cb32da9c94e420fbc10665c @@ -619,11 +579,11 @@ lib/codeql/rust/elements/internal/generated/VariantList.qll 4eb923ca341033c256ca lib/codeql/rust/elements/internal/generated/Visibility.qll aba81820f30bed0fd2cd06831f7256af15ae32525b2a437896420b4cc067ea38 d6aed90b27124b812daf2ddd14b4e181277cbe638b4ccaab74e27681ac30e4ab lib/codeql/rust/elements/internal/generated/WhereClause.qll d6c8f72bbec5d71c024f0d365c1c5e474f4d24ded0d34c56c1f66b1e4a384e9d ed14311d140eee00d3b26a4972f53e20d5af1bddf88fb5618e7e2d3ae1d816f3 lib/codeql/rust/elements/internal/generated/WherePred.qll 342050e824ca6eb6116488d46cfc03efa79193b4de6049e1f5d4a9fe527b3036 ed07a81de7d63f853c93cbb7291eea3d7169953e34c2f2f98b570028dd1f8cd9 -lib/codeql/rust/elements/internal/generated/WhileExpr.qll fec8a9211b82a80601bf731db17409c5de6bf145295623bd86e28f96452fd91d 3916cf0c0e3b82b834727fc37809dd3e158f395bdf39971abe40b98e5f95a4d2 +lib/codeql/rust/elements/internal/generated/WhileExpr.qll 7edf1f23fbf953a2baabcdbf753a20dff9cf2bc645dcf935f1e68f412971a8f7 d2fa7ada1f48f6b4566c75747584068e925be925d39d6e6ebf61d21bde3b6522 lib/codeql/rust/elements/internal/generated/WildcardPat.qll d74b70b57a0a66bfae017a329352a5b27a6b9e73dd5521d627f680e810c6c59e 4b913b548ba27ff3c82fcd32cf996ff329cb57d176d3bebd0fcef394486ea499 lib/codeql/rust/elements/internal/generated/YeetExpr.qll cac328200872a35337b4bcb15c851afb4743f82c080f9738d295571eb01d7392 94af734eea08129b587fed849b643e7572800e8330c0b57d727d41abda47930b lib/codeql/rust/elements/internal/generated/YieldExpr.qll 37e5f0c1e373a22bbc53d8b7f2c0e1f476e5be5080b8437c5e964f4e83fad79a 4a9a68643401637bf48e5c2b2f74a6bf0ddcb4ff76f6bffb61d436b685621e85 -lib/codeql/rust/elements.qll 173d5ffbcc2874757033caab37559e84dbcbfed319730f8e41a4e9e10b146835 173d5ffbcc2874757033caab37559e84dbcbfed319730f8e41a4e9e10b146835 +lib/codeql/rust/elements.qll 76fe494d20d2665777bcb5c5ced016a262789a0e6aa874c1a77ce4cb134422b6 76fe494d20d2665777bcb5c5ced016a262789a0e6aa874c1a77ce4cb134422b6 test/extractor-tests/generated/Abi/Abi.ql 7f6e7dc4af86eca3ebdc79b10373988cd0871bd78b51997d3cffd969105e5fdd 2f936b6ca005c6157c755121584410c03e4a3949c23bee302fbe05ee10ce118f test/extractor-tests/generated/Abi/Abi_getAbiString.ql a496762fcec5a0887b87023bbf93e9b650f02e20113e25c44d6e4281ae8f5335 14109c7ce11ba25e3cd6e7f1b3fcb4cb00622f2a4eac91bfe43145c5f366bc52 test/extractor-tests/generated/ArgList/ArgList.ql e412927756e72165d0e7c5c9bd3fca89d08197bbf760db8fb7683c64bb2229bc 043dba8506946fbb87753e22c387987d7eded6ddb963aa067f9e60ef9024d684 @@ -659,7 +619,7 @@ test/extractor-tests/generated/BinaryExpr/BinaryExpr_getAttr.ql 26d985ac4b668d78 test/extractor-tests/generated/BinaryExpr/BinaryExpr_getLhs.ql c3f19d8a60066ad6b1810291a669473c75b659cd2f6ac3ab9ed3db2203d4145c c05c5e0226e30f923155669ffc79cfe63af1ca464e8dfc85888dda5f7049711b test/extractor-tests/generated/BinaryExpr/BinaryExpr_getOperatorName.ql 33612159be1c111e3306009d0b04579450fc962a81119b6ea4e255d3c409b401 1a0995b298f50242217cfef81dca8ac978e19e06f90a5f4caadcb6f84460fec2 test/extractor-tests/generated/BinaryExpr/BinaryExpr_getRhs.ql 3bcd36b678e87d5c29a43b69c54c80468a89aefa7e69481b48158ae794a53160 a629dc1472b3f6fd7c608ff760e83d8e1363db81dfe9a4b2968690c2ba4925ca -test/extractor-tests/generated/BlockExpr/BlockExpr.ql 0ab66b190d4e2aa784e61088c4779ef4d08cb4453677ea087c4f9aa369494bc2 1c3b5794008114d1297695d82590220929e3974e27836b2c6062d14b73379a40 +test/extractor-tests/generated/BlockExpr/BlockExpr.ql 19caa39aaa39356219dda740b7152f85e43a4f8d6295841e2c535c7e3bda7a5a bd668574ba41021e758e391d4790b871439badb2486ccf6a5aaf788ad6ae4142 test/extractor-tests/generated/BlockExpr/BlockExpr_getAttr.ql 15d4d9853d3262ce6ec629c075c60a76eb112dcafe34b71df0e09b39282223cf 792c498bc7079bb5b93034b8a87db3b275a591d78954e844821aeacffe4258ea test/extractor-tests/generated/BlockExpr/BlockExpr_getLabel.ql de3c28a2677ed71ebd95207aa43ce270765f7f556283f095f1f6296622b80cbc 414ebbb2bfbe4350f933fc3d3636b49a6bb8242e200180780caf95ab8523adb0 test/extractor-tests/generated/BlockExpr/BlockExpr_getStmtList.ql 8c391dfeb69bd92c547a2417bf231cc960a8f34845802722214294728772316a f3e847fa594e9d9cf25d09a0396a10176aad1100c1977a24756ff6287a79e69e @@ -743,7 +703,7 @@ test/extractor-tests/generated/FnPtrType/FnPtrType.ql 50b76d678582cd0b8d7cc4a765 test/extractor-tests/generated/FnPtrType/FnPtrType_getAbi.ql de1706382c2980c02dbdd295e0a2320c992afa3f19af0c2378b9980a7cd0c481 a3fa36711949d9d5ac53cc5dd39cb19b397c3f2e47c1d457df470c6e5142f9be test/extractor-tests/generated/FnPtrType/FnPtrType_getParamList.ql 9ea393acf37919e2fd1bbc16e738440e00a56552bf80baef9bfd2a9a405afb93 3b4237b22eea569cef0081eb3ea16b2d0f01f8f070f21e16390267e9cbe0cf57 test/extractor-tests/generated/FnPtrType/FnPtrType_getRetType.ql 57f662e4778e1bf4103f061bb8085def0708528f94045c9ff4a95ce802fff13d 924b924c7d766458e956afa0963e6eb1bfc083e5f9aeae64cf2d08929f79612c -test/extractor-tests/generated/ForExpr/ForExpr.ql eff335a301b9a71292bb6da0dffdf901c7a51df9960e9250f9eb980aaaa0c7ae ce7ab100c21c6fc334a4445b2ee311ae6c67992ef659ca32c94d60ac884936e3 +test/extractor-tests/generated/ForExpr/ForExpr.ql 1f8b7a9bbe7a8c077864be64dc51d91ec267c4f34f1cad80fc79902cc0af04ff ae999fb206b04ed81fa08bdd7617cbfe932c5e4109285e10108613cdebba8f7a test/extractor-tests/generated/ForExpr/ForExpr_getAttr.ql d3399b7453e10ff48efc79ec38dd9b6e06bb472b9c39f559242d003e7f63b1d9 ba37e6bf129e1c2f9094e093bbfbf41864f2cb7725a64334f9443270dafdbfdc test/extractor-tests/generated/ForExpr/ForExpr_getIterable.ql 90a6540f8a91cfe3ed1bdde1e680786ce5a00edbb797a8fe70bcc0507c438fcc 65c67ad5890aa502628ee73efd26bcbd4597a8bdfc9839233ede9e26393638f8 test/extractor-tests/generated/ForExpr/ForExpr_getLabel.ql ce90da75e040f448d524187357f3ceededba72407a84c1dc8e1498ed9788044d 0e23d43e0b3412fe90c6a5a4331f8da85eebe19e05b8c7d9710056857280797b @@ -837,7 +797,7 @@ test/extractor-tests/generated/LiteralExpr/LiteralExpr_getAttr.ql 6e76da2bb7858f test/extractor-tests/generated/LiteralExpr/LiteralExpr_getTextValue.ql 7049fec0bbbf0e048af1ff318f42f43d0f8a7354a5638dc21174c4ea725b54ce 2edc94cc0a7f58ec9808b63ddb4d20a3907c88e50bd9ffb14f0281b433f5621b test/extractor-tests/generated/LiteralPat/LiteralPat.ql 3d3db6cad0eb13f84b69efa24a9f9a32d35c62582274d2751cc3ac54dca3b538 7feb64af87546ea64c139c61ac20176a99ad40b9949b361742a424b164fe6d54 test/extractor-tests/generated/LiteralPat/LiteralPat_getLiteral.ql 2cb03a22220e99237d4f3cd94d5090757cd6e57df708d32e80bca3964507651f 4dd9a6c1e23ad9851d9aa8c42c79535f7a2c7224bbaaff286eac7fd04b39c6f0 -test/extractor-tests/generated/LoopExpr/LoopExpr.ql 636c28bff5f8c1ca0fb834f614b3215e02bdb00826fd8be26f9c4fa22c68a79a 1694c27850419d4edf366fe3f1d60fff578094adc3aeeb9691a3d6a8ec0100e1 +test/extractor-tests/generated/LoopExpr/LoopExpr.ql 37b320acefa3734331f87414de270c98ab3309fe069d428550738197e3498a8c e744c25640b5c46aab53ce5114b789e13319572b0c99d0f2bc3c177849e61541 test/extractor-tests/generated/LoopExpr/LoopExpr_getAttr.ql d557c1a34ae8762b32702d6b50e79c25bc506275c33a896b6b94bbbe73d04c49 34846c9eefa0219f4a16e28b518b2afa23f372d0aa03b08d042c5a35375e0cd6 test/extractor-tests/generated/LoopExpr/LoopExpr_getLabel.ql 0b77b9d9fb5903d37bce5a2c0d6b276e6269da56fcb37b83cd931872fb88490f c7f09c526e59dcadec13ec9719980d68b8619d630caab2c26b8368b06c1f2cc0 test/extractor-tests/generated/LoopExpr/LoopExpr_getLoopBody.ql 0267f54077640f3dfeb38524577e4a1229115eeb1c839398d0c5f460c1d65129 96ec876635b8c561f7add19e57574444f630eae3df9ab9bc33ac180e61f3a7b8 @@ -933,25 +893,25 @@ test/extractor-tests/generated/ParenPat/ParenPat_getPat.ql 96f3db0ec4e71fd870619 test/extractor-tests/generated/ParenType/ParenType.ql 81c8ad667397ce36157941abd9b879e9305a440018853af4528eb737ae4d2935 3ef3b86203b0143be2d7f7f4833f55fd6c226cb9205e3c1940b6c2a1371622f3 test/extractor-tests/generated/ParenType/ParenType_getTy.ql 41dd6605e7b348618156712b559e2f1b6aac02d6c727e8cbf8653530794ec969 30ac6611c730e76cfb75f98efcf817783a50cec0cf3b3197459d7642f74dde85 test/extractor-tests/generated/Path/Path.ql f17c1c4d23c0d5e9776cee84444f6ee7445de88afbc1f26c34b96e13ab618158 89499cb0f63b3634d6b5e2b8c4a13bd4401ce82e54af0ab46e41a34b0288eeb9 +test/extractor-tests/generated/Path/PathExpr.ql b9696cd7ad9f3874e4bc4b1b9c77f42f06ab6c61b77fb641458da63667087b9b db84a7a8dd05e30ff80733af01f08d43ff031bb4b3e3af06332a73ba7e7bbc43 +test/extractor-tests/generated/Path/PathExpr_getAttr.ql 2ccac48cd91d86670c1d2742de20344135d424e6f0e3dafcc059555046f92d92 9b7b5f5f9e3674fad9b3a5bcd3cabc0dff32a95640da0fce6f4d0eb931f1757d +test/extractor-tests/generated/Path/PathExpr_getPath.ql e7894071313a74166bdd31d7cd974037fcd5a7f0e92d5eec42833266196eb858 46a06e8a1207e7a0fa175cd4b61068e5fd6c43b5575b88986409f0ac2be64c51 +test/extractor-tests/generated/Path/PathPat.ql 823732954a5882e33a37bd0bf0cafb2cec51659a5203a4831eec2516da0e49fa 54001149718a9ca15d8c0d4be63f3fe00a9f0d44fa1309e2f605d7932355ea5d +test/extractor-tests/generated/Path/PathPat_getPath.ql 6c0c71c80a6e631ea7775ec8660b470ff6b264bab14a399606cf113b1fb190fc 8e34cbb4d064db929e94652e1901ec4f26affa71e30e556b7acdff71dd622cbb +test/extractor-tests/generated/Path/PathSegment.ql efc39cea1b4c0b2b0da6434136334430d074699f84124d6bcf94c24aa854dc64 c0a4bd60c67665c058ca22a59e535e925fdb00dec95ffc5c71697fb0ed78a329 +test/extractor-tests/generated/Path/PathSegment_getGenericArgList.ql 8f6e67b3e316309f20e21d7e7944accf66b0256b76fa50ee9a714044c6ec8cea 15f10a701fc4d3f9fd6734da90790cdbc8a1ddd57bf52695740acedcb2e6e485 +test/extractor-tests/generated/Path/PathSegment_getNameRef.ql 799d284e2f9267d6bbe67aa7035e525ef347dc74cb3e2180e7b2171b5cb49674 592130bc2358989536abf62e8a261272c851483ede4f19783f7d61ffc1803e4b +test/extractor-tests/generated/Path/PathSegment_getParamList.ql e1e7b9b5062f936c33b7e7e29b21456448242df4985c6cffb54900063cfd3e63 6568e851cb6bcb32622f89d01e3aa6e7dd21940d21572a9988584e34bdf25366 +test/extractor-tests/generated/Path/PathSegment_getPathType.ql 01942da6d0b10c1d15caec6abb8c53f1dc7f8c04a91a797f572063aa003dbc4b cb21e6cb160652527ba571265297dae86beffe191dd7dfc4d0beee45cb0cda29 +test/extractor-tests/generated/Path/PathSegment_getRetType.ql 36386a514bc925f5b17ad87afba9fef7986900c1b791732de061213c6e86743f f38bcee68c1da19e70bb1e1c4a4047c763a466f1b8ef2c4f65f8c724c0b58197 +test/extractor-tests/generated/Path/PathSegment_getReturnTypeSyntax.ql d1db51208a311c30af369ce2fdc3a3296e7d598b27bf4960b8b34622a9d9163b 561b1e38c6d8b301fdc016e1d012dd805fde1b42b0720c17d7b15535715047f2 +test/extractor-tests/generated/Path/PathSegment_getTy.ql a0ceaf3f37e521cc92c21cc0bae929499ef3584f86349ef34808c20963d31c75 d674e56e08a6d2a7d211503a466df2cc90c35a3951e41598febf62c8dc693655 +test/extractor-tests/generated/Path/PathType.ql cb67b05cf7e4f32cbd46ac89a15f6eafe3507cc655db0b9d54a1cf8e7fbcca40 890053e7fd8cd8a92015c09588c7c646f075901cddc3eb8d57210b02b23a5944 +test/extractor-tests/generated/Path/PathType_getPath.ql 7043c7939e4f835e4b2c7e3e207637c362d7a9dbdba0151b38c873fdaf43e7a5 ee2aad1b4fb2b00e1a5d39387848aa164a39e3cd49141f07c175b205c8451bb1 test/extractor-tests/generated/Path/Path_getPart.ql 8aa45a0b58203ef1177166efbe1c2851faf4b4c9a453c83137f0c9298badcdbf b82d490d9b3a8237487cd5da8b3b6fc4aa477977b332a5c6539b3cd4e6d5b45b test/extractor-tests/generated/Path/Path_getQualifier.ql 9af95e22cdf3a65da6a41d93136aef4523db5ce81d38f6ed4bc613f1c68784d0 3102d9241a417a92c97a53ac56a7a8683463f1adc7a593cda1382c0d25b3f261 test/extractor-tests/generated/Path/Path_getResolvedCrateOrigin.ql 7c0ff524595514630de4178028260d4832bfc4f57bfddec9f8e72a6c6dbf241c 55e617380476c183ef9259199d2cfd551b07466e94bc452c4723754d0c82691b test/extractor-tests/generated/Path/Path_getResolvedPath.ql 20c8977781dfe687d5db03290612179cf1360eb47b86ea62d25d1eef62a681e7 c35b76e7d63c05dc80867285bb913042cbe90b45d4d4306df9eac2cba5e8db70 -test/extractor-tests/generated/PathExpr/PathExpr.ql b9696cd7ad9f3874e4bc4b1b9c77f42f06ab6c61b77fb641458da63667087b9b db84a7a8dd05e30ff80733af01f08d43ff031bb4b3e3af06332a73ba7e7bbc43 -test/extractor-tests/generated/PathExpr/PathExpr_getAttr.ql 2ccac48cd91d86670c1d2742de20344135d424e6f0e3dafcc059555046f92d92 9b7b5f5f9e3674fad9b3a5bcd3cabc0dff32a95640da0fce6f4d0eb931f1757d -test/extractor-tests/generated/PathExpr/PathExpr_getPath.ql e7894071313a74166bdd31d7cd974037fcd5a7f0e92d5eec42833266196eb858 46a06e8a1207e7a0fa175cd4b61068e5fd6c43b5575b88986409f0ac2be64c51 -test/extractor-tests/generated/PathPat/PathPat.ql 823732954a5882e33a37bd0bf0cafb2cec51659a5203a4831eec2516da0e49fa 54001149718a9ca15d8c0d4be63f3fe00a9f0d44fa1309e2f605d7932355ea5d -test/extractor-tests/generated/PathPat/PathPat_getPath.ql 6c0c71c80a6e631ea7775ec8660b470ff6b264bab14a399606cf113b1fb190fc 8e34cbb4d064db929e94652e1901ec4f26affa71e30e556b7acdff71dd622cbb -test/extractor-tests/generated/PathSegment/PathSegment.ql efc39cea1b4c0b2b0da6434136334430d074699f84124d6bcf94c24aa854dc64 c0a4bd60c67665c058ca22a59e535e925fdb00dec95ffc5c71697fb0ed78a329 -test/extractor-tests/generated/PathSegment/PathSegment_getGenericArgList.ql 8f6e67b3e316309f20e21d7e7944accf66b0256b76fa50ee9a714044c6ec8cea 15f10a701fc4d3f9fd6734da90790cdbc8a1ddd57bf52695740acedcb2e6e485 -test/extractor-tests/generated/PathSegment/PathSegment_getNameRef.ql 799d284e2f9267d6bbe67aa7035e525ef347dc74cb3e2180e7b2171b5cb49674 592130bc2358989536abf62e8a261272c851483ede4f19783f7d61ffc1803e4b -test/extractor-tests/generated/PathSegment/PathSegment_getParamList.ql e1e7b9b5062f936c33b7e7e29b21456448242df4985c6cffb54900063cfd3e63 6568e851cb6bcb32622f89d01e3aa6e7dd21940d21572a9988584e34bdf25366 -test/extractor-tests/generated/PathSegment/PathSegment_getPathType.ql 01942da6d0b10c1d15caec6abb8c53f1dc7f8c04a91a797f572063aa003dbc4b cb21e6cb160652527ba571265297dae86beffe191dd7dfc4d0beee45cb0cda29 -test/extractor-tests/generated/PathSegment/PathSegment_getRetType.ql 36386a514bc925f5b17ad87afba9fef7986900c1b791732de061213c6e86743f f38bcee68c1da19e70bb1e1c4a4047c763a466f1b8ef2c4f65f8c724c0b58197 -test/extractor-tests/generated/PathSegment/PathSegment_getReturnTypeSyntax.ql d1db51208a311c30af369ce2fdc3a3296e7d598b27bf4960b8b34622a9d9163b 561b1e38c6d8b301fdc016e1d012dd805fde1b42b0720c17d7b15535715047f2 -test/extractor-tests/generated/PathSegment/PathSegment_getTy.ql a0ceaf3f37e521cc92c21cc0bae929499ef3584f86349ef34808c20963d31c75 d674e56e08a6d2a7d211503a466df2cc90c35a3951e41598febf62c8dc693655 -test/extractor-tests/generated/PathType/PathType.ql cb67b05cf7e4f32cbd46ac89a15f6eafe3507cc655db0b9d54a1cf8e7fbcca40 890053e7fd8cd8a92015c09588c7c646f075901cddc3eb8d57210b02b23a5944 -test/extractor-tests/generated/PathType/PathType_getPath.ql 7043c7939e4f835e4b2c7e3e207637c362d7a9dbdba0151b38c873fdaf43e7a5 ee2aad1b4fb2b00e1a5d39387848aa164a39e3cd49141f07c175b205c8451bb1 test/extractor-tests/generated/PrefixExpr/PrefixExpr.ql 44fb7174365c6deecdc22c720d84617c6e060c05d49c41c90433451588f8aa6f 871fab471c82fede3c36edc003f9decee5bb7844c016951d28be78d0c91487e5 test/extractor-tests/generated/PrefixExpr/PrefixExpr_getAttr.ql fdad6ad5199435ded1e4a9ea6b246e76b904cd73a36aaa4780e84eef91741c5b 75d63940046e62c1efa1151b0cac45b5ec0bab5e39aec2e11d43f6c385e37984 test/extractor-tests/generated/PrefixExpr/PrefixExpr_getExpr.ql 2d1d97f6277794871fbb032ea87ac30b1aa902a74cd874720156162057ea202e b1b9880fce07d66df7ec87f12189c37adf9f233a1d0b38a1b09808d052a95642 @@ -1151,7 +1111,7 @@ test/extractor-tests/generated/WherePred/WherePred_getGenericParamList.ql 21c3aa test/extractor-tests/generated/WherePred/WherePred_getLifetime.ql e08d9d6cccf634746f42a6ee583bbb3e7e9a9edbb63242e73b2bff4463df55d8 139543750c18f88d9c1ad2cdbcf1699d597cf2264bbb6b02a7e5792444e277ef test/extractor-tests/generated/WherePred/WherePred_getTy.ql 34cee0335bbaf8946fe15e3c32449150d07a730fcca56b4faed554fbb8689e21 883976c8c27c276c402d591ebd89d076c2c4d8da4d4f738f3c860c34d4a03b97 test/extractor-tests/generated/WherePred/WherePred_getTypeBoundList.ql c78e31ff4d1822a6b76f403e5ccb8f5529b4f784e14e618833df0378adca55fc 8bb1c9b5a1cfca0f5e8335464f7439aa098063176fbd3edbaf3407169f1899e6 -test/extractor-tests/generated/WhileExpr/WhileExpr.ql e061fac7584adf999d31ed0785041e2cc14b26a1c9901281f90c859335d8f614 fb1e597e28841e3b2d275d697aa6de7158db51b70a348d634291a75b25e4e80a +test/extractor-tests/generated/WhileExpr/WhileExpr.ql 61c49414f2ed786a68b79bd9a77093e4086457edb6c136cf8a94f2ac830c2f5b 7737f724a297d011c12143e009a63926812c63c08a1067b03e8677697ab00f83 test/extractor-tests/generated/WhileExpr/WhileExpr_getAttr.ql f8527130eb2492743c0e629c97db291abcefe3d35302c840fee327ab0d8f10fd b41bedd429e5566fd68a50140ff1f50b51e2c7c351cbc8253fbc126527073f7e test/extractor-tests/generated/WhileExpr/WhileExpr_getCondition.ql 84a021806423425b24eaeb9fb9967a6aadabe823c24e77a0dfefcb3509041597 147aa8bbe4dbf9b90be2467db8207dc96aed281e722eb6b9c998442a90911a6c test/extractor-tests/generated/WhileExpr/WhileExpr_getLabel.ql 60ef4de57d85c7df23c0518b944b3839a9b2478044326829b5bf709a8c8d7240 3916e9ff50733c58afdc09837339b72a555a043f92f1c4e09e1652866029b017 diff --git a/rust/ql/.gitattributes b/rust/ql/.gitattributes index 5e2e30e2ffea..6daad6a68c7b 100644 --- a/rust/ql/.gitattributes +++ b/rust/ql/.gitattributes @@ -62,6 +62,7 @@ /lib/codeql/rust/elements/Item.qll linguist-generated /lib/codeql/rust/elements/ItemList.qll linguist-generated /lib/codeql/rust/elements/Label.qll linguist-generated +/lib/codeql/rust/elements/LabelableExpr.qll linguist-generated /lib/codeql/rust/elements/LetElse.qll linguist-generated /lib/codeql/rust/elements/LetExpr.qll linguist-generated /lib/codeql/rust/elements/LetStmt.qll linguist-generated @@ -72,6 +73,7 @@ /lib/codeql/rust/elements/LiteralPat.qll linguist-generated /lib/codeql/rust/elements/Locatable.qll linguist-generated /lib/codeql/rust/elements/LoopExpr.qll linguist-generated +/lib/codeql/rust/elements/LoopingExpr.qll linguist-generated /lib/codeql/rust/elements/MacroCall.qll linguist-generated /lib/codeql/rust/elements/MacroDef.qll linguist-generated /lib/codeql/rust/elements/MacroExpr.qll linguist-generated @@ -172,7 +174,6 @@ /lib/codeql/rust/elements/internal/ArgListConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ArgListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ArrayExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/ArrayExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ArrayTypeConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ArrayTypeImpl.qll linguist-generated /lib/codeql/rust/elements/internal/AsmExprConstructor.qll linguist-generated @@ -185,25 +186,19 @@ /lib/codeql/rust/elements/internal/AttrConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/AttrImpl.qll linguist-generated /lib/codeql/rust/elements/internal/AwaitExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/AwaitExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/BecomeExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/BecomeExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/BinaryExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/BlockExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/BlockExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/BoxPatConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/BoxPatImpl.qll linguist-generated /lib/codeql/rust/elements/internal/BreakExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/CallExprBaseImpl.qll linguist-generated /lib/codeql/rust/elements/internal/CallExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/CallExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/CallableImpl.qll linguist-generated /lib/codeql/rust/elements/internal/CastExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/CastExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ClosureBinderConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ClosureBinderImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ClosureExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/ClosureExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/CommentConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ConstArgConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ConstArgImpl.qll linguist-generated @@ -217,7 +212,6 @@ /lib/codeql/rust/elements/internal/DynTraitTypeConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/DynTraitTypeImpl.qll linguist-generated /lib/codeql/rust/elements/internal/EnumConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/EnumImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ExprStmtConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ExprStmtImpl.qll linguist-generated @@ -229,12 +223,10 @@ /lib/codeql/rust/elements/internal/ExternItemListConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ExternItemListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/FieldExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/FieldExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/FieldListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/FnPtrTypeConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/FnPtrTypeImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ForExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/ForExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ForTypeConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ForTypeImpl.qll linguist-generated /lib/codeql/rust/elements/internal/FormatArgsArgConstructor.qll linguist-generated @@ -243,45 +235,33 @@ /lib/codeql/rust/elements/internal/FunctionConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/GenericArgImpl.qll linguist-generated /lib/codeql/rust/elements/internal/GenericArgListConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/GenericArgListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/GenericParamImpl.qll linguist-generated /lib/codeql/rust/elements/internal/GenericParamListConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/GenericParamListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/IdentPatConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/IfExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/IfExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ImplConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/ImplImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ImplTraitTypeConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ImplTraitTypeImpl.qll linguist-generated /lib/codeql/rust/elements/internal/IndexExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/IndexExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/InferTypeConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/InferTypeImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ItemImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ItemListConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ItemListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/LabelConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/LabelImpl.qll linguist-generated /lib/codeql/rust/elements/internal/LetElseConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/LetElseImpl.qll linguist-generated /lib/codeql/rust/elements/internal/LetExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/LetExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/LetStmtConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/LetStmtImpl.qll linguist-generated /lib/codeql/rust/elements/internal/LifetimeArgConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/LifetimeArgImpl.qll linguist-generated /lib/codeql/rust/elements/internal/LifetimeConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/LifetimeImpl.qll linguist-generated /lib/codeql/rust/elements/internal/LifetimeParamConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/LifetimeParamImpl.qll linguist-generated /lib/codeql/rust/elements/internal/LiteralExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/LiteralPatConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/LiteralPatImpl.qll linguist-generated /lib/codeql/rust/elements/internal/LoopExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/LoopExprImpl.qll linguist-generated +/lib/codeql/rust/elements/internal/LoopingExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/MacroCallConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/MacroCallImpl.qll linguist-generated /lib/codeql/rust/elements/internal/MacroDefConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/MacroDefImpl.qll linguist-generated /lib/codeql/rust/elements/internal/MacroExprConstructor.qll linguist-generated @@ -297,7 +277,6 @@ /lib/codeql/rust/elements/internal/MacroTypeConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/MacroTypeImpl.qll linguist-generated /lib/codeql/rust/elements/internal/MatchArmConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/MatchArmImpl.qll linguist-generated /lib/codeql/rust/elements/internal/MatchArmListConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/MatchArmListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/MatchExprConstructor.qll linguist-generated @@ -309,46 +288,35 @@ /lib/codeql/rust/elements/internal/MissingConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/MissingImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ModuleConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/ModuleImpl.qll linguist-generated /lib/codeql/rust/elements/internal/NameConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/NameRefConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/NeverTypeConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/NeverTypeImpl.qll linguist-generated /lib/codeql/rust/elements/internal/OffsetOfExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/OffsetOfExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/OrPatConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ParamConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/ParamImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ParamListConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ParamListImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ParenExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/ParenExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ParenPatConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/ParenPatImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ParenTypeConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/ParenTypeImpl.qll linguist-generated /lib/codeql/rust/elements/internal/PatImpl.qll linguist-generated /lib/codeql/rust/elements/internal/PathConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/PathExprBaseImpl.qll linguist-generated /lib/codeql/rust/elements/internal/PathExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/PathPatConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/PathPatImpl.qll linguist-generated /lib/codeql/rust/elements/internal/PathSegmentConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/PathTypeConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/PathTypeImpl.qll linguist-generated /lib/codeql/rust/elements/internal/PrefixExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/PtrTypeConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/PtrTypeImpl.qll linguist-generated /lib/codeql/rust/elements/internal/RangeExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/RangeExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/RangePatConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/RangePatImpl.qll linguist-generated /lib/codeql/rust/elements/internal/RecordExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/RecordExprFieldConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/RecordExprFieldImpl.qll linguist-generated /lib/codeql/rust/elements/internal/RecordExprFieldListConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/RecordExprFieldListImpl.qll linguist-generated -/lib/codeql/rust/elements/internal/RecordExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/RecordFieldConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/RecordFieldImpl.qll linguist-generated /lib/codeql/rust/elements/internal/RecordFieldListConstructor.qll linguist-generated @@ -358,22 +326,17 @@ /lib/codeql/rust/elements/internal/RecordPatFieldImpl.qll linguist-generated /lib/codeql/rust/elements/internal/RecordPatFieldListConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/RecordPatFieldListImpl.qll linguist-generated -/lib/codeql/rust/elements/internal/RecordPatImpl.qll linguist-generated /lib/codeql/rust/elements/internal/RefExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/RefExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/RefPatConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/RefPatImpl.qll linguist-generated /lib/codeql/rust/elements/internal/RefTypeConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/RefTypeImpl.qll linguist-generated /lib/codeql/rust/elements/internal/RenameConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/RenameImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ResolvableImpl.qll linguist-generated /lib/codeql/rust/elements/internal/RestPatConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/RestPatImpl.qll linguist-generated /lib/codeql/rust/elements/internal/RetTypeConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/RetTypeImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ReturnExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/ReturnExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/ReturnTypeSyntaxConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/ReturnTypeSyntaxImpl.qll linguist-generated /lib/codeql/rust/elements/internal/SelfParamConstructor.qll linguist-generated @@ -397,7 +360,6 @@ /lib/codeql/rust/elements/internal/TraitAliasConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/TraitAliasImpl.qll linguist-generated /lib/codeql/rust/elements/internal/TraitConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/TraitImpl.qll linguist-generated /lib/codeql/rust/elements/internal/TryExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/TryExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/TupleExprConstructor.qll linguist-generated @@ -424,12 +386,10 @@ /lib/codeql/rust/elements/internal/TypeParamImpl.qll linguist-generated /lib/codeql/rust/elements/internal/TypeRefImpl.qll linguist-generated /lib/codeql/rust/elements/internal/UnderscoreExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/UnderscoreExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/UnextractedImpl.qll linguist-generated /lib/codeql/rust/elements/internal/UnimplementedConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/UnimplementedImpl.qll linguist-generated /lib/codeql/rust/elements/internal/UnionConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/UnionImpl.qll linguist-generated /lib/codeql/rust/elements/internal/UseConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/UseImpl.qll linguist-generated /lib/codeql/rust/elements/internal/UseTreeConstructor.qll linguist-generated @@ -447,9 +407,7 @@ /lib/codeql/rust/elements/internal/WherePredConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/WherePredImpl.qll linguist-generated /lib/codeql/rust/elements/internal/WhileExprConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/WhileExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/WildcardPatConstructor.qll linguist-generated -/lib/codeql/rust/elements/internal/WildcardPatImpl.qll linguist-generated /lib/codeql/rust/elements/internal/YeetExprConstructor.qll linguist-generated /lib/codeql/rust/elements/internal/YeetExprImpl.qll linguist-generated /lib/codeql/rust/elements/internal/YieldExprConstructor.qll linguist-generated @@ -515,6 +473,7 @@ /lib/codeql/rust/elements/internal/generated/Item.qll linguist-generated /lib/codeql/rust/elements/internal/generated/ItemList.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Label.qll linguist-generated +/lib/codeql/rust/elements/internal/generated/LabelableExpr.qll linguist-generated /lib/codeql/rust/elements/internal/generated/LetElse.qll linguist-generated /lib/codeql/rust/elements/internal/generated/LetExpr.qll linguist-generated /lib/codeql/rust/elements/internal/generated/LetStmt.qll linguist-generated @@ -525,6 +484,7 @@ /lib/codeql/rust/elements/internal/generated/LiteralPat.qll linguist-generated /lib/codeql/rust/elements/internal/generated/Locatable.qll linguist-generated /lib/codeql/rust/elements/internal/generated/LoopExpr.qll linguist-generated +/lib/codeql/rust/elements/internal/generated/LoopingExpr.qll linguist-generated /lib/codeql/rust/elements/internal/generated/MacroCall.qll linguist-generated /lib/codeql/rust/elements/internal/generated/MacroDef.qll linguist-generated /lib/codeql/rust/elements/internal/generated/MacroExpr.qll linguist-generated @@ -935,25 +895,25 @@ /test/extractor-tests/generated/ParenType/ParenType.ql linguist-generated /test/extractor-tests/generated/ParenType/ParenType_getTy.ql linguist-generated /test/extractor-tests/generated/Path/Path.ql linguist-generated +/test/extractor-tests/generated/Path/PathExpr.ql linguist-generated +/test/extractor-tests/generated/Path/PathExpr_getAttr.ql linguist-generated +/test/extractor-tests/generated/Path/PathExpr_getPath.ql linguist-generated +/test/extractor-tests/generated/Path/PathPat.ql linguist-generated +/test/extractor-tests/generated/Path/PathPat_getPath.ql linguist-generated +/test/extractor-tests/generated/Path/PathSegment.ql linguist-generated +/test/extractor-tests/generated/Path/PathSegment_getGenericArgList.ql linguist-generated +/test/extractor-tests/generated/Path/PathSegment_getNameRef.ql linguist-generated +/test/extractor-tests/generated/Path/PathSegment_getParamList.ql linguist-generated +/test/extractor-tests/generated/Path/PathSegment_getPathType.ql linguist-generated +/test/extractor-tests/generated/Path/PathSegment_getRetType.ql linguist-generated +/test/extractor-tests/generated/Path/PathSegment_getReturnTypeSyntax.ql linguist-generated +/test/extractor-tests/generated/Path/PathSegment_getTy.ql linguist-generated +/test/extractor-tests/generated/Path/PathType.ql linguist-generated +/test/extractor-tests/generated/Path/PathType_getPath.ql linguist-generated /test/extractor-tests/generated/Path/Path_getPart.ql linguist-generated /test/extractor-tests/generated/Path/Path_getQualifier.ql linguist-generated /test/extractor-tests/generated/Path/Path_getResolvedCrateOrigin.ql linguist-generated /test/extractor-tests/generated/Path/Path_getResolvedPath.ql linguist-generated -/test/extractor-tests/generated/PathExpr/PathExpr.ql linguist-generated -/test/extractor-tests/generated/PathExpr/PathExpr_getAttr.ql linguist-generated -/test/extractor-tests/generated/PathExpr/PathExpr_getPath.ql linguist-generated -/test/extractor-tests/generated/PathPat/PathPat.ql linguist-generated -/test/extractor-tests/generated/PathPat/PathPat_getPath.ql linguist-generated -/test/extractor-tests/generated/PathSegment/PathSegment.ql linguist-generated -/test/extractor-tests/generated/PathSegment/PathSegment_getGenericArgList.ql linguist-generated -/test/extractor-tests/generated/PathSegment/PathSegment_getNameRef.ql linguist-generated -/test/extractor-tests/generated/PathSegment/PathSegment_getParamList.ql linguist-generated -/test/extractor-tests/generated/PathSegment/PathSegment_getPathType.ql linguist-generated -/test/extractor-tests/generated/PathSegment/PathSegment_getRetType.ql linguist-generated -/test/extractor-tests/generated/PathSegment/PathSegment_getReturnTypeSyntax.ql linguist-generated -/test/extractor-tests/generated/PathSegment/PathSegment_getTy.ql linguist-generated -/test/extractor-tests/generated/PathType/PathType.ql linguist-generated -/test/extractor-tests/generated/PathType/PathType_getPath.ql linguist-generated /test/extractor-tests/generated/PrefixExpr/PrefixExpr.ql linguist-generated /test/extractor-tests/generated/PrefixExpr/PrefixExpr_getAttr.ql linguist-generated /test/extractor-tests/generated/PrefixExpr/PrefixExpr_getExpr.ql linguist-generated diff --git a/rust/ql/integration-tests/hello-project/functions.expected b/rust/ql/integration-tests/hello-project/functions.expected index fc49564084e3..2665ea7df769 100644 --- a/rust/ql/integration-tests/hello-project/functions.expected +++ b/rust/ql/integration-tests/hello-project/functions.expected @@ -1 +1 @@ -| src/main.rs:4:1:6:1 | main | +| src/main.rs:4:1:6:1 | fn main | diff --git a/rust/ql/integration-tests/hello-workspace/functions.expected b/rust/ql/integration-tests/hello-workspace/functions.expected index 0ec9937972e2..0633774edf73 100644 --- a/rust/ql/integration-tests/hello-workspace/functions.expected +++ b/rust/ql/integration-tests/hello-workspace/functions.expected @@ -1,2 +1,2 @@ -| exe/src/main.rs:5:1:7:1 | main | -| lib/src/a_module/mod.rs:1:1:3:1 | hello | +| exe/src/main.rs:5:1:7:1 | fn main | +| lib/src/a_module/mod.rs:1:1:3:1 | fn hello | diff --git a/rust/ql/integration-tests/options/cfg/functions.expected b/rust/ql/integration-tests/options/cfg/functions.expected index a2042c5e4c49..cd022ca510e0 100644 --- a/rust/ql/integration-tests/options/cfg/functions.expected +++ b/rust/ql/integration-tests/options/cfg/functions.expected @@ -1,3 +1,3 @@ -| src/lib.rs:7:1:8:19 | cfg_no_flag | -| src/lib.rs:10:1:11:18 | cfg_no_key | -| src/lib.rs:16:1:17:24 | pointer_width_64 | +| src/lib.rs:7:1:8:19 | fn cfg_no_flag | +| src/lib.rs:10:1:11:18 | fn cfg_no_key | +| src/lib.rs:16:1:17:24 | fn pointer_width_64 | diff --git a/rust/ql/integration-tests/options/cfg/functions.override.expected b/rust/ql/integration-tests/options/cfg/functions.override.expected index 4a19db56a741..34feddaf1490 100644 --- a/rust/ql/integration-tests/options/cfg/functions.override.expected +++ b/rust/ql/integration-tests/options/cfg/functions.override.expected @@ -1,4 +1,4 @@ -| src/lib.rs:1:1:2:16 | cfg_flag | -| src/lib.rs:4:1:5:15 | cfg_key | -| src/lib.rs:13:1:14:12 | test | -| src/lib.rs:19:1:20:24 | pointer_width_32 | +| src/lib.rs:1:1:2:16 | fn cfg_flag | +| src/lib.rs:4:1:5:15 | fn cfg_key | +| src/lib.rs:13:1:14:12 | fn test | +| src/lib.rs:19:1:20:24 | fn pointer_width_32 | diff --git a/rust/ql/integration-tests/options/features/functions.all.expected b/rust/ql/integration-tests/options/features/functions.all.expected index 5ce4cae2ab0d..1fa14be6da60 100644 --- a/rust/ql/integration-tests/options/features/functions.all.expected +++ b/rust/ql/integration-tests/options/features/functions.all.expected @@ -1,3 +1,3 @@ -| src/lib.rs:1:1:2:11 | foo | -| src/lib.rs:4:1:5:11 | bar | -| src/lib.rs:7:1:7:14 | always | +| src/lib.rs:1:1:2:11 | fn foo | +| src/lib.rs:4:1:5:11 | fn bar | +| src/lib.rs:7:1:7:14 | fn always | diff --git a/rust/ql/integration-tests/options/features/functions.bar.expected b/rust/ql/integration-tests/options/features/functions.bar.expected index cad441d6749b..fae918e493a3 100644 --- a/rust/ql/integration-tests/options/features/functions.bar.expected +++ b/rust/ql/integration-tests/options/features/functions.bar.expected @@ -1,2 +1,2 @@ -| src/lib.rs:4:1:5:11 | bar | -| src/lib.rs:7:1:7:14 | always | +| src/lib.rs:4:1:5:11 | fn bar | +| src/lib.rs:7:1:7:14 | fn always | diff --git a/rust/ql/integration-tests/options/features/functions.expected b/rust/ql/integration-tests/options/features/functions.expected index 523c21876884..d095a8993d8a 100644 --- a/rust/ql/integration-tests/options/features/functions.expected +++ b/rust/ql/integration-tests/options/features/functions.expected @@ -1 +1 @@ -| src/lib.rs:7:1:7:14 | always | +| src/lib.rs:7:1:7:14 | fn always | diff --git a/rust/ql/integration-tests/options/features/functions.foo.expected b/rust/ql/integration-tests/options/features/functions.foo.expected index b78754230833..3768144364f3 100644 --- a/rust/ql/integration-tests/options/features/functions.foo.expected +++ b/rust/ql/integration-tests/options/features/functions.foo.expected @@ -1,2 +1,2 @@ -| src/lib.rs:1:1:2:11 | foo | -| src/lib.rs:7:1:7:14 | always | +| src/lib.rs:1:1:2:11 | fn foo | +| src/lib.rs:7:1:7:14 | fn always | diff --git a/rust/ql/integration-tests/options/target/functions.Darwin.expected b/rust/ql/integration-tests/options/target/functions.Darwin.expected index 217974bb7c63..8b879e8ca7c7 100644 --- a/rust/ql/integration-tests/options/target/functions.Darwin.expected +++ b/rust/ql/integration-tests/options/target/functions.Darwin.expected @@ -1 +1 @@ -| src/lib.rs:7:1:8:13 | macos | +| src/lib.rs:7:1:8:13 | fn macos | diff --git a/rust/ql/integration-tests/options/target/functions.Linux.expected b/rust/ql/integration-tests/options/target/functions.Linux.expected index 57662579f1f5..2e023fb887c0 100644 --- a/rust/ql/integration-tests/options/target/functions.Linux.expected +++ b/rust/ql/integration-tests/options/target/functions.Linux.expected @@ -1 +1 @@ -| src/lib.rs:1:1:2:13 | linux | +| src/lib.rs:1:1:2:13 | fn linux | diff --git a/rust/ql/integration-tests/options/target/functions.Windows.expected b/rust/ql/integration-tests/options/target/functions.Windows.expected index 8ae2d8c86ccf..170a6e62e80e 100644 --- a/rust/ql/integration-tests/options/target/functions.Windows.expected +++ b/rust/ql/integration-tests/options/target/functions.Windows.expected @@ -1 +1 @@ -| src/lib.rs:4:1:5:15 | windows | +| src/lib.rs:4:1:5:15 | fn windows | diff --git a/rust/ql/integration-tests/qltest/dependencies/functions.expected b/rust/ql/integration-tests/qltest/dependencies/functions.expected deleted file mode 100644 index c062595f9237..000000000000 --- a/rust/ql/integration-tests/qltest/dependencies/functions.expected +++ /dev/null @@ -1 +0,0 @@ -| test.rs:4:1:7:1 | foo | diff --git a/rust/ql/integration-tests/qltest/dependencies/functions.nested.expected b/rust/ql/integration-tests/qltest/dependencies/functions.nested.expected new file mode 100644 index 000000000000..9ee4b080b97e --- /dev/null +++ b/rust/ql/integration-tests/qltest/dependencies/functions.nested.expected @@ -0,0 +1 @@ +| test.rs:4:1:7:1 | fn foo | diff --git a/rust/ql/integration-tests/qltest/lib/functions.expected b/rust/ql/integration-tests/qltest/lib/functions.expected deleted file mode 100644 index 613d53954dcc..000000000000 --- a/rust/ql/integration-tests/qltest/lib/functions.expected +++ /dev/null @@ -1 +0,0 @@ -| test.rs:1:1:1:11 | foo | diff --git a/rust/ql/integration-tests/qltest/lib/functions.nested.expected b/rust/ql/integration-tests/qltest/lib/functions.nested.expected new file mode 100644 index 000000000000..74d1d680dae3 --- /dev/null +++ b/rust/ql/integration-tests/qltest/lib/functions.nested.expected @@ -0,0 +1 @@ +| test.rs:1:1:1:11 | fn foo | diff --git a/rust/ql/integration-tests/qltest/main/functions.expected b/rust/ql/integration-tests/qltest/main/functions.expected deleted file mode 100644 index 9d3631034191..000000000000 --- a/rust/ql/integration-tests/qltest/main/functions.expected +++ /dev/null @@ -1,2 +0,0 @@ -| main.rs:1:1:1:12 | main | -| test.rs:1:1:1:11 | foo | diff --git a/rust/ql/integration-tests/qltest/main/functions.nested.expected b/rust/ql/integration-tests/qltest/main/functions.nested.expected new file mode 100644 index 000000000000..fc9c578919ce --- /dev/null +++ b/rust/ql/integration-tests/qltest/main/functions.nested.expected @@ -0,0 +1,2 @@ +| main.rs:1:1:1:12 | fn main | +| test.rs:1:1:1:11 | fn foo | diff --git a/rust/ql/integration-tests/qltest/test.py b/rust/ql/integration-tests/qltest/test_qltest.py similarity index 84% rename from rust/ql/integration-tests/qltest/test.py rename to rust/ql/integration-tests/qltest/test_qltest.py index e488dee25717..edd62bf600ef 100644 --- a/rust/ql/integration-tests/qltest/test.py +++ b/rust/ql/integration-tests/qltest/test_qltest.py @@ -11,10 +11,12 @@ def default_options(codeql): threads = 1, show_extractor_output = True, check_databases = False, + learn = True, ) @pytest.mark.parametrize("dir", ["lib", "main", "dependencies"]) -def test(codeql, rust, dir): +def test(codeql, rust, expected_files, dir): + expected_files.add(f"{dir}/functions.expected", expected=".nested.expected") codeql.test.run(dir) def test_failing_cargo_check(codeql, rust): diff --git a/rust/ql/lib/codeql/rust/AstConsistency.qll b/rust/ql/lib/codeql/rust/AstConsistency.qll index dbb7f7216d72..3902f56d20ba 100644 --- a/rust/ql/lib/codeql/rust/AstConsistency.qll +++ b/rust/ql/lib/codeql/rust/AstConsistency.qll @@ -10,8 +10,9 @@ private predicate multipleToStrings(Element e) { strictcount(e.toString()) > 1 } /** * Holds if `e` has more than one `toString()` result. */ -query predicate multipleToStrings(Element e, string s) { +query predicate multipleToStrings(Element e, string cls, string s) { multipleToStrings(e) and + cls = e.getPrimaryQlClasses() and s = strictconcat(e.toString(), ", ") } @@ -39,9 +40,11 @@ private predicate multipleParents(Element child) { strictcount(getParent(child)) /** * Holds if `child` has more than one AST parent. */ -query predicate multipleParents(Element child, Element parent) { +query predicate multipleParents(Element child, string childClass, Element parent, string parentClass) { multipleParents(child) and - parent = getParent(child) + childClass = child.getPrimaryQlClasses() and + parent = getParent(child) and + parentClass = parent.getPrimaryQlClasses() } /** diff --git a/rust/ql/lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll b/rust/ql/lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll index 2cbb9e9d3bd2..b550ecf89b75 100644 --- a/rust/ql/lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll +++ b/rust/ql/lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll @@ -385,7 +385,7 @@ module MakeCfgNodes Input> { * } * ``` */ - final class BlockExprCfgNode extends CfgNodeFinal, ExprCfgNode { + final class BlockExprCfgNode extends CfgNodeFinal, LabelableExprCfgNode { private BlockExpr node; BlockExprCfgNode() { node = this.getAstNode() } @@ -438,16 +438,6 @@ module MakeCfgNodes Input> { */ predicate isUnsafe() { node.isUnsafe() } - /** - * Gets the label of this block expression, if it exists. - */ - Label getLabel() { result = node.getLabel() } - - /** - * Holds if `getLabel()` exists. - */ - predicate hasLabel() { exists(this.getLabel()) } - /** * Gets the statement list of this block expression, if it exists. */ @@ -835,8 +825,6 @@ module MakeCfgNodes Input> { or child = this.getIterable() or - child = this.getLoopBody() - or child = this.getPat() } } @@ -847,7 +835,7 @@ module MakeCfgNodes Input> { * todo!() * ``` */ - final class ForExprCfgNode extends CfgNodeFinal, ExprCfgNode { + final class ForExprCfgNode extends CfgNodeFinal, LoopingExprCfgNode { private ForExpr node; ForExprCfgNode() { node = this.getAstNode() } @@ -882,28 +870,6 @@ module MakeCfgNodes Input> { */ predicate hasIterable() { exists(this.getIterable()) } - /** - * Gets the label of this for expression, if it exists. - */ - Label getLabel() { result = node.getLabel() } - - /** - * Holds if `getLabel()` exists. - */ - predicate hasLabel() { exists(this.getLabel()) } - - /** - * Gets the loop body of this for expression, if it exists. - */ - BlockExprCfgNode getLoopBody() { - any(ChildMapping mapping).hasCfgChild(node, node.getLoopBody(), this, result) - } - - /** - * Holds if `getLoopBody()` exists. - */ - predicate hasLoopBody() { exists(this.getLoopBody()) } - /** * Gets the pat of this for expression, if it exists. */ @@ -1249,6 +1215,32 @@ module MakeCfgNodes Input> { predicate hasIndex() { exists(this.getIndex()) } } + final private class ParentLabelableExpr extends ParentAstNode, LabelableExpr { + override predicate relevantChild(AstNode child) { none() } + } + + /** + * The base class for expressions that can be labeled (`LoopExpr`, `ForExpr`, `WhileExpr` or `BlockExpr`). + */ + final class LabelableExprCfgNode extends CfgNodeFinal, ExprCfgNode { + private LabelableExpr node; + + LabelableExprCfgNode() { node = this.getAstNode() } + + /** Gets the underlying `LabelableExpr`. */ + LabelableExpr getLabelableExpr() { result = node } + + /** + * Gets the label of this labelable expression, if it exists. + */ + Label getLabel() { result = node.getLabel() } + + /** + * Holds if `getLabel()` exists. + */ + predicate hasLabel() { exists(this.getLabel()) } + } + final private class ParentLetExpr extends ParentAstNode, LetExpr { override predicate relevantChild(AstNode child) { none() @@ -1496,11 +1488,7 @@ module MakeCfgNodes Input> { } final private class ParentLoopExpr extends ParentAstNode, LoopExpr { - override predicate relevantChild(AstNode child) { - none() - or - child = this.getLoopBody() - } + override predicate relevantChild(AstNode child) { none() } } /** @@ -1527,7 +1515,7 @@ module MakeCfgNodes Input> { * }; * ``` */ - final class LoopExprCfgNode extends CfgNodeFinal, ExprCfgNode { + final class LoopExprCfgNode extends CfgNodeFinal, LoopingExprCfgNode { private LoopExpr node; LoopExprCfgNode() { node = this.getAstNode() } @@ -1549,19 +1537,29 @@ module MakeCfgNodes Input> { * Gets the number of attrs of this loop expression. */ int getNumberOfAttrs() { result = count(int i | exists(this.getAttr(i))) } + } - /** - * Gets the label of this loop expression, if it exists. - */ - Label getLabel() { result = node.getLabel() } + final private class ParentLoopingExpr extends ParentAstNode, LoopingExpr { + override predicate relevantChild(AstNode child) { + none() + or + child = this.getLoopBody() + } + } - /** - * Holds if `getLabel()` exists. - */ - predicate hasLabel() { exists(this.getLabel()) } + /** + * The base class for expressions that loop (`LoopExpr`, `ForExpr` or `WhileExpr`). + */ + final class LoopingExprCfgNode extends CfgNodeFinal, LabelableExprCfgNode { + private LoopingExpr node; + + LoopingExprCfgNode() { node = this.getAstNode() } + + /** Gets the underlying `LoopingExpr`. */ + LoopingExpr getLoopingExpr() { result = node } /** - * Gets the loop body of this loop expression, if it exists. + * Gets the loop body of this looping expression, if it exists. */ BlockExprCfgNode getLoopBody() { any(ChildMapping mapping).hasCfgChild(node, node.getLoopBody(), this, result) @@ -2947,8 +2945,6 @@ module MakeCfgNodes Input> { none() or child = this.getCondition() - or - child = this.getLoopBody() } } @@ -2958,7 +2954,7 @@ module MakeCfgNodes Input> { * todo!() * ``` */ - final class WhileExprCfgNode extends CfgNodeFinal, ExprCfgNode { + final class WhileExprCfgNode extends CfgNodeFinal, LoopingExprCfgNode { private WhileExpr node; WhileExprCfgNode() { node = this.getAstNode() } @@ -2992,28 +2988,6 @@ module MakeCfgNodes Input> { * Holds if `getCondition()` exists. */ predicate hasCondition() { exists(this.getCondition()) } - - /** - * Gets the label of this while expression, if it exists. - */ - Label getLabel() { result = node.getLabel() } - - /** - * Holds if `getLabel()` exists. - */ - predicate hasLabel() { exists(this.getLabel()) } - - /** - * Gets the loop body of this while expression, if it exists. - */ - BlockExprCfgNode getLoopBody() { - any(ChildMapping mapping).hasCfgChild(node, node.getLoopBody(), this, result) - } - - /** - * Holds if `getLoopBody()` exists. - */ - predicate hasLoopBody() { exists(this.getLoopBody()) } } final private class ParentWildcardPat extends ParentAstNode, WildcardPat { @@ -3290,18 +3264,6 @@ module MakeCfgNodes Input> { cfgNode ) or - pred = "getLoopBody" and - parent = - any(Nodes::ForExprCfgNode cfgNode, ForExpr astNode | - astNode = cfgNode.getForExpr() and - child = getDesugared(astNode.getLoopBody()) and - i = -1 and - hasCfgNode(child) and - not child = cfgNode.getLoopBody().getAstNode() - | - cfgNode - ) - or pred = "getPat" and parent = any(Nodes::ForExprCfgNode cfgNode, ForExpr astNode | @@ -3460,8 +3422,8 @@ module MakeCfgNodes Input> { or pred = "getLoopBody" and parent = - any(Nodes::LoopExprCfgNode cfgNode, LoopExpr astNode | - astNode = cfgNode.getLoopExpr() and + any(Nodes::LoopingExprCfgNode cfgNode, LoopingExpr astNode | + astNode = cfgNode.getLoopingExpr() and child = getDesugared(astNode.getLoopBody()) and i = -1 and hasCfgNode(child) and @@ -3705,18 +3667,6 @@ module MakeCfgNodes Input> { cfgNode ) or - pred = "getLoopBody" and - parent = - any(Nodes::WhileExprCfgNode cfgNode, WhileExpr astNode | - astNode = cfgNode.getWhileExpr() and - child = getDesugared(astNode.getLoopBody()) and - i = -1 and - hasCfgNode(child) and - not child = cfgNode.getLoopBody().getAstNode() - | - cfgNode - ) - or pred = "getExpr" and parent = any(Nodes::YeetExprCfgNode cfgNode, YeetExpr astNode | diff --git a/rust/ql/lib/codeql/rust/elements.qll b/rust/ql/lib/codeql/rust/elements.qll index b516d8a9d185..6bb59b428824 100644 --- a/rust/ql/lib/codeql/rust/elements.qll +++ b/rust/ql/lib/codeql/rust/elements.qll @@ -64,6 +64,7 @@ import codeql.rust.elements.InferType import codeql.rust.elements.Item import codeql.rust.elements.ItemList import codeql.rust.elements.Label +import codeql.rust.elements.LabelableExpr import codeql.rust.elements.LetElse import codeql.rust.elements.LetExpr import codeql.rust.elements.LetStmt @@ -74,6 +75,7 @@ import codeql.rust.elements.LiteralExpr import codeql.rust.elements.LiteralPat import codeql.rust.elements.Locatable import codeql.rust.elements.LoopExpr +import codeql.rust.elements.LoopingExpr import codeql.rust.elements.MacroCall import codeql.rust.elements.MacroDef import codeql.rust.elements.MacroExpr diff --git a/rust/ql/lib/codeql/rust/elements/BlockExpr.qll b/rust/ql/lib/codeql/rust/elements/BlockExpr.qll index a87bbe472528..9e87d381525d 100644 --- a/rust/ql/lib/codeql/rust/elements/BlockExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/BlockExpr.qll @@ -5,8 +5,7 @@ private import internal.BlockExprImpl import codeql.rust.elements.Attr -import codeql.rust.elements.Expr -import codeql.rust.elements.Label +import codeql.rust.elements.LabelableExpr import codeql.rust.elements.StmtList /** diff --git a/rust/ql/lib/codeql/rust/elements/ForExpr.qll b/rust/ql/lib/codeql/rust/elements/ForExpr.qll index c4ef6f9faffc..cfb2586202ed 100644 --- a/rust/ql/lib/codeql/rust/elements/ForExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/ForExpr.qll @@ -5,9 +5,8 @@ private import internal.ForExprImpl import codeql.rust.elements.Attr -import codeql.rust.elements.BlockExpr import codeql.rust.elements.Expr -import codeql.rust.elements.Label +import codeql.rust.elements.LoopingExpr import codeql.rust.elements.Pat /** diff --git a/rust/ql/lib/codeql/rust/elements/LabelableExpr.qll b/rust/ql/lib/codeql/rust/elements/LabelableExpr.qll new file mode 100644 index 000000000000..c2a042595a19 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/LabelableExpr.qll @@ -0,0 +1,13 @@ +// generated by codegen, do not edit +/** + * This module provides the public class `LabelableExpr`. + */ + +private import internal.LabelableExprImpl +import codeql.rust.elements.Expr +import codeql.rust.elements.Label + +/** + * The base class for expressions that can be labeled (`LoopExpr`, `ForExpr`, `WhileExpr` or `BlockExpr`). + */ +final class LabelableExpr = Impl::LabelableExpr; diff --git a/rust/ql/lib/codeql/rust/elements/LoopExpr.qll b/rust/ql/lib/codeql/rust/elements/LoopExpr.qll index 6abc449c6261..cdb6d743b50f 100644 --- a/rust/ql/lib/codeql/rust/elements/LoopExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/LoopExpr.qll @@ -5,9 +5,7 @@ private import internal.LoopExprImpl import codeql.rust.elements.Attr -import codeql.rust.elements.BlockExpr -import codeql.rust.elements.Expr -import codeql.rust.elements.Label +import codeql.rust.elements.LoopingExpr /** * A loop expression. For example: diff --git a/rust/ql/lib/codeql/rust/elements/LoopingExpr.qll b/rust/ql/lib/codeql/rust/elements/LoopingExpr.qll new file mode 100644 index 000000000000..6078afdf762c --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/LoopingExpr.qll @@ -0,0 +1,13 @@ +// generated by codegen, do not edit +/** + * This module provides the public class `LoopingExpr`. + */ + +private import internal.LoopingExprImpl +import codeql.rust.elements.BlockExpr +import codeql.rust.elements.LabelableExpr + +/** + * The base class for expressions that loop (`LoopExpr`, `ForExpr` or `WhileExpr`). + */ +final class LoopingExpr = Impl::LoopingExpr; diff --git a/rust/ql/lib/codeql/rust/elements/Path.qll b/rust/ql/lib/codeql/rust/elements/Path.qll index 530c40397c31..cb228373cf5a 100644 --- a/rust/ql/lib/codeql/rust/elements/Path.qll +++ b/rust/ql/lib/codeql/rust/elements/Path.qll @@ -10,6 +10,7 @@ import codeql.rust.elements.Resolvable /** * A path. For example: * ```rust + * use some_crate::some_module::some_item; * foo::bar; * ``` */ diff --git a/rust/ql/lib/codeql/rust/elements/PathSegment.qll b/rust/ql/lib/codeql/rust/elements/PathSegment.qll index 5566ba322b62..9edc7d6573f7 100644 --- a/rust/ql/lib/codeql/rust/elements/PathSegment.qll +++ b/rust/ql/lib/codeql/rust/elements/PathSegment.qll @@ -14,9 +14,6 @@ import codeql.rust.elements.ReturnTypeSyntax import codeql.rust.elements.TypeRef /** - * A PathSegment. For example: - * ```rust - * todo!() - * ``` + * A path segment, which is one part of a whole path. */ final class PathSegment = Impl::PathSegment; diff --git a/rust/ql/lib/codeql/rust/elements/PathType.qll b/rust/ql/lib/codeql/rust/elements/PathType.qll index e313b9d1b561..773fe910bfa3 100644 --- a/rust/ql/lib/codeql/rust/elements/PathType.qll +++ b/rust/ql/lib/codeql/rust/elements/PathType.qll @@ -8,9 +8,10 @@ import codeql.rust.elements.Path import codeql.rust.elements.TypeRef /** - * A PathType. For example: + * A type referring to a path. For example: * ```rust - * todo!() + * type X = std::collections::HashMap; + * type Y = X::Item; * ``` */ final class PathType = Impl::PathType; diff --git a/rust/ql/lib/codeql/rust/elements/WhileExpr.qll b/rust/ql/lib/codeql/rust/elements/WhileExpr.qll index 9dcbe9c6346f..fc704d35095a 100644 --- a/rust/ql/lib/codeql/rust/elements/WhileExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/WhileExpr.qll @@ -5,9 +5,8 @@ private import internal.WhileExprImpl import codeql.rust.elements.Attr -import codeql.rust.elements.BlockExpr import codeql.rust.elements.Expr -import codeql.rust.elements.Label +import codeql.rust.elements.LoopingExpr /** * A WhileExpr. For example: diff --git a/rust/ql/lib/codeql/rust/elements/internal/ArrayExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ArrayExprImpl.qll index ff4ce2248209..8bda9a2d46e2 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ArrayExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ArrayExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `ArrayExpr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.ArrayExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * An array expression. For example: * ```rust @@ -19,5 +19,7 @@ module Impl { * [1; 10]; * ``` */ - class ArrayExpr extends Generated::ArrayExpr { } + class ArrayExpr extends Generated::ArrayExpr { + override string toString() { result = "[...]" } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/AwaitExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/AwaitExprImpl.qll index 39bbe3017df6..d9aa0f8bf448 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/AwaitExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/AwaitExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `AwaitExpr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.AwaitExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * An `await` expression. For example: * ```rust @@ -21,5 +21,7 @@ module Impl { * } * ``` */ - class AwaitExpr extends Generated::AwaitExpr { } + class AwaitExpr extends Generated::AwaitExpr { + override string toString() { result = "await " + this.getExpr().toAbbreviatedString() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/BecomeExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/BecomeExprImpl.qll index 748659cfdd32..ded01ec4ef83 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/BecomeExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/BecomeExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `BecomeExpr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.BecomeExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A `become` expression. For example: * ```rust @@ -24,5 +24,7 @@ module Impl { * } * ``` */ - class BecomeExpr extends Generated::BecomeExpr { } + class BecomeExpr extends Generated::BecomeExpr { + override string toString() { result = "become " + this.getExpr().toAbbreviatedString() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/BoxPatImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/BoxPatImpl.qll index 06fb2c0fbfa2..45870d14297b 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/BoxPatImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/BoxPatImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `BoxPat`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.BoxPat * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A box pattern. For example: * ```rust @@ -21,5 +21,7 @@ module Impl { * }; * ``` */ - class BoxPat extends Generated::BoxPat { } + class BoxPat extends Generated::BoxPat { + override string toString() { result = "box " + this.getPat().toAbbreviatedString() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/BreakExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/BreakExprImpl.qll index 4b302674a444..d156e207150c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/BreakExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/BreakExprImpl.qll @@ -5,6 +5,7 @@ */ private import codeql.rust.elements.internal.generated.BreakExpr +import codeql.rust.elements.LabelableExpr /** * INTERNAL: This module contains the customizable definition of `BreakExpr` and should not @@ -102,5 +103,17 @@ module Impl { isLabelled(result, label) ) } + + override string toString() { + result = strictconcat(int i | | this.toStringPart(i), " " order by i) + } + + private string toStringPart(int index) { + index = 0 and result = "break" + or + index = 1 and result = this.getLifetime().toString() + or + index = 2 and result = this.getExpr().toAbbreviatedString() + } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/CallExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CallExprImpl.qll index c03a7b9ac138..3da29db7df1c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/CallExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/CallExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `CallExpr`. * @@ -6,12 +5,14 @@ */ private import codeql.rust.elements.internal.generated.CallExpr +private import codeql.rust.elements.PathExpr /** * INTERNAL: This module contains the customizable definition of `CallExpr` and should not * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A function call expression. For example: * ```rust @@ -21,5 +22,7 @@ module Impl { * foo(1) = 4; * ``` */ - class CallExpr extends Generated::CallExpr { } + class CallExpr extends Generated::CallExpr { + override string toString() { result = this.getExpr().toAbbreviatedString() + "(...)" } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/CastExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CastExprImpl.qll index 308c321dfbd2..13270d1ca0b3 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/CastExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/CastExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `CastExpr`. * @@ -12,11 +11,16 @@ private import codeql.rust.elements.internal.generated.CastExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A cast expression. For example: * ```rust * value as u64; * ``` */ - class CastExpr extends Generated::CastExpr { } + class CastExpr extends Generated::CastExpr { + override string toString() { + result = this.getExpr().toAbbreviatedString() + " as " + this.getTy().toAbbreviatedString() + } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ClosureExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ClosureExprImpl.qll index b1c6574b17f9..17e373290b50 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ClosureExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ClosureExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `ClosureExpr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.ClosureExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A closure expression. For example: * ```rust @@ -24,5 +24,7 @@ module Impl { * static |x| yield x; * ``` */ - class ClosureExpr extends Generated::ClosureExpr { } + class ClosureExpr extends Generated::ClosureExpr { + override string toString() { result = "|...| " + this.getBody().toAbbreviatedString() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/CommentImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CommentImpl.qll index 32a4f415ab7c..85b2a4d80d31 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/CommentImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/CommentImpl.qll @@ -20,11 +20,30 @@ module Impl { * ``` */ class Comment extends Generated::Comment { + override string toString() { + result = this.getCommentMarker() + "..." + this.getCommentEndMarker() + } + /** - * Gets the text of this comment, excluding the comment marker. + * Gets the text of this comment, excluding the comment markers. */ string getCommentText() { - exists(string s | s = this.getText() | result = s.regexpCapture("///?\\s*(.*)", 1)) + exists(string s | s = this.getText() | + result = + [ + s.regexpCapture("///?\\s*(.*)", 1), + s.regexpCapture("(?s)/\\*\\*?\\s*(.*?)\\s*\\*/", 1) + ] + ) + } + + /** + * Gets the marker of this comment, that is `"//"`, `"///"`, `"/*"` or `"/**"`. + */ + string getCommentMarker() { result = this.getText().regexpCapture("(?s)(///?|/\\*\\*?).*", 1) } + + private string getCommentEndMarker() { + if this.getCommentMarker() = ["//", "///"] then result = "" else result = "*/" } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ContinueExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ContinueExprImpl.qll index 4328fdfc9f93..ecfcd1a48429 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ContinueExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ContinueExprImpl.qll @@ -49,13 +49,23 @@ module Impl { * ``` */ class ContinueExpr extends Generated::ContinueExpr { + override string toString() { + result = strictconcat(int i | | this.toStringPart(i), " " order by i) + } + + private string toStringPart(int index) { + index = 0 and result = "continue" + or + index = 1 and result = this.getLifetime().getText() + } + /** * Gets the target of this `continue` expression. * * The target is either a `LoopExpr`, a `ForExpr`, or a `WhileExpr`. */ pragma[nomagic] - Expr getTarget() { + LoopingExpr getTarget() { exists(string label | result = getAContinueAncestor(this, label) and BreakExprImpl::isLabelledLoop(result, label) diff --git a/rust/ql/lib/codeql/rust/elements/internal/ElementImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ElementImpl.qll index 6f342c00fd3c..9307a567b6e1 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ElementImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ElementImpl.qll @@ -14,6 +14,14 @@ module Impl { class Element extends Generated::Element { override string toString() { result = this.getAPrimaryQlClass() } + /** + * Returns a string suitable to be inserted into the name of the parent. Typically `"..."`, + * but may be overridden by subclasses. + * + * INTERNAL: Do not use. + */ + string toAbbreviatedString() { result = "..." } + predicate isUnknown() { none() } // compatibility with test generation, to be fixed } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/EnumImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/EnumImpl.qll index bef9d3da903a..0299ce9f05e6 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/EnumImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/EnumImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `Enum`. * @@ -12,11 +11,14 @@ private import codeql.rust.elements.internal.generated.Enum * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A Enum. For example: * ```rust * todo!() * ``` */ - class Enum extends Generated::Enum { } + class Enum extends Generated::Enum { + override string toString() { result = "enum " + this.getName().getText() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/FieldExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/FieldExprImpl.qll index 003d2789e683..b3cd63b79229 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/FieldExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/FieldExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `FieldExpr`. * @@ -12,11 +11,20 @@ private import codeql.rust.elements.internal.generated.FieldExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A field access expression. For example: * ```rust * x.foo * ``` */ - class FieldExpr extends Generated::FieldExpr { } + class FieldExpr extends Generated::FieldExpr { + override string toString() { + exists(string abbr, string name | + abbr = this.getExpr().toAbbreviatedString() and + name = this.getNameRef().getText() and + if abbr = "..." then result = "... ." + name else result = abbr + "." + name + ) + } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ForExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ForExprImpl.qll index a196a6802e9a..b333702c9415 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ForExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ForExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `ForExpr`. * @@ -12,11 +11,16 @@ private import codeql.rust.elements.internal.generated.ForExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A ForExpr. For example: * ```rust * todo!() * ``` */ - class ForExpr extends Generated::ForExpr { } + class ForExpr extends Generated::ForExpr { + override string toStringPrefix() { + result = "for " + this.getPat().toAbbreviatedString() + " in ..." + } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/FunctionImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/FunctionImpl.qll index bff68da5620b..791cf4f9d7fc 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/FunctionImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/FunctionImpl.qll @@ -25,6 +25,6 @@ module Impl { * ``` */ class Function extends Generated::Function { - override string toString() { result = this.getName().getText() } + override string toString() { result = "fn " + this.getName().getText() } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/GenericArgListImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/GenericArgListImpl.qll index 44d74bffbc6f..a701801b68cf 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/GenericArgListImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/GenericArgListImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `GenericArgList`. * @@ -12,11 +11,16 @@ private import codeql.rust.elements.internal.generated.GenericArgList * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * The base class for generic arguments. * ```rust * x.foo::(42); * ``` */ - class GenericArgList extends Generated::GenericArgList { } + class GenericArgList extends Generated::GenericArgList { + override string toString() { result = this.toAbbreviatedString() } + + override string toAbbreviatedString() { result = "<...>" } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/IfExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/IfExprImpl.qll index f9aec6faed35..c90ee6ccdc06 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/IfExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/IfExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `IfExpr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.IfExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * An `if` expression. For example: * ```rust @@ -27,5 +27,17 @@ module Impl { * }; * ``` */ - class IfExpr extends Generated::IfExpr { } + class IfExpr extends Generated::IfExpr { + override string toString() { result = concat(int i | | this.toStringPart(i), " " order by i) } + + private string toStringPart(int index) { + index = 0 and result = "if" + or + index = 1 and result = this.getCondition().toAbbreviatedString() + or + index = 2 and result = "{...}" + or + index = 3 and this.hasElse() and result = "else {...}" + } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ImplImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ImplImpl.qll index b1918d16e56e..c75c36b280b9 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ImplImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ImplImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `Impl`. * @@ -12,11 +11,23 @@ private import codeql.rust.elements.internal.generated.Impl * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A Impl. For example: * ```rust * todo!() * ``` */ - class Impl extends Generated::Impl { } + class Impl extends Generated::Impl { + override string toString() { + exists(string trait | + ( + trait = this.getTrait().toAbbreviatedString() + " for " + or + not this.hasTrait() and trait = "" + ) and + result = "impl " + trait + this.getSelfTy().toAbbreviatedString() + " { ... }" + ) + } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/IndexExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/IndexExprImpl.qll index 94ff116cf1d4..2ace04fe3899 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/IndexExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/IndexExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `IndexExpr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.IndexExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * An index expression. For example: * ```rust @@ -19,5 +19,10 @@ module Impl { * list[42] = 1; * ``` */ - class IndexExpr extends Generated::IndexExpr { } + class IndexExpr extends Generated::IndexExpr { + override string toString() { + result = + this.getBase().toAbbreviatedString() + "[" + this.getIndex().toAbbreviatedString() + "]" + } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/InferTypeImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/InferTypeImpl.qll index b29406661ba9..25c1a40701fd 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/InferTypeImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/InferTypeImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `InferType`. * @@ -12,11 +11,16 @@ private import codeql.rust.elements.internal.generated.InferType * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A InferType. For example: * ```rust * todo!() * ``` */ - class InferType extends Generated::InferType { } + class InferType extends Generated::InferType { + override string toString() { result = this.toAbbreviatedString() } + + override string toAbbreviatedString() { result = "_" } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/LabelImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/LabelImpl.qll index 6740bb23ea88..822029bf3a73 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/LabelImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/LabelImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `Label`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.Label * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A label. For example: * ```rust @@ -21,5 +21,14 @@ module Impl { * }; * ``` */ - class Label extends Generated::Label { } + class Label extends Generated::Label { + override string toString() { result = this.getText() } + + override string toAbbreviatedString() { result = this.getText() } + + /** + * Gets the name of the label, together with the leading `'`. + */ + string getText() { result = this.getLifetime().getText() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/LabelableExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/LabelableExprImpl.qll new file mode 100644 index 000000000000..070481817145 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/LabelableExprImpl.qll @@ -0,0 +1,38 @@ +/** + * This module provides a hand-modifiable wrapper around the generated class `LabelableExpr`. + * + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.LabelableExpr + +/** + * INTERNAL: This module contains the customizable definition of `LabelableExpr` and should not + * be referenced directly. + */ +module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file + /** + * The base class for expressions that can be labeled (`LoopExpr`, `ForExpr`, `WhileExpr` or `BlockExpr`). + */ + class LabelableExpr extends Generated::LabelableExpr { + final override string toString() { + result = strictconcat(int i | | this.toStringPart(i), " " order by i) + } + + private string toStringPart(int index) { + index = 0 and result = this.getLabel().getText() + ":" + or + index = 1 and result = this.toStringPrefix() + or + index = 2 and result = "{ ... }" + } + + /** + * Get the prefix for the string representation of this element. + * + * INTERNAL: Do not use. + */ + string toStringPrefix() { none() } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/LetElseImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/LetElseImpl.qll index 2399964cf1af..0ca4e58fb850 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/LetElseImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/LetElseImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `LetElse`. * @@ -12,11 +11,16 @@ private import codeql.rust.elements.internal.generated.LetElse * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A LetElse. For example: * ```rust * todo!() * ``` */ - class LetElse extends Generated::LetElse { } + class LetElse extends Generated::LetElse { + override string toString() { result = this.toAbbreviatedString() } + + override string toAbbreviatedString() { result = "else {...}" } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/LetExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/LetExprImpl.qll index 4a99a43ba0fe..5b8bd7ec963f 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/LetExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/LetExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `LetExpr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.LetExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A `let` expression. For example: * ```rust @@ -20,5 +20,15 @@ module Impl { * } * ``` */ - class LetExpr extends Generated::LetExpr { } + class LetExpr extends Generated::LetExpr { + override string toString() { result = concat(int i | | this.toStringPart(i), " " order by i) } + + private string toStringPart(int index) { + index = 0 and result = "let" + or + index = 1 and result = this.getPat().toAbbreviatedString() + or + index = 2 and result = "= " + this.getExpr().toAbbreviatedString() + } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/LetStmtImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/LetStmtImpl.qll index 2bcaa6d7905c..d612c2082a64 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/LetStmtImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/LetStmtImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `LetStmt`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.LetStmt * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A let statement. For example: * ```rust @@ -25,5 +25,19 @@ module Impl { * }; * ``` */ - class LetStmt extends Generated::LetStmt { } + class LetStmt extends Generated::LetStmt { + override string toString() { + result = strictconcat(int i | | this.toStringPart(i), " " order by i) + } + + private string toStringPart(int index) { + index = 0 and result = "let" + or + index = 1 and result = this.getPat().toAbbreviatedString() + or + index = 2 and result = "= " + this.getInitializer().toAbbreviatedString() + or + index = 3 and result = this.getLetElse().toAbbreviatedString() + } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/LifetimeImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/LifetimeImpl.qll index 3eb13ac87e5c..27b29f64cc9e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/LifetimeImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/LifetimeImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `Lifetime`. * @@ -12,11 +11,18 @@ private import codeql.rust.elements.internal.generated.Lifetime * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A Lifetime. For example: * ```rust * todo!() * ``` */ - class Lifetime extends Generated::Lifetime { } + class Lifetime extends Generated::Lifetime { + override string toString() { + result = "'" + this.getText() + or + not this.hasText() and result = "'_" + } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/LiteralExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/LiteralExprImpl.qll index 1b660b134c43..f68c79da16b1 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/LiteralExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/LiteralExprImpl.qll @@ -26,6 +26,20 @@ module Impl { * ``` */ class LiteralExpr extends Generated::LiteralExpr { - override string toString() { result = this.getTextValue() } + override string toString() { result = this.getTrimmedText() } + + override string toAbbreviatedString() { result = this.getTrimmedText() } + + /** + * Get the text of this literal, trimmed with `...` if it is too long. + * + * INTERNAL: Do not use. + */ + string getTrimmedText() { + exists(string v | + v = this.getTextValue() and + if v.length() > 30 then result = v.substring(0, 30) + "..." else result = v + ) + } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/LiteralPatImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/LiteralPatImpl.qll index a71d9b1bf848..1c59c3fa284a 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/LiteralPatImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/LiteralPatImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `LiteralPat`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.LiteralPat * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A literal pattern. For example: * ```rust @@ -21,5 +21,9 @@ module Impl { * } * ``` */ - class LiteralPat extends Generated::LiteralPat { } + class LiteralPat extends Generated::LiteralPat { + override string toString() { result = this.toAbbreviatedString() } + + override string toAbbreviatedString() { result = this.getLiteral().getTrimmedText() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/LoopExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/LoopExprImpl.qll index c56ea8770d48..732148717054 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/LoopExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/LoopExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `LoopExpr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.LoopExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A loop expression. For example: * ```rust @@ -36,5 +36,7 @@ module Impl { * }; * ``` */ - class LoopExpr extends Generated::LoopExpr { } + class LoopExpr extends Generated::LoopExpr { + override string toStringPrefix() { result = "loop" } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/LoopingExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/LoopingExprImpl.qll new file mode 100644 index 000000000000..45aa8f42e74b --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/LoopingExprImpl.qll @@ -0,0 +1,19 @@ +// generated by codegen, remove this comment if you wish to edit this file +/** + * This module provides a hand-modifiable wrapper around the generated class `LoopingExpr`. + * + * INTERNAL: Do not use. + */ + +private import codeql.rust.elements.internal.generated.LoopingExpr + +/** + * INTERNAL: This module contains the customizable definition of `LoopingExpr` and should not + * be referenced directly. + */ +module Impl { + /** + * The base class for expressions that loop (`LoopExpr`, `ForExpr` or `WhileExpr`). + */ + class LoopingExpr extends Generated::LoopingExpr { } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll index 76fcd7645a6f..a34d64c0735e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MacroCallImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `MacroCall`. * @@ -12,11 +11,14 @@ private import codeql.rust.elements.internal.generated.MacroCall * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A MacroCall. For example: * ```rust * todo!() * ``` */ - class MacroCall extends Generated::MacroCall { } + class MacroCall extends Generated::MacroCall { + override string toString() { result = this.getPath().toAbbreviatedString() + "!..." } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/MatchArmImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MatchArmImpl.qll index 117e6eb3498b..23ad2551bffc 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MatchArmImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MatchArmImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `MatchArm`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.MatchArm * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A match arm. For example: * ```rust @@ -27,5 +27,17 @@ module Impl { * }; * ``` */ - class MatchArm extends Generated::MatchArm { } + class MatchArm extends Generated::MatchArm { + override string toString() { result = concat(int i | | this.toStringPart(i), " " order by i) } + + private string toStringPart(int index) { + index = 0 and result = this.getPat().toAbbreviatedString() + or + index = 1 and result = "if " + this.getGuard().toAbbreviatedString() + or + index = 2 and result = "=>" + or + index = 3 and result = this.getExpr().toAbbreviatedString() + } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/MatchExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/MatchExprImpl.qll index c8cb535b526d..3ce9aa773107 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/MatchExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/MatchExprImpl.qll @@ -28,6 +28,10 @@ module Impl { * ``` */ class MatchExpr extends Generated::MatchExpr { + override string toString() { + result = "match " + this.getExpr().toAbbreviatedString() + " { ... }" + } + /** * Gets the `index`th arm of this match expression. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/ModuleImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ModuleImpl.qll index 2e94fad609ca..505495862b7f 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ModuleImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ModuleImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `Module`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.Module * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A module declaration. For example: * ```rust @@ -23,5 +23,7 @@ module Impl { * } * ``` */ - class Module extends Generated::Module { } + class Module extends Generated::Module { + override string toString() { result = "mod " + this.getName() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/NeverTypeImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/NeverTypeImpl.qll index 9c04237f38c1..c1858fc9421a 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/NeverTypeImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/NeverTypeImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `NeverType`. * @@ -12,11 +11,16 @@ private import codeql.rust.elements.internal.generated.NeverType * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A NeverType. For example: * ```rust * todo!() * ``` */ - class NeverType extends Generated::NeverType { } + class NeverType extends Generated::NeverType { + override string toString() { result = this.toAbbreviatedString() } + + override string toAbbreviatedString() { result = "!" } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/OrPatImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/OrPatImpl.qll index f29e3d1865fc..07cc59f0ddee 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/OrPatImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/OrPatImpl.qll @@ -21,6 +21,10 @@ module Impl { * ``` */ class OrPat extends Generated::OrPat { + override string toString() { + result = concat(int i | | this.getPat(i).toAbbreviatedString(), " | " order by i) + } + /** Gets the last pattern in this or pattern. */ pragma[nomagic] Pat getLastPat() { result = this.getPat(this.getNumberOfPats() - 1) } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ParamImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ParamImpl.qll index 7015d097e9f4..33e4f5fee59b 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ParamImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ParamImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `Param`. * @@ -12,11 +11,20 @@ private import codeql.rust.elements.internal.generated.Param * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A Param. For example: * ```rust * todo!() * ``` */ - class Param extends Generated::Param { } + class Param extends Generated::Param { + override string toString() { result = concat(int i | | this.toStringPart(i) order by i) } + + private string toStringPart(int index) { + index = 0 and result = this.getPat().toAbbreviatedString() + or + index = 1 and result = ": " + this.getTy().toAbbreviatedString() + } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ParenExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ParenExprImpl.qll index 98c3cab9267c..db9d19f5650b 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ParenExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ParenExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `ParenExpr`. * @@ -12,11 +11,14 @@ private import codeql.rust.elements.internal.generated.ParenExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A ParenExpr. For example: * ```rust * todo!() * ``` */ - class ParenExpr extends Generated::ParenExpr { } + class ParenExpr extends Generated::ParenExpr { + override string toString() { result = "(" + this.getExpr().toAbbreviatedString() + ")" } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ParenPatImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ParenPatImpl.qll index cdba455451c6..9d9016cff98e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ParenPatImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ParenPatImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `ParenPat`. * @@ -12,11 +11,14 @@ private import codeql.rust.elements.internal.generated.ParenPat * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A ParenPat. For example: * ```rust * todo!() * ``` */ - class ParenPat extends Generated::ParenPat { } + class ParenPat extends Generated::ParenPat { + override string toString() { result = "(" + this.getPat().toAbbreviatedString() + ")" } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ParenTypeImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ParenTypeImpl.qll index ab49c9c4fcfc..916758b91333 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ParenTypeImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ParenTypeImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `ParenType`. * @@ -12,11 +11,14 @@ private import codeql.rust.elements.internal.generated.ParenType * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A ParenType. For example: * ```rust * todo!() * ``` */ - class ParenType extends Generated::ParenType { } + class ParenType extends Generated::ParenType { + override string toString() { result = "(" + this.getTy().toAbbreviatedString() + ")" } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/PathExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/PathExprImpl.qll index c8a2af3de33b..19445493c889 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/PathExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/PathExprImpl.qll @@ -22,6 +22,8 @@ module Impl { * ``` */ class PathExpr extends Generated::PathExpr { - override string toString() { result = this.getPath().toString() } + override string toString() { result = this.toAbbreviatedString() } + + override string toAbbreviatedString() { result = this.getPath().toString() } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/PathImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/PathImpl.qll index b53c86559f0c..34cd16c144b4 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/PathImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/PathImpl.qll @@ -15,14 +15,17 @@ module Impl { /** * A path. For example: * ```rust + * use some_crate::some_module::some_item; * foo::bar; * ``` */ class Path extends Generated::Path { - override string toString() { + override string toString() { result = this.toAbbreviatedString() } + + override string toAbbreviatedString() { if this.hasQualifier() - then result = this.getQualifier().toString() + "::" + this.getPart().toString() - else result = this.getPart().toString() + then result = "...::" + this.getPart().toAbbreviatedString() + else result = this.getPart().toAbbreviatedString() } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/PathPatImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/PathPatImpl.qll index 0acf7a588ba6..27914a8f4159 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/PathPatImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/PathPatImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `PathPat`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.PathPat * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A path pattern. For example: * ```rust @@ -21,5 +21,9 @@ module Impl { * } * ``` */ - class PathPat extends Generated::PathPat { } + class PathPat extends Generated::PathPat { + override string toString() { result = this.toAbbreviatedString() } + + override string toAbbreviatedString() { result = this.getPath().toAbbreviatedString() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/PathSegmentImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/PathSegmentImpl.qll index 300a6c7d4a0c..7f586afa3755 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/PathSegmentImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/PathSegmentImpl.qll @@ -13,17 +13,22 @@ private import codeql.rust.elements.internal.generated.PathSegment module Impl { // the following QLdoc is generated: if you need to edit it, do it in the schema file /** - * A PathSegment. For example: - * ```rust - * todo!() - * ``` + * A path segment, which is one part of a whole path. */ class PathSegment extends Generated::PathSegment { - override string toString() { - // TODO: this does not cover everything - if this.hasGenericArgList() - then result = this.getNameRef().toString() + "::<...>" - else result = this.getNameRef().toString() + override string toString() { result = this.toAbbreviatedString() } + + override string toAbbreviatedString() { + result = strictconcat(int i | | this.toAbbreviatedStringPart(i), "::" order by i) + } + + private string toAbbreviatedStringPart(int index) { + index = 0 and + if this.hasPathType() or this.hasTy() + then result = "<...>" + else result = this.getNameRef().getText() + or + index = 1 and result = this.getGenericArgList().toAbbreviatedString() } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/PathTypeImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/PathTypeImpl.qll index 74fa536e08b5..02d8a98d42a3 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/PathTypeImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/PathTypeImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `PathType`. * @@ -12,11 +11,17 @@ private import codeql.rust.elements.internal.generated.PathType * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** - * A PathType. For example: + * A type referring to a path. For example: * ```rust - * todo!() + * type X = std::collections::HashMap; + * type Y = X::Item; * ``` */ - class PathType extends Generated::PathType { } + class PathType extends Generated::PathType { + override string toString() { result = this.toAbbreviatedString() } + + override string toAbbreviatedString() { result = this.getPath().toAbbreviatedString() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/RangeExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/RangeExprImpl.qll index c015171253f7..3b8989af7821 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/RangeExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/RangeExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `RangeExpr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.RangeExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A range expression. For example: * ```rust @@ -23,5 +23,29 @@ module Impl { * let x = ..; * ``` */ - class RangeExpr extends Generated::RangeExpr { } + class RangeExpr extends Generated::RangeExpr { + override string toString() { result = concat(int i | | this.toStringPart(i) order by i) } + + private string toStringPart(int index) { + index = 0 and result = this.getStartAbbreviation() + or + index = 1 and result = this.getOperatorName() + or + index = 2 and result = this.getEndAbbreviation() + } + + private string getStartAbbreviation() { + exists(string abbr | + abbr = this.getStart().toAbbreviatedString() and + if abbr = "..." then result = "... " else result = abbr + ) + } + + private string getEndAbbreviation() { + exists(string abbr | + abbr = this.getEnd().toAbbreviatedString() and + if abbr = "..." then result = " ..." else result = abbr + ) + } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/RecordExprFieldImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/RecordExprFieldImpl.qll index 12b86bb1e4ab..fe898c82fea4 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/RecordExprFieldImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/RecordExprFieldImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `RecordExprField`. * @@ -12,11 +11,20 @@ private import codeql.rust.elements.internal.generated.RecordExprField * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A field in a record expression. For example `a: 1` in: * ```rust * Foo { a: 1, b: 2 }; * ``` */ - class RecordExprField extends Generated::RecordExprField { } + class RecordExprField extends Generated::RecordExprField { + override string toString() { result = concat(int i | | this.toStringPart(i) order by i) } + + private string toStringPart(int index) { + index = 0 and result = this.getNameRef().getText() + or + index = 1 and result = ": " + this.getExpr().toAbbreviatedString() + } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/RecordExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/RecordExprImpl.qll index befc9b26ebbd..a59d3bc22e2e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/RecordExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/RecordExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `RecordExpr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.RecordExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A record expression. For example: * ```rust @@ -21,5 +21,7 @@ module Impl { * Foo { .. } = second; * ``` */ - class RecordExpr extends Generated::RecordExpr { } + class RecordExpr extends Generated::RecordExpr { + override string toString() { result = this.getPath().toString() + " {...}" } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/RecordPatImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/RecordPatImpl.qll index 6378e3220e0f..0bed25bb779f 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/RecordPatImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/RecordPatImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `RecordPat`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.RecordPat * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A record pattern. For example: * ```rust @@ -21,5 +21,7 @@ module Impl { * } * ``` */ - class RecordPat extends Generated::RecordPat { } + class RecordPat extends Generated::RecordPat { + override string toString() { result = this.getPath().toAbbreviatedString() + " {...}" } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/RefExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/RefExprImpl.qll index abc45e0d5c21..4ec593362d95 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/RefExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/RefExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `RefExpr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.RefExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A reference expression. For example: * ```rust @@ -21,5 +21,19 @@ module Impl { * let raw_mut: &mut i32 = &raw mut foo; * ``` */ - class RefExpr extends Generated::RefExpr { } + class RefExpr extends Generated::RefExpr { + override string toString() { + result = "&" + concat(int i | | this.getSpecPart(i), " " order by i) + } + + private string getSpecPart(int index) { + index = 0 and this.isRaw() and result = "raw" + or + index = 1 and this.isConst() and result = "const" + or + index = 2 and this.isMut() and result = "mut" + or + index = 3 and result = this.getExpr().toAbbreviatedString() + } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/RefPatImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/RefPatImpl.qll index 03b1abf5a4f9..d6b1f4c27092 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/RefPatImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/RefPatImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `RefPat`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.RefPat * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A reference pattern. For example: * ```rust @@ -21,5 +21,15 @@ module Impl { * }; * ``` */ - class RefPat extends Generated::RefPat { } + class RefPat extends Generated::RefPat { + override string toString() { + result = "&" + concat(int i | | this.getSpecPart(i), " " order by i) + } + + private string getSpecPart(int index) { + index = 0 and this.isMut() and result = "mut" + or + index = 1 and result = this.getPat().toAbbreviatedString() + } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/RestPatImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/RestPatImpl.qll index bd483e4ba9a6..ec7d48a4d9d7 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/RestPatImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/RestPatImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `RestPat`. * @@ -12,11 +11,16 @@ private import codeql.rust.elements.internal.generated.RestPat * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A RestPat. For example: * ```rust * todo!() * ``` */ - class RestPat extends Generated::RestPat { } + class RestPat extends Generated::RestPat { + override string toString() { result = this.toAbbreviatedString() } + + override string toAbbreviatedString() { result = ".." } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/ReturnExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/ReturnExprImpl.qll index fd185c01b1df..1b632587867e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/ReturnExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/ReturnExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `ReturnExpr`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.ReturnExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A return expression. For example: * ```rust @@ -25,5 +25,13 @@ module Impl { * } * ``` */ - class ReturnExpr extends Generated::ReturnExpr { } + class ReturnExpr extends Generated::ReturnExpr { + override string toString() { result = concat(int i | | this.toStringPart(i), " " order by i) } + + private string toStringPart(int index) { + index = 0 and result = "return" + or + index = 1 and result = this.getExpr().toAbbreviatedString() + } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/TraitImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/TraitImpl.qll index a6fa19517f41..564e54e78d64 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/TraitImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/TraitImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `Trait`. * @@ -12,6 +11,7 @@ private import codeql.rust.elements.internal.generated.Trait * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A Trait. For example: * ``` @@ -24,5 +24,7 @@ module Impl { * pub trait Foo where T::Frobinator: Eq {} * ``` */ - class Trait extends Generated::Trait { } + class Trait extends Generated::Trait { + override string toString() { result = "trait " + this.getName().getText() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/UnderscoreExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/UnderscoreExprImpl.qll index 03709c54b545..620a09e8c3d9 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/UnderscoreExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/UnderscoreExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `UnderscoreExpr`. * @@ -12,11 +11,16 @@ private import codeql.rust.elements.internal.generated.UnderscoreExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * An underscore expression. For example: * ```rust * _ = 42; * ``` */ - class UnderscoreExpr extends Generated::UnderscoreExpr { } + class UnderscoreExpr extends Generated::UnderscoreExpr { + override string toString() { result = this.toAbbreviatedString() } + + override string toAbbreviatedString() { result = "_" } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/UnionImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/UnionImpl.qll index dc850eac4d19..15a793741172 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/UnionImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/UnionImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `Union`. * @@ -12,11 +11,14 @@ private import codeql.rust.elements.internal.generated.Union * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A Union. For example: * ```rust * todo!() * ``` */ - class Union extends Generated::Union { } + class Union extends Generated::Union { + override string toString() { result = "union " + this.getName().getText() } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/WhileExprImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/WhileExprImpl.qll index 647864d46592..e41b6a684a1e 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/WhileExprImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/WhileExprImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `WhileExpr`. * @@ -12,11 +11,16 @@ private import codeql.rust.elements.internal.generated.WhileExpr * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A WhileExpr. For example: * ```rust * todo!() * ``` */ - class WhileExpr extends Generated::WhileExpr { } + class WhileExpr extends Generated::WhileExpr { + override string toStringPrefix() { + result = "while " + this.getCondition().toAbbreviatedString() + } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/WildcardPatImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/WildcardPatImpl.qll index d12e49e1daa9..f1a8fa1a72ee 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/WildcardPatImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/WildcardPatImpl.qll @@ -1,4 +1,3 @@ -// generated by codegen, remove this comment if you wish to edit this file /** * This module provides a hand-modifiable wrapper around the generated class `WildcardPat`. * @@ -12,11 +11,16 @@ private import codeql.rust.elements.internal.generated.WildcardPat * be referenced directly. */ module Impl { + // the following QLdoc is generated: if you need to edit it, do it in the schema file /** * A wildcard pattern. For example: * ```rust * let _ = 42; * ``` */ - class WildcardPat extends Generated::WildcardPat { } + class WildcardPat extends Generated::WildcardPat { + override string toString() { result = this.toAbbreviatedString() } + + override string toAbbreviatedString() { result = "_" } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/BlockExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/BlockExpr.qll index c4f11fdd90c5..6a01a0c45880 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/BlockExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/BlockExpr.qll @@ -7,8 +7,7 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw import codeql.rust.elements.Attr -import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl -import codeql.rust.elements.Label +import codeql.rust.elements.internal.LabelableExprImpl::Impl as LabelableExprImpl import codeql.rust.elements.StmtList /** @@ -32,7 +31,7 @@ module Generated { * INTERNAL: Do not reference the `Generated::BlockExpr` class directly. * Use the subclass `BlockExpr`, where the following predicates are available. */ - class BlockExpr extends Synth::TBlockExpr, ExprImpl::Expr { + class BlockExpr extends Synth::TBlockExpr, LabelableExprImpl::LabelableExpr { override string getAPrimaryQlClass() { result = "BlockExpr" } /** @@ -83,19 +82,6 @@ module Generated { */ predicate isUnsafe() { Synth::convertBlockExprToRaw(this).(Raw::BlockExpr).isUnsafe() } - /** - * Gets the label of this block expression, if it exists. - */ - Label getLabel() { - result = - Synth::convertLabelFromRaw(Synth::convertBlockExprToRaw(this).(Raw::BlockExpr).getLabel()) - } - - /** - * Holds if `getLabel()` exists. - */ - final predicate hasLabel() { exists(this.getLabel()) } - /** * Gets the statement list of this block expression, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ForExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ForExpr.qll index dc5f2d34d3ee..202b1736fc49 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ForExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ForExpr.qll @@ -7,10 +7,8 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw import codeql.rust.elements.Attr -import codeql.rust.elements.BlockExpr import codeql.rust.elements.Expr -import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl -import codeql.rust.elements.Label +import codeql.rust.elements.internal.LoopingExprImpl::Impl as LoopingExprImpl import codeql.rust.elements.Pat /** @@ -26,7 +24,7 @@ module Generated { * INTERNAL: Do not reference the `Generated::ForExpr` class directly. * Use the subclass `ForExpr`, where the following predicates are available. */ - class ForExpr extends Synth::TForExpr, ExprImpl::Expr { + class ForExpr extends Synth::TForExpr, LoopingExprImpl::LoopingExpr { override string getAPrimaryQlClass() { result = "ForExpr" } /** @@ -60,32 +58,6 @@ module Generated { */ final predicate hasIterable() { exists(this.getIterable()) } - /** - * Gets the label of this for expression, if it exists. - */ - Label getLabel() { - result = - Synth::convertLabelFromRaw(Synth::convertForExprToRaw(this).(Raw::ForExpr).getLabel()) - } - - /** - * Holds if `getLabel()` exists. - */ - final predicate hasLabel() { exists(this.getLabel()) } - - /** - * Gets the loop body of this for expression, if it exists. - */ - BlockExpr getLoopBody() { - result = - Synth::convertBlockExprFromRaw(Synth::convertForExprToRaw(this).(Raw::ForExpr).getLoopBody()) - } - - /** - * Holds if `getLoopBody()` exists. - */ - final predicate hasLoopBody() { exists(this.getLoopBody()) } - /** * Gets the pat of this for expression, if it exists. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/LabelableExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/LabelableExpr.qll new file mode 100644 index 000000000000..a0dfd03fb400 --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/LabelableExpr.qll @@ -0,0 +1,38 @@ +// generated by codegen, do not edit +/** + * This module provides the generated definition of `LabelableExpr`. + * INTERNAL: Do not import directly. + */ + +private import codeql.rust.elements.internal.generated.Synth +private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl +import codeql.rust.elements.Label + +/** + * INTERNAL: This module contains the fully generated definition of `LabelableExpr` and should not + * be referenced directly. + */ +module Generated { + /** + * The base class for expressions that can be labeled (`LoopExpr`, `ForExpr`, `WhileExpr` or `BlockExpr`). + * INTERNAL: Do not reference the `Generated::LabelableExpr` class directly. + * Use the subclass `LabelableExpr`, where the following predicates are available. + */ + class LabelableExpr extends Synth::TLabelableExpr, ExprImpl::Expr { + /** + * Gets the label of this labelable expression, if it exists. + */ + Label getLabel() { + result = + Synth::convertLabelFromRaw(Synth::convertLabelableExprToRaw(this) + .(Raw::LabelableExpr) + .getLabel()) + } + + /** + * Holds if `getLabel()` exists. + */ + final predicate hasLabel() { exists(this.getLabel()) } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/LoopExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/LoopExpr.qll index eb943bf746aa..510c3dedb683 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/LoopExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/LoopExpr.qll @@ -7,9 +7,7 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw import codeql.rust.elements.Attr -import codeql.rust.elements.BlockExpr -import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl -import codeql.rust.elements.Label +import codeql.rust.elements.internal.LoopingExprImpl::Impl as LoopingExprImpl /** * INTERNAL: This module contains the fully generated definition of `LoopExpr` and should not @@ -42,7 +40,7 @@ module Generated { * INTERNAL: Do not reference the `Generated::LoopExpr` class directly. * Use the subclass `LoopExpr`, where the following predicates are available. */ - class LoopExpr extends Synth::TLoopExpr, ExprImpl::Expr { + class LoopExpr extends Synth::TLoopExpr, LoopingExprImpl::LoopingExpr { override string getAPrimaryQlClass() { result = "LoopExpr" } /** @@ -62,33 +60,5 @@ module Generated { * Gets the number of attrs of this loop expression. */ final int getNumberOfAttrs() { result = count(int i | exists(this.getAttr(i))) } - - /** - * Gets the label of this loop expression, if it exists. - */ - Label getLabel() { - result = - Synth::convertLabelFromRaw(Synth::convertLoopExprToRaw(this).(Raw::LoopExpr).getLabel()) - } - - /** - * Holds if `getLabel()` exists. - */ - final predicate hasLabel() { exists(this.getLabel()) } - - /** - * Gets the loop body of this loop expression, if it exists. - */ - BlockExpr getLoopBody() { - result = - Synth::convertBlockExprFromRaw(Synth::convertLoopExprToRaw(this) - .(Raw::LoopExpr) - .getLoopBody()) - } - - /** - * Holds if `getLoopBody()` exists. - */ - final predicate hasLoopBody() { exists(this.getLoopBody()) } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/LoopingExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/LoopingExpr.qll new file mode 100644 index 000000000000..427ef05c2aba --- /dev/null +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/LoopingExpr.qll @@ -0,0 +1,38 @@ +// generated by codegen, do not edit +/** + * This module provides the generated definition of `LoopingExpr`. + * INTERNAL: Do not import directly. + */ + +private import codeql.rust.elements.internal.generated.Synth +private import codeql.rust.elements.internal.generated.Raw +import codeql.rust.elements.BlockExpr +import codeql.rust.elements.internal.LabelableExprImpl::Impl as LabelableExprImpl + +/** + * INTERNAL: This module contains the fully generated definition of `LoopingExpr` and should not + * be referenced directly. + */ +module Generated { + /** + * The base class for expressions that loop (`LoopExpr`, `ForExpr` or `WhileExpr`). + * INTERNAL: Do not reference the `Generated::LoopingExpr` class directly. + * Use the subclass `LoopingExpr`, where the following predicates are available. + */ + class LoopingExpr extends Synth::TLoopingExpr, LabelableExprImpl::LabelableExpr { + /** + * Gets the loop body of this looping expression, if it exists. + */ + BlockExpr getLoopBody() { + result = + Synth::convertBlockExprFromRaw(Synth::convertLoopingExprToRaw(this) + .(Raw::LoopingExpr) + .getLoopBody()) + } + + /** + * Holds if `getLoopBody()` exists. + */ + final predicate hasLoopBody() { exists(this.getLoopBody()) } + } +} diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll index a396da834d41..b03310ce2638 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll @@ -1403,29 +1403,6 @@ private module Impl { ) } - private Element getImmediateChildOfBlockExpr(BlockExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nLabel, int nStmtList | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nLabel = nAttr + 1 and - nStmtList = nLabel + 1 and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" - or - index = nAttr and result = e.getLabel() and partialPredicateCall = "Label()" - or - index = nLabel and result = e.getStmtList() and partialPredicateCall = "StmtList()" - ) - ) - } - private Element getImmediateChildOfBoxPat(BoxPat e, int index, string partialPredicateCall) { exists(int b, int bPat, int n, int nPat | b = 0 and @@ -1714,35 +1691,6 @@ private module Impl { ) } - private Element getImmediateChildOfForExpr(ForExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nIterable, int nLabel, int nLoopBody, int nPat | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nIterable = nAttr + 1 and - nLabel = nIterable + 1 and - nLoopBody = nLabel + 1 and - nPat = nLoopBody + 1 and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" - or - index = nAttr and result = e.getIterable() and partialPredicateCall = "Iterable()" - or - index = nIterable and result = e.getLabel() and partialPredicateCall = "Label()" - or - index = nLabel and result = e.getLoopBody() and partialPredicateCall = "LoopBody()" - or - index = nLoopBody and result = e.getPat() and partialPredicateCall = "Pat()" - ) - ) - } - private Element getImmediateChildOfForType(ForType e, int index, string partialPredicateCall) { exists(int b, int bTypeRef, int n, int nGenericParamList, int nTy | b = 0 and @@ -1910,6 +1858,24 @@ private module Impl { ) } + private Element getImmediateChildOfLabelableExpr( + LabelableExpr e, int index, string partialPredicateCall + ) { + exists(int b, int bExpr, int n, int nLabel | + b = 0 and + bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and + n = bExpr and + nLabel = n + 1 and + ( + none() + or + result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) + or + index = n and result = e.getLabel() and partialPredicateCall = "Label()" + ) + ) + } + private Element getImmediateChildOfLetExpr(LetExpr e, int index, string partialPredicateCall) { exists(int b, int bExpr, int n, int nAttr, int nExpr, int nPat | b = 0 and @@ -2044,29 +2010,6 @@ private module Impl { ) } - private Element getImmediateChildOfLoopExpr(LoopExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nLabel, int nLoopBody | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nLabel = nAttr + 1 and - nLoopBody = nLabel + 1 and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" - or - index = nAttr and result = e.getLabel() and partialPredicateCall = "Label()" - or - index = nLabel and result = e.getLoopBody() and partialPredicateCall = "LoopBody()" - ) - ) - } - private Element getImmediateChildOfMacroExpr(MacroExpr e, int index, string partialPredicateCall) { exists(int b, int bExpr, int n, int nMacroCall | b = 0 and @@ -2758,32 +2701,6 @@ private module Impl { ) } - private Element getImmediateChildOfWhileExpr(WhileExpr e, int index, string partialPredicateCall) { - exists(int b, int bExpr, int n, int nAttr, int nCondition, int nLabel, int nLoopBody | - b = 0 and - bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and - n = bExpr and - nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and - nCondition = nAttr + 1 and - nLabel = nCondition + 1 and - nLoopBody = nLabel + 1 and - ( - none() - or - result = getImmediateChildOfExpr(e, index - b, partialPredicateCall) - or - result = e.getAttr(index - n) and - partialPredicateCall = "Attr(" + (index - n).toString() + ")" - or - index = nAttr and result = e.getCondition() and partialPredicateCall = "Condition()" - or - index = nCondition and result = e.getLabel() and partialPredicateCall = "Label()" - or - index = nLabel and result = e.getLoopBody() and partialPredicateCall = "LoopBody()" - ) - ) - } - private Element getImmediateChildOfWildcardPat( WildcardPat e, int index, string partialPredicateCall ) { @@ -2839,6 +2756,27 @@ private module Impl { ) } + private Element getImmediateChildOfBlockExpr(BlockExpr e, int index, string partialPredicateCall) { + exists(int b, int bLabelableExpr, int n, int nAttr, int nStmtList | + b = 0 and + bLabelableExpr = + b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLabelableExpr(e, i, _)) | i) and + n = bLabelableExpr and + nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nStmtList = nAttr + 1 and + ( + none() + or + result = getImmediateChildOfLabelableExpr(e, index - b, partialPredicateCall) + or + result = e.getAttr(index - n) and + partialPredicateCall = "Attr(" + (index - n).toString() + ")" + or + index = nAttr and result = e.getStmtList() and partialPredicateCall = "StmtList()" + ) + ) + } + private Element getImmediateChildOfCallExpr(CallExpr e, int index, string partialPredicateCall) { exists(int b, int bCallExprBase, int n, int nExpr | b = 0 and @@ -3097,6 +3035,25 @@ private module Impl { ) } + private Element getImmediateChildOfLoopingExpr( + LoopingExpr e, int index, string partialPredicateCall + ) { + exists(int b, int bLabelableExpr, int n, int nLoopBody | + b = 0 and + bLabelableExpr = + b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLabelableExpr(e, i, _)) | i) and + n = bLabelableExpr and + nLoopBody = n + 1 and + ( + none() + or + result = getImmediateChildOfLabelableExpr(e, index - b, partialPredicateCall) + or + index = n and result = e.getLoopBody() and partialPredicateCall = "LoopBody()" + ) + ) + } + private Element getImmediateChildOfMacroCall(MacroCall e, int index, string partialPredicateCall) { exists( int b, int bAssocItem, int bExternItem, int bItem, int n, int nAttr, int nPath, @@ -3545,6 +3502,69 @@ private module Impl { ) } + private Element getImmediateChildOfForExpr(ForExpr e, int index, string partialPredicateCall) { + exists(int b, int bLoopingExpr, int n, int nAttr, int nIterable, int nPat | + b = 0 and + bLoopingExpr = + b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLoopingExpr(e, i, _)) | i) and + n = bLoopingExpr and + nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nIterable = nAttr + 1 and + nPat = nIterable + 1 and + ( + none() + or + result = getImmediateChildOfLoopingExpr(e, index - b, partialPredicateCall) + or + result = e.getAttr(index - n) and + partialPredicateCall = "Attr(" + (index - n).toString() + ")" + or + index = nAttr and result = e.getIterable() and partialPredicateCall = "Iterable()" + or + index = nIterable and result = e.getPat() and partialPredicateCall = "Pat()" + ) + ) + } + + private Element getImmediateChildOfLoopExpr(LoopExpr e, int index, string partialPredicateCall) { + exists(int b, int bLoopingExpr, int n, int nAttr | + b = 0 and + bLoopingExpr = + b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLoopingExpr(e, i, _)) | i) and + n = bLoopingExpr and + nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + ( + none() + or + result = getImmediateChildOfLoopingExpr(e, index - b, partialPredicateCall) + or + result = e.getAttr(index - n) and + partialPredicateCall = "Attr(" + (index - n).toString() + ")" + ) + ) + } + + private Element getImmediateChildOfWhileExpr(WhileExpr e, int index, string partialPredicateCall) { + exists(int b, int bLoopingExpr, int n, int nAttr, int nCondition | + b = 0 and + bLoopingExpr = + b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLoopingExpr(e, i, _)) | i) and + n = bLoopingExpr and + nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and + nCondition = nAttr + 1 and + ( + none() + or + result = getImmediateChildOfLoopingExpr(e, index - b, partialPredicateCall) + or + result = e.getAttr(index - n) and + partialPredicateCall = "Attr(" + (index - n).toString() + ")" + or + index = nAttr and result = e.getCondition() and partialPredicateCall = "Condition()" + ) + ) + } + cached Element getImmediateChild(Element e, int index, string partialAccessor) { // why does this look more complicated than it should? @@ -3665,8 +3685,6 @@ private module Impl { or result = getImmediateChildOfBinaryExpr(e, index, partialAccessor) or - result = getImmediateChildOfBlockExpr(e, index, partialAccessor) - or result = getImmediateChildOfBoxPat(e, index, partialAccessor) or result = getImmediateChildOfBreakExpr(e, index, partialAccessor) @@ -3693,8 +3711,6 @@ private module Impl { or result = getImmediateChildOfFnPtrType(e, index, partialAccessor) or - result = getImmediateChildOfForExpr(e, index, partialAccessor) - or result = getImmediateChildOfForType(e, index, partialAccessor) or result = getImmediateChildOfFormatArgsExpr(e, index, partialAccessor) @@ -3721,8 +3737,6 @@ private module Impl { or result = getImmediateChildOfLiteralPat(e, index, partialAccessor) or - result = getImmediateChildOfLoopExpr(e, index, partialAccessor) - or result = getImmediateChildOfMacroExpr(e, index, partialAccessor) or result = getImmediateChildOfMacroPat(e, index, partialAccessor) @@ -3795,14 +3809,14 @@ private module Impl { or result = getImmediateChildOfUnderscoreExpr(e, index, partialAccessor) or - result = getImmediateChildOfWhileExpr(e, index, partialAccessor) - or result = getImmediateChildOfWildcardPat(e, index, partialAccessor) or result = getImmediateChildOfYeetExpr(e, index, partialAccessor) or result = getImmediateChildOfYieldExpr(e, index, partialAccessor) or + result = getImmediateChildOfBlockExpr(e, index, partialAccessor) + or result = getImmediateChildOfCallExpr(e, index, partialAccessor) or result = getImmediateChildOfConst(e, index, partialAccessor) @@ -3844,6 +3858,12 @@ private module Impl { result = getImmediateChildOfUnion(e, index, partialAccessor) or result = getImmediateChildOfUse(e, index, partialAccessor) + or + result = getImmediateChildOfForExpr(e, index, partialAccessor) + or + result = getImmediateChildOfLoopExpr(e, index, partialAccessor) + or + result = getImmediateChildOfWhileExpr(e, index, partialAccessor) } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Path.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Path.qll index 58f7d891d263..36313ca9fe9a 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Path.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Path.qll @@ -18,6 +18,7 @@ module Generated { /** * A path. For example: * ```rust + * use some_crate::some_module::some_item; * foo::bar; * ``` * INTERNAL: Do not reference the `Generated::Path` class directly. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/PathSegment.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/PathSegment.qll index 0878635e7d17..a2c3b970df68 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/PathSegment.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/PathSegment.qll @@ -21,10 +21,7 @@ import codeql.rust.elements.TypeRef */ module Generated { /** - * A PathSegment. For example: - * ```rust - * todo!() - * ``` + * A path segment, which is one part of a whole path. * INTERNAL: Do not reference the `Generated::PathSegment` class directly. * Use the subclass `PathSegment`, where the following predicates are available. */ diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/PathType.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/PathType.qll index 3ac799108ccb..13d7957c40e0 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/PathType.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/PathType.qll @@ -15,9 +15,10 @@ import codeql.rust.elements.internal.TypeRefImpl::Impl as TypeRefImpl */ module Generated { /** - * A PathType. For example: + * A type referring to a path. For example: * ```rust - * todo!() + * type X = std::collections::HashMap; + * type Y = X::Item; * ``` * INTERNAL: Do not reference the `Generated::PathType` class directly. * Use the subclass `PathType`, where the following predicates are available. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll index efcdd4818dce..64de46c55bb1 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll @@ -578,10 +578,7 @@ module Raw { /** * INTERNAL: Do not use. - * A PathSegment. For example: - * ```rust - * todo!() - * ``` + * A path segment, which is one part of a whole path. */ class PathSegment extends @path_segment, AstNode { override string toString() { result = "PathSegment" } @@ -1366,70 +1363,6 @@ module Raw { Expr getRhs() { binary_expr_rhs(this, result) } } - /** - * INTERNAL: Do not use. - * A block expression. For example: - * ```rust - * { - * let x = 42; - * } - * ``` - * ```rust - * 'label: { - * let x = 42; - * x - * } - * ``` - */ - class BlockExpr extends @block_expr, Expr { - override string toString() { result = "BlockExpr" } - - /** - * Gets the `index`th attr of this block expression (0-based). - */ - Attr getAttr(int index) { block_expr_attrs(this, index, result) } - - /** - * Holds if this block expression is async. - */ - predicate isAsync() { block_expr_is_async(this) } - - /** - * Holds if this block expression is const. - */ - predicate isConst() { block_expr_is_const(this) } - - /** - * Holds if this block expression is gen. - */ - predicate isGen() { block_expr_is_gen(this) } - - /** - * Holds if this block expression is move. - */ - predicate isMove() { block_expr_is_move(this) } - - /** - * Holds if this block expression is try. - */ - predicate isTry() { block_expr_is_try(this) } - - /** - * Holds if this block expression is unsafe. - */ - predicate isUnsafe() { block_expr_is_unsafe(this) } - - /** - * Gets the label of this block expression, if it exists. - */ - Label getLabel() { block_expr_labels(this, result) } - - /** - * Gets the statement list of this block expression, if it exists. - */ - StmtList getStmtList() { block_expr_stmt_lists(this, result) } - } - /** * INTERNAL: Do not use. * A box pattern. For example: @@ -1824,42 +1757,6 @@ module Raw { RetType getRetType() { fn_ptr_type_ret_types(this, result) } } - /** - * INTERNAL: Do not use. - * A ForExpr. For example: - * ```rust - * todo!() - * ``` - */ - class ForExpr extends @for_expr, Expr { - override string toString() { result = "ForExpr" } - - /** - * Gets the `index`th attr of this for expression (0-based). - */ - Attr getAttr(int index) { for_expr_attrs(this, index, result) } - - /** - * Gets the iterable of this for expression, if it exists. - */ - Expr getIterable() { for_expr_iterables(this, result) } - - /** - * Gets the label of this for expression, if it exists. - */ - Label getLabel() { for_expr_labels(this, result) } - - /** - * Gets the loop body of this for expression, if it exists. - */ - BlockExpr getLoopBody() { for_expr_loop_bodies(this, result) } - - /** - * Gets the pat of this for expression, if it exists. - */ - Pat getPat() { for_expr_pats(this, result) } - } - /** * INTERNAL: Do not use. * A ForType. For example: @@ -2075,6 +1972,17 @@ module Raw { string getCrateOrigin() { item_crate_origins(this, result) } } + /** + * INTERNAL: Do not use. + * The base class for expressions that can be labeled (`LoopExpr`, `ForExpr`, `WhileExpr` or `BlockExpr`). + */ + class LabelableExpr extends @labelable_expr, Expr { + /** + * Gets the label of this labelable expression, if it exists. + */ + Label getLabel() { labelable_expr_labels(this, result) } + } + /** * INTERNAL: Do not use. * A `let` expression. For example: @@ -2235,50 +2143,6 @@ module Raw { LiteralExpr getLiteral() { literal_pat_literals(this, result) } } - /** - * INTERNAL: Do not use. - * A loop expression. For example: - * ```rust - * loop { - * println!("Hello, world (again)!"); - * }; - * ``` - * ```rust - * 'label: loop { - * println!("Hello, world (once)!"); - * break 'label; - * }; - * ``` - * ```rust - * let mut x = 0; - * loop { - * if x < 10 { - * x += 1; - * } else { - * break; - * } - * }; - * ``` - */ - class LoopExpr extends @loop_expr, Expr { - override string toString() { result = "LoopExpr" } - - /** - * Gets the `index`th attr of this loop expression (0-based). - */ - Attr getAttr(int index) { loop_expr_attrs(this, index, result) } - - /** - * Gets the label of this loop expression, if it exists. - */ - Label getLabel() { loop_expr_labels(this, result) } - - /** - * Gets the loop body of this loop expression, if it exists. - */ - BlockExpr getLoopBody() { loop_expr_loop_bodies(this, result) } - } - /** * INTERNAL: Do not use. * A MacroExpr. For example: @@ -2474,6 +2338,7 @@ module Raw { * INTERNAL: Do not use. * A path. For example: * ```rust + * use some_crate::some_module::some_item; * foo::bar; * ``` */ @@ -2518,9 +2383,10 @@ module Raw { /** * INTERNAL: Do not use. - * A PathType. For example: + * A type referring to a path. For example: * ```rust - * todo!() + * type X = std::collections::HashMap; + * type Y = X::Item; * ``` */ class PathType extends @path_type, TypeRef { @@ -3067,37 +2933,6 @@ module Raw { Attr getAttr(int index) { underscore_expr_attrs(this, index, result) } } - /** - * INTERNAL: Do not use. - * A WhileExpr. For example: - * ```rust - * todo!() - * ``` - */ - class WhileExpr extends @while_expr, Expr { - override string toString() { result = "WhileExpr" } - - /** - * Gets the `index`th attr of this while expression (0-based). - */ - Attr getAttr(int index) { while_expr_attrs(this, index, result) } - - /** - * Gets the condition of this while expression, if it exists. - */ - Expr getCondition() { while_expr_conditions(this, result) } - - /** - * Gets the label of this while expression, if it exists. - */ - Label getLabel() { while_expr_labels(this, result) } - - /** - * Gets the loop body of this while expression, if it exists. - */ - BlockExpr getLoopBody() { while_expr_loop_bodies(this, result) } - } - /** * INTERNAL: Do not use. * A wildcard pattern. For example: @@ -3156,6 +2991,65 @@ module Raw { Expr getExpr() { yield_expr_exprs(this, result) } } + /** + * INTERNAL: Do not use. + * A block expression. For example: + * ```rust + * { + * let x = 42; + * } + * ``` + * ```rust + * 'label: { + * let x = 42; + * x + * } + * ``` + */ + class BlockExpr extends @block_expr, LabelableExpr { + override string toString() { result = "BlockExpr" } + + /** + * Gets the `index`th attr of this block expression (0-based). + */ + Attr getAttr(int index) { block_expr_attrs(this, index, result) } + + /** + * Holds if this block expression is async. + */ + predicate isAsync() { block_expr_is_async(this) } + + /** + * Holds if this block expression is const. + */ + predicate isConst() { block_expr_is_const(this) } + + /** + * Holds if this block expression is gen. + */ + predicate isGen() { block_expr_is_gen(this) } + + /** + * Holds if this block expression is move. + */ + predicate isMove() { block_expr_is_move(this) } + + /** + * Holds if this block expression is try. + */ + predicate isTry() { block_expr_is_try(this) } + + /** + * Holds if this block expression is unsafe. + */ + predicate isUnsafe() { block_expr_is_unsafe(this) } + + /** + * Gets the statement list of this block expression, if it exists. + */ + StmtList getStmtList() { block_expr_stmt_lists(this, result) } + } + /** * INTERNAL: Do not use. * A function call expression. For example: @@ -3462,6 +3356,17 @@ module Raw { WhereClause getWhereClause() { impl_where_clauses(this, result) } } + /** + * INTERNAL: Do not use. + * The base class for expressions that loop (`LoopExpr`, `ForExpr` or `WhileExpr`). + */ + class LoopingExpr extends @looping_expr, LabelableExpr { + /** + * Gets the loop body of this looping expression, if it exists. + */ + BlockExpr getLoopBody() { looping_expr_loop_bodies(this, result) } + } + /** * INTERNAL: Do not use. * A MacroCall. For example: @@ -3954,4 +3859,85 @@ module Raw { */ Visibility getVisibility() { use_visibilities(this, result) } } + + /** + * INTERNAL: Do not use. + * A ForExpr. For example: + * ```rust + * todo!() + * ``` + */ + class ForExpr extends @for_expr, LoopingExpr { + override string toString() { result = "ForExpr" } + + /** + * Gets the `index`th attr of this for expression (0-based). + */ + Attr getAttr(int index) { for_expr_attrs(this, index, result) } + + /** + * Gets the iterable of this for expression, if it exists. + */ + Expr getIterable() { for_expr_iterables(this, result) } + + /** + * Gets the pat of this for expression, if it exists. + */ + Pat getPat() { for_expr_pats(this, result) } + } + + /** + * INTERNAL: Do not use. + * A loop expression. For example: + * ```rust + * loop { + * println!("Hello, world (again)!"); + * }; + * ``` + * ```rust + * 'label: loop { + * println!("Hello, world (once)!"); + * break 'label; + * }; + * ``` + * ```rust + * let mut x = 0; + * loop { + * if x < 10 { + * x += 1; + * } else { + * break; + * } + * }; + * ``` + */ + class LoopExpr extends @loop_expr, LoopingExpr { + override string toString() { result = "LoopExpr" } + + /** + * Gets the `index`th attr of this loop expression (0-based). + */ + Attr getAttr(int index) { loop_expr_attrs(this, index, result) } + } + + /** + * INTERNAL: Do not use. + * A WhileExpr. For example: + * ```rust + * todo!() + * ``` + */ + class WhileExpr extends @while_expr, LoopingExpr { + override string toString() { result = "WhileExpr" } + + /** + * Gets the `index`th attr of this while expression (0-based). + */ + Attr getAttr(int index) { while_expr_attrs(this, index, result) } + + /** + * Gets the condition of this while expression, if it exists. + */ + Expr getCondition() { while_expr_conditions(this, result) } + } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll index 927ba1f238d8..dda242ffdf93 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Synth.qll @@ -645,12 +645,12 @@ module Synth { * INTERNAL: Do not use. */ class TExpr = - TArrayExpr or TAsmExpr or TAwaitExpr or TBecomeExpr or TBinaryExpr or TBlockExpr or - TBreakExpr or TCallExprBase or TCastExpr or TClosureExpr or TContinueExpr or TFieldExpr or - TForExpr or TFormatArgsExpr or TIfExpr or TIndexExpr or TLetExpr or TLiteralExpr or - TLoopExpr or TMacroExpr or TMatchExpr or TOffsetOfExpr or TParenExpr or TPathExprBase or - TPrefixExpr or TRangeExpr or TRecordExpr or TRefExpr or TReturnExpr or TTryExpr or - TTupleExpr or TUnderscoreExpr or TWhileExpr or TYeetExpr or TYieldExpr; + TArrayExpr or TAsmExpr or TAwaitExpr or TBecomeExpr or TBinaryExpr or TBreakExpr or + TCallExprBase or TCastExpr or TClosureExpr or TContinueExpr or TFieldExpr or + TFormatArgsExpr or TIfExpr or TIndexExpr or TLabelableExpr or TLetExpr or TLiteralExpr or + TMacroExpr or TMatchExpr or TOffsetOfExpr or TParenExpr or TPathExprBase or TPrefixExpr or + TRangeExpr or TRecordExpr or TRefExpr or TReturnExpr or TTryExpr or TTupleExpr or + TUnderscoreExpr or TYeetExpr or TYieldExpr; /** * INTERNAL: Do not use. @@ -680,11 +680,21 @@ module Synth { TMacroDef or TMacroRules or TModule or TStatic or TStruct or TTrait or TTraitAlias or TTypeAlias or TUnion or TUse; + /** + * INTERNAL: Do not use. + */ + class TLabelableExpr = TBlockExpr or TLoopingExpr; + /** * INTERNAL: Do not use. */ class TLocatable = TAstNode or TFormat or TFormatArgument; + /** + * INTERNAL: Do not use. + */ + class TLoopingExpr = TForExpr or TLoopExpr or TWhileExpr; + /** * INTERNAL: Do not use. */ @@ -1795,8 +1805,6 @@ module Synth { or result = convertBinaryExprFromRaw(e) or - result = convertBlockExprFromRaw(e) - or result = convertBreakExprFromRaw(e) or result = convertCallExprBaseFromRaw(e) @@ -1809,20 +1817,18 @@ module Synth { or result = convertFieldExprFromRaw(e) or - result = convertForExprFromRaw(e) - or result = convertFormatArgsExprFromRaw(e) or result = convertIfExprFromRaw(e) or result = convertIndexExprFromRaw(e) or + result = convertLabelableExprFromRaw(e) + or result = convertLetExprFromRaw(e) or result = convertLiteralExprFromRaw(e) or - result = convertLoopExprFromRaw(e) - or result = convertMacroExprFromRaw(e) or result = convertMatchExprFromRaw(e) @@ -1849,8 +1855,6 @@ module Synth { or result = convertUnderscoreExprFromRaw(e) or - result = convertWhileExprFromRaw(e) - or result = convertYeetExprFromRaw(e) or result = convertYieldExprFromRaw(e) @@ -1946,6 +1950,16 @@ module Synth { result = convertUseFromRaw(e) } + /** + * INTERNAL: Do not use. + * Converts a raw DB element to a synthesized `TLabelableExpr`, if possible. + */ + TLabelableExpr convertLabelableExprFromRaw(Raw::Element e) { + result = convertBlockExprFromRaw(e) + or + result = convertLoopingExprFromRaw(e) + } + /** * INTERNAL: Do not use. * Converts a raw DB element to a synthesized `TLocatable`, if possible. @@ -1958,6 +1972,18 @@ module Synth { result = convertFormatArgumentFromRaw(e) } + /** + * INTERNAL: Do not use. + * Converts a raw DB element to a synthesized `TLoopingExpr`, if possible. + */ + TLoopingExpr convertLoopingExprFromRaw(Raw::Element e) { + result = convertForExprFromRaw(e) + or + result = convertLoopExprFromRaw(e) + or + result = convertWhileExprFromRaw(e) + } + /** * INTERNAL: Do not use. * Converts a raw DB element to a synthesized `TPat`, if possible. @@ -3145,8 +3171,6 @@ module Synth { or result = convertBinaryExprToRaw(e) or - result = convertBlockExprToRaw(e) - or result = convertBreakExprToRaw(e) or result = convertCallExprBaseToRaw(e) @@ -3159,20 +3183,18 @@ module Synth { or result = convertFieldExprToRaw(e) or - result = convertForExprToRaw(e) - or result = convertFormatArgsExprToRaw(e) or result = convertIfExprToRaw(e) or result = convertIndexExprToRaw(e) or + result = convertLabelableExprToRaw(e) + or result = convertLetExprToRaw(e) or result = convertLiteralExprToRaw(e) or - result = convertLoopExprToRaw(e) - or result = convertMacroExprToRaw(e) or result = convertMatchExprToRaw(e) @@ -3199,8 +3221,6 @@ module Synth { or result = convertUnderscoreExprToRaw(e) or - result = convertWhileExprToRaw(e) - or result = convertYeetExprToRaw(e) or result = convertYieldExprToRaw(e) @@ -3296,6 +3316,16 @@ module Synth { result = convertUseToRaw(e) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TLabelableExpr` to a raw DB element, if possible. + */ + Raw::Element convertLabelableExprToRaw(TLabelableExpr e) { + result = convertBlockExprToRaw(e) + or + result = convertLoopingExprToRaw(e) + } + /** * INTERNAL: Do not use. * Converts a synthesized `TLocatable` to a raw DB element, if possible. @@ -3308,6 +3338,18 @@ module Synth { result = convertFormatArgumentToRaw(e) } + /** + * INTERNAL: Do not use. + * Converts a synthesized `TLoopingExpr` to a raw DB element, if possible. + */ + Raw::Element convertLoopingExprToRaw(TLoopingExpr e) { + result = convertForExprToRaw(e) + or + result = convertLoopExprToRaw(e) + or + result = convertWhileExprToRaw(e) + } + /** * INTERNAL: Do not use. * Converts a synthesized `TPat` to a raw DB element, if possible. diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/WhileExpr.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/WhileExpr.qll index 5cd48bb25063..fa4a4aee65c5 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/WhileExpr.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/WhileExpr.qll @@ -7,10 +7,8 @@ private import codeql.rust.elements.internal.generated.Synth private import codeql.rust.elements.internal.generated.Raw import codeql.rust.elements.Attr -import codeql.rust.elements.BlockExpr import codeql.rust.elements.Expr -import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl -import codeql.rust.elements.Label +import codeql.rust.elements.internal.LoopingExprImpl::Impl as LoopingExprImpl /** * INTERNAL: This module contains the fully generated definition of `WhileExpr` and should not @@ -25,7 +23,7 @@ module Generated { * INTERNAL: Do not reference the `Generated::WhileExpr` class directly. * Use the subclass `WhileExpr`, where the following predicates are available. */ - class WhileExpr extends Synth::TWhileExpr, ExprImpl::Expr { + class WhileExpr extends Synth::TWhileExpr, LoopingExprImpl::LoopingExpr { override string getAPrimaryQlClass() { result = "WhileExpr" } /** @@ -58,33 +56,5 @@ module Generated { * Holds if `getCondition()` exists. */ final predicate hasCondition() { exists(this.getCondition()) } - - /** - * Gets the label of this while expression, if it exists. - */ - Label getLabel() { - result = - Synth::convertLabelFromRaw(Synth::convertWhileExprToRaw(this).(Raw::WhileExpr).getLabel()) - } - - /** - * Holds if `getLabel()` exists. - */ - final predicate hasLabel() { exists(this.getLabel()) } - - /** - * Gets the loop body of this while expression, if it exists. - */ - BlockExpr getLoopBody() { - result = - Synth::convertBlockExprFromRaw(Synth::convertWhileExprToRaw(this) - .(Raw::WhileExpr) - .getLoopBody()) - } - - /** - * Holds if `getLoopBody()` exists. - */ - final predicate hasLoopBody() { exists(this.getLoopBody()) } } } diff --git a/rust/ql/lib/rust.dbscheme b/rust/ql/lib/rust.dbscheme index 666a1e2b0e16..c9933b5b5e33 100644 --- a/rust/ql/lib/rust.dbscheme +++ b/rust/ql/lib/rust.dbscheme @@ -292,20 +292,18 @@ closure_binder_generic_param_lists( | @await_expr | @become_expr | @binary_expr -| @block_expr | @break_expr | @call_expr_base | @cast_expr | @closure_expr | @continue_expr | @field_expr -| @for_expr | @format_args_expr | @if_expr | @index_expr +| @labelable_expr | @let_expr | @literal_expr -| @loop_expr | @macro_expr | @match_expr | @offset_of_expr @@ -319,7 +317,6 @@ closure_binder_generic_param_lists( | @try_expr | @tuple_expr | @underscore_expr -| @while_expr | @yeet_expr | @yield_expr ; @@ -1314,59 +1311,6 @@ binary_expr_rhs( int rhs: @expr ref ); -block_exprs( - unique int id: @block_expr -); - -#keyset[id, index] -block_expr_attrs( - int id: @block_expr ref, - int index: int ref, - int attr: @attr ref -); - -#keyset[id] -block_expr_is_async( - int id: @block_expr ref -); - -#keyset[id] -block_expr_is_const( - int id: @block_expr ref -); - -#keyset[id] -block_expr_is_gen( - int id: @block_expr ref -); - -#keyset[id] -block_expr_is_move( - int id: @block_expr ref -); - -#keyset[id] -block_expr_is_try( - int id: @block_expr ref -); - -#keyset[id] -block_expr_is_unsafe( - int id: @block_expr ref -); - -#keyset[id] -block_expr_labels( - int id: @block_expr ref, - int label: @label ref -); - -#keyset[id] -block_expr_stmt_lists( - int id: @block_expr ref, - int stmt_list: @stmt_list ref -); - box_pats( unique int id: @box_pat ); @@ -1650,41 +1594,6 @@ fn_ptr_type_ret_types( int ret_type: @ret_type ref ); -for_exprs( - unique int id: @for_expr -); - -#keyset[id, index] -for_expr_attrs( - int id: @for_expr ref, - int index: int ref, - int attr: @attr ref -); - -#keyset[id] -for_expr_iterables( - int id: @for_expr ref, - int iterable: @expr ref -); - -#keyset[id] -for_expr_labels( - int id: @for_expr ref, - int label: @label ref -); - -#keyset[id] -for_expr_loop_bodies( - int id: @for_expr ref, - int loop_body: @block_expr ref -); - -#keyset[id] -for_expr_pats( - int id: @for_expr ref, - int pat: @pat ref -); - for_types( unique int id: @for_type ); @@ -1856,6 +1765,17 @@ item_crate_origins( string crate_origin: string ref ); +@labelable_expr = + @block_expr +| @looping_expr +; + +#keyset[id] +labelable_expr_labels( + int id: @labelable_expr ref, + int label: @label ref +); + let_exprs( unique int id: @let_expr ); @@ -1974,29 +1894,6 @@ literal_pat_literals( int literal: @literal_expr ref ); -loop_exprs( - unique int id: @loop_expr -); - -#keyset[id, index] -loop_expr_attrs( - int id: @loop_expr ref, - int index: int ref, - int attr: @attr ref -); - -#keyset[id] -loop_expr_labels( - int id: @loop_expr ref, - int label: @label ref -); - -#keyset[id] -loop_expr_loop_bodies( - int id: @loop_expr ref, - int loop_body: @block_expr ref -); - macro_exprs( unique int id: @macro_expr ); @@ -2555,35 +2452,6 @@ underscore_expr_attrs( int attr: @attr ref ); -while_exprs( - unique int id: @while_expr -); - -#keyset[id, index] -while_expr_attrs( - int id: @while_expr ref, - int index: int ref, - int attr: @attr ref -); - -#keyset[id] -while_expr_conditions( - int id: @while_expr ref, - int condition: @expr ref -); - -#keyset[id] -while_expr_labels( - int id: @while_expr ref, - int label: @label ref -); - -#keyset[id] -while_expr_loop_bodies( - int id: @while_expr ref, - int loop_body: @block_expr ref -); - wildcard_pats( unique int id: @wildcard_pat ); @@ -2622,6 +2490,53 @@ yield_expr_exprs( int expr: @expr ref ); +block_exprs( + unique int id: @block_expr +); + +#keyset[id, index] +block_expr_attrs( + int id: @block_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +block_expr_is_async( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_const( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_gen( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_move( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_try( + int id: @block_expr ref +); + +#keyset[id] +block_expr_is_unsafe( + int id: @block_expr ref +); + +#keyset[id] +block_expr_stmt_lists( + int id: @block_expr ref, + int stmt_list: @stmt_list ref +); + call_exprs( unique int id: @call_expr ); @@ -2908,6 +2823,18 @@ impl_where_clauses( int where_clause: @where_clause ref ); +@looping_expr = + @for_expr +| @loop_expr +| @while_expr +; + +#keyset[id] +looping_expr_loop_bodies( + int id: @looping_expr ref, + int loop_body: @block_expr ref +); + macro_calls( unique int id: @macro_call ); @@ -3368,3 +3295,54 @@ use_visibilities( int id: @use ref, int visibility: @visibility ref ); + +for_exprs( + unique int id: @for_expr +); + +#keyset[id, index] +for_expr_attrs( + int id: @for_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +for_expr_iterables( + int id: @for_expr ref, + int iterable: @expr ref +); + +#keyset[id] +for_expr_pats( + int id: @for_expr ref, + int pat: @pat ref +); + +loop_exprs( + unique int id: @loop_expr +); + +#keyset[id, index] +loop_expr_attrs( + int id: @loop_expr ref, + int index: int ref, + int attr: @attr ref +); + +while_exprs( + unique int id: @while_expr +); + +#keyset[id, index] +while_expr_attrs( + int id: @while_expr ref, + int index: int ref, + int attr: @attr ref +); + +#keyset[id] +while_expr_conditions( + int id: @while_expr ref, + int condition: @expr ref +); diff --git a/rust/ql/test/extractor-tests/canonical_path/canonical_paths.expected b/rust/ql/test/extractor-tests/canonical_path/canonical_paths.expected index 622652e091f7..94bcc7379d95 100644 --- a/rust/ql/test/extractor-tests/canonical_path/canonical_paths.expected +++ b/rust/ql/test/extractor-tests/canonical_path/canonical_paths.expected @@ -1,36 +1,36 @@ canonicalPaths -| canonical_paths.rs:1:1:34:1 | Module | repo::test | crate::canonical_paths::a | +| canonical_paths.rs:1:1:34:1 | mod a | repo::test | crate::canonical_paths::a | | canonical_paths.rs:2:5:3:22 | Struct | repo::test | crate::canonical_paths::a::Struct | -| canonical_paths.rs:5:5:7:5 | Trait | repo::test | crate::canonical_paths::a::Trait | -| canonical_paths.rs:6:9:6:20 | f | repo::test | crate::canonical_paths::a::Trait::f | -| canonical_paths.rs:9:5:11:5 | Impl | None | None | -| canonical_paths.rs:10:9:10:22 | f | repo::test | ::f | -| canonical_paths.rs:13:5:15:5 | Impl | None | None | -| canonical_paths.rs:14:9:14:22 | g | repo::test | ::g | -| canonical_paths.rs:17:5:19:5 | Trait | repo::test | crate::canonical_paths::a::TraitWithBlanketImpl | -| canonical_paths.rs:18:9:18:20 | h | repo::test | crate::canonical_paths::a::TraitWithBlanketImpl::h | -| canonical_paths.rs:21:5:23:5 | Impl | None | None | -| canonical_paths.rs:22:9:22:22 | h | repo::test | <_ as crate::canonical_paths::a::TraitWithBlanketImpl>::h | -| canonical_paths.rs:25:5:25:16 | free | repo::test | crate::canonical_paths::a::free | -| canonical_paths.rs:27:5:33:5 | usage | repo::test | crate::canonical_paths::a::usage | -| canonical_paths.rs:36:1:73:1 | Module | repo::test | crate::canonical_paths::without | +| canonical_paths.rs:5:5:7:5 | trait Trait | repo::test | crate::canonical_paths::a::Trait | +| canonical_paths.rs:6:9:6:20 | fn f | repo::test | crate::canonical_paths::a::Trait::f | +| canonical_paths.rs:9:5:11:5 | impl Trait for Struct { ... } | None | None | +| canonical_paths.rs:10:9:10:22 | fn f | repo::test | ::f | +| canonical_paths.rs:13:5:15:5 | impl Struct { ... } | None | None | +| canonical_paths.rs:14:9:14:22 | fn g | repo::test | ::g | +| canonical_paths.rs:17:5:19:5 | trait TraitWithBlanketImpl | repo::test | crate::canonical_paths::a::TraitWithBlanketImpl | +| canonical_paths.rs:18:9:18:20 | fn h | repo::test | crate::canonical_paths::a::TraitWithBlanketImpl::h | +| canonical_paths.rs:21:5:23:5 | impl TraitWithBlanketImpl for T { ... } | None | None | +| canonical_paths.rs:22:9:22:22 | fn h | repo::test | <_ as crate::canonical_paths::a::TraitWithBlanketImpl>::h | +| canonical_paths.rs:25:5:25:16 | fn free | repo::test | crate::canonical_paths::a::free | +| canonical_paths.rs:27:5:33:5 | fn usage | repo::test | crate::canonical_paths::a::usage | +| canonical_paths.rs:36:1:73:1 | mod without | repo::test | crate::canonical_paths::without | | canonical_paths.rs:37:5:37:24 | Use | None | None | -| canonical_paths.rs:39:5:68:5 | canonicals | repo::test | crate::canonical_paths::without::canonicals | +| canonical_paths.rs:39:5:68:5 | fn canonicals | repo::test | crate::canonical_paths::without::canonicals | | canonical_paths.rs:40:9:40:27 | Struct | repo::test | {34}::OtherStruct | -| canonical_paths.rs:42:9:44:9 | Trait | repo::test | {34}::OtherTrait | -| canonical_paths.rs:43:13:43:24 | g | repo::test | {34}::OtherTrait::g | -| canonical_paths.rs:46:9:48:9 | Impl | None | None | -| canonical_paths.rs:47:13:47:26 | g | repo::test | <{34}::OtherStruct as {34}::OtherTrait>::g | -| canonical_paths.rs:50:9:52:9 | Impl | None | None | -| canonical_paths.rs:51:13:51:26 | g | repo::test | ::g | -| canonical_paths.rs:54:9:56:9 | Impl | None | None | -| canonical_paths.rs:55:13:55:26 | f | repo::test | <{34}::OtherStruct as crate::canonical_paths::a::Trait>::f | -| canonical_paths.rs:58:9:60:9 | nested | repo::test | {34}::nested | +| canonical_paths.rs:42:9:44:9 | trait OtherTrait | repo::test | {34}::OtherTrait | +| canonical_paths.rs:43:13:43:24 | fn g | repo::test | {34}::OtherTrait::g | +| canonical_paths.rs:46:9:48:9 | impl OtherTrait for OtherStruct { ... } | None | None | +| canonical_paths.rs:47:13:47:26 | fn g | repo::test | <{34}::OtherStruct as {34}::OtherTrait>::g | +| canonical_paths.rs:50:9:52:9 | impl OtherTrait for ...::Struct { ... } | None | None | +| canonical_paths.rs:51:13:51:26 | fn g | repo::test | ::g | +| canonical_paths.rs:54:9:56:9 | impl ...::Trait for OtherStruct { ... } | None | None | +| canonical_paths.rs:55:13:55:26 | fn f | repo::test | <{34}::OtherStruct as crate::canonical_paths::a::Trait>::f | +| canonical_paths.rs:58:9:60:9 | fn nested | repo::test | {34}::nested | | canonical_paths.rs:59:13:59:31 | Struct | repo::test | {35}::OtherStruct | -| canonical_paths.rs:62:9:67:9 | usage | repo::test | {34}::usage | -| canonical_paths.rs:70:5:72:5 | other | repo::test | crate::canonical_paths::without::other | +| canonical_paths.rs:62:9:67:9 | fn usage | repo::test | {34}::usage | +| canonical_paths.rs:70:5:72:5 | fn other | repo::test | crate::canonical_paths::without::other | | canonical_paths.rs:71:9:71:27 | Struct | repo::test | {36}::OtherStruct | -| lib.rs:1:1:1:20 | Module | repo::test | crate::canonical_paths | +| lib.rs:1:1:1:20 | mod canonical_paths | repo::test | crate::canonical_paths | resolvedPaths | canonical_paths.rs:2:7:2:12 | derive | None | None | | canonical_paths.rs:9:10:9:14 | Trait | repo::test | crate::canonical_paths::a::Trait | @@ -48,19 +48,19 @@ resolvedPaths | canonical_paths.rs:31:9:31:13 | ... .h(...) | repo::test | <_ as crate::canonical_paths::a::TraitWithBlanketImpl>::h | | canonical_paths.rs:32:9:32:12 | free | repo::test | crate::canonical_paths::a::free | | canonical_paths.rs:37:9:37:13 | super | repo::test | crate::canonical_paths | -| canonical_paths.rs:37:9:37:16 | super::a | repo::test | crate::canonical_paths::a | -| canonical_paths.rs:37:9:37:23 | super::a::Trait | repo::test | crate::canonical_paths::a::Trait | +| canonical_paths.rs:37:9:37:16 | ...::a | repo::test | crate::canonical_paths::a | +| canonical_paths.rs:37:9:37:23 | ...::Trait | repo::test | crate::canonical_paths::a::Trait | | canonical_paths.rs:46:14:46:23 | OtherTrait | repo::test | {34}::OtherTrait | | canonical_paths.rs:46:29:46:39 | OtherStruct | repo::test | {34}::OtherStruct | | canonical_paths.rs:50:14:50:23 | OtherTrait | repo::test | {34}::OtherTrait | | canonical_paths.rs:50:29:50:33 | crate | None | None | -| canonical_paths.rs:50:29:50:50 | crate::canonical_paths | repo::test | crate::canonical_paths | -| canonical_paths.rs:50:29:50:53 | crate::canonical_paths::a | repo::test | crate::canonical_paths::a | -| canonical_paths.rs:50:29:50:61 | crate::canonical_paths::a::Struct | repo::test | crate::canonical_paths::a::Struct | +| canonical_paths.rs:50:29:50:50 | ...::canonical_paths | repo::test | crate::canonical_paths | +| canonical_paths.rs:50:29:50:53 | ...::a | repo::test | crate::canonical_paths::a | +| canonical_paths.rs:50:29:50:61 | ...::Struct | repo::test | crate::canonical_paths::a::Struct | | canonical_paths.rs:54:14:54:18 | crate | None | None | -| canonical_paths.rs:54:14:54:35 | crate::canonical_paths | repo::test | crate::canonical_paths | -| canonical_paths.rs:54:14:54:38 | crate::canonical_paths::a | repo::test | crate::canonical_paths::a | -| canonical_paths.rs:54:14:54:45 | crate::canonical_paths::a::Trait | repo::test | crate::canonical_paths::a::Trait | +| canonical_paths.rs:54:14:54:35 | ...::canonical_paths | repo::test | crate::canonical_paths | +| canonical_paths.rs:54:14:54:38 | ...::a | repo::test | crate::canonical_paths::a | +| canonical_paths.rs:54:14:54:45 | ...::Trait | repo::test | crate::canonical_paths::a::Trait | | canonical_paths.rs:54:51:54:61 | OtherStruct | repo::test | {34}::OtherStruct | | canonical_paths.rs:63:21:63:31 | OtherStruct | repo::test | {34}::OtherStruct | | canonical_paths.rs:64:13:64:13 | s | None | None | diff --git a/rust/ql/test/extractor-tests/generated/.generated_tests.list b/rust/ql/test/extractor-tests/generated/.generated_tests.list index bfbe339bcc86..83affdc7e649 100644 --- a/rust/ql/test/extractor-tests/generated/.generated_tests.list +++ b/rust/ql/test/extractor-tests/generated/.generated_tests.list @@ -80,11 +80,10 @@ ParamList/gen_param_list.rs ef2e83d0aed45b969fe78dd717e87ef3c1f848e6179cfb4dc3cb ParenExpr/gen_paren_expr.rs dd0c4a21a92e54e8a6151145e013cbec9c9e1cad093d572e293b4f51d6c44aea dd0c4a21a92e54e8a6151145e013cbec9c9e1cad093d572e293b4f51d6c44aea ParenPat/gen_paren_pat.rs c8d18521b9a0b7d39841eb72e3895914aa652b7235dea42ed12a4eb280e3bf0e c8d18521b9a0b7d39841eb72e3895914aa652b7235dea42ed12a4eb280e3bf0e ParenType/gen_paren_type.rs ae1a945b56020eab14bb0ef75ae9ccb735d8e45d1213adee210a90e6dba8430f ae1a945b56020eab14bb0ef75ae9ccb735d8e45d1213adee210a90e6dba8430f -Path/gen_path.rs e32637d04445d5b9411086f3ad5d8b41de24327f7ad641d1a1a25c1d160121c8 e32637d04445d5b9411086f3ad5d8b41de24327f7ad641d1a1a25c1d160121c8 -PathExpr/gen_path_expr.rs a1e0ececfe62a63a43583c9bd8064a80a90c042c55bac29d86776c0c6559f33a a1e0ececfe62a63a43583c9bd8064a80a90c042c55bac29d86776c0c6559f33a -PathPat/gen_path_pat.rs fd7f941f8b33f19d3693be1fdb595c2fb2e85e8296702b82bf12bcd44632f371 fd7f941f8b33f19d3693be1fdb595c2fb2e85e8296702b82bf12bcd44632f371 -PathSegment/gen_path_segment.rs bc0c914821a70f9a7db23766f4d84e2d69fc76d5075a8bc3341f2ba59a8ce911 bc0c914821a70f9a7db23766f4d84e2d69fc76d5075a8bc3341f2ba59a8ce911 -PathType/gen_path_type.rs 710a5505615769da940202e7c6d9031edc23a4b05cd9fb25241c60affbba4027 710a5505615769da940202e7c6d9031edc23a4b05cd9fb25241c60affbba4027 +Path/gen_path.rs 490268d6bfb1635883b8bdefc683d59c4dd0e9c7f86c2e55954661efb3ab0253 490268d6bfb1635883b8bdefc683d59c4dd0e9c7f86c2e55954661efb3ab0253 +Path/gen_path_expr.rs a1e0ececfe62a63a43583c9bd8064a80a90c042c55bac29d86776c0c6559f33a a1e0ececfe62a63a43583c9bd8064a80a90c042c55bac29d86776c0c6559f33a +Path/gen_path_pat.rs fd7f941f8b33f19d3693be1fdb595c2fb2e85e8296702b82bf12bcd44632f371 fd7f941f8b33f19d3693be1fdb595c2fb2e85e8296702b82bf12bcd44632f371 +Path/gen_path_type.rs 210f2ce4000b59d2f908801c22c5497a0f0c9a3b1a5130e7dad0931430f49eb9 210f2ce4000b59d2f908801c22c5497a0f0c9a3b1a5130e7dad0931430f49eb9 PrefixExpr/gen_prefix_expr.rs c4b53e87f370713b9a9e257be26d082b0761497bac19b1d7401a31b22b30d1ab c4b53e87f370713b9a9e257be26d082b0761497bac19b1d7401a31b22b30d1ab PtrType/gen_ptr_type.rs dd7faad19454b92d7942ef664df1a5f26c01863e408b87249aa4d5d4f68c78b3 dd7faad19454b92d7942ef664df1a5f26c01863e408b87249aa4d5d4f68c78b3 RangeExpr/gen_range_expr.rs 3f27cff9cc76b2703beff622d1453b84121e1970a869e45f9428deac92c4ecb0 3f27cff9cc76b2703beff622d1453b84121e1970a869e45f9428deac92c4ecb0 diff --git a/rust/ql/test/extractor-tests/generated/.gitattributes b/rust/ql/test/extractor-tests/generated/.gitattributes index df5c0c5b60cb..782715565d2f 100644 --- a/rust/ql/test/extractor-tests/generated/.gitattributes +++ b/rust/ql/test/extractor-tests/generated/.gitattributes @@ -83,10 +83,9 @@ /ParenPat/gen_paren_pat.rs linguist-generated /ParenType/gen_paren_type.rs linguist-generated /Path/gen_path.rs linguist-generated -/PathExpr/gen_path_expr.rs linguist-generated -/PathPat/gen_path_pat.rs linguist-generated -/PathSegment/gen_path_segment.rs linguist-generated -/PathType/gen_path_type.rs linguist-generated +/Path/gen_path_expr.rs linguist-generated +/Path/gen_path_pat.rs linguist-generated +/Path/gen_path_type.rs linguist-generated /PrefixExpr/gen_prefix_expr.rs linguist-generated /PtrType/gen_ptr_type.rs linguist-generated /RangeExpr/gen_range_expr.rs linguist-generated diff --git a/rust/ql/test/extractor-tests/generated/ArrayExpr/ArrayExpr.expected b/rust/ql/test/extractor-tests/generated/ArrayExpr/ArrayExpr.expected index 549f43fc9892..e1ab176fe514 100644 --- a/rust/ql/test/extractor-tests/generated/ArrayExpr/ArrayExpr.expected +++ b/rust/ql/test/extractor-tests/generated/ArrayExpr/ArrayExpr.expected @@ -1,2 +1,2 @@ -| gen_array_expr.rs:5:5:5:13 | ArrayExpr | getNumberOfAttrs: | 0 | getNumberOfExprs: | 3 | -| gen_array_expr.rs:6:5:6:11 | ArrayExpr | getNumberOfAttrs: | 0 | getNumberOfExprs: | 2 | +| gen_array_expr.rs:5:5:5:13 | [...] | getNumberOfAttrs: | 0 | getNumberOfExprs: | 3 | +| gen_array_expr.rs:6:5:6:11 | [...] | getNumberOfAttrs: | 0 | getNumberOfExprs: | 2 | diff --git a/rust/ql/test/extractor-tests/generated/ArrayExpr/ArrayExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/ArrayExpr/ArrayExpr_getExpr.expected index 97da5ba1c2af..393fb28f2bfa 100644 --- a/rust/ql/test/extractor-tests/generated/ArrayExpr/ArrayExpr_getExpr.expected +++ b/rust/ql/test/extractor-tests/generated/ArrayExpr/ArrayExpr_getExpr.expected @@ -1,5 +1,5 @@ -| gen_array_expr.rs:5:5:5:13 | ArrayExpr | 0 | gen_array_expr.rs:5:6:5:6 | 1 | -| gen_array_expr.rs:5:5:5:13 | ArrayExpr | 1 | gen_array_expr.rs:5:9:5:9 | 2 | -| gen_array_expr.rs:5:5:5:13 | ArrayExpr | 2 | gen_array_expr.rs:5:12:5:12 | 3 | -| gen_array_expr.rs:6:5:6:11 | ArrayExpr | 0 | gen_array_expr.rs:6:6:6:6 | 1 | -| gen_array_expr.rs:6:5:6:11 | ArrayExpr | 1 | gen_array_expr.rs:6:9:6:10 | 10 | +| gen_array_expr.rs:5:5:5:13 | [...] | 0 | gen_array_expr.rs:5:6:5:6 | 1 | +| gen_array_expr.rs:5:5:5:13 | [...] | 1 | gen_array_expr.rs:5:9:5:9 | 2 | +| gen_array_expr.rs:5:5:5:13 | [...] | 2 | gen_array_expr.rs:5:12:5:12 | 3 | +| gen_array_expr.rs:6:5:6:11 | [...] | 0 | gen_array_expr.rs:6:6:6:6 | 1 | +| gen_array_expr.rs:6:5:6:11 | [...] | 1 | gen_array_expr.rs:6:9:6:10 | 10 | diff --git a/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getExpr.expected index 7a4af543f311..07aec8f5fe0d 100644 --- a/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getExpr.expected +++ b/rust/ql/test/extractor-tests/generated/AsmExpr/AsmExpr_getExpr.expected @@ -1 +1 @@ -| gen_asm_expr.rs:6:9:6:24 | AsmExpr | gen_asm_expr.rs:6:23:6:23 | UnderscoreExpr | +| gen_asm_expr.rs:6:9:6:24 | AsmExpr | gen_asm_expr.rs:6:23:6:23 | _ | diff --git a/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr.expected b/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr.expected index 2ed01b9058e1..9104ba77e5fe 100644 --- a/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr.expected +++ b/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr.expected @@ -1 +1 @@ -| gen_await_expr.rs:6:17:6:27 | AwaitExpr | getNumberOfAttrs: | 0 | hasExpr: | yes | +| gen_await_expr.rs:6:17:6:27 | await ... | getNumberOfAttrs: | 0 | hasExpr: | yes | diff --git a/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr_getExpr.expected index c34a6012f4c3..a1ea7809bb01 100644 --- a/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr_getExpr.expected +++ b/rust/ql/test/extractor-tests/generated/AwaitExpr/AwaitExpr_getExpr.expected @@ -1 +1 @@ -| gen_await_expr.rs:6:17:6:27 | AwaitExpr | gen_await_expr.rs:6:17:6:21 | CallExpr | +| gen_await_expr.rs:6:17:6:27 | await ... | gen_await_expr.rs:6:17:6:21 | foo(...) | diff --git a/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr.expected b/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr.expected index 75840ec81fed..ce3e6a096909 100644 --- a/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr.expected +++ b/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr.expected @@ -1 +1 @@ -| gen_become_expr.rs:8:10:8:36 | BecomeExpr | getNumberOfAttrs: | 0 | hasExpr: | yes | +| gen_become_expr.rs:8:10:8:36 | become ... | getNumberOfAttrs: | 0 | hasExpr: | yes | diff --git a/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr_getExpr.expected index 8992c4868ca2..d0cb86a0303c 100644 --- a/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr_getExpr.expected +++ b/rust/ql/test/extractor-tests/generated/BecomeExpr/BecomeExpr_getExpr.expected @@ -1 +1 @@ -| gen_become_expr.rs:8:10:8:36 | BecomeExpr | gen_become_expr.rs:8:17:8:36 | CallExpr | +| gen_become_expr.rs:8:10:8:36 | become ... | gen_become_expr.rs:8:17:8:36 | fact_a(...) | diff --git a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.expected b/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.expected index 39ec1d6a7e1a..b6be24d0bb73 100644 --- a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.expected +++ b/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.expected @@ -1,3 +1,3 @@ -| gen_block_expr.rs:3:28:12:1 | BlockExpr | getNumberOfAttrs: | 0 | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isTry: | no | isUnsafe: | no | hasLabel: | no | hasStmtList: | yes | -| gen_block_expr.rs:5:5:7:5 | BlockExpr | getNumberOfAttrs: | 0 | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isTry: | no | isUnsafe: | no | hasLabel: | no | hasStmtList: | yes | -| gen_block_expr.rs:8:5:11:5 | BlockExpr | getNumberOfAttrs: | 0 | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isTry: | no | isUnsafe: | no | hasLabel: | yes | hasStmtList: | yes | +| gen_block_expr.rs:3:28:12:1 | { ... } | hasLabel: | no | getNumberOfAttrs: | 0 | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isTry: | no | isUnsafe: | no | hasStmtList: | yes | +| gen_block_expr.rs:5:5:7:5 | { ... } | hasLabel: | no | getNumberOfAttrs: | 0 | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isTry: | no | isUnsafe: | no | hasStmtList: | yes | +| gen_block_expr.rs:8:5:11:5 | 'label: { ... } | hasLabel: | yes | getNumberOfAttrs: | 0 | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isTry: | no | isUnsafe: | no | hasStmtList: | yes | diff --git a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.ql b/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.ql index 581070545155..992c06a605b6 100644 --- a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.ql +++ b/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr.ql @@ -3,11 +3,12 @@ import codeql.rust.elements import TestUtils from - BlockExpr x, int getNumberOfAttrs, string isAsync, string isConst, string isGen, string isMove, - string isTry, string isUnsafe, string hasLabel, string hasStmtList + BlockExpr x, string hasLabel, int getNumberOfAttrs, string isAsync, string isConst, string isGen, + string isMove, string isTry, string isUnsafe, string hasStmtList where toBeTested(x) and not x.isUnknown() and + (if x.hasLabel() then hasLabel = "yes" else hasLabel = "no") and getNumberOfAttrs = x.getNumberOfAttrs() and (if x.isAsync() then isAsync = "yes" else isAsync = "no") and (if x.isConst() then isConst = "yes" else isConst = "no") and @@ -15,8 +16,7 @@ where (if x.isMove() then isMove = "yes" else isMove = "no") and (if x.isTry() then isTry = "yes" else isTry = "no") and (if x.isUnsafe() then isUnsafe = "yes" else isUnsafe = "no") and - (if x.hasLabel() then hasLabel = "yes" else hasLabel = "no") and if x.hasStmtList() then hasStmtList = "yes" else hasStmtList = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "isAsync:", isAsync, "isConst:", isConst, "isGen:", - isGen, "isMove:", isMove, "isTry:", isTry, "isUnsafe:", isUnsafe, "hasLabel:", hasLabel, +select x, "hasLabel:", hasLabel, "getNumberOfAttrs:", getNumberOfAttrs, "isAsync:", isAsync, + "isConst:", isConst, "isGen:", isGen, "isMove:", isMove, "isTry:", isTry, "isUnsafe:", isUnsafe, "hasStmtList:", hasStmtList diff --git a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr_getLabel.expected b/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr_getLabel.expected index 3a935228e051..a6933d65b22b 100644 --- a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr_getLabel.expected +++ b/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr_getLabel.expected @@ -1 +1 @@ -| gen_block_expr.rs:8:5:11:5 | BlockExpr | gen_block_expr.rs:8:5:8:11 | Label | +| gen_block_expr.rs:8:5:11:5 | 'label: { ... } | gen_block_expr.rs:8:5:8:11 | 'label | diff --git a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr_getStmtList.expected b/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr_getStmtList.expected index 21eb195289a2..4863264491b3 100644 --- a/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr_getStmtList.expected +++ b/rust/ql/test/extractor-tests/generated/BlockExpr/BlockExpr_getStmtList.expected @@ -1,3 +1,3 @@ -| gen_block_expr.rs:3:28:12:1 | BlockExpr | gen_block_expr.rs:3:28:12:1 | StmtList | -| gen_block_expr.rs:5:5:7:5 | BlockExpr | gen_block_expr.rs:5:5:7:5 | StmtList | -| gen_block_expr.rs:8:5:11:5 | BlockExpr | gen_block_expr.rs:8:13:11:5 | StmtList | +| gen_block_expr.rs:3:28:12:1 | { ... } | gen_block_expr.rs:3:28:12:1 | StmtList | +| gen_block_expr.rs:5:5:7:5 | { ... } | gen_block_expr.rs:5:5:7:5 | StmtList | +| gen_block_expr.rs:8:5:11:5 | 'label: { ... } | gen_block_expr.rs:8:13:11:5 | StmtList | diff --git a/rust/ql/test/extractor-tests/generated/BoxPat/BoxPat.expected b/rust/ql/test/extractor-tests/generated/BoxPat/BoxPat.expected index 95c8bdebd47a..8ca2412e8ff5 100644 --- a/rust/ql/test/extractor-tests/generated/BoxPat/BoxPat.expected +++ b/rust/ql/test/extractor-tests/generated/BoxPat/BoxPat.expected @@ -1,2 +1,2 @@ -| gen_box_pat.rs:6:9:6:27 | BoxPat | hasPat: | yes | -| gen_box_pat.rs:7:9:7:24 | BoxPat | hasPat: | yes | +| gen_box_pat.rs:6:9:6:27 | box ... | hasPat: | yes | +| gen_box_pat.rs:7:9:7:24 | box ...::None | hasPat: | yes | diff --git a/rust/ql/test/extractor-tests/generated/BoxPat/BoxPat_getPat.expected b/rust/ql/test/extractor-tests/generated/BoxPat/BoxPat_getPat.expected index cac8ee05d3c4..4e12432652dc 100644 --- a/rust/ql/test/extractor-tests/generated/BoxPat/BoxPat_getPat.expected +++ b/rust/ql/test/extractor-tests/generated/BoxPat/BoxPat_getPat.expected @@ -1,2 +1,2 @@ -| gen_box_pat.rs:6:9:6:27 | BoxPat | gen_box_pat.rs:6:13:6:27 | TupleStructPat | -| gen_box_pat.rs:7:9:7:24 | BoxPat | gen_box_pat.rs:7:13:7:24 | PathPat | +| gen_box_pat.rs:6:9:6:27 | box ... | gen_box_pat.rs:6:13:6:27 | TupleStructPat | +| gen_box_pat.rs:7:9:7:24 | box ...::None | gen_box_pat.rs:7:13:7:24 | ...::None | diff --git a/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr.expected b/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr.expected index 763fae60866a..30c734fd682d 100644 --- a/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr.expected +++ b/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr.expected @@ -1,3 +1,3 @@ -| gen_break_expr.rs:7:13:7:17 | BreakExpr | getNumberOfAttrs: | 0 | hasExpr: | no | hasLifetime: | no | -| gen_break_expr.rs:12:13:12:27 | BreakExpr | getNumberOfAttrs: | 0 | hasExpr: | yes | hasLifetime: | yes | -| gen_break_expr.rs:17:13:17:27 | BreakExpr | getNumberOfAttrs: | 0 | hasExpr: | yes | hasLifetime: | yes | +| gen_break_expr.rs:7:13:7:17 | break | getNumberOfAttrs: | 0 | hasExpr: | no | hasLifetime: | no | +| gen_break_expr.rs:12:13:12:27 | break ''label 42 | getNumberOfAttrs: | 0 | hasExpr: | yes | hasLifetime: | yes | +| gen_break_expr.rs:17:13:17:27 | break ''label 42 | getNumberOfAttrs: | 0 | hasExpr: | yes | hasLifetime: | yes | diff --git a/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr_getExpr.expected index 0bd373a4bbc1..20c5295354af 100644 --- a/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr_getExpr.expected +++ b/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr_getExpr.expected @@ -1,2 +1,2 @@ -| gen_break_expr.rs:12:13:12:27 | BreakExpr | gen_break_expr.rs:12:26:12:27 | 42 | -| gen_break_expr.rs:17:13:17:27 | BreakExpr | gen_break_expr.rs:17:26:17:27 | 42 | +| gen_break_expr.rs:12:13:12:27 | break ''label 42 | gen_break_expr.rs:12:26:12:27 | 42 | +| gen_break_expr.rs:17:13:17:27 | break ''label 42 | gen_break_expr.rs:17:26:17:27 | 42 | diff --git a/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr_getLifetime.expected b/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr_getLifetime.expected index b993a2eebf5a..2e1a88017950 100644 --- a/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr_getLifetime.expected +++ b/rust/ql/test/extractor-tests/generated/BreakExpr/BreakExpr_getLifetime.expected @@ -1,2 +1,2 @@ -| gen_break_expr.rs:12:13:12:27 | BreakExpr | gen_break_expr.rs:12:19:12:24 | Lifetime | -| gen_break_expr.rs:17:13:17:27 | BreakExpr | gen_break_expr.rs:17:19:17:24 | Lifetime | +| gen_break_expr.rs:12:13:12:27 | break ''label 42 | gen_break_expr.rs:12:19:12:24 | ''label | +| gen_break_expr.rs:17:13:17:27 | break ''label 42 | gen_break_expr.rs:17:19:17:24 | ''label | diff --git a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr.expected b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr.expected index 5414108064cd..a3f108b5584e 100644 --- a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr.expected +++ b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr.expected @@ -1,4 +1,4 @@ -| gen_call_expr.rs:5:5:5:11 | CallExpr | hasArgList: | yes | getNumberOfAttrs: | 0 | hasExpr: | yes | -| gen_call_expr.rs:6:5:6:23 | CallExpr | hasArgList: | yes | getNumberOfAttrs: | 0 | hasExpr: | yes | -| gen_call_expr.rs:7:5:7:14 | CallExpr | hasArgList: | yes | getNumberOfAttrs: | 0 | hasExpr: | yes | -| gen_call_expr.rs:8:5:8:10 | CallExpr | hasArgList: | yes | getNumberOfAttrs: | 0 | hasExpr: | yes | +| gen_call_expr.rs:5:5:5:11 | foo(...) | hasArgList: | yes | getNumberOfAttrs: | 0 | hasExpr: | yes | +| gen_call_expr.rs:6:5:6:23 | foo::<...>(...) | hasArgList: | yes | getNumberOfAttrs: | 0 | hasExpr: | yes | +| gen_call_expr.rs:7:5:7:14 | ...(...) | hasArgList: | yes | getNumberOfAttrs: | 0 | hasExpr: | yes | +| gen_call_expr.rs:8:5:8:10 | foo(...) | hasArgList: | yes | getNumberOfAttrs: | 0 | hasExpr: | yes | diff --git a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getArgList.expected b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getArgList.expected index a42cc13bf39c..13c426db99d1 100644 --- a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getArgList.expected +++ b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getArgList.expected @@ -1,4 +1,4 @@ -| gen_call_expr.rs:5:5:5:11 | CallExpr | gen_call_expr.rs:5:8:5:11 | ArgList | -| gen_call_expr.rs:6:5:6:23 | CallExpr | gen_call_expr.rs:6:20:6:23 | ArgList | -| gen_call_expr.rs:7:5:7:14 | CallExpr | gen_call_expr.rs:7:11:7:14 | ArgList | -| gen_call_expr.rs:8:5:8:10 | CallExpr | gen_call_expr.rs:8:8:8:10 | ArgList | +| gen_call_expr.rs:5:5:5:11 | foo(...) | gen_call_expr.rs:5:8:5:11 | ArgList | +| gen_call_expr.rs:6:5:6:23 | foo::<...>(...) | gen_call_expr.rs:6:20:6:23 | ArgList | +| gen_call_expr.rs:7:5:7:14 | ...(...) | gen_call_expr.rs:7:11:7:14 | ArgList | +| gen_call_expr.rs:8:5:8:10 | foo(...) | gen_call_expr.rs:8:8:8:10 | ArgList | diff --git a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getExpr.expected index 544937866b78..ecaaf15cebbc 100644 --- a/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getExpr.expected +++ b/rust/ql/test/extractor-tests/generated/CallExpr/CallExpr_getExpr.expected @@ -1,4 +1,4 @@ -| gen_call_expr.rs:5:5:5:11 | CallExpr | gen_call_expr.rs:5:5:5:7 | foo | -| gen_call_expr.rs:6:5:6:23 | CallExpr | gen_call_expr.rs:6:5:6:19 | foo::<...> | -| gen_call_expr.rs:7:5:7:14 | CallExpr | gen_call_expr.rs:7:5:7:10 | IndexExpr | -| gen_call_expr.rs:8:5:8:10 | CallExpr | gen_call_expr.rs:8:5:8:7 | foo | +| gen_call_expr.rs:5:5:5:11 | foo(...) | gen_call_expr.rs:5:5:5:7 | foo | +| gen_call_expr.rs:6:5:6:23 | foo::<...>(...) | gen_call_expr.rs:6:5:6:19 | foo::<...> | +| gen_call_expr.rs:7:5:7:14 | ...(...) | gen_call_expr.rs:7:5:7:10 | foo[0] | +| gen_call_expr.rs:8:5:8:10 | foo(...) | gen_call_expr.rs:8:5:8:7 | foo | diff --git a/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr.expected b/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr.expected index 6050eb022593..c85e41866313 100644 --- a/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr.expected +++ b/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr.expected @@ -1 +1 @@ -| gen_cast_expr.rs:5:5:5:16 | CastExpr | getNumberOfAttrs: | 0 | hasExpr: | yes | hasTy: | yes | +| gen_cast_expr.rs:5:5:5:16 | value as u64 | getNumberOfAttrs: | 0 | hasExpr: | yes | hasTy: | yes | diff --git a/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getExpr.expected index f3e1d4c7ec94..01a710bfb533 100644 --- a/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getExpr.expected +++ b/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getExpr.expected @@ -1 +1 @@ -| gen_cast_expr.rs:5:5:5:16 | CastExpr | gen_cast_expr.rs:5:5:5:9 | value | +| gen_cast_expr.rs:5:5:5:16 | value as u64 | gen_cast_expr.rs:5:5:5:9 | value | diff --git a/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getTy.expected b/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getTy.expected index 29cc49cc3b9f..87c07babb021 100644 --- a/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getTy.expected +++ b/rust/ql/test/extractor-tests/generated/CastExpr/CastExpr_getTy.expected @@ -1 +1 @@ -| gen_cast_expr.rs:5:5:5:16 | CastExpr | gen_cast_expr.rs:5:14:5:16 | PathType | +| gen_cast_expr.rs:5:5:5:16 | value as u64 | gen_cast_expr.rs:5:14:5:16 | u64 | diff --git a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.expected b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.expected index fb665ca8f605..3ea9f463a00d 100644 --- a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.expected +++ b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr.expected @@ -1,5 +1,5 @@ -| gen_closure_expr.rs:5:5:5:13 | ClosureExpr | hasParamList: | yes | getNumberOfAttrs: | 0 | hasBody: | yes | hasClosureBinder: | no | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isStatic: | no | hasRetType: | no | -| gen_closure_expr.rs:6:5:6:34 | ClosureExpr | hasParamList: | yes | getNumberOfAttrs: | 0 | hasBody: | yes | hasClosureBinder: | no | isAsync: | no | isConst: | no | isGen: | no | isMove: | yes | isStatic: | no | hasRetType: | yes | -| gen_closure_expr.rs:7:5:7:27 | ClosureExpr | hasParamList: | yes | getNumberOfAttrs: | 0 | hasBody: | yes | hasClosureBinder: | no | isAsync: | yes | isConst: | no | isGen: | no | isMove: | no | isStatic: | no | hasRetType: | no | -| gen_closure_expr.rs:8:6:9:15 | ClosureExpr | hasParamList: | yes | getNumberOfAttrs: | 1 | hasBody: | yes | hasClosureBinder: | no | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isStatic: | no | hasRetType: | no | -| gen_closure_expr.rs:10:6:11:23 | ClosureExpr | hasParamList: | yes | getNumberOfAttrs: | 1 | hasBody: | yes | hasClosureBinder: | no | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isStatic: | yes | hasRetType: | no | +| gen_closure_expr.rs:5:5:5:13 | \|...\| ... | hasParamList: | yes | getNumberOfAttrs: | 0 | hasBody: | yes | hasClosureBinder: | no | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isStatic: | no | hasRetType: | no | +| gen_closure_expr.rs:6:5:6:34 | \|...\| ... | hasParamList: | yes | getNumberOfAttrs: | 0 | hasBody: | yes | hasClosureBinder: | no | isAsync: | no | isConst: | no | isGen: | no | isMove: | yes | isStatic: | no | hasRetType: | yes | +| gen_closure_expr.rs:7:5:7:27 | \|...\| ... | hasParamList: | yes | getNumberOfAttrs: | 0 | hasBody: | yes | hasClosureBinder: | no | isAsync: | yes | isConst: | no | isGen: | no | isMove: | no | isStatic: | no | hasRetType: | no | +| gen_closure_expr.rs:8:6:9:15 | \|...\| ... | hasParamList: | yes | getNumberOfAttrs: | 1 | hasBody: | yes | hasClosureBinder: | no | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isStatic: | no | hasRetType: | no | +| gen_closure_expr.rs:10:6:11:23 | \|...\| ... | hasParamList: | yes | getNumberOfAttrs: | 1 | hasBody: | yes | hasClosureBinder: | no | isAsync: | no | isConst: | no | isGen: | no | isMove: | no | isStatic: | yes | hasRetType: | no | diff --git a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getAttr.expected index f1859d594d18..4de6e17d785a 100644 --- a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getAttr.expected +++ b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getAttr.expected @@ -1,2 +1,2 @@ -| gen_closure_expr.rs:8:6:9:15 | ClosureExpr | 0 | gen_closure_expr.rs:8:6:8:17 | Attr | -| gen_closure_expr.rs:10:6:11:23 | ClosureExpr | 0 | gen_closure_expr.rs:10:6:10:17 | Attr | +| gen_closure_expr.rs:8:6:9:15 | \|...\| ... | 0 | gen_closure_expr.rs:8:6:8:17 | Attr | +| gen_closure_expr.rs:10:6:11:23 | \|...\| ... | 0 | gen_closure_expr.rs:10:6:10:17 | Attr | diff --git a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getBody.expected b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getBody.expected index 71bc3cccda3c..d7b6180e63b2 100644 --- a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getBody.expected +++ b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getBody.expected @@ -1,5 +1,5 @@ -| gen_closure_expr.rs:5:5:5:13 | ClosureExpr | gen_closure_expr.rs:5:9:5:13 | ... + ... | -| gen_closure_expr.rs:6:5:6:34 | ClosureExpr | gen_closure_expr.rs:6:26:6:34 | BlockExpr | -| gen_closure_expr.rs:7:5:7:27 | ClosureExpr | gen_closure_expr.rs:7:23:7:27 | ... + ... | -| gen_closure_expr.rs:8:6:9:15 | ClosureExpr | gen_closure_expr.rs:9:9:9:15 | YieldExpr | -| gen_closure_expr.rs:10:6:11:23 | ClosureExpr | gen_closure_expr.rs:11:17:11:23 | YieldExpr | +| gen_closure_expr.rs:5:5:5:13 | \|...\| ... | gen_closure_expr.rs:5:9:5:13 | ... + ... | +| gen_closure_expr.rs:6:5:6:34 | \|...\| ... | gen_closure_expr.rs:6:26:6:34 | { ... } | +| gen_closure_expr.rs:7:5:7:27 | \|...\| ... | gen_closure_expr.rs:7:23:7:27 | ... + ... | +| gen_closure_expr.rs:8:6:9:15 | \|...\| ... | gen_closure_expr.rs:9:9:9:15 | YieldExpr | +| gen_closure_expr.rs:10:6:11:23 | \|...\| ... | gen_closure_expr.rs:11:17:11:23 | YieldExpr | diff --git a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParamList.expected b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParamList.expected index d0e6aaeac064..5945738433bd 100644 --- a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParamList.expected +++ b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParamList.expected @@ -1,5 +1,5 @@ -| gen_closure_expr.rs:5:5:5:13 | ClosureExpr | gen_closure_expr.rs:5:5:5:7 | ParamList | -| gen_closure_expr.rs:6:5:6:34 | ClosureExpr | gen_closure_expr.rs:6:10:6:17 | ParamList | -| gen_closure_expr.rs:7:5:7:27 | ClosureExpr | gen_closure_expr.rs:7:11:7:21 | ParamList | -| gen_closure_expr.rs:8:6:9:15 | ClosureExpr | gen_closure_expr.rs:9:5:9:7 | ParamList | -| gen_closure_expr.rs:10:6:11:23 | ClosureExpr | gen_closure_expr.rs:11:13:11:15 | ParamList | +| gen_closure_expr.rs:5:5:5:13 | \|...\| ... | gen_closure_expr.rs:5:5:5:7 | ParamList | +| gen_closure_expr.rs:6:5:6:34 | \|...\| ... | gen_closure_expr.rs:6:10:6:17 | ParamList | +| gen_closure_expr.rs:7:5:7:27 | \|...\| ... | gen_closure_expr.rs:7:11:7:21 | ParamList | +| gen_closure_expr.rs:8:6:9:15 | \|...\| ... | gen_closure_expr.rs:9:5:9:7 | ParamList | +| gen_closure_expr.rs:10:6:11:23 | \|...\| ... | gen_closure_expr.rs:11:13:11:15 | ParamList | diff --git a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getRetType.expected b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getRetType.expected index e018209cb53f..d7ec1024953c 100644 --- a/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getRetType.expected +++ b/rust/ql/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getRetType.expected @@ -1 +1 @@ -| gen_closure_expr.rs:6:5:6:34 | ClosureExpr | gen_closure_expr.rs:6:19:6:24 | RetType | +| gen_closure_expr.rs:6:5:6:34 | \|...\| ... | gen_closure_expr.rs:6:19:6:24 | RetType | diff --git a/rust/ql/test/extractor-tests/generated/Comment/Comment.expected b/rust/ql/test/extractor-tests/generated/Comment/Comment.expected index 21861bb40bf9..24e95f123d8c 100644 --- a/rust/ql/test/extractor-tests/generated/Comment/Comment.expected +++ b/rust/ql/test/extractor-tests/generated/Comment/Comment.expected @@ -1,7 +1,7 @@ -| comments.rs:1:1:3:2 | Comment | getParent: | comments.rs:1:1:9:1 | foo | getText: | /** \n* A doc comment\n*/ | -| comments.rs:6:17:6:34 | Comment | getParent: | comments.rs:6:17:8:16 | nested | getText: | // print some text | -| comments.rs:7:3:7:31 | Comment | getParent: | comments.rs:6:17:8:16 | nested | getText: | /// This is a nested function | -| gen_comment.rs:1:1:1:36 | Comment | getParent: | gen_comment.rs:1:1:7:2 | SourceFile | getText: | // generated by codegen, do not edit | -| gen_comment.rs:4:5:4:30 | Comment | getParent: | gen_comment.rs:3:25:7:1 | StmtList | getText: | // A comment. For example: | -| gen_comment.rs:5:5:5:24 | Comment | getParent: | gen_comment.rs:3:25:7:1 | StmtList | getText: | // this is a comment | -| gen_comment.rs:6:5:6:29 | Comment | getParent: | gen_comment.rs:3:25:7:1 | StmtList | getText: | /// This is a doc comment | +| comments.rs:1:1:3:2 | /**...*/ | getParent: | comments.rs:1:1:9:1 | fn foo | getText: | /** \n* A doc comment\n*/ | +| comments.rs:6:17:6:34 | //... | getParent: | comments.rs:6:17:8:16 | fn nested | getText: | // print some text | +| comments.rs:7:3:7:31 | ///... | getParent: | comments.rs:6:17:8:16 | fn nested | getText: | /// This is a nested function | +| gen_comment.rs:1:1:1:36 | //... | getParent: | gen_comment.rs:1:1:7:2 | SourceFile | getText: | // generated by codegen, do not edit | +| gen_comment.rs:4:5:4:30 | //... | getParent: | gen_comment.rs:3:25:7:1 | StmtList | getText: | // A comment. For example: | +| gen_comment.rs:5:5:5:24 | //... | getParent: | gen_comment.rs:3:25:7:1 | StmtList | getText: | // this is a comment | +| gen_comment.rs:6:5:6:29 | ///... | getParent: | gen_comment.rs:3:25:7:1 | StmtList | getText: | /// This is a doc comment | diff --git a/rust/ql/test/extractor-tests/generated/ConstBlockPat/ConstBlockPat_getBlockExpr.expected b/rust/ql/test/extractor-tests/generated/ConstBlockPat/ConstBlockPat_getBlockExpr.expected index 58a885a48578..42cdb5ef4c30 100644 --- a/rust/ql/test/extractor-tests/generated/ConstBlockPat/ConstBlockPat_getBlockExpr.expected +++ b/rust/ql/test/extractor-tests/generated/ConstBlockPat/ConstBlockPat_getBlockExpr.expected @@ -1 +1 @@ -| gen_const_block_pat.rs:6:9:6:27 | ConstBlockPat | gen_const_block_pat.rs:6:15:6:27 | BlockExpr | +| gen_const_block_pat.rs:6:9:6:27 | ConstBlockPat | gen_const_block_pat.rs:6:15:6:27 | { ... } | diff --git a/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr.expected b/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr.expected index ab921873d620..a09556b9a3ff 100644 --- a/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr.expected +++ b/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr.expected @@ -1,2 +1,2 @@ -| gen_continue_expr.rs:7:13:7:20 | ContinueExpr | getNumberOfAttrs: | 0 | hasLifetime: | no | -| gen_continue_expr.rs:12:13:12:27 | ContinueExpr | getNumberOfAttrs: | 0 | hasLifetime: | yes | +| gen_continue_expr.rs:7:13:7:20 | continue | getNumberOfAttrs: | 0 | hasLifetime: | no | +| gen_continue_expr.rs:12:13:12:27 | continue 'label | getNumberOfAttrs: | 0 | hasLifetime: | yes | diff --git a/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr_getLifetime.expected b/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr_getLifetime.expected index 525d2bb55a8e..d81d276ce0ae 100644 --- a/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr_getLifetime.expected +++ b/rust/ql/test/extractor-tests/generated/ContinueExpr/ContinueExpr_getLifetime.expected @@ -1 +1 @@ -| gen_continue_expr.rs:12:13:12:27 | ContinueExpr | gen_continue_expr.rs:12:22:12:27 | Lifetime | +| gen_continue_expr.rs:12:13:12:27 | continue 'label | gen_continue_expr.rs:12:22:12:27 | ''label | diff --git a/rust/ql/test/extractor-tests/generated/ExprStmt/ExprStmt_getExpr.expected b/rust/ql/test/extractor-tests/generated/ExprStmt/ExprStmt_getExpr.expected index f29a7f83d7d5..1cacf1e84241 100644 --- a/rust/ql/test/extractor-tests/generated/ExprStmt/ExprStmt_getExpr.expected +++ b/rust/ql/test/extractor-tests/generated/ExprStmt/ExprStmt_getExpr.expected @@ -1,2 +1,2 @@ -| gen_expr_stmt.rs:5:5:5:12 | ExprStmt | gen_expr_stmt.rs:5:5:5:11 | CallExpr | -| gen_expr_stmt.rs:6:5:6:13 | ExprStmt | gen_expr_stmt.rs:6:5:6:12 | CallExpr | +| gen_expr_stmt.rs:5:5:5:12 | ExprStmt | gen_expr_stmt.rs:5:5:5:11 | start(...) | +| gen_expr_stmt.rs:6:5:6:13 | ExprStmt | gen_expr_stmt.rs:6:5:6:12 | finish(...) | diff --git a/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr.expected b/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr.expected index 22dcb3c92e11..c25a0633e402 100644 --- a/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr.expected +++ b/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr.expected @@ -1 +1 @@ -| gen_field_expr.rs:5:5:5:9 | FieldExpr | getNumberOfAttrs: | 0 | hasExpr: | yes | hasNameRef: | yes | +| gen_field_expr.rs:5:5:5:9 | x.foo | getNumberOfAttrs: | 0 | hasExpr: | yes | hasNameRef: | yes | diff --git a/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getExpr.expected index 32b13c1cb2b0..7d21f7f7af81 100644 --- a/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getExpr.expected +++ b/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getExpr.expected @@ -1 +1 @@ -| gen_field_expr.rs:5:5:5:9 | FieldExpr | gen_field_expr.rs:5:5:5:5 | x | +| gen_field_expr.rs:5:5:5:9 | x.foo | gen_field_expr.rs:5:5:5:5 | x | diff --git a/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getNameRef.expected b/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getNameRef.expected index 667f3130968c..0722ca1aaf28 100644 --- a/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getNameRef.expected +++ b/rust/ql/test/extractor-tests/generated/FieldExpr/FieldExpr_getNameRef.expected @@ -1 +1 @@ -| gen_field_expr.rs:5:5:5:9 | FieldExpr | gen_field_expr.rs:5:7:5:9 | foo | +| gen_field_expr.rs:5:5:5:9 | x.foo | gen_field_expr.rs:5:7:5:9 | foo | diff --git a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr.ql b/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr.ql index ef1999ff4a9d..60f5ab1e0809 100644 --- a/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr.ql +++ b/rust/ql/test/extractor-tests/generated/ForExpr/ForExpr.ql @@ -3,15 +3,15 @@ import codeql.rust.elements import TestUtils from - ForExpr x, int getNumberOfAttrs, string hasIterable, string hasLabel, string hasLoopBody, + ForExpr x, string hasLabel, string hasLoopBody, int getNumberOfAttrs, string hasIterable, string hasPat where toBeTested(x) and not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasIterable() then hasIterable = "yes" else hasIterable = "no") and (if x.hasLabel() then hasLabel = "yes" else hasLabel = "no") and (if x.hasLoopBody() then hasLoopBody = "yes" else hasLoopBody = "no") and + getNumberOfAttrs = x.getNumberOfAttrs() and + (if x.hasIterable() then hasIterable = "yes" else hasIterable = "no") and if x.hasPat() then hasPat = "yes" else hasPat = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasIterable:", hasIterable, "hasLabel:", hasLabel, - "hasLoopBody:", hasLoopBody, "hasPat:", hasPat +select x, "hasLabel:", hasLabel, "hasLoopBody:", hasLoopBody, "getNumberOfAttrs:", getNumberOfAttrs, + "hasIterable:", hasIterable, "hasPat:", hasPat diff --git a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getTemplate.expected b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getTemplate.expected index 6c4f70308109..1b201bbf36f2 100644 --- a/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getTemplate.expected +++ b/rust/ql/test/extractor-tests/generated/FormatArgsExpr/FormatArgsExpr_getTemplate.expected @@ -3,5 +3,5 @@ | gen_format_args_expr.rs:6:17:6:37 | FormatArgsExpr | gen_format_args_expr.rs:6:18:6:30 | "{} foo {:?}" | | gen_format_args_expr.rs:7:17:7:43 | FormatArgsExpr | gen_format_args_expr.rs:7:18:7:32 | "{b} foo {a:?}" | | gen_format_args_expr.rs:9:17:9:28 | FormatArgsExpr | gen_format_args_expr.rs:9:18:9:27 | "{x}, {y}" | -| gen_format_argument.rs:5:14:5:47 | FormatArgsExpr | gen_format_argument.rs:5:14:5:47 | "Value {value:#width$.precision$}\\n" | +| gen_format_argument.rs:5:14:5:47 | FormatArgsExpr | gen_format_argument.rs:5:14:5:47 | "Value {value:#width$.precisio... | | gen_format_argument.rs:7:14:7:56 | FormatArgsExpr | gen_format_argument.rs:7:14:7:31 | "Value {0:#1$.2$}\\n" | diff --git a/rust/ql/test/extractor-tests/generated/Function/Function.expected b/rust/ql/test/extractor-tests/generated/Function/Function.expected index f93eb58b2ae4..b96996beef94 100644 --- a/rust/ql/test/extractor-tests/generated/Function/Function.expected +++ b/rust/ql/test/extractor-tests/generated/Function/Function.expected @@ -1,2 +1,2 @@ -| gen_function.rs:3:1:4:38 | foo | hasParamList: | yes | getNumberOfAttrs: | 0 | hasExtendedCanonicalPath: | yes | hasCrateOrigin: | yes | hasAbi: | no | hasBody: | yes | hasGenericParamList: | no | isAsync: | no | isConst: | no | isDefault: | no | isGen: | no | isUnsafe: | no | hasName: | yes | hasRetType: | yes | hasVisibility: | no | hasWhereClause: | no | -| gen_function.rs:7:5:7:13 | bar | hasParamList: | yes | getNumberOfAttrs: | 0 | hasExtendedCanonicalPath: | yes | hasCrateOrigin: | yes | hasAbi: | no | hasBody: | no | hasGenericParamList: | no | isAsync: | no | isConst: | no | isDefault: | no | isGen: | no | isUnsafe: | no | hasName: | yes | hasRetType: | no | hasVisibility: | no | hasWhereClause: | no | +| gen_function.rs:3:1:4:38 | fn foo | hasParamList: | yes | getNumberOfAttrs: | 0 | hasExtendedCanonicalPath: | yes | hasCrateOrigin: | yes | hasAbi: | no | hasBody: | yes | hasGenericParamList: | no | isAsync: | no | isConst: | no | isDefault: | no | isGen: | no | isUnsafe: | no | hasName: | yes | hasRetType: | yes | hasVisibility: | no | hasWhereClause: | no | +| gen_function.rs:7:5:7:13 | fn bar | hasParamList: | yes | getNumberOfAttrs: | 0 | hasExtendedCanonicalPath: | yes | hasCrateOrigin: | yes | hasAbi: | no | hasBody: | no | hasGenericParamList: | no | isAsync: | no | isConst: | no | isDefault: | no | isGen: | no | isUnsafe: | no | hasName: | yes | hasRetType: | no | hasVisibility: | no | hasWhereClause: | no | diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getBody.expected b/rust/ql/test/extractor-tests/generated/Function/Function_getBody.expected index 996e8c1a27c3..894900b3eaa8 100644 --- a/rust/ql/test/extractor-tests/generated/Function/Function_getBody.expected +++ b/rust/ql/test/extractor-tests/generated/Function/Function_getBody.expected @@ -1 +1 @@ -| gen_function.rs:3:1:4:38 | foo | gen_function.rs:4:23:4:38 | BlockExpr | +| gen_function.rs:3:1:4:38 | fn foo | gen_function.rs:4:23:4:38 | { ... } | diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/Function/Function_getCrateOrigin.expected index 7c376ffaf1e6..eabc941bd5be 100644 --- a/rust/ql/test/extractor-tests/generated/Function/Function_getCrateOrigin.expected +++ b/rust/ql/test/extractor-tests/generated/Function/Function_getCrateOrigin.expected @@ -1,2 +1,2 @@ -| gen_function.rs:3:1:4:38 | foo | repo::test | -| gen_function.rs:7:5:7:13 | bar | repo::test | +| gen_function.rs:3:1:4:38 | fn foo | repo::test | +| gen_function.rs:7:5:7:13 | fn bar | repo::test | diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getExtendedCanonicalPath.expected b/rust/ql/test/extractor-tests/generated/Function/Function_getExtendedCanonicalPath.expected index d9b6255918f8..2c0059ebc2a5 100644 --- a/rust/ql/test/extractor-tests/generated/Function/Function_getExtendedCanonicalPath.expected +++ b/rust/ql/test/extractor-tests/generated/Function/Function_getExtendedCanonicalPath.expected @@ -1,2 +1,2 @@ -| gen_function.rs:3:1:4:38 | foo | crate::gen_function::foo | -| gen_function.rs:7:5:7:13 | bar | crate::gen_function::Trait::bar | +| gen_function.rs:3:1:4:38 | fn foo | crate::gen_function::foo | +| gen_function.rs:7:5:7:13 | fn bar | crate::gen_function::Trait::bar | diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getName.expected b/rust/ql/test/extractor-tests/generated/Function/Function_getName.expected index 62676019818d..7e889e82d284 100644 --- a/rust/ql/test/extractor-tests/generated/Function/Function_getName.expected +++ b/rust/ql/test/extractor-tests/generated/Function/Function_getName.expected @@ -1,2 +1,2 @@ -| gen_function.rs:3:1:4:38 | foo | gen_function.rs:4:4:4:6 | foo | -| gen_function.rs:7:5:7:13 | bar | gen_function.rs:7:8:7:10 | bar | +| gen_function.rs:3:1:4:38 | fn foo | gen_function.rs:4:4:4:6 | foo | +| gen_function.rs:7:5:7:13 | fn bar | gen_function.rs:7:8:7:10 | bar | diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getParamList.expected b/rust/ql/test/extractor-tests/generated/Function/Function_getParamList.expected index baa2734e86ac..df5810619191 100644 --- a/rust/ql/test/extractor-tests/generated/Function/Function_getParamList.expected +++ b/rust/ql/test/extractor-tests/generated/Function/Function_getParamList.expected @@ -1,2 +1,2 @@ -| gen_function.rs:3:1:4:38 | foo | gen_function.rs:4:7:4:14 | ParamList | -| gen_function.rs:7:5:7:13 | bar | gen_function.rs:7:11:7:12 | ParamList | +| gen_function.rs:3:1:4:38 | fn foo | gen_function.rs:4:7:4:14 | ParamList | +| gen_function.rs:7:5:7:13 | fn bar | gen_function.rs:7:11:7:12 | ParamList | diff --git a/rust/ql/test/extractor-tests/generated/Function/Function_getRetType.expected b/rust/ql/test/extractor-tests/generated/Function/Function_getRetType.expected index 7a5338705600..bd225b268e84 100644 --- a/rust/ql/test/extractor-tests/generated/Function/Function_getRetType.expected +++ b/rust/ql/test/extractor-tests/generated/Function/Function_getRetType.expected @@ -1 +1 @@ -| gen_function.rs:3:1:4:38 | foo | gen_function.rs:4:16:4:21 | RetType | +| gen_function.rs:3:1:4:38 | fn foo | gen_function.rs:4:16:4:21 | RetType | diff --git a/rust/ql/test/extractor-tests/generated/GenericArgList/GenericArgList.expected b/rust/ql/test/extractor-tests/generated/GenericArgList/GenericArgList.expected index 370ee8ce4d66..d2a5b7bcd8f0 100644 --- a/rust/ql/test/extractor-tests/generated/GenericArgList/GenericArgList.expected +++ b/rust/ql/test/extractor-tests/generated/GenericArgList/GenericArgList.expected @@ -1 +1 @@ -| gen_generic_arg_list.rs:5:10:5:21 | GenericArgList | getNumberOfGenericArgs: | 2 | +| gen_generic_arg_list.rs:5:10:5:21 | <...> | getNumberOfGenericArgs: | 2 | diff --git a/rust/ql/test/extractor-tests/generated/GenericArgList/GenericArgList_getGenericArg.expected b/rust/ql/test/extractor-tests/generated/GenericArgList/GenericArgList_getGenericArg.expected index b72d3035ed14..69e416a57ad7 100644 --- a/rust/ql/test/extractor-tests/generated/GenericArgList/GenericArgList_getGenericArg.expected +++ b/rust/ql/test/extractor-tests/generated/GenericArgList/GenericArgList_getGenericArg.expected @@ -1,2 +1,2 @@ -| gen_generic_arg_list.rs:5:10:5:21 | GenericArgList | 0 | gen_generic_arg_list.rs:5:13:5:15 | TypeArg | -| gen_generic_arg_list.rs:5:10:5:21 | GenericArgList | 1 | gen_generic_arg_list.rs:5:18:5:20 | TypeArg | +| gen_generic_arg_list.rs:5:10:5:21 | <...> | 0 | gen_generic_arg_list.rs:5:13:5:15 | TypeArg | +| gen_generic_arg_list.rs:5:10:5:21 | <...> | 1 | gen_generic_arg_list.rs:5:18:5:20 | TypeArg | diff --git a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr.expected b/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr.expected index a0e0ea15594f..d9a33ad74f79 100644 --- a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr.expected +++ b/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr.expected @@ -1,2 +1,2 @@ -| gen_if_expr.rs:5:5:7:5 | IfExpr | getNumberOfAttrs: | 0 | hasCondition: | yes | hasElse: | no | hasThen: | yes | -| gen_if_expr.rs:8:13:12:5 | IfExpr | getNumberOfAttrs: | 0 | hasCondition: | yes | hasElse: | yes | hasThen: | yes | +| gen_if_expr.rs:5:5:7:5 | if ... {...} | getNumberOfAttrs: | 0 | hasCondition: | yes | hasElse: | no | hasThen: | yes | +| gen_if_expr.rs:8:13:12:5 | if ... {...} else {...} | getNumberOfAttrs: | 0 | hasCondition: | yes | hasElse: | yes | hasThen: | yes | diff --git a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getCondition.expected b/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getCondition.expected index 7bdb262dd324..4990a47bc96e 100644 --- a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getCondition.expected +++ b/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getCondition.expected @@ -1,2 +1,2 @@ -| gen_if_expr.rs:5:5:7:5 | IfExpr | gen_if_expr.rs:5:8:5:14 | ... == ... | -| gen_if_expr.rs:8:13:12:5 | IfExpr | gen_if_expr.rs:8:16:8:20 | ... > ... | +| gen_if_expr.rs:5:5:7:5 | if ... {...} | gen_if_expr.rs:5:8:5:14 | ... == ... | +| gen_if_expr.rs:8:13:12:5 | if ... {...} else {...} | gen_if_expr.rs:8:16:8:20 | ... > ... | diff --git a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getElse.expected b/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getElse.expected index a857dbe2099a..a03626f5e5dd 100644 --- a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getElse.expected +++ b/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getElse.expected @@ -1 +1 @@ -| gen_if_expr.rs:8:13:12:5 | IfExpr | gen_if_expr.rs:10:12:12:5 | BlockExpr | +| gen_if_expr.rs:8:13:12:5 | if ... {...} else {...} | gen_if_expr.rs:10:12:12:5 | { ... } | diff --git a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getThen.expected b/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getThen.expected index 0916c3f33916..6080b004f38f 100644 --- a/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getThen.expected +++ b/rust/ql/test/extractor-tests/generated/IfExpr/IfExpr_getThen.expected @@ -1,2 +1,2 @@ -| gen_if_expr.rs:5:5:7:5 | IfExpr | gen_if_expr.rs:5:16:7:5 | BlockExpr | -| gen_if_expr.rs:8:13:12:5 | IfExpr | gen_if_expr.rs:8:22:10:5 | BlockExpr | +| gen_if_expr.rs:5:5:7:5 | if ... {...} | gen_if_expr.rs:5:16:7:5 | { ... } | +| gen_if_expr.rs:8:13:12:5 | if ... {...} else {...} | gen_if_expr.rs:8:22:10:5 | { ... } | diff --git a/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr.expected b/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr.expected index c113934115d2..614afc3040f4 100644 --- a/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr.expected +++ b/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr.expected @@ -1,2 +1,2 @@ -| gen_index_expr.rs:5:5:5:12 | IndexExpr | getNumberOfAttrs: | 0 | hasBase: | yes | hasIndex: | yes | -| gen_index_expr.rs:6:5:6:12 | IndexExpr | getNumberOfAttrs: | 0 | hasBase: | yes | hasIndex: | yes | +| gen_index_expr.rs:5:5:5:12 | list[42] | getNumberOfAttrs: | 0 | hasBase: | yes | hasIndex: | yes | +| gen_index_expr.rs:6:5:6:12 | list[42] | getNumberOfAttrs: | 0 | hasBase: | yes | hasIndex: | yes | diff --git a/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getBase.expected b/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getBase.expected index c149597172b8..13fb9a2c6a6d 100644 --- a/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getBase.expected +++ b/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getBase.expected @@ -1,2 +1,2 @@ -| gen_index_expr.rs:5:5:5:12 | IndexExpr | gen_index_expr.rs:5:5:5:8 | list | -| gen_index_expr.rs:6:5:6:12 | IndexExpr | gen_index_expr.rs:6:5:6:8 | list | +| gen_index_expr.rs:5:5:5:12 | list[42] | gen_index_expr.rs:5:5:5:8 | list | +| gen_index_expr.rs:6:5:6:12 | list[42] | gen_index_expr.rs:6:5:6:8 | list | diff --git a/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getIndex.expected b/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getIndex.expected index 433afd85eb99..dfca82040881 100644 --- a/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getIndex.expected +++ b/rust/ql/test/extractor-tests/generated/IndexExpr/IndexExpr_getIndex.expected @@ -1,2 +1,2 @@ -| gen_index_expr.rs:5:5:5:12 | IndexExpr | gen_index_expr.rs:5:10:5:11 | 42 | -| gen_index_expr.rs:6:5:6:12 | IndexExpr | gen_index_expr.rs:6:10:6:11 | 42 | +| gen_index_expr.rs:5:5:5:12 | list[42] | gen_index_expr.rs:5:10:5:11 | 42 | +| gen_index_expr.rs:6:5:6:12 | list[42] | gen_index_expr.rs:6:10:6:11 | 42 | diff --git a/rust/ql/test/extractor-tests/generated/Label/Label.expected b/rust/ql/test/extractor-tests/generated/Label/Label.expected index 5cea4ef72221..7525044aaa25 100644 --- a/rust/ql/test/extractor-tests/generated/Label/Label.expected +++ b/rust/ql/test/extractor-tests/generated/Label/Label.expected @@ -1 +1 @@ -| gen_label.rs:5:5:5:11 | Label | hasLifetime: | yes | +| gen_label.rs:5:5:5:11 | 'label | hasLifetime: | yes | diff --git a/rust/ql/test/extractor-tests/generated/Label/Label_getLifetime.expected b/rust/ql/test/extractor-tests/generated/Label/Label_getLifetime.expected index 9c78f23307d2..73ebbe963e85 100644 --- a/rust/ql/test/extractor-tests/generated/Label/Label_getLifetime.expected +++ b/rust/ql/test/extractor-tests/generated/Label/Label_getLifetime.expected @@ -1 +1 @@ -| gen_label.rs:5:5:5:11 | Label | gen_label.rs:5:5:5:10 | Lifetime | +| gen_label.rs:5:5:5:11 | 'label | gen_label.rs:5:5:5:10 | ''label | diff --git a/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr.expected b/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr.expected index 26a968ef35b3..7ff5ad393e19 100644 --- a/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr.expected +++ b/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr.expected @@ -1 +1 @@ -| gen_let_expr.rs:5:8:5:31 | LetExpr | getNumberOfAttrs: | 0 | hasExpr: | yes | hasPat: | yes | +| gen_let_expr.rs:5:8:5:31 | let ... = maybe_some | getNumberOfAttrs: | 0 | hasExpr: | yes | hasPat: | yes | diff --git a/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr_getExpr.expected index f90fa5862299..0080ab4ee6e5 100644 --- a/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr_getExpr.expected +++ b/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr_getExpr.expected @@ -1 +1 @@ -| gen_let_expr.rs:5:8:5:31 | LetExpr | gen_let_expr.rs:5:22:5:31 | maybe_some | +| gen_let_expr.rs:5:8:5:31 | let ... = maybe_some | gen_let_expr.rs:5:22:5:31 | maybe_some | diff --git a/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr_getPat.expected b/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr_getPat.expected index 287200e610ff..7c31e314128d 100644 --- a/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr_getPat.expected +++ b/rust/ql/test/extractor-tests/generated/LetExpr/LetExpr_getPat.expected @@ -1 +1 @@ -| gen_let_expr.rs:5:8:5:31 | LetExpr | gen_let_expr.rs:5:12:5:18 | TupleStructPat | +| gen_let_expr.rs:5:8:5:31 | let ... = maybe_some | gen_let_expr.rs:5:12:5:18 | TupleStructPat | diff --git a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt.expected b/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt.expected index 7c05e07e2f3e..847ff988ff0d 100644 --- a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt.expected +++ b/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt.expected @@ -1,6 +1,6 @@ -| gen_let_stmt.rs:5:5:5:15 | LetStmt | getNumberOfAttrs: | 0 | hasInitializer: | yes | hasLetElse: | no | hasPat: | yes | hasTy: | no | -| gen_let_stmt.rs:6:5:6:20 | LetStmt | getNumberOfAttrs: | 0 | hasInitializer: | yes | hasLetElse: | no | hasPat: | yes | hasTy: | yes | -| gen_let_stmt.rs:7:5:7:15 | LetStmt | getNumberOfAttrs: | 0 | hasInitializer: | no | hasLetElse: | no | hasPat: | yes | hasTy: | yes | -| gen_let_stmt.rs:8:5:8:10 | LetStmt | getNumberOfAttrs: | 0 | hasInitializer: | no | hasLetElse: | no | hasPat: | yes | hasTy: | no | -| gen_let_stmt.rs:9:5:9:24 | LetStmt | getNumberOfAttrs: | 0 | hasInitializer: | yes | hasLetElse: | no | hasPat: | yes | hasTy: | no | -| gen_let_stmt.rs:10:5:12:6 | LetStmt | getNumberOfAttrs: | 0 | hasInitializer: | yes | hasLetElse: | yes | hasPat: | yes | hasTy: | no | +| gen_let_stmt.rs:5:5:5:15 | let ... = 42 | getNumberOfAttrs: | 0 | hasInitializer: | yes | hasLetElse: | no | hasPat: | yes | hasTy: | no | +| gen_let_stmt.rs:6:5:6:20 | let ... = 42 | getNumberOfAttrs: | 0 | hasInitializer: | yes | hasLetElse: | no | hasPat: | yes | hasTy: | yes | +| gen_let_stmt.rs:7:5:7:15 | let ... | getNumberOfAttrs: | 0 | hasInitializer: | no | hasLetElse: | no | hasPat: | yes | hasTy: | yes | +| gen_let_stmt.rs:8:5:8:10 | let ... | getNumberOfAttrs: | 0 | hasInitializer: | no | hasLetElse: | no | hasPat: | yes | hasTy: | no | +| gen_let_stmt.rs:9:5:9:24 | let ... = ... | getNumberOfAttrs: | 0 | hasInitializer: | yes | hasLetElse: | no | hasPat: | yes | hasTy: | no | +| gen_let_stmt.rs:10:5:12:6 | let ... = ... else {...} | getNumberOfAttrs: | 0 | hasInitializer: | yes | hasLetElse: | yes | hasPat: | yes | hasTy: | no | diff --git a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getInitializer.expected b/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getInitializer.expected index 5e79b98f8278..bd8368e351fb 100644 --- a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getInitializer.expected +++ b/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getInitializer.expected @@ -1,4 +1,4 @@ -| gen_let_stmt.rs:5:5:5:15 | LetStmt | gen_let_stmt.rs:5:13:5:14 | 42 | -| gen_let_stmt.rs:6:5:6:20 | LetStmt | gen_let_stmt.rs:6:18:6:19 | 42 | -| gen_let_stmt.rs:9:5:9:24 | LetStmt | gen_let_stmt.rs:9:18:9:23 | TupleExpr | -| gen_let_stmt.rs:10:5:12:6 | LetStmt | gen_let_stmt.rs:10:19:10:38 | CallExpr | +| gen_let_stmt.rs:5:5:5:15 | let ... = 42 | gen_let_stmt.rs:5:13:5:14 | 42 | +| gen_let_stmt.rs:6:5:6:20 | let ... = 42 | gen_let_stmt.rs:6:18:6:19 | 42 | +| gen_let_stmt.rs:9:5:9:24 | let ... = ... | gen_let_stmt.rs:9:18:9:23 | TupleExpr | +| gen_let_stmt.rs:10:5:12:6 | let ... = ... else {...} | gen_let_stmt.rs:10:19:10:38 | ...::var(...) | diff --git a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getLetElse.expected b/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getLetElse.expected index 8078ec669660..5e8090859af5 100644 --- a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getLetElse.expected +++ b/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getLetElse.expected @@ -1 +1 @@ -| gen_let_stmt.rs:10:5:12:6 | LetStmt | gen_let_stmt.rs:10:40:12:5 | LetElse | +| gen_let_stmt.rs:10:5:12:6 | let ... = ... else {...} | gen_let_stmt.rs:10:40:12:5 | else {...} | diff --git a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getPat.expected b/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getPat.expected index 93810df10e36..758837c946d1 100644 --- a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getPat.expected +++ b/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getPat.expected @@ -1,6 +1,6 @@ -| gen_let_stmt.rs:5:5:5:15 | LetStmt | gen_let_stmt.rs:5:9:5:9 | x | -| gen_let_stmt.rs:6:5:6:20 | LetStmt | gen_let_stmt.rs:6:9:6:9 | x | -| gen_let_stmt.rs:7:5:7:15 | LetStmt | gen_let_stmt.rs:7:9:7:9 | x | -| gen_let_stmt.rs:8:5:8:10 | LetStmt | gen_let_stmt.rs:8:9:8:9 | x | -| gen_let_stmt.rs:9:5:9:24 | LetStmt | gen_let_stmt.rs:9:9:9:14 | TuplePat | -| gen_let_stmt.rs:10:5:12:6 | LetStmt | gen_let_stmt.rs:10:9:10:15 | TupleStructPat | +| gen_let_stmt.rs:5:5:5:15 | let ... = 42 | gen_let_stmt.rs:5:9:5:9 | x | +| gen_let_stmt.rs:6:5:6:20 | let ... = 42 | gen_let_stmt.rs:6:9:6:9 | x | +| gen_let_stmt.rs:7:5:7:15 | let ... | gen_let_stmt.rs:7:9:7:9 | x | +| gen_let_stmt.rs:8:5:8:10 | let ... | gen_let_stmt.rs:8:9:8:9 | x | +| gen_let_stmt.rs:9:5:9:24 | let ... = ... | gen_let_stmt.rs:9:9:9:14 | TuplePat | +| gen_let_stmt.rs:10:5:12:6 | let ... = ... else {...} | gen_let_stmt.rs:10:9:10:15 | TupleStructPat | diff --git a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getTy.expected b/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getTy.expected index 1cf6d1d2a513..489647f4793a 100644 --- a/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getTy.expected +++ b/rust/ql/test/extractor-tests/generated/LetStmt/LetStmt_getTy.expected @@ -1,2 +1,2 @@ -| gen_let_stmt.rs:6:5:6:20 | LetStmt | gen_let_stmt.rs:6:12:6:14 | PathType | -| gen_let_stmt.rs:7:5:7:15 | LetStmt | gen_let_stmt.rs:7:12:7:14 | PathType | +| gen_let_stmt.rs:6:5:6:20 | let ... = 42 | gen_let_stmt.rs:6:12:6:14 | i32 | +| gen_let_stmt.rs:7:5:7:15 | let ... | gen_let_stmt.rs:7:12:7:14 | i32 | diff --git a/rust/ql/test/extractor-tests/generated/LiteralPat/LiteralPat.expected b/rust/ql/test/extractor-tests/generated/LiteralPat/LiteralPat.expected index b7ac2ced75f8..d4734ef3dac3 100644 --- a/rust/ql/test/extractor-tests/generated/LiteralPat/LiteralPat.expected +++ b/rust/ql/test/extractor-tests/generated/LiteralPat/LiteralPat.expected @@ -1 +1 @@ -| gen_literal_pat.rs:6:9:6:10 | LiteralPat | hasLiteral: | yes | +| gen_literal_pat.rs:6:9:6:10 | 42 | hasLiteral: | yes | diff --git a/rust/ql/test/extractor-tests/generated/LiteralPat/LiteralPat_getLiteral.expected b/rust/ql/test/extractor-tests/generated/LiteralPat/LiteralPat_getLiteral.expected index ce74da0fb3a5..487f239737bc 100644 --- a/rust/ql/test/extractor-tests/generated/LiteralPat/LiteralPat_getLiteral.expected +++ b/rust/ql/test/extractor-tests/generated/LiteralPat/LiteralPat_getLiteral.expected @@ -1 +1 @@ -| gen_literal_pat.rs:6:9:6:10 | LiteralPat | gen_literal_pat.rs:6:9:6:10 | 42 | +| gen_literal_pat.rs:6:9:6:10 | 42 | gen_literal_pat.rs:6:9:6:10 | 42 | diff --git a/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr.expected b/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr.expected index aae22652d645..b0adbe40897f 100644 --- a/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr.expected +++ b/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr.expected @@ -1,3 +1,3 @@ -| gen_loop_expr.rs:5:5:7:5 | LoopExpr | getNumberOfAttrs: | 0 | hasLabel: | no | hasLoopBody: | yes | -| gen_loop_expr.rs:8:5:11:5 | LoopExpr | getNumberOfAttrs: | 0 | hasLabel: | yes | hasLoopBody: | yes | -| gen_loop_expr.rs:13:5:19:5 | LoopExpr | getNumberOfAttrs: | 0 | hasLabel: | no | hasLoopBody: | yes | +| gen_loop_expr.rs:5:5:7:5 | loop { ... } | hasLabel: | no | hasLoopBody: | yes | getNumberOfAttrs: | 0 | +| gen_loop_expr.rs:8:5:11:5 | 'label: loop { ... } | hasLabel: | yes | hasLoopBody: | yes | getNumberOfAttrs: | 0 | +| gen_loop_expr.rs:13:5:19:5 | loop { ... } | hasLabel: | no | hasLoopBody: | yes | getNumberOfAttrs: | 0 | diff --git a/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr.ql b/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr.ql index c627fb16771a..92248ab5ec07 100644 --- a/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr.ql +++ b/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr.ql @@ -2,11 +2,11 @@ import codeql.rust.elements import TestUtils -from LoopExpr x, int getNumberOfAttrs, string hasLabel, string hasLoopBody +from LoopExpr x, string hasLabel, string hasLoopBody, int getNumberOfAttrs where toBeTested(x) and not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and (if x.hasLabel() then hasLabel = "yes" else hasLabel = "no") and - if x.hasLoopBody() then hasLoopBody = "yes" else hasLoopBody = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasLabel:", hasLabel, "hasLoopBody:", hasLoopBody + (if x.hasLoopBody() then hasLoopBody = "yes" else hasLoopBody = "no") and + getNumberOfAttrs = x.getNumberOfAttrs() +select x, "hasLabel:", hasLabel, "hasLoopBody:", hasLoopBody, "getNumberOfAttrs:", getNumberOfAttrs diff --git a/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr_getLabel.expected b/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr_getLabel.expected index 98a657f09832..e2dc2fdf8950 100644 --- a/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr_getLabel.expected +++ b/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr_getLabel.expected @@ -1 +1 @@ -| gen_loop_expr.rs:8:5:11:5 | LoopExpr | gen_loop_expr.rs:8:5:8:11 | Label | +| gen_loop_expr.rs:8:5:11:5 | 'label: loop { ... } | gen_loop_expr.rs:8:5:8:11 | 'label | diff --git a/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr_getLoopBody.expected b/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr_getLoopBody.expected index 358fd7625b57..9cf0c64dd0b8 100644 --- a/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr_getLoopBody.expected +++ b/rust/ql/test/extractor-tests/generated/LoopExpr/LoopExpr_getLoopBody.expected @@ -1,3 +1,3 @@ -| gen_loop_expr.rs:5:5:7:5 | LoopExpr | gen_loop_expr.rs:5:10:7:5 | BlockExpr | -| gen_loop_expr.rs:8:5:11:5 | LoopExpr | gen_loop_expr.rs:8:18:11:5 | BlockExpr | -| gen_loop_expr.rs:13:5:19:5 | LoopExpr | gen_loop_expr.rs:13:10:19:5 | BlockExpr | +| gen_loop_expr.rs:5:5:7:5 | loop { ... } | gen_loop_expr.rs:5:10:7:5 | { ... } | +| gen_loop_expr.rs:8:5:11:5 | 'label: loop { ... } | gen_loop_expr.rs:8:18:11:5 | { ... } | +| gen_loop_expr.rs:13:5:19:5 | loop { ... } | gen_loop_expr.rs:13:10:19:5 | { ... } | diff --git a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall.expected b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall.expected index 03bcc247a9d2..db69c4e068ab 100644 --- a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall.expected +++ b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall.expected @@ -1 +1 @@ -| gen_macro_call.rs:5:5:5:11 | MacroCall | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | getNumberOfAttrs: | 0 | hasPath: | yes | hasTokenTree: | yes | hasExpanded: | yes | +| gen_macro_call.rs:5:5:5:11 | todo!... | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | getNumberOfAttrs: | 0 | hasPath: | yes | hasTokenTree: | yes | hasExpanded: | yes | diff --git a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getExpanded.expected b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getExpanded.expected index 7bdb564985f8..1b60df41f797 100644 --- a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getExpanded.expected +++ b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getExpanded.expected @@ -1 +1 @@ -| gen_macro_call.rs:5:5:5:11 | MacroCall | gen_macro_call.rs:5:5:5:11 | MacroStmts | +| gen_macro_call.rs:5:5:5:11 | todo!... | gen_macro_call.rs:5:5:5:11 | MacroStmts | diff --git a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getPath.expected b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getPath.expected index 33685ad0aad9..23762715c9a2 100644 --- a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getPath.expected +++ b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getPath.expected @@ -1 +1 @@ -| gen_macro_call.rs:5:5:5:11 | MacroCall | gen_macro_call.rs:5:5:5:8 | todo | +| gen_macro_call.rs:5:5:5:11 | todo!... | gen_macro_call.rs:5:5:5:8 | todo | diff --git a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getTokenTree.expected b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getTokenTree.expected index 5f92a68536c1..d2ed004ecc43 100644 --- a/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getTokenTree.expected +++ b/rust/ql/test/extractor-tests/generated/MacroCall/MacroCall_getTokenTree.expected @@ -1 +1 @@ -| gen_macro_call.rs:5:5:5:11 | MacroCall | gen_macro_call.rs:5:10:5:11 | TokenTree | +| gen_macro_call.rs:5:5:5:11 | todo!... | gen_macro_call.rs:5:10:5:11 | TokenTree | diff --git a/rust/ql/test/extractor-tests/generated/MacroExpr/MacroExpr_getMacroCall.expected b/rust/ql/test/extractor-tests/generated/MacroExpr/MacroExpr_getMacroCall.expected index 5a635cabcbe1..c1815adac090 100644 --- a/rust/ql/test/extractor-tests/generated/MacroExpr/MacroExpr_getMacroCall.expected +++ b/rust/ql/test/extractor-tests/generated/MacroExpr/MacroExpr_getMacroCall.expected @@ -1 +1 @@ -| gen_macro_expr.rs:5:5:5:11 | MacroExpr | gen_macro_expr.rs:5:5:5:11 | MacroCall | +| gen_macro_expr.rs:5:5:5:11 | MacroExpr | gen_macro_expr.rs:5:5:5:11 | todo!... | diff --git a/rust/ql/test/extractor-tests/generated/MacroItems/CONSISTENCY/DataFlowConsistency.expected b/rust/ql/test/extractor-tests/generated/MacroItems/CONSISTENCY/DataFlowConsistency.expected index 1a9588efd03a..28012e97348f 100644 --- a/rust/ql/test/extractor-tests/generated/MacroItems/CONSISTENCY/DataFlowConsistency.expected +++ b/rust/ql/test/extractor-tests/generated/MacroItems/CONSISTENCY/DataFlowConsistency.expected @@ -2,10 +2,10 @@ uniqueNodeLocation | file://:0:0:0:0 | ... .parent(...) | Node should have one location but has 0. | | file://:0:0:0:0 | ... .parent(...) | Node should have one location but has 0. | | file://:0:0:0:0 | ... .unwrap(...) | Node should have one location but has 0. | -| file://:0:0:0:0 | BlockExpr | Node should have one location but has 0. | -| file://:0:0:0:0 | Param | Node should have one location but has 0. | +| file://:0:0:0:0 | ...: ... | Node should have one location but has 0. | | file://:0:0:0:0 | path | Node should have one location but has 0. | | file://:0:0:0:0 | path | Node should have one location but has 0. | | file://:0:0:0:0 | path | Node should have one location but has 0. | +| file://:0:0:0:0 | { ... } | Node should have one location but has 0. | missingLocation | Nodes without location: 8 | diff --git a/rust/ql/test/extractor-tests/generated/MacroItems/MacroItems_getItem.expected b/rust/ql/test/extractor-tests/generated/MacroItems/MacroItems_getItem.expected index a66e6bcca5ec..5940fb61696a 100644 --- a/rust/ql/test/extractor-tests/generated/MacroItems/MacroItems_getItem.expected +++ b/rust/ql/test/extractor-tests/generated/MacroItems/MacroItems_getItem.expected @@ -1,2 +1,2 @@ | file://:0:0:0:0 | MacroItems | 0 | file://:0:0:0:0 | Use | -| file://:0:0:0:0 | MacroItems | 1 | file://:0:0:0:0 | get_parent | +| file://:0:0:0:0 | MacroItems | 1 | file://:0:0:0:0 | fn get_parent | diff --git a/rust/ql/test/extractor-tests/generated/MacroStmts/MacroStmts_getExpr.expected b/rust/ql/test/extractor-tests/generated/MacroStmts/MacroStmts_getExpr.expected index 7d30926c1528..d1390595304e 100644 --- a/rust/ql/test/extractor-tests/generated/MacroStmts/MacroStmts_getExpr.expected +++ b/rust/ql/test/extractor-tests/generated/MacroStmts/MacroStmts_getExpr.expected @@ -1 +1 @@ -| gen_macro_stmts.rs:5:14:5:28 | MacroStmts | gen_macro_stmts.rs:5:14:5:28 | BlockExpr | +| gen_macro_stmts.rs:5:14:5:28 | MacroStmts | gen_macro_stmts.rs:5:14:5:28 | { ... } | diff --git a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm.expected b/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm.expected index b685f8823628..b3eb4c178b26 100644 --- a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm.expected +++ b/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm.expected @@ -1,4 +1,4 @@ -| gen_match_arm.rs:6:9:6:29 | MatchArm | getNumberOfAttrs: | 0 | hasExpr: | yes | hasGuard: | no | hasPat: | yes | -| gen_match_arm.rs:7:9:7:26 | MatchArm | getNumberOfAttrs: | 0 | hasExpr: | yes | hasGuard: | no | hasPat: | yes | -| gen_match_arm.rs:10:9:10:35 | MatchArm | getNumberOfAttrs: | 0 | hasExpr: | yes | hasGuard: | yes | hasPat: | yes | -| gen_match_arm.rs:11:9:11:15 | MatchArm | getNumberOfAttrs: | 0 | hasExpr: | yes | hasGuard: | no | hasPat: | yes | +| gen_match_arm.rs:6:9:6:29 | ... => y | getNumberOfAttrs: | 0 | hasExpr: | yes | hasGuard: | no | hasPat: | yes | +| gen_match_arm.rs:7:9:7:26 | ...::None => 0 | getNumberOfAttrs: | 0 | hasExpr: | yes | hasGuard: | no | hasPat: | yes | +| gen_match_arm.rs:10:9:10:35 | ... if ... => ... | getNumberOfAttrs: | 0 | hasExpr: | yes | hasGuard: | yes | hasPat: | yes | +| gen_match_arm.rs:11:9:11:15 | _ => 0 | getNumberOfAttrs: | 0 | hasExpr: | yes | hasGuard: | no | hasPat: | yes | diff --git a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getExpr.expected b/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getExpr.expected index 493ea8d9bb03..95d4a7fc2f22 100644 --- a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getExpr.expected +++ b/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getExpr.expected @@ -1,4 +1,4 @@ -| gen_match_arm.rs:6:9:6:29 | MatchArm | gen_match_arm.rs:6:28:6:28 | y | -| gen_match_arm.rs:7:9:7:26 | MatchArm | gen_match_arm.rs:7:25:7:25 | 0 | -| gen_match_arm.rs:10:9:10:35 | MatchArm | gen_match_arm.rs:10:30:10:34 | ... / ... | -| gen_match_arm.rs:11:9:11:15 | MatchArm | gen_match_arm.rs:11:14:11:14 | 0 | +| gen_match_arm.rs:6:9:6:29 | ... => y | gen_match_arm.rs:6:28:6:28 | y | +| gen_match_arm.rs:7:9:7:26 | ...::None => 0 | gen_match_arm.rs:7:25:7:25 | 0 | +| gen_match_arm.rs:10:9:10:35 | ... if ... => ... | gen_match_arm.rs:10:30:10:34 | ... / ... | +| gen_match_arm.rs:11:9:11:15 | _ => 0 | gen_match_arm.rs:11:14:11:14 | 0 | diff --git a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getGuard.expected b/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getGuard.expected index 4e5da9874740..002917455476 100644 --- a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getGuard.expected +++ b/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getGuard.expected @@ -1 +1 @@ -| gen_match_arm.rs:10:9:10:35 | MatchArm | gen_match_arm.rs:10:17:10:25 | MatchGuard | +| gen_match_arm.rs:10:9:10:35 | ... if ... => ... | gen_match_arm.rs:10:17:10:25 | MatchGuard | diff --git a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getPat.expected b/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getPat.expected index 41f79ed16c9e..9928555fc324 100644 --- a/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getPat.expected +++ b/rust/ql/test/extractor-tests/generated/MatchArm/MatchArm_getPat.expected @@ -1,4 +1,4 @@ -| gen_match_arm.rs:6:9:6:29 | MatchArm | gen_match_arm.rs:6:9:6:23 | TupleStructPat | -| gen_match_arm.rs:7:9:7:26 | MatchArm | gen_match_arm.rs:7:9:7:20 | PathPat | -| gen_match_arm.rs:10:9:10:35 | MatchArm | gen_match_arm.rs:10:9:10:15 | TupleStructPat | -| gen_match_arm.rs:11:9:11:15 | MatchArm | gen_match_arm.rs:11:9:11:9 | WildcardPat | +| gen_match_arm.rs:6:9:6:29 | ... => y | gen_match_arm.rs:6:9:6:23 | TupleStructPat | +| gen_match_arm.rs:7:9:7:26 | ...::None => 0 | gen_match_arm.rs:7:9:7:20 | ...::None | +| gen_match_arm.rs:10:9:10:35 | ... if ... => ... | gen_match_arm.rs:10:9:10:15 | TupleStructPat | +| gen_match_arm.rs:11:9:11:15 | _ => 0 | gen_match_arm.rs:11:9:11:9 | _ | diff --git a/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr.expected b/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr.expected index 4591d8a57c36..b98c3de696b6 100644 --- a/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr.expected +++ b/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr.expected @@ -1,2 +1,2 @@ -| gen_match_expr.rs:5:5:8:5 | MatchExpr | getNumberOfAttrs: | 0 | hasExpr: | yes | hasMatchArmList: | yes | -| gen_match_expr.rs:9:5:12:5 | MatchExpr | getNumberOfAttrs: | 0 | hasExpr: | yes | hasMatchArmList: | yes | +| gen_match_expr.rs:5:5:8:5 | match x { ... } | getNumberOfAttrs: | 0 | hasExpr: | yes | hasMatchArmList: | yes | +| gen_match_expr.rs:9:5:12:5 | match x { ... } | getNumberOfAttrs: | 0 | hasExpr: | yes | hasMatchArmList: | yes | diff --git a/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr_getExpr.expected index 924eb3f807fa..427af7c6ed0c 100644 --- a/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr_getExpr.expected +++ b/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr_getExpr.expected @@ -1,2 +1,2 @@ -| gen_match_expr.rs:5:5:8:5 | MatchExpr | gen_match_expr.rs:5:11:5:11 | x | -| gen_match_expr.rs:9:5:12:5 | MatchExpr | gen_match_expr.rs:9:11:9:11 | x | +| gen_match_expr.rs:5:5:8:5 | match x { ... } | gen_match_expr.rs:5:11:5:11 | x | +| gen_match_expr.rs:9:5:12:5 | match x { ... } | gen_match_expr.rs:9:11:9:11 | x | diff --git a/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr_getMatchArmList.expected b/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr_getMatchArmList.expected index db83ecb1c535..f5e25db5b39d 100644 --- a/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr_getMatchArmList.expected +++ b/rust/ql/test/extractor-tests/generated/MatchExpr/MatchExpr_getMatchArmList.expected @@ -1,2 +1,2 @@ -| gen_match_expr.rs:5:5:8:5 | MatchExpr | gen_match_expr.rs:5:13:8:5 | MatchArmList | -| gen_match_expr.rs:9:5:12:5 | MatchExpr | gen_match_expr.rs:9:13:12:5 | MatchArmList | +| gen_match_expr.rs:5:5:8:5 | match x { ... } | gen_match_expr.rs:5:13:8:5 | MatchArmList | +| gen_match_expr.rs:9:5:12:5 | match x { ... } | gen_match_expr.rs:9:13:12:5 | MatchArmList | diff --git a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getGenericArgList.expected b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getGenericArgList.expected index 8b2622f09abe..dd1ed8c03041 100644 --- a/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getGenericArgList.expected +++ b/rust/ql/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getGenericArgList.expected @@ -1 +1 @@ -| gen_method_call_expr.rs:6:5:6:25 | ... .foo(...) | gen_method_call_expr.rs:6:10:6:21 | GenericArgList | +| gen_method_call_expr.rs:6:5:6:25 | ... .foo(...) | gen_method_call_expr.rs:6:10:6:21 | <...> | diff --git a/rust/ql/test/extractor-tests/generated/Module/Module.expected b/rust/ql/test/extractor-tests/generated/Module/Module.expected index d7c04f7c1180..11b6d9e1e9bd 100644 --- a/rust/ql/test/extractor-tests/generated/Module/Module.expected +++ b/rust/ql/test/extractor-tests/generated/Module/Module.expected @@ -1,3 +1,3 @@ -| gen_module.rs:3:1:4:8 | Module | hasExtendedCanonicalPath: | yes | hasCrateOrigin: | yes | getNumberOfAttrs: | 0 | hasItemList: | no | hasName: | yes | hasVisibility: | no | -| gen_module.rs:5:1:7:1 | Module | hasExtendedCanonicalPath: | yes | hasCrateOrigin: | yes | getNumberOfAttrs: | 0 | hasItemList: | yes | hasName: | yes | hasVisibility: | no | -| lib.rs:1:1:1:15 | Module | hasExtendedCanonicalPath: | yes | hasCrateOrigin: | yes | getNumberOfAttrs: | 0 | hasItemList: | no | hasName: | yes | hasVisibility: | no | +| gen_module.rs:3:1:4:8 | mod foo | hasExtendedCanonicalPath: | yes | hasCrateOrigin: | yes | getNumberOfAttrs: | 0 | hasItemList: | no | hasName: | yes | hasVisibility: | no | +| gen_module.rs:5:1:7:1 | mod bar | hasExtendedCanonicalPath: | yes | hasCrateOrigin: | yes | getNumberOfAttrs: | 0 | hasItemList: | yes | hasName: | yes | hasVisibility: | no | +| lib.rs:1:1:1:15 | mod gen_module | hasExtendedCanonicalPath: | yes | hasCrateOrigin: | yes | getNumberOfAttrs: | 0 | hasItemList: | no | hasName: | yes | hasVisibility: | no | diff --git a/rust/ql/test/extractor-tests/generated/Module/Module_getCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/Module/Module_getCrateOrigin.expected index e2e58c030ef7..0164fbb8e29b 100644 --- a/rust/ql/test/extractor-tests/generated/Module/Module_getCrateOrigin.expected +++ b/rust/ql/test/extractor-tests/generated/Module/Module_getCrateOrigin.expected @@ -1,3 +1,3 @@ -| gen_module.rs:3:1:4:8 | Module | repo::test | -| gen_module.rs:5:1:7:1 | Module | repo::test | -| lib.rs:1:1:1:15 | Module | repo::test | +| gen_module.rs:3:1:4:8 | mod foo | repo::test | +| gen_module.rs:5:1:7:1 | mod bar | repo::test | +| lib.rs:1:1:1:15 | mod gen_module | repo::test | diff --git a/rust/ql/test/extractor-tests/generated/Module/Module_getExtendedCanonicalPath.expected b/rust/ql/test/extractor-tests/generated/Module/Module_getExtendedCanonicalPath.expected index 19eadfdafd54..c573ef164ebe 100644 --- a/rust/ql/test/extractor-tests/generated/Module/Module_getExtendedCanonicalPath.expected +++ b/rust/ql/test/extractor-tests/generated/Module/Module_getExtendedCanonicalPath.expected @@ -1,3 +1,3 @@ -| gen_module.rs:3:1:4:8 | Module | crate::gen_module::foo | -| gen_module.rs:5:1:7:1 | Module | crate::gen_module::bar | -| lib.rs:1:1:1:15 | Module | crate::gen_module | +| gen_module.rs:3:1:4:8 | mod foo | crate::gen_module::foo | +| gen_module.rs:5:1:7:1 | mod bar | crate::gen_module::bar | +| lib.rs:1:1:1:15 | mod gen_module | crate::gen_module | diff --git a/rust/ql/test/extractor-tests/generated/Module/Module_getItemList.expected b/rust/ql/test/extractor-tests/generated/Module/Module_getItemList.expected index 04fd8d4a81a0..8edc36efa738 100644 --- a/rust/ql/test/extractor-tests/generated/Module/Module_getItemList.expected +++ b/rust/ql/test/extractor-tests/generated/Module/Module_getItemList.expected @@ -1 +1 @@ -| gen_module.rs:5:1:7:1 | Module | gen_module.rs:5:9:7:1 | ItemList | +| gen_module.rs:5:1:7:1 | mod bar | gen_module.rs:5:9:7:1 | ItemList | diff --git a/rust/ql/test/extractor-tests/generated/Module/Module_getName.expected b/rust/ql/test/extractor-tests/generated/Module/Module_getName.expected index cc295b1da89a..1874862befe5 100644 --- a/rust/ql/test/extractor-tests/generated/Module/Module_getName.expected +++ b/rust/ql/test/extractor-tests/generated/Module/Module_getName.expected @@ -1,3 +1,3 @@ -| gen_module.rs:3:1:4:8 | Module | gen_module.rs:4:5:4:7 | foo | -| gen_module.rs:5:1:7:1 | Module | gen_module.rs:5:5:5:7 | bar | -| lib.rs:1:1:1:15 | Module | lib.rs:1:5:1:14 | gen_module | +| gen_module.rs:3:1:4:8 | mod foo | gen_module.rs:4:5:4:7 | foo | +| gen_module.rs:5:1:7:1 | mod bar | gen_module.rs:5:5:5:7 | bar | +| lib.rs:1:1:1:15 | mod gen_module | lib.rs:1:5:1:14 | gen_module | diff --git a/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getTy.expected b/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getTy.expected index c7d0f2ee6afc..e2e11abb6a0f 100644 --- a/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getTy.expected +++ b/rust/ql/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getTy.expected @@ -1 +1 @@ -| gen_offset_of_expr.rs:5:5:5:38 | OffsetOfExpr | gen_offset_of_expr.rs:5:25:5:30 | PathType | +| gen_offset_of_expr.rs:5:5:5:38 | OffsetOfExpr | gen_offset_of_expr.rs:5:25:5:30 | Struct | diff --git a/rust/ql/test/extractor-tests/generated/OrPat/OrPat.expected b/rust/ql/test/extractor-tests/generated/OrPat/OrPat.expected index 786a00180935..1d67a8509b91 100644 --- a/rust/ql/test/extractor-tests/generated/OrPat/OrPat.expected +++ b/rust/ql/test/extractor-tests/generated/OrPat/OrPat.expected @@ -1 +1 @@ -| gen_or_pat.rs:6:9:6:38 | OrPat | getNumberOfPats: | 2 | +| gen_or_pat.rs:6:9:6:38 | ... \| ...::None | getNumberOfPats: | 2 | diff --git a/rust/ql/test/extractor-tests/generated/OrPat/OrPat_getPat.expected b/rust/ql/test/extractor-tests/generated/OrPat/OrPat_getPat.expected index a701548b2345..22ebce5dde55 100644 --- a/rust/ql/test/extractor-tests/generated/OrPat/OrPat_getPat.expected +++ b/rust/ql/test/extractor-tests/generated/OrPat/OrPat_getPat.expected @@ -1,2 +1,2 @@ -| gen_or_pat.rs:6:9:6:38 | OrPat | 0 | gen_or_pat.rs:6:9:6:23 | TupleStructPat | -| gen_or_pat.rs:6:9:6:38 | OrPat | 1 | gen_or_pat.rs:6:27:6:38 | PathPat | +| gen_or_pat.rs:6:9:6:38 | ... \| ...::None | 0 | gen_or_pat.rs:6:9:6:23 | TupleStructPat | +| gen_or_pat.rs:6:9:6:38 | ... \| ...::None | 1 | gen_or_pat.rs:6:27:6:38 | ...::None | diff --git a/rust/ql/test/extractor-tests/generated/Path/Path.expected b/rust/ql/test/extractor-tests/generated/Path/Path.expected index db093224b76b..dfc303c3293c 100644 --- a/rust/ql/test/extractor-tests/generated/Path/Path.expected +++ b/rust/ql/test/extractor-tests/generated/Path/Path.expected @@ -1,2 +1,26 @@ -| gen_path.rs:5:5:5:7 | foo | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasQualifier: | no | hasPart: | yes | -| gen_path.rs:5:5:5:12 | foo::bar | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasQualifier: | yes | hasPart: | yes | +| gen_path.rs:5:9:5:18 | some_crate | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasQualifier: | no | hasPart: | yes | +| gen_path.rs:5:9:5:31 | ...::some_module | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasQualifier: | yes | hasPart: | yes | +| gen_path.rs:5:9:5:42 | ...::some_item | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasQualifier: | yes | hasPart: | yes | +| gen_path.rs:6:5:6:7 | foo | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasQualifier: | no | hasPart: | yes | +| gen_path.rs:6:5:6:12 | ...::bar | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasQualifier: | yes | hasPart: | yes | +| gen_path_expr.rs:5:13:5:20 | variable | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasQualifier: | no | hasPart: | yes | +| gen_path_expr.rs:6:13:6:15 | foo | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasQualifier: | no | hasPart: | yes | +| gen_path_expr.rs:6:13:6:20 | ...::bar | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasQualifier: | yes | hasPart: | yes | +| gen_path_expr.rs:7:13:7:15 | <...> | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasQualifier: | no | hasPart: | yes | +| gen_path_expr.rs:7:13:7:20 | ...::foo | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasQualifier: | yes | hasPart: | yes | +| gen_path_expr.rs:7:14:7:14 | T | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasQualifier: | no | hasPart: | yes | +| gen_path_expr.rs:7:14:7:14 | T | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasQualifier: | no | hasPart: | yes | +| gen_path_expr.rs:8:13:8:30 | <...> | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasQualifier: | no | hasPart: | yes | +| gen_path_expr.rs:8:13:8:35 | ...::foo | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasQualifier: | yes | hasPart: | yes | +| gen_path_expr.rs:8:14:8:20 | TypeRef | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasQualifier: | no | hasPart: | yes | +| gen_path_expr.rs:8:14:8:20 | TypeRef | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasQualifier: | no | hasPart: | yes | +| gen_path_pat.rs:5:11:5:11 | x | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasQualifier: | no | hasPart: | yes | +| gen_path_pat.rs:6:9:6:11 | Foo | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasQualifier: | no | hasPart: | yes | +| gen_path_pat.rs:6:9:6:16 | ...::Bar | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasQualifier: | yes | hasPart: | yes | +| gen_path_type.rs:5:14:5:16 | std | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasQualifier: | no | hasPart: | yes | +| gen_path_type.rs:5:14:5:29 | ...::collections | hasResolvedPath: | yes | hasResolvedCrateOrigin: | yes | hasQualifier: | yes | hasPart: | yes | +| gen_path_type.rs:5:14:5:48 | ...::HashMap::<...> | hasResolvedPath: | yes | hasResolvedCrateOrigin: | yes | hasQualifier: | yes | hasPart: | yes | +| gen_path_type.rs:5:40:5:42 | i32 | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasQualifier: | no | hasPart: | yes | +| gen_path_type.rs:5:45:5:47 | i32 | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasQualifier: | no | hasPart: | yes | +| gen_path_type.rs:6:14:6:14 | X | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasQualifier: | no | hasPart: | yes | +| gen_path_type.rs:6:14:6:20 | ...::Item | hasResolvedPath: | no | hasResolvedCrateOrigin: | no | hasQualifier: | yes | hasPart: | yes | diff --git a/rust/ql/test/extractor-tests/generated/Path/PathExpr.expected b/rust/ql/test/extractor-tests/generated/Path/PathExpr.expected new file mode 100644 index 000000000000..4f6def5dd438 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Path/PathExpr.expected @@ -0,0 +1,6 @@ +| gen_path.rs:6:5:6:12 | ...::bar | getNumberOfAttrs: | 0 | hasPath: | yes | +| gen_path_expr.rs:5:13:5:20 | variable | getNumberOfAttrs: | 0 | hasPath: | yes | +| gen_path_expr.rs:6:13:6:20 | ...::bar | getNumberOfAttrs: | 0 | hasPath: | yes | +| gen_path_expr.rs:7:13:7:20 | ...::foo | getNumberOfAttrs: | 0 | hasPath: | yes | +| gen_path_expr.rs:8:13:8:35 | ...::foo | getNumberOfAttrs: | 0 | hasPath: | yes | +| gen_path_pat.rs:5:11:5:11 | x | getNumberOfAttrs: | 0 | hasPath: | yes | diff --git a/rust/ql/test/extractor-tests/generated/PathExpr/PathExpr.ql b/rust/ql/test/extractor-tests/generated/Path/PathExpr.ql similarity index 100% rename from rust/ql/test/extractor-tests/generated/PathExpr/PathExpr.ql rename to rust/ql/test/extractor-tests/generated/Path/PathExpr.ql diff --git a/rust/ql/test/extractor-tests/generated/PathExpr/PathExpr_getAttr.expected b/rust/ql/test/extractor-tests/generated/Path/PathExpr_getAttr.expected similarity index 100% rename from rust/ql/test/extractor-tests/generated/PathExpr/PathExpr_getAttr.expected rename to rust/ql/test/extractor-tests/generated/Path/PathExpr_getAttr.expected diff --git a/rust/ql/test/extractor-tests/generated/PathExpr/PathExpr_getAttr.ql b/rust/ql/test/extractor-tests/generated/Path/PathExpr_getAttr.ql similarity index 100% rename from rust/ql/test/extractor-tests/generated/PathExpr/PathExpr_getAttr.ql rename to rust/ql/test/extractor-tests/generated/Path/PathExpr_getAttr.ql diff --git a/rust/ql/test/extractor-tests/generated/Path/PathExpr_getPath.expected b/rust/ql/test/extractor-tests/generated/Path/PathExpr_getPath.expected new file mode 100644 index 000000000000..31b98a6a8ecf --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Path/PathExpr_getPath.expected @@ -0,0 +1,6 @@ +| gen_path.rs:6:5:6:12 | ...::bar | gen_path.rs:6:5:6:12 | ...::bar | +| gen_path_expr.rs:5:13:5:20 | variable | gen_path_expr.rs:5:13:5:20 | variable | +| gen_path_expr.rs:6:13:6:20 | ...::bar | gen_path_expr.rs:6:13:6:20 | ...::bar | +| gen_path_expr.rs:7:13:7:20 | ...::foo | gen_path_expr.rs:7:13:7:20 | ...::foo | +| gen_path_expr.rs:8:13:8:35 | ...::foo | gen_path_expr.rs:8:13:8:35 | ...::foo | +| gen_path_pat.rs:5:11:5:11 | x | gen_path_pat.rs:5:11:5:11 | x | diff --git a/rust/ql/test/extractor-tests/generated/PathExpr/PathExpr_getPath.ql b/rust/ql/test/extractor-tests/generated/Path/PathExpr_getPath.ql similarity index 100% rename from rust/ql/test/extractor-tests/generated/PathExpr/PathExpr_getPath.ql rename to rust/ql/test/extractor-tests/generated/Path/PathExpr_getPath.ql diff --git a/rust/ql/test/extractor-tests/generated/Path/PathPat.expected b/rust/ql/test/extractor-tests/generated/Path/PathPat.expected new file mode 100644 index 000000000000..159f006eecb1 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Path/PathPat.expected @@ -0,0 +1 @@ +| gen_path_pat.rs:6:9:6:16 | ...::Bar | hasPath: | yes | diff --git a/rust/ql/test/extractor-tests/generated/PathPat/PathPat.ql b/rust/ql/test/extractor-tests/generated/Path/PathPat.ql similarity index 100% rename from rust/ql/test/extractor-tests/generated/PathPat/PathPat.ql rename to rust/ql/test/extractor-tests/generated/Path/PathPat.ql diff --git a/rust/ql/test/extractor-tests/generated/Path/PathPat_getPath.expected b/rust/ql/test/extractor-tests/generated/Path/PathPat_getPath.expected new file mode 100644 index 000000000000..3a601023f3f9 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Path/PathPat_getPath.expected @@ -0,0 +1 @@ +| gen_path_pat.rs:6:9:6:16 | ...::Bar | gen_path_pat.rs:6:9:6:16 | ...::Bar | diff --git a/rust/ql/test/extractor-tests/generated/PathPat/PathPat_getPath.ql b/rust/ql/test/extractor-tests/generated/Path/PathPat_getPath.ql similarity index 100% rename from rust/ql/test/extractor-tests/generated/PathPat/PathPat_getPath.ql rename to rust/ql/test/extractor-tests/generated/Path/PathPat_getPath.ql diff --git a/rust/ql/test/extractor-tests/generated/Path/PathSegment.expected b/rust/ql/test/extractor-tests/generated/Path/PathSegment.expected new file mode 100644 index 000000000000..8278d7685dc3 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Path/PathSegment.expected @@ -0,0 +1,26 @@ +| gen_path.rs:5:9:5:18 | some_crate | hasGenericArgList: | no | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | +| gen_path.rs:5:21:5:31 | some_module | hasGenericArgList: | no | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | +| gen_path.rs:5:34:5:42 | some_item | hasGenericArgList: | no | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | +| gen_path.rs:6:5:6:7 | foo | hasGenericArgList: | no | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | +| gen_path.rs:6:10:6:12 | bar | hasGenericArgList: | no | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | +| gen_path_expr.rs:5:13:5:20 | variable | hasGenericArgList: | no | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | +| gen_path_expr.rs:6:13:6:15 | foo | hasGenericArgList: | no | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | +| gen_path_expr.rs:6:18:6:20 | bar | hasGenericArgList: | no | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | +| gen_path_expr.rs:7:13:7:15 | <...> | hasGenericArgList: | no | hasNameRef: | no | hasParamList: | no | hasPathType: | yes | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | yes | +| gen_path_expr.rs:7:14:7:14 | T | hasGenericArgList: | no | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | +| gen_path_expr.rs:7:14:7:14 | T | hasGenericArgList: | no | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | +| gen_path_expr.rs:7:18:7:20 | foo | hasGenericArgList: | no | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | +| gen_path_expr.rs:8:13:8:30 | <...> | hasGenericArgList: | no | hasNameRef: | no | hasParamList: | no | hasPathType: | yes | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | yes | +| gen_path_expr.rs:8:14:8:20 | TypeRef | hasGenericArgList: | no | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | +| gen_path_expr.rs:8:14:8:20 | TypeRef | hasGenericArgList: | no | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | +| gen_path_expr.rs:8:33:8:35 | foo | hasGenericArgList: | no | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | +| gen_path_pat.rs:5:11:5:11 | x | hasGenericArgList: | no | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | +| gen_path_pat.rs:6:9:6:11 | Foo | hasGenericArgList: | no | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | +| gen_path_pat.rs:6:14:6:16 | Bar | hasGenericArgList: | no | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | +| gen_path_type.rs:5:14:5:16 | std | hasGenericArgList: | no | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | +| gen_path_type.rs:5:19:5:29 | collections | hasGenericArgList: | no | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | +| gen_path_type.rs:5:32:5:48 | HashMap::<...> | hasGenericArgList: | yes | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | +| gen_path_type.rs:5:40:5:42 | i32 | hasGenericArgList: | no | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | +| gen_path_type.rs:5:45:5:47 | i32 | hasGenericArgList: | no | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | +| gen_path_type.rs:6:14:6:14 | X | hasGenericArgList: | no | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | +| gen_path_type.rs:6:17:6:20 | Item | hasGenericArgList: | no | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | diff --git a/rust/ql/test/extractor-tests/generated/PathSegment/PathSegment.ql b/rust/ql/test/extractor-tests/generated/Path/PathSegment.ql similarity index 100% rename from rust/ql/test/extractor-tests/generated/PathSegment/PathSegment.ql rename to rust/ql/test/extractor-tests/generated/Path/PathSegment.ql diff --git a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getGenericArgList.expected b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getGenericArgList.expected new file mode 100644 index 000000000000..7487eb65c84c --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getGenericArgList.expected @@ -0,0 +1 @@ +| gen_path_type.rs:5:32:5:48 | HashMap::<...> | gen_path_type.rs:5:39:5:48 | <...> | diff --git a/rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getGenericArgList.ql b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getGenericArgList.ql similarity index 100% rename from rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getGenericArgList.ql rename to rust/ql/test/extractor-tests/generated/Path/PathSegment_getGenericArgList.ql diff --git a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getNameRef.expected b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getNameRef.expected new file mode 100644 index 000000000000..8778f6b4aefd --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getNameRef.expected @@ -0,0 +1,24 @@ +| gen_path.rs:5:9:5:18 | some_crate | gen_path.rs:5:9:5:18 | some_crate | +| gen_path.rs:5:21:5:31 | some_module | gen_path.rs:5:21:5:31 | some_module | +| gen_path.rs:5:34:5:42 | some_item | gen_path.rs:5:34:5:42 | some_item | +| gen_path.rs:6:5:6:7 | foo | gen_path.rs:6:5:6:7 | foo | +| gen_path.rs:6:10:6:12 | bar | gen_path.rs:6:10:6:12 | bar | +| gen_path_expr.rs:5:13:5:20 | variable | gen_path_expr.rs:5:13:5:20 | variable | +| gen_path_expr.rs:6:13:6:15 | foo | gen_path_expr.rs:6:13:6:15 | foo | +| gen_path_expr.rs:6:18:6:20 | bar | gen_path_expr.rs:6:18:6:20 | bar | +| gen_path_expr.rs:7:14:7:14 | T | gen_path_expr.rs:7:14:7:14 | T | +| gen_path_expr.rs:7:14:7:14 | T | gen_path_expr.rs:7:14:7:14 | T | +| gen_path_expr.rs:7:18:7:20 | foo | gen_path_expr.rs:7:18:7:20 | foo | +| gen_path_expr.rs:8:14:8:20 | TypeRef | gen_path_expr.rs:8:14:8:20 | TypeRef | +| gen_path_expr.rs:8:14:8:20 | TypeRef | gen_path_expr.rs:8:14:8:20 | TypeRef | +| gen_path_expr.rs:8:33:8:35 | foo | gen_path_expr.rs:8:33:8:35 | foo | +| gen_path_pat.rs:5:11:5:11 | x | gen_path_pat.rs:5:11:5:11 | x | +| gen_path_pat.rs:6:9:6:11 | Foo | gen_path_pat.rs:6:9:6:11 | Foo | +| gen_path_pat.rs:6:14:6:16 | Bar | gen_path_pat.rs:6:14:6:16 | Bar | +| gen_path_type.rs:5:14:5:16 | std | gen_path_type.rs:5:14:5:16 | std | +| gen_path_type.rs:5:19:5:29 | collections | gen_path_type.rs:5:19:5:29 | collections | +| gen_path_type.rs:5:32:5:48 | HashMap::<...> | gen_path_type.rs:5:32:5:38 | HashMap | +| gen_path_type.rs:5:40:5:42 | i32 | gen_path_type.rs:5:40:5:42 | i32 | +| gen_path_type.rs:5:45:5:47 | i32 | gen_path_type.rs:5:45:5:47 | i32 | +| gen_path_type.rs:6:14:6:14 | X | gen_path_type.rs:6:14:6:14 | X | +| gen_path_type.rs:6:17:6:20 | Item | gen_path_type.rs:6:17:6:20 | Item | diff --git a/rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getNameRef.ql b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getNameRef.ql similarity index 100% rename from rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getNameRef.ql rename to rust/ql/test/extractor-tests/generated/Path/PathSegment_getNameRef.ql diff --git a/rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getParamList.expected b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getParamList.expected similarity index 100% rename from rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getParamList.expected rename to rust/ql/test/extractor-tests/generated/Path/PathSegment_getParamList.expected diff --git a/rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getParamList.ql b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getParamList.ql similarity index 100% rename from rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getParamList.ql rename to rust/ql/test/extractor-tests/generated/Path/PathSegment_getParamList.ql diff --git a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getPathType.expected b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getPathType.expected new file mode 100644 index 000000000000..db25db90b83e --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getPathType.expected @@ -0,0 +1,2 @@ +| gen_path_expr.rs:7:13:7:15 | <...> | gen_path_expr.rs:7:14:7:14 | T | +| gen_path_expr.rs:8:13:8:30 | <...> | gen_path_expr.rs:8:14:8:20 | TypeRef | diff --git a/rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getPathType.ql b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getPathType.ql similarity index 100% rename from rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getPathType.ql rename to rust/ql/test/extractor-tests/generated/Path/PathSegment_getPathType.ql diff --git a/rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getRetType.expected b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getRetType.expected similarity index 100% rename from rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getRetType.expected rename to rust/ql/test/extractor-tests/generated/Path/PathSegment_getRetType.expected diff --git a/rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getRetType.ql b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getRetType.ql similarity index 100% rename from rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getRetType.ql rename to rust/ql/test/extractor-tests/generated/Path/PathSegment_getRetType.ql diff --git a/rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getReturnTypeSyntax.expected b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getReturnTypeSyntax.expected similarity index 100% rename from rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getReturnTypeSyntax.expected rename to rust/ql/test/extractor-tests/generated/Path/PathSegment_getReturnTypeSyntax.expected diff --git a/rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getReturnTypeSyntax.ql b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getReturnTypeSyntax.ql similarity index 100% rename from rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getReturnTypeSyntax.ql rename to rust/ql/test/extractor-tests/generated/Path/PathSegment_getReturnTypeSyntax.ql diff --git a/rust/ql/test/extractor-tests/generated/Path/PathSegment_getTy.expected b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getTy.expected new file mode 100644 index 000000000000..db25db90b83e --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getTy.expected @@ -0,0 +1,2 @@ +| gen_path_expr.rs:7:13:7:15 | <...> | gen_path_expr.rs:7:14:7:14 | T | +| gen_path_expr.rs:8:13:8:30 | <...> | gen_path_expr.rs:8:14:8:20 | TypeRef | diff --git a/rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getTy.ql b/rust/ql/test/extractor-tests/generated/Path/PathSegment_getTy.ql similarity index 100% rename from rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getTy.ql rename to rust/ql/test/extractor-tests/generated/Path/PathSegment_getTy.ql diff --git a/rust/ql/test/extractor-tests/generated/Path/PathType.expected b/rust/ql/test/extractor-tests/generated/Path/PathType.expected new file mode 100644 index 000000000000..7d876dc4fa8d --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Path/PathType.expected @@ -0,0 +1,8 @@ +| gen_path_expr.rs:7:14:7:14 | T | hasPath: | yes | +| gen_path_expr.rs:7:14:7:14 | T | hasPath: | yes | +| gen_path_expr.rs:8:14:8:20 | TypeRef | hasPath: | yes | +| gen_path_expr.rs:8:14:8:20 | TypeRef | hasPath: | yes | +| gen_path_type.rs:5:14:5:48 | ...::HashMap::<...> | hasPath: | yes | +| gen_path_type.rs:5:40:5:42 | i32 | hasPath: | yes | +| gen_path_type.rs:5:45:5:47 | i32 | hasPath: | yes | +| gen_path_type.rs:6:14:6:20 | ...::Item | hasPath: | yes | diff --git a/rust/ql/test/extractor-tests/generated/PathType/PathType.ql b/rust/ql/test/extractor-tests/generated/Path/PathType.ql similarity index 100% rename from rust/ql/test/extractor-tests/generated/PathType/PathType.ql rename to rust/ql/test/extractor-tests/generated/Path/PathType.ql diff --git a/rust/ql/test/extractor-tests/generated/Path/PathType_getPath.expected b/rust/ql/test/extractor-tests/generated/Path/PathType_getPath.expected new file mode 100644 index 000000000000..879ed298b93f --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Path/PathType_getPath.expected @@ -0,0 +1,8 @@ +| gen_path_expr.rs:7:14:7:14 | T | gen_path_expr.rs:7:14:7:14 | T | +| gen_path_expr.rs:7:14:7:14 | T | gen_path_expr.rs:7:14:7:14 | T | +| gen_path_expr.rs:8:14:8:20 | TypeRef | gen_path_expr.rs:8:14:8:20 | TypeRef | +| gen_path_expr.rs:8:14:8:20 | TypeRef | gen_path_expr.rs:8:14:8:20 | TypeRef | +| gen_path_type.rs:5:14:5:48 | ...::HashMap::<...> | gen_path_type.rs:5:14:5:48 | ...::HashMap::<...> | +| gen_path_type.rs:5:40:5:42 | i32 | gen_path_type.rs:5:40:5:42 | i32 | +| gen_path_type.rs:5:45:5:47 | i32 | gen_path_type.rs:5:45:5:47 | i32 | +| gen_path_type.rs:6:14:6:20 | ...::Item | gen_path_type.rs:6:14:6:20 | ...::Item | diff --git a/rust/ql/test/extractor-tests/generated/PathType/PathType_getPath.ql b/rust/ql/test/extractor-tests/generated/Path/PathType_getPath.ql similarity index 100% rename from rust/ql/test/extractor-tests/generated/PathType/PathType_getPath.ql rename to rust/ql/test/extractor-tests/generated/Path/PathType_getPath.ql diff --git a/rust/ql/test/extractor-tests/generated/Path/Path_getPart.expected b/rust/ql/test/extractor-tests/generated/Path/Path_getPart.expected index 0e05956ea897..99ed98b3f521 100644 --- a/rust/ql/test/extractor-tests/generated/Path/Path_getPart.expected +++ b/rust/ql/test/extractor-tests/generated/Path/Path_getPart.expected @@ -1,2 +1,26 @@ -| gen_path.rs:5:5:5:7 | foo | gen_path.rs:5:5:5:7 | foo | -| gen_path.rs:5:5:5:12 | foo::bar | gen_path.rs:5:10:5:12 | bar | +| gen_path.rs:5:9:5:18 | some_crate | gen_path.rs:5:9:5:18 | some_crate | +| gen_path.rs:5:9:5:31 | ...::some_module | gen_path.rs:5:21:5:31 | some_module | +| gen_path.rs:5:9:5:42 | ...::some_item | gen_path.rs:5:34:5:42 | some_item | +| gen_path.rs:6:5:6:7 | foo | gen_path.rs:6:5:6:7 | foo | +| gen_path.rs:6:5:6:12 | ...::bar | gen_path.rs:6:10:6:12 | bar | +| gen_path_expr.rs:5:13:5:20 | variable | gen_path_expr.rs:5:13:5:20 | variable | +| gen_path_expr.rs:6:13:6:15 | foo | gen_path_expr.rs:6:13:6:15 | foo | +| gen_path_expr.rs:6:13:6:20 | ...::bar | gen_path_expr.rs:6:18:6:20 | bar | +| gen_path_expr.rs:7:13:7:15 | <...> | gen_path_expr.rs:7:13:7:15 | <...> | +| gen_path_expr.rs:7:13:7:20 | ...::foo | gen_path_expr.rs:7:18:7:20 | foo | +| gen_path_expr.rs:7:14:7:14 | T | gen_path_expr.rs:7:14:7:14 | T | +| gen_path_expr.rs:7:14:7:14 | T | gen_path_expr.rs:7:14:7:14 | T | +| gen_path_expr.rs:8:13:8:30 | <...> | gen_path_expr.rs:8:13:8:30 | <...> | +| gen_path_expr.rs:8:13:8:35 | ...::foo | gen_path_expr.rs:8:33:8:35 | foo | +| gen_path_expr.rs:8:14:8:20 | TypeRef | gen_path_expr.rs:8:14:8:20 | TypeRef | +| gen_path_expr.rs:8:14:8:20 | TypeRef | gen_path_expr.rs:8:14:8:20 | TypeRef | +| gen_path_pat.rs:5:11:5:11 | x | gen_path_pat.rs:5:11:5:11 | x | +| gen_path_pat.rs:6:9:6:11 | Foo | gen_path_pat.rs:6:9:6:11 | Foo | +| gen_path_pat.rs:6:9:6:16 | ...::Bar | gen_path_pat.rs:6:14:6:16 | Bar | +| gen_path_type.rs:5:14:5:16 | std | gen_path_type.rs:5:14:5:16 | std | +| gen_path_type.rs:5:14:5:29 | ...::collections | gen_path_type.rs:5:19:5:29 | collections | +| gen_path_type.rs:5:14:5:48 | ...::HashMap::<...> | gen_path_type.rs:5:32:5:48 | HashMap::<...> | +| gen_path_type.rs:5:40:5:42 | i32 | gen_path_type.rs:5:40:5:42 | i32 | +| gen_path_type.rs:5:45:5:47 | i32 | gen_path_type.rs:5:45:5:47 | i32 | +| gen_path_type.rs:6:14:6:14 | X | gen_path_type.rs:6:14:6:14 | X | +| gen_path_type.rs:6:14:6:20 | ...::Item | gen_path_type.rs:6:17:6:20 | Item | diff --git a/rust/ql/test/extractor-tests/generated/Path/Path_getQualifier.expected b/rust/ql/test/extractor-tests/generated/Path/Path_getQualifier.expected index 44aa2ca5a006..162efd4b1870 100644 --- a/rust/ql/test/extractor-tests/generated/Path/Path_getQualifier.expected +++ b/rust/ql/test/extractor-tests/generated/Path/Path_getQualifier.expected @@ -1 +1,10 @@ -| gen_path.rs:5:5:5:12 | foo::bar | gen_path.rs:5:5:5:7 | foo | +| gen_path.rs:5:9:5:31 | ...::some_module | gen_path.rs:5:9:5:18 | some_crate | +| gen_path.rs:5:9:5:42 | ...::some_item | gen_path.rs:5:9:5:31 | ...::some_module | +| gen_path.rs:6:5:6:12 | ...::bar | gen_path.rs:6:5:6:7 | foo | +| gen_path_expr.rs:6:13:6:20 | ...::bar | gen_path_expr.rs:6:13:6:15 | foo | +| gen_path_expr.rs:7:13:7:20 | ...::foo | gen_path_expr.rs:7:13:7:15 | <...> | +| gen_path_expr.rs:8:13:8:35 | ...::foo | gen_path_expr.rs:8:13:8:30 | <...> | +| gen_path_pat.rs:6:9:6:16 | ...::Bar | gen_path_pat.rs:6:9:6:11 | Foo | +| gen_path_type.rs:5:14:5:29 | ...::collections | gen_path_type.rs:5:14:5:16 | std | +| gen_path_type.rs:5:14:5:48 | ...::HashMap::<...> | gen_path_type.rs:5:14:5:29 | ...::collections | +| gen_path_type.rs:6:14:6:20 | ...::Item | gen_path_type.rs:6:14:6:14 | X | diff --git a/rust/ql/test/extractor-tests/generated/Path/Path_getResolvedCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/Path/Path_getResolvedCrateOrigin.expected index e69de29bb2d1..df80e22f7446 100644 --- a/rust/ql/test/extractor-tests/generated/Path/Path_getResolvedCrateOrigin.expected +++ b/rust/ql/test/extractor-tests/generated/Path/Path_getResolvedCrateOrigin.expected @@ -0,0 +1,2 @@ +| gen_path_type.rs:5:14:5:29 | ...::collections | lang:std | +| gen_path_type.rs:5:14:5:48 | ...::HashMap::<...> | lang:std | diff --git a/rust/ql/test/extractor-tests/generated/Path/Path_getResolvedPath.expected b/rust/ql/test/extractor-tests/generated/Path/Path_getResolvedPath.expected index e69de29bb2d1..7d1c698b0ce5 100644 --- a/rust/ql/test/extractor-tests/generated/Path/Path_getResolvedPath.expected +++ b/rust/ql/test/extractor-tests/generated/Path/Path_getResolvedPath.expected @@ -0,0 +1,2 @@ +| gen_path_type.rs:5:14:5:29 | ...::collections | crate::collections | +| gen_path_type.rs:5:14:5:48 | ...::HashMap::<...> | crate::collections::hash::map::HashMap | diff --git a/rust/ql/test/extractor-tests/generated/Path/gen_path.rs b/rust/ql/test/extractor-tests/generated/Path/gen_path.rs index 3b3f054875a9..de58e6978afe 100644 --- a/rust/ql/test/extractor-tests/generated/Path/gen_path.rs +++ b/rust/ql/test/extractor-tests/generated/Path/gen_path.rs @@ -2,5 +2,6 @@ fn test_path() -> () { // A path. For example: + use some_crate::some_module::some_item; foo::bar; } diff --git a/rust/ql/test/extractor-tests/generated/PathExpr/gen_path_expr.rs b/rust/ql/test/extractor-tests/generated/Path/gen_path_expr.rs similarity index 100% rename from rust/ql/test/extractor-tests/generated/PathExpr/gen_path_expr.rs rename to rust/ql/test/extractor-tests/generated/Path/gen_path_expr.rs diff --git a/rust/ql/test/extractor-tests/generated/PathPat/gen_path_pat.rs b/rust/ql/test/extractor-tests/generated/Path/gen_path_pat.rs similarity index 100% rename from rust/ql/test/extractor-tests/generated/PathPat/gen_path_pat.rs rename to rust/ql/test/extractor-tests/generated/Path/gen_path_pat.rs diff --git a/rust/ql/test/extractor-tests/generated/Path/gen_path_type.rs b/rust/ql/test/extractor-tests/generated/Path/gen_path_type.rs new file mode 100644 index 000000000000..62797d756779 --- /dev/null +++ b/rust/ql/test/extractor-tests/generated/Path/gen_path_type.rs @@ -0,0 +1,7 @@ +// generated by codegen, do not edit + +fn test_path_type() -> () { + // A type referring to a path. For example: + type X = std::collections::HashMap; + type Y = X::Item; +} diff --git a/rust/ql/test/extractor-tests/generated/PathExpr/CONSISTENCY/DataFlowConsistency.expected b/rust/ql/test/extractor-tests/generated/PathExpr/CONSISTENCY/DataFlowConsistency.expected deleted file mode 100644 index c54360f7361b..000000000000 --- a/rust/ql/test/extractor-tests/generated/PathExpr/CONSISTENCY/DataFlowConsistency.expected +++ /dev/null @@ -1,3 +0,0 @@ -uniqueNodeToString -| gen_path_expr.rs:7:13:7:20 | (no string representation) | Node should have one toString but has 0. | -| gen_path_expr.rs:8:13:8:35 | (no string representation) | Node should have one toString but has 0. | diff --git a/rust/ql/test/extractor-tests/generated/PathExpr/PathExpr.expected b/rust/ql/test/extractor-tests/generated/PathExpr/PathExpr.expected deleted file mode 100644 index a676396a2f9b..000000000000 --- a/rust/ql/test/extractor-tests/generated/PathExpr/PathExpr.expected +++ /dev/null @@ -1,4 +0,0 @@ -| gen_path_expr.rs:5:13:5:20 | variable | getNumberOfAttrs: | 0 | hasPath: | yes | -| gen_path_expr.rs:6:13:6:20 | foo::bar | getNumberOfAttrs: | 0 | hasPath: | yes | -| gen_path_expr.rs:7:13:7:20 | (no string representation) | getNumberOfAttrs: | 0 | hasPath: | yes | -| gen_path_expr.rs:8:13:8:35 | (no string representation) | getNumberOfAttrs: | 0 | hasPath: | yes | diff --git a/rust/ql/test/extractor-tests/generated/PathExpr/PathExpr_getPath.expected b/rust/ql/test/extractor-tests/generated/PathExpr/PathExpr_getPath.expected deleted file mode 100644 index a5765b5be60b..000000000000 --- a/rust/ql/test/extractor-tests/generated/PathExpr/PathExpr_getPath.expected +++ /dev/null @@ -1,4 +0,0 @@ -| gen_path_expr.rs:5:13:5:20 | variable | gen_path_expr.rs:5:13:5:20 | variable | -| gen_path_expr.rs:6:13:6:20 | foo::bar | gen_path_expr.rs:6:13:6:20 | foo::bar | -| gen_path_expr.rs:7:13:7:20 | (no string representation) | gen_path_expr.rs:7:13:7:20 | (no string representation) | -| gen_path_expr.rs:8:13:8:35 | (no string representation) | gen_path_expr.rs:8:13:8:35 | (no string representation) | diff --git a/rust/ql/test/extractor-tests/generated/PathPat/PathPat.expected b/rust/ql/test/extractor-tests/generated/PathPat/PathPat.expected deleted file mode 100644 index 54845a7565c4..000000000000 --- a/rust/ql/test/extractor-tests/generated/PathPat/PathPat.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_path_pat.rs:6:9:6:16 | PathPat | hasPath: | yes | diff --git a/rust/ql/test/extractor-tests/generated/PathPat/PathPat_getPath.expected b/rust/ql/test/extractor-tests/generated/PathPat/PathPat_getPath.expected deleted file mode 100644 index d48ba6549dba..000000000000 --- a/rust/ql/test/extractor-tests/generated/PathPat/PathPat_getPath.expected +++ /dev/null @@ -1 +0,0 @@ -| gen_path_pat.rs:6:9:6:16 | PathPat | gen_path_pat.rs:6:9:6:16 | Foo::Bar | diff --git a/rust/ql/test/extractor-tests/generated/PathSegment/PathSegment.expected b/rust/ql/test/extractor-tests/generated/PathSegment/PathSegment.expected deleted file mode 100644 index 32042fc6a59d..000000000000 --- a/rust/ql/test/extractor-tests/generated/PathSegment/PathSegment.expected +++ /dev/null @@ -1,4 +0,0 @@ -| gen_path_segment.rs:5:5:5:8 | todo | hasGenericArgList: | no | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | -| gen_path_segment.rs:5:5:5:11 | $crate | hasGenericArgList: | no | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | -| gen_path_segment.rs:5:5:5:11 | panic | hasGenericArgList: | no | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | -| gen_path_segment.rs:5:5:5:11 | panicking | hasGenericArgList: | no | hasNameRef: | yes | hasParamList: | no | hasPathType: | no | hasRetType: | no | hasReturnTypeSyntax: | no | hasTy: | no | diff --git a/rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getGenericArgList.expected b/rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getGenericArgList.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getNameRef.expected b/rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getNameRef.expected deleted file mode 100644 index 28346240d296..000000000000 --- a/rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getNameRef.expected +++ /dev/null @@ -1,4 +0,0 @@ -| gen_path_segment.rs:5:5:5:8 | todo | gen_path_segment.rs:5:5:5:8 | todo | -| gen_path_segment.rs:5:5:5:11 | $crate | gen_path_segment.rs:5:5:5:11 | $crate | -| gen_path_segment.rs:5:5:5:11 | panic | gen_path_segment.rs:5:5:5:11 | panic | -| gen_path_segment.rs:5:5:5:11 | panicking | gen_path_segment.rs:5:5:5:11 | panicking | diff --git a/rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getPathType.expected b/rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getPathType.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getTy.expected b/rust/ql/test/extractor-tests/generated/PathSegment/PathSegment_getTy.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/PathSegment/gen_path_segment.rs b/rust/ql/test/extractor-tests/generated/PathSegment/gen_path_segment.rs deleted file mode 100644 index 0ab008b6a685..000000000000 --- a/rust/ql/test/extractor-tests/generated/PathSegment/gen_path_segment.rs +++ /dev/null @@ -1,6 +0,0 @@ -// generated by codegen, do not edit - -fn test_path_segment() -> () { - // A PathSegment. For example: - todo!() -} diff --git a/rust/ql/test/extractor-tests/generated/PathType/PathType.expected b/rust/ql/test/extractor-tests/generated/PathType/PathType.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/PathType/PathType_getPath.expected b/rust/ql/test/extractor-tests/generated/PathType/PathType_getPath.expected deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/rust/ql/test/extractor-tests/generated/PathType/gen_path_type.rs b/rust/ql/test/extractor-tests/generated/PathType/gen_path_type.rs deleted file mode 100644 index e7666e2128a6..000000000000 --- a/rust/ql/test/extractor-tests/generated/PathType/gen_path_type.rs +++ /dev/null @@ -1,6 +0,0 @@ -// generated by codegen, do not edit - -fn test_path_type() -> () { - // A PathType. For example: - todo!() -} diff --git a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr.expected b/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr.expected index 6f222c18f03b..7d8aeff6dfa9 100644 --- a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr.expected +++ b/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr.expected @@ -1,6 +1,6 @@ -| gen_range_expr.rs:5:13:5:18 | RangeExpr | getNumberOfAttrs: | 0 | hasEnd: | yes | hasOperatorName: | yes | hasStart: | yes | -| gen_range_expr.rs:6:13:6:17 | RangeExpr | getNumberOfAttrs: | 0 | hasEnd: | yes | hasOperatorName: | yes | hasStart: | yes | -| gen_range_expr.rs:7:13:7:16 | RangeExpr | getNumberOfAttrs: | 0 | hasEnd: | no | hasOperatorName: | yes | hasStart: | yes | -| gen_range_expr.rs:8:13:8:16 | RangeExpr | getNumberOfAttrs: | 0 | hasEnd: | yes | hasOperatorName: | yes | hasStart: | no | -| gen_range_expr.rs:9:13:9:17 | RangeExpr | getNumberOfAttrs: | 0 | hasEnd: | yes | hasOperatorName: | yes | hasStart: | no | -| gen_range_expr.rs:10:13:10:14 | RangeExpr | getNumberOfAttrs: | 0 | hasEnd: | no | hasOperatorName: | yes | hasStart: | no | +| gen_range_expr.rs:5:13:5:18 | 1..=10 | getNumberOfAttrs: | 0 | hasEnd: | yes | hasOperatorName: | yes | hasStart: | yes | +| gen_range_expr.rs:6:13:6:17 | 1..10 | getNumberOfAttrs: | 0 | hasEnd: | yes | hasOperatorName: | yes | hasStart: | yes | +| gen_range_expr.rs:7:13:7:16 | 10.. | getNumberOfAttrs: | 0 | hasEnd: | no | hasOperatorName: | yes | hasStart: | yes | +| gen_range_expr.rs:8:13:8:16 | ..10 | getNumberOfAttrs: | 0 | hasEnd: | yes | hasOperatorName: | yes | hasStart: | no | +| gen_range_expr.rs:9:13:9:17 | ..=10 | getNumberOfAttrs: | 0 | hasEnd: | yes | hasOperatorName: | yes | hasStart: | no | +| gen_range_expr.rs:10:13:10:14 | .. | getNumberOfAttrs: | 0 | hasEnd: | no | hasOperatorName: | yes | hasStart: | no | diff --git a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getEnd.expected b/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getEnd.expected index 101ae46138a4..46f5dba778c5 100644 --- a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getEnd.expected +++ b/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getEnd.expected @@ -1,4 +1,4 @@ -| gen_range_expr.rs:5:13:5:18 | RangeExpr | gen_range_expr.rs:5:17:5:18 | 10 | -| gen_range_expr.rs:6:13:6:17 | RangeExpr | gen_range_expr.rs:6:16:6:17 | 10 | -| gen_range_expr.rs:8:13:8:16 | RangeExpr | gen_range_expr.rs:8:15:8:16 | 10 | -| gen_range_expr.rs:9:13:9:17 | RangeExpr | gen_range_expr.rs:9:16:9:17 | 10 | +| gen_range_expr.rs:5:13:5:18 | 1..=10 | gen_range_expr.rs:5:17:5:18 | 10 | +| gen_range_expr.rs:6:13:6:17 | 1..10 | gen_range_expr.rs:6:16:6:17 | 10 | +| gen_range_expr.rs:8:13:8:16 | ..10 | gen_range_expr.rs:8:15:8:16 | 10 | +| gen_range_expr.rs:9:13:9:17 | ..=10 | gen_range_expr.rs:9:16:9:17 | 10 | diff --git a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getOperatorName.expected b/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getOperatorName.expected index b0d778eb7bb2..ee9172ac1ced 100644 --- a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getOperatorName.expected +++ b/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getOperatorName.expected @@ -1,6 +1,6 @@ -| gen_range_expr.rs:5:13:5:18 | RangeExpr | ..= | -| gen_range_expr.rs:6:13:6:17 | RangeExpr | .. | -| gen_range_expr.rs:7:13:7:16 | RangeExpr | .. | -| gen_range_expr.rs:8:13:8:16 | RangeExpr | .. | -| gen_range_expr.rs:9:13:9:17 | RangeExpr | ..= | -| gen_range_expr.rs:10:13:10:14 | RangeExpr | .. | +| gen_range_expr.rs:5:13:5:18 | 1..=10 | ..= | +| gen_range_expr.rs:6:13:6:17 | 1..10 | .. | +| gen_range_expr.rs:7:13:7:16 | 10.. | .. | +| gen_range_expr.rs:8:13:8:16 | ..10 | .. | +| gen_range_expr.rs:9:13:9:17 | ..=10 | ..= | +| gen_range_expr.rs:10:13:10:14 | .. | .. | diff --git a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getStart.expected b/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getStart.expected index 79b34397efe4..7f58ee5299fb 100644 --- a/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getStart.expected +++ b/rust/ql/test/extractor-tests/generated/RangeExpr/RangeExpr_getStart.expected @@ -1,3 +1,3 @@ -| gen_range_expr.rs:5:13:5:18 | RangeExpr | gen_range_expr.rs:5:13:5:13 | 1 | -| gen_range_expr.rs:6:13:6:17 | RangeExpr | gen_range_expr.rs:6:13:6:13 | 1 | -| gen_range_expr.rs:7:13:7:16 | RangeExpr | gen_range_expr.rs:7:13:7:14 | 10 | +| gen_range_expr.rs:5:13:5:18 | 1..=10 | gen_range_expr.rs:5:13:5:13 | 1 | +| gen_range_expr.rs:6:13:6:17 | 1..10 | gen_range_expr.rs:6:13:6:13 | 1 | +| gen_range_expr.rs:7:13:7:16 | 10.. | gen_range_expr.rs:7:13:7:14 | 10 | diff --git a/rust/ql/test/extractor-tests/generated/RangePat/RangePat_getEnd.expected b/rust/ql/test/extractor-tests/generated/RangePat/RangePat_getEnd.expected index 591b8d9093e1..38ded3fb940d 100644 --- a/rust/ql/test/extractor-tests/generated/RangePat/RangePat_getEnd.expected +++ b/rust/ql/test/extractor-tests/generated/RangePat/RangePat_getEnd.expected @@ -1,2 +1,2 @@ -| gen_range_pat.rs:6:9:6:12 | RangePat | gen_range_pat.rs:6:11:6:12 | LiteralPat | -| gen_range_pat.rs:7:9:7:15 | RangePat | gen_range_pat.rs:7:14:7:15 | LiteralPat | +| gen_range_pat.rs:6:9:6:12 | RangePat | gen_range_pat.rs:6:11:6:12 | 15 | +| gen_range_pat.rs:7:9:7:15 | RangePat | gen_range_pat.rs:7:14:7:15 | 25 | diff --git a/rust/ql/test/extractor-tests/generated/RangePat/RangePat_getStart.expected b/rust/ql/test/extractor-tests/generated/RangePat/RangePat_getStart.expected index ef6a8ea21216..ac6eadaf08c0 100644 --- a/rust/ql/test/extractor-tests/generated/RangePat/RangePat_getStart.expected +++ b/rust/ql/test/extractor-tests/generated/RangePat/RangePat_getStart.expected @@ -1,2 +1,2 @@ -| gen_range_pat.rs:7:9:7:15 | RangePat | gen_range_pat.rs:7:9:7:10 | LiteralPat | -| gen_range_pat.rs:8:9:8:12 | RangePat | gen_range_pat.rs:8:9:8:10 | LiteralPat | +| gen_range_pat.rs:7:9:7:15 | RangePat | gen_range_pat.rs:7:9:7:10 | 16 | +| gen_range_pat.rs:8:9:8:12 | RangePat | gen_range_pat.rs:8:9:8:10 | 26 | diff --git a/rust/ql/test/extractor-tests/generated/RecordExpr/RecordExpr.expected b/rust/ql/test/extractor-tests/generated/RecordExpr/RecordExpr.expected index d30c4ef70e5d..445b906bf88b 100644 --- a/rust/ql/test/extractor-tests/generated/RecordExpr/RecordExpr.expected +++ b/rust/ql/test/extractor-tests/generated/RecordExpr/RecordExpr.expected @@ -1,4 +1,4 @@ -| gen_record_expr.rs:5:17:5:34 | RecordExpr | hasPath: | yes | hasRecordExprFieldList: | yes | -| gen_record_expr.rs:6:18:6:38 | RecordExpr | hasPath: | yes | hasRecordExprFieldList: | yes | -| gen_record_expr.rs:7:5:7:22 | RecordExpr | hasPath: | yes | hasRecordExprFieldList: | yes | -| gen_record_expr.rs:8:5:8:14 | RecordExpr | hasPath: | yes | hasRecordExprFieldList: | yes | +| gen_record_expr.rs:5:17:5:34 | Foo {...} | hasPath: | yes | hasRecordExprFieldList: | yes | +| gen_record_expr.rs:6:18:6:38 | Foo {...} | hasPath: | yes | hasRecordExprFieldList: | yes | +| gen_record_expr.rs:7:5:7:22 | Foo {...} | hasPath: | yes | hasRecordExprFieldList: | yes | +| gen_record_expr.rs:8:5:8:14 | Foo {...} | hasPath: | yes | hasRecordExprFieldList: | yes | diff --git a/rust/ql/test/extractor-tests/generated/RecordExpr/RecordExpr_getPath.expected b/rust/ql/test/extractor-tests/generated/RecordExpr/RecordExpr_getPath.expected index 91d4f5cb0b56..5aad8aad60c9 100644 --- a/rust/ql/test/extractor-tests/generated/RecordExpr/RecordExpr_getPath.expected +++ b/rust/ql/test/extractor-tests/generated/RecordExpr/RecordExpr_getPath.expected @@ -1,4 +1,4 @@ -| gen_record_expr.rs:5:17:5:34 | RecordExpr | gen_record_expr.rs:5:17:5:19 | Foo | -| gen_record_expr.rs:6:18:6:38 | RecordExpr | gen_record_expr.rs:6:18:6:20 | Foo | -| gen_record_expr.rs:7:5:7:22 | RecordExpr | gen_record_expr.rs:7:5:7:7 | Foo | -| gen_record_expr.rs:8:5:8:14 | RecordExpr | gen_record_expr.rs:8:5:8:7 | Foo | +| gen_record_expr.rs:5:17:5:34 | Foo {...} | gen_record_expr.rs:5:17:5:19 | Foo | +| gen_record_expr.rs:6:18:6:38 | Foo {...} | gen_record_expr.rs:6:18:6:20 | Foo | +| gen_record_expr.rs:7:5:7:22 | Foo {...} | gen_record_expr.rs:7:5:7:7 | Foo | +| gen_record_expr.rs:8:5:8:14 | Foo {...} | gen_record_expr.rs:8:5:8:7 | Foo | diff --git a/rust/ql/test/extractor-tests/generated/RecordExpr/RecordExpr_getRecordExprFieldList.expected b/rust/ql/test/extractor-tests/generated/RecordExpr/RecordExpr_getRecordExprFieldList.expected index d00bf3935d3e..79d18cac3b0d 100644 --- a/rust/ql/test/extractor-tests/generated/RecordExpr/RecordExpr_getRecordExprFieldList.expected +++ b/rust/ql/test/extractor-tests/generated/RecordExpr/RecordExpr_getRecordExprFieldList.expected @@ -1,4 +1,4 @@ -| gen_record_expr.rs:5:17:5:34 | RecordExpr | gen_record_expr.rs:5:21:5:34 | RecordExprFieldList | -| gen_record_expr.rs:6:18:6:38 | RecordExpr | gen_record_expr.rs:6:22:6:38 | RecordExprFieldList | -| gen_record_expr.rs:7:5:7:22 | RecordExpr | gen_record_expr.rs:7:9:7:22 | RecordExprFieldList | -| gen_record_expr.rs:8:5:8:14 | RecordExpr | gen_record_expr.rs:8:9:8:14 | RecordExprFieldList | +| gen_record_expr.rs:5:17:5:34 | Foo {...} | gen_record_expr.rs:5:21:5:34 | RecordExprFieldList | +| gen_record_expr.rs:6:18:6:38 | Foo {...} | gen_record_expr.rs:6:22:6:38 | RecordExprFieldList | +| gen_record_expr.rs:7:5:7:22 | Foo {...} | gen_record_expr.rs:7:9:7:22 | RecordExprFieldList | +| gen_record_expr.rs:8:5:8:14 | Foo {...} | gen_record_expr.rs:8:9:8:14 | RecordExprFieldList | diff --git a/rust/ql/test/extractor-tests/generated/RecordExprField/RecordExprField.expected b/rust/ql/test/extractor-tests/generated/RecordExprField/RecordExprField.expected index 79ed38759180..46e7ce811bb7 100644 --- a/rust/ql/test/extractor-tests/generated/RecordExprField/RecordExprField.expected +++ b/rust/ql/test/extractor-tests/generated/RecordExprField/RecordExprField.expected @@ -1,2 +1,2 @@ -| gen_record_expr_field.rs:5:11:5:14 | RecordExprField | getNumberOfAttrs: | 0 | hasExpr: | yes | hasNameRef: | yes | -| gen_record_expr_field.rs:5:17:5:20 | RecordExprField | getNumberOfAttrs: | 0 | hasExpr: | yes | hasNameRef: | yes | +| gen_record_expr_field.rs:5:11:5:14 | a: 1 | getNumberOfAttrs: | 0 | hasExpr: | yes | hasNameRef: | yes | +| gen_record_expr_field.rs:5:17:5:20 | b: 2 | getNumberOfAttrs: | 0 | hasExpr: | yes | hasNameRef: | yes | diff --git a/rust/ql/test/extractor-tests/generated/RecordExprField/RecordExprField_getExpr.expected b/rust/ql/test/extractor-tests/generated/RecordExprField/RecordExprField_getExpr.expected index ec096d00a314..cfb892424494 100644 --- a/rust/ql/test/extractor-tests/generated/RecordExprField/RecordExprField_getExpr.expected +++ b/rust/ql/test/extractor-tests/generated/RecordExprField/RecordExprField_getExpr.expected @@ -1,2 +1,2 @@ -| gen_record_expr_field.rs:5:11:5:14 | RecordExprField | gen_record_expr_field.rs:5:14:5:14 | 1 | -| gen_record_expr_field.rs:5:17:5:20 | RecordExprField | gen_record_expr_field.rs:5:20:5:20 | 2 | +| gen_record_expr_field.rs:5:11:5:14 | a: 1 | gen_record_expr_field.rs:5:14:5:14 | 1 | +| gen_record_expr_field.rs:5:17:5:20 | b: 2 | gen_record_expr_field.rs:5:20:5:20 | 2 | diff --git a/rust/ql/test/extractor-tests/generated/RecordExprField/RecordExprField_getNameRef.expected b/rust/ql/test/extractor-tests/generated/RecordExprField/RecordExprField_getNameRef.expected index 081e3ccac566..d0a3f82cd9d2 100644 --- a/rust/ql/test/extractor-tests/generated/RecordExprField/RecordExprField_getNameRef.expected +++ b/rust/ql/test/extractor-tests/generated/RecordExprField/RecordExprField_getNameRef.expected @@ -1,2 +1,2 @@ -| gen_record_expr_field.rs:5:11:5:14 | RecordExprField | gen_record_expr_field.rs:5:11:5:11 | a | -| gen_record_expr_field.rs:5:17:5:20 | RecordExprField | gen_record_expr_field.rs:5:17:5:17 | b | +| gen_record_expr_field.rs:5:11:5:14 | a: 1 | gen_record_expr_field.rs:5:11:5:11 | a | +| gen_record_expr_field.rs:5:17:5:20 | b: 2 | gen_record_expr_field.rs:5:17:5:17 | b | diff --git a/rust/ql/test/extractor-tests/generated/RecordPat/RecordPat.expected b/rust/ql/test/extractor-tests/generated/RecordPat/RecordPat.expected index 62cd3eb3c37d..8d7f96229ad7 100644 --- a/rust/ql/test/extractor-tests/generated/RecordPat/RecordPat.expected +++ b/rust/ql/test/extractor-tests/generated/RecordPat/RecordPat.expected @@ -1,2 +1,2 @@ -| gen_record_pat.rs:6:9:6:26 | RecordPat | hasPath: | yes | hasRecordPatFieldList: | yes | -| gen_record_pat.rs:7:9:7:18 | RecordPat | hasPath: | yes | hasRecordPatFieldList: | yes | +| gen_record_pat.rs:6:9:6:26 | Foo {...} | hasPath: | yes | hasRecordPatFieldList: | yes | +| gen_record_pat.rs:7:9:7:18 | Foo {...} | hasPath: | yes | hasRecordPatFieldList: | yes | diff --git a/rust/ql/test/extractor-tests/generated/RecordPat/RecordPat_getPath.expected b/rust/ql/test/extractor-tests/generated/RecordPat/RecordPat_getPath.expected index a9e0be01d5b5..7cd2f51d9eb6 100644 --- a/rust/ql/test/extractor-tests/generated/RecordPat/RecordPat_getPath.expected +++ b/rust/ql/test/extractor-tests/generated/RecordPat/RecordPat_getPath.expected @@ -1,2 +1,2 @@ -| gen_record_pat.rs:6:9:6:26 | RecordPat | gen_record_pat.rs:6:9:6:11 | Foo | -| gen_record_pat.rs:7:9:7:18 | RecordPat | gen_record_pat.rs:7:9:7:11 | Foo | +| gen_record_pat.rs:6:9:6:26 | Foo {...} | gen_record_pat.rs:6:9:6:11 | Foo | +| gen_record_pat.rs:7:9:7:18 | Foo {...} | gen_record_pat.rs:7:9:7:11 | Foo | diff --git a/rust/ql/test/extractor-tests/generated/RecordPat/RecordPat_getRecordPatFieldList.expected b/rust/ql/test/extractor-tests/generated/RecordPat/RecordPat_getRecordPatFieldList.expected index 86ba10ed9a3c..bad0003c07bd 100644 --- a/rust/ql/test/extractor-tests/generated/RecordPat/RecordPat_getRecordPatFieldList.expected +++ b/rust/ql/test/extractor-tests/generated/RecordPat/RecordPat_getRecordPatFieldList.expected @@ -1,2 +1,2 @@ -| gen_record_pat.rs:6:9:6:26 | RecordPat | gen_record_pat.rs:6:13:6:26 | RecordPatFieldList | -| gen_record_pat.rs:7:9:7:18 | RecordPat | gen_record_pat.rs:7:13:7:18 | RecordPatFieldList | +| gen_record_pat.rs:6:9:6:26 | Foo {...} | gen_record_pat.rs:6:13:6:26 | RecordPatFieldList | +| gen_record_pat.rs:7:9:7:18 | Foo {...} | gen_record_pat.rs:7:13:7:18 | RecordPatFieldList | diff --git a/rust/ql/test/extractor-tests/generated/RecordPatField/RecordPatField_getPat.expected b/rust/ql/test/extractor-tests/generated/RecordPatField/RecordPatField_getPat.expected index a3ac24ec52be..1fa8a0f8bb7f 100644 --- a/rust/ql/test/extractor-tests/generated/RecordPatField/RecordPatField_getPat.expected +++ b/rust/ql/test/extractor-tests/generated/RecordPatField/RecordPatField_getPat.expected @@ -1,2 +1,2 @@ -| gen_record_pat_field.rs:5:15:5:18 | RecordPatField | gen_record_pat_field.rs:5:18:5:18 | LiteralPat | -| gen_record_pat_field.rs:5:21:5:24 | RecordPatField | gen_record_pat_field.rs:5:24:5:24 | LiteralPat | +| gen_record_pat_field.rs:5:15:5:18 | RecordPatField | gen_record_pat_field.rs:5:18:5:18 | 1 | +| gen_record_pat_field.rs:5:21:5:24 | RecordPatField | gen_record_pat_field.rs:5:24:5:24 | 2 | diff --git a/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr.expected b/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr.expected index d4c75d9a79a0..412f82142060 100644 --- a/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr.expected +++ b/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr.expected @@ -1,4 +1,4 @@ -| gen_ref_expr.rs:5:25:5:28 | RefExpr | getNumberOfAttrs: | 0 | hasExpr: | yes | isConst: | no | isMut: | no | isRaw: | no | -| gen_ref_expr.rs:6:23:6:30 | RefExpr | getNumberOfAttrs: | 0 | hasExpr: | yes | isConst: | no | isMut: | yes | isRaw: | no | -| gen_ref_expr.rs:7:35:7:48 | RefExpr | getNumberOfAttrs: | 0 | hasExpr: | yes | isConst: | yes | isMut: | no | isRaw: | yes | -| gen_ref_expr.rs:8:33:8:44 | RefExpr | getNumberOfAttrs: | 0 | hasExpr: | yes | isConst: | no | isMut: | yes | isRaw: | yes | +| gen_ref_expr.rs:5:25:5:28 | &foo | getNumberOfAttrs: | 0 | hasExpr: | yes | isConst: | no | isMut: | no | isRaw: | no | +| gen_ref_expr.rs:6:23:6:30 | &mut foo | getNumberOfAttrs: | 0 | hasExpr: | yes | isConst: | no | isMut: | yes | isRaw: | no | +| gen_ref_expr.rs:7:35:7:48 | &raw const foo | getNumberOfAttrs: | 0 | hasExpr: | yes | isConst: | yes | isMut: | no | isRaw: | yes | +| gen_ref_expr.rs:8:33:8:44 | &raw mut foo | getNumberOfAttrs: | 0 | hasExpr: | yes | isConst: | no | isMut: | yes | isRaw: | yes | diff --git a/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr_getExpr.expected index 571986ecf102..7709668f6fd8 100644 --- a/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr_getExpr.expected +++ b/rust/ql/test/extractor-tests/generated/RefExpr/RefExpr_getExpr.expected @@ -1,4 +1,4 @@ -| gen_ref_expr.rs:5:25:5:28 | RefExpr | gen_ref_expr.rs:5:26:5:28 | foo | -| gen_ref_expr.rs:6:23:6:30 | RefExpr | gen_ref_expr.rs:6:28:6:30 | foo | -| gen_ref_expr.rs:7:35:7:48 | RefExpr | gen_ref_expr.rs:7:46:7:48 | foo | -| gen_ref_expr.rs:8:33:8:44 | RefExpr | gen_ref_expr.rs:8:42:8:44 | foo | +| gen_ref_expr.rs:5:25:5:28 | &foo | gen_ref_expr.rs:5:26:5:28 | foo | +| gen_ref_expr.rs:6:23:6:30 | &mut foo | gen_ref_expr.rs:6:28:6:30 | foo | +| gen_ref_expr.rs:7:35:7:48 | &raw const foo | gen_ref_expr.rs:7:46:7:48 | foo | +| gen_ref_expr.rs:8:33:8:44 | &raw mut foo | gen_ref_expr.rs:8:42:8:44 | foo | diff --git a/rust/ql/test/extractor-tests/generated/RefPat/RefPat.expected b/rust/ql/test/extractor-tests/generated/RefPat/RefPat.expected index c2fc3416297a..a9dfaf874561 100644 --- a/rust/ql/test/extractor-tests/generated/RefPat/RefPat.expected +++ b/rust/ql/test/extractor-tests/generated/RefPat/RefPat.expected @@ -1,2 +1,2 @@ -| gen_ref_pat.rs:6:9:6:28 | RefPat | isMut: | yes | hasPat: | yes | -| gen_ref_pat.rs:7:9:7:21 | RefPat | isMut: | no | hasPat: | yes | +| gen_ref_pat.rs:6:9:6:28 | &mut ... | isMut: | yes | hasPat: | yes | +| gen_ref_pat.rs:7:9:7:21 | &...::None | isMut: | no | hasPat: | yes | diff --git a/rust/ql/test/extractor-tests/generated/RefPat/RefPat_getPat.expected b/rust/ql/test/extractor-tests/generated/RefPat/RefPat_getPat.expected index 891c3c8216e6..d4f78daeb829 100644 --- a/rust/ql/test/extractor-tests/generated/RefPat/RefPat_getPat.expected +++ b/rust/ql/test/extractor-tests/generated/RefPat/RefPat_getPat.expected @@ -1,2 +1,2 @@ -| gen_ref_pat.rs:6:9:6:28 | RefPat | gen_ref_pat.rs:6:14:6:28 | TupleStructPat | -| gen_ref_pat.rs:7:9:7:21 | RefPat | gen_ref_pat.rs:7:10:7:21 | PathPat | +| gen_ref_pat.rs:6:9:6:28 | &mut ... | gen_ref_pat.rs:6:14:6:28 | TupleStructPat | +| gen_ref_pat.rs:7:9:7:21 | &...::None | gen_ref_pat.rs:7:10:7:21 | ...::None | diff --git a/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr.expected b/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr.expected index dbf54e0f49bd..83220773989e 100644 --- a/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr.expected +++ b/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr.expected @@ -1,2 +1,2 @@ -| gen_return_expr.rs:5:5:5:13 | ReturnExpr | getNumberOfAttrs: | 0 | hasExpr: | yes | -| gen_return_expr.rs:8:5:8:10 | ReturnExpr | getNumberOfAttrs: | 0 | hasExpr: | no | +| gen_return_expr.rs:5:5:5:13 | return 42 | getNumberOfAttrs: | 0 | hasExpr: | yes | +| gen_return_expr.rs:8:5:8:10 | return | getNumberOfAttrs: | 0 | hasExpr: | no | diff --git a/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr_getExpr.expected b/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr_getExpr.expected index 2e1a4a8f8cec..c75ecd0b23c5 100644 --- a/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr_getExpr.expected +++ b/rust/ql/test/extractor-tests/generated/ReturnExpr/ReturnExpr_getExpr.expected @@ -1 +1 @@ -| gen_return_expr.rs:5:5:5:13 | ReturnExpr | gen_return_expr.rs:5:12:5:13 | 42 | +| gen_return_expr.rs:5:5:5:13 | return 42 | gen_return_expr.rs:5:12:5:13 | 42 | diff --git a/rust/ql/test/extractor-tests/generated/SlicePat/SlicePat_getPat.expected b/rust/ql/test/extractor-tests/generated/SlicePat/SlicePat_getPat.expected index e874d3a22ee4..0725988f37fd 100644 --- a/rust/ql/test/extractor-tests/generated/SlicePat/SlicePat_getPat.expected +++ b/rust/ql/test/extractor-tests/generated/SlicePat/SlicePat_getPat.expected @@ -1,13 +1,13 @@ -| gen_slice_pat.rs:6:9:6:23 | SlicePat | 0 | gen_slice_pat.rs:6:10:6:10 | LiteralPat | -| gen_slice_pat.rs:6:9:6:23 | SlicePat | 1 | gen_slice_pat.rs:6:13:6:13 | LiteralPat | -| gen_slice_pat.rs:6:9:6:23 | SlicePat | 2 | gen_slice_pat.rs:6:16:6:16 | LiteralPat | -| gen_slice_pat.rs:6:9:6:23 | SlicePat | 3 | gen_slice_pat.rs:6:19:6:19 | LiteralPat | -| gen_slice_pat.rs:6:9:6:23 | SlicePat | 4 | gen_slice_pat.rs:6:22:6:22 | LiteralPat | -| gen_slice_pat.rs:7:9:7:18 | SlicePat | 0 | gen_slice_pat.rs:7:10:7:10 | LiteralPat | -| gen_slice_pat.rs:7:9:7:18 | SlicePat | 1 | gen_slice_pat.rs:7:13:7:13 | LiteralPat | -| gen_slice_pat.rs:7:9:7:18 | SlicePat | 2 | gen_slice_pat.rs:7:16:7:17 | RestPat | +| gen_slice_pat.rs:6:9:6:23 | SlicePat | 0 | gen_slice_pat.rs:6:10:6:10 | 1 | +| gen_slice_pat.rs:6:9:6:23 | SlicePat | 1 | gen_slice_pat.rs:6:13:6:13 | 2 | +| gen_slice_pat.rs:6:9:6:23 | SlicePat | 2 | gen_slice_pat.rs:6:16:6:16 | 3 | +| gen_slice_pat.rs:6:9:6:23 | SlicePat | 3 | gen_slice_pat.rs:6:19:6:19 | 4 | +| gen_slice_pat.rs:6:9:6:23 | SlicePat | 4 | gen_slice_pat.rs:6:22:6:22 | 5 | +| gen_slice_pat.rs:7:9:7:18 | SlicePat | 0 | gen_slice_pat.rs:7:10:7:10 | 1 | +| gen_slice_pat.rs:7:9:7:18 | SlicePat | 1 | gen_slice_pat.rs:7:13:7:13 | 2 | +| gen_slice_pat.rs:7:9:7:18 | SlicePat | 2 | gen_slice_pat.rs:7:16:7:17 | .. | | gen_slice_pat.rs:8:9:8:24 | SlicePat | 0 | gen_slice_pat.rs:8:10:8:10 | x | | gen_slice_pat.rs:8:9:8:24 | SlicePat | 1 | gen_slice_pat.rs:8:13:8:13 | y | -| gen_slice_pat.rs:8:9:8:24 | SlicePat | 2 | gen_slice_pat.rs:8:16:8:17 | RestPat | +| gen_slice_pat.rs:8:9:8:24 | SlicePat | 2 | gen_slice_pat.rs:8:16:8:17 | .. | | gen_slice_pat.rs:8:9:8:24 | SlicePat | 3 | gen_slice_pat.rs:8:20:8:20 | z | -| gen_slice_pat.rs:8:9:8:24 | SlicePat | 4 | gen_slice_pat.rs:8:23:8:23 | LiteralPat | +| gen_slice_pat.rs:8:9:8:24 | SlicePat | 4 | gen_slice_pat.rs:8:23:8:23 | 7 | diff --git a/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile_getItem.expected b/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile_getItem.expected index a256c2b84b20..981f445201e0 100644 --- a/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile_getItem.expected +++ b/rust/ql/test/extractor-tests/generated/SourceFile/SourceFile_getItem.expected @@ -1,2 +1,2 @@ -| gen_source_file.rs:1:1:6:2 | SourceFile | 0 | gen_source_file.rs:3:1:6:1 | test_source_file | -| lib.rs:1:1:1:20 | SourceFile | 0 | lib.rs:1:1:1:20 | Module | +| gen_source_file.rs:1:1:6:2 | SourceFile | 0 | gen_source_file.rs:3:1:6:1 | fn test_source_file | +| lib.rs:1:1:1:20 | SourceFile | 0 | lib.rs:1:1:1:20 | mod gen_source_file | diff --git a/rust/ql/test/extractor-tests/generated/Trait/AssocItemList_getAssocItem.expected b/rust/ql/test/extractor-tests/generated/Trait/AssocItemList_getAssocItem.expected index 0f70039583a8..c7337ca090ae 100644 --- a/rust/ql/test/extractor-tests/generated/Trait/AssocItemList_getAssocItem.expected +++ b/rust/ql/test/extractor-tests/generated/Trait/AssocItemList_getAssocItem.expected @@ -1,3 +1,3 @@ | gen_trait.rs:4:20:8:1 | AssocItemList | 0 | gen_trait.rs:5:3:5:18 | TypeAlias | | gen_trait.rs:4:20:8:1 | AssocItemList | 1 | gen_trait.rs:6:3:6:20 | TypeAlias | -| gen_trait.rs:4:20:8:1 | AssocItemList | 2 | gen_trait.rs:7:3:7:72 | frobinize_with | +| gen_trait.rs:4:20:8:1 | AssocItemList | 2 | gen_trait.rs:7:3:7:72 | fn frobinize_with | diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait.expected b/rust/ql/test/extractor-tests/generated/Trait/Trait.expected index ba06219a2d4c..451422d330ab 100644 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait.expected +++ b/rust/ql/test/extractor-tests/generated/Trait/Trait.expected @@ -1,2 +1,2 @@ -| gen_trait.rs:3:1:8:1 | Trait | hasExtendedCanonicalPath: | yes | hasCrateOrigin: | yes | hasAssocItemList: | yes | getNumberOfAttrs: | 0 | hasGenericParamList: | no | isAuto: | no | isUnsafe: | no | hasName: | yes | hasTypeBoundList: | no | hasVisibility: | no | hasWhereClause: | no | -| gen_trait.rs:10:1:10:57 | Trait | hasExtendedCanonicalPath: | yes | hasCrateOrigin: | yes | hasAssocItemList: | yes | getNumberOfAttrs: | 0 | hasGenericParamList: | yes | isAuto: | no | isUnsafe: | no | hasName: | yes | hasTypeBoundList: | no | hasVisibility: | yes | hasWhereClause: | yes | +| gen_trait.rs:3:1:8:1 | trait Frobinizable | hasExtendedCanonicalPath: | yes | hasCrateOrigin: | yes | hasAssocItemList: | yes | getNumberOfAttrs: | 0 | hasGenericParamList: | no | isAuto: | no | isUnsafe: | no | hasName: | yes | hasTypeBoundList: | no | hasVisibility: | no | hasWhereClause: | no | +| gen_trait.rs:10:1:10:57 | trait Foo | hasExtendedCanonicalPath: | yes | hasCrateOrigin: | yes | hasAssocItemList: | yes | getNumberOfAttrs: | 0 | hasGenericParamList: | yes | isAuto: | no | isUnsafe: | no | hasName: | yes | hasTypeBoundList: | no | hasVisibility: | yes | hasWhereClause: | yes | diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait_getAssocItemList.expected b/rust/ql/test/extractor-tests/generated/Trait/Trait_getAssocItemList.expected index fc16a774800e..b60c89c8d3fe 100644 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait_getAssocItemList.expected +++ b/rust/ql/test/extractor-tests/generated/Trait/Trait_getAssocItemList.expected @@ -1,2 +1,2 @@ -| gen_trait.rs:3:1:8:1 | Trait | gen_trait.rs:4:20:8:1 | AssocItemList | -| gen_trait.rs:10:1:10:57 | Trait | gen_trait.rs:10:56:10:57 | AssocItemList | +| gen_trait.rs:3:1:8:1 | trait Frobinizable | gen_trait.rs:4:20:8:1 | AssocItemList | +| gen_trait.rs:10:1:10:57 | trait Foo | gen_trait.rs:10:56:10:57 | AssocItemList | diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait_getCrateOrigin.expected b/rust/ql/test/extractor-tests/generated/Trait/Trait_getCrateOrigin.expected index 36106a58ae0c..1e42bb437317 100644 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait_getCrateOrigin.expected +++ b/rust/ql/test/extractor-tests/generated/Trait/Trait_getCrateOrigin.expected @@ -1,2 +1,2 @@ -| gen_trait.rs:3:1:8:1 | Trait | repo::test | -| gen_trait.rs:10:1:10:57 | Trait | repo::test | +| gen_trait.rs:3:1:8:1 | trait Frobinizable | repo::test | +| gen_trait.rs:10:1:10:57 | trait Foo | repo::test | diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait_getExtendedCanonicalPath.expected b/rust/ql/test/extractor-tests/generated/Trait/Trait_getExtendedCanonicalPath.expected index d89c9f23757d..6a5e82036739 100644 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait_getExtendedCanonicalPath.expected +++ b/rust/ql/test/extractor-tests/generated/Trait/Trait_getExtendedCanonicalPath.expected @@ -1,2 +1,2 @@ -| gen_trait.rs:3:1:8:1 | Trait | crate::gen_trait::Frobinizable | -| gen_trait.rs:10:1:10:57 | Trait | crate::gen_trait::Foo | +| gen_trait.rs:3:1:8:1 | trait Frobinizable | crate::gen_trait::Frobinizable | +| gen_trait.rs:10:1:10:57 | trait Foo | crate::gen_trait::Foo | diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait_getGenericParamList.expected b/rust/ql/test/extractor-tests/generated/Trait/Trait_getGenericParamList.expected index 85a848355f12..1ea7592a5973 100644 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait_getGenericParamList.expected +++ b/rust/ql/test/extractor-tests/generated/Trait/Trait_getGenericParamList.expected @@ -1 +1 @@ -| gen_trait.rs:10:1:10:57 | Trait | gen_trait.rs:10:14:10:30 | GenericParamList | +| gen_trait.rs:10:1:10:57 | trait Foo | gen_trait.rs:10:14:10:30 | GenericParamList | diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait_getName.expected b/rust/ql/test/extractor-tests/generated/Trait/Trait_getName.expected index cc60a2ab9386..1c087cdea895 100644 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait_getName.expected +++ b/rust/ql/test/extractor-tests/generated/Trait/Trait_getName.expected @@ -1,2 +1,2 @@ -| gen_trait.rs:3:1:8:1 | Trait | gen_trait.rs:4:7:4:18 | Frobinizable | -| gen_trait.rs:10:1:10:57 | Trait | gen_trait.rs:10:11:10:13 | Foo | +| gen_trait.rs:3:1:8:1 | trait Frobinizable | gen_trait.rs:4:7:4:18 | Frobinizable | +| gen_trait.rs:10:1:10:57 | trait Foo | gen_trait.rs:10:11:10:13 | Foo | diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait_getVisibility.expected b/rust/ql/test/extractor-tests/generated/Trait/Trait_getVisibility.expected index 67d505acda7e..56576624e47f 100644 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait_getVisibility.expected +++ b/rust/ql/test/extractor-tests/generated/Trait/Trait_getVisibility.expected @@ -1 +1 @@ -| gen_trait.rs:10:1:10:57 | Trait | gen_trait.rs:10:1:10:3 | Visibility | +| gen_trait.rs:10:1:10:57 | trait Foo | gen_trait.rs:10:1:10:3 | Visibility | diff --git a/rust/ql/test/extractor-tests/generated/Trait/Trait_getWhereClause.expected b/rust/ql/test/extractor-tests/generated/Trait/Trait_getWhereClause.expected index a1ae3161e79d..d46ac2d04cd9 100644 --- a/rust/ql/test/extractor-tests/generated/Trait/Trait_getWhereClause.expected +++ b/rust/ql/test/extractor-tests/generated/Trait/Trait_getWhereClause.expected @@ -1 +1 @@ -| gen_trait.rs:10:1:10:57 | Trait | gen_trait.rs:10:32:10:54 | WhereClause | +| gen_trait.rs:10:1:10:57 | trait Foo | gen_trait.rs:10:32:10:54 | WhereClause | diff --git a/rust/ql/test/extractor-tests/generated/TuplePat/TuplePat_getField.expected b/rust/ql/test/extractor-tests/generated/TuplePat/TuplePat_getField.expected index 59d028b43ca9..78e00f39c92b 100644 --- a/rust/ql/test/extractor-tests/generated/TuplePat/TuplePat_getField.expected +++ b/rust/ql/test/extractor-tests/generated/TuplePat/TuplePat_getField.expected @@ -2,5 +2,5 @@ | gen_tuple_pat.rs:5:9:5:14 | TuplePat | 1 | gen_tuple_pat.rs:5:13:5:13 | y | | gen_tuple_pat.rs:6:9:6:22 | TuplePat | 0 | gen_tuple_pat.rs:6:10:6:10 | a | | gen_tuple_pat.rs:6:9:6:22 | TuplePat | 1 | gen_tuple_pat.rs:6:13:6:13 | b | -| gen_tuple_pat.rs:6:9:6:22 | TuplePat | 2 | gen_tuple_pat.rs:6:16:6:17 | RestPat | +| gen_tuple_pat.rs:6:9:6:22 | TuplePat | 2 | gen_tuple_pat.rs:6:16:6:17 | .. | | gen_tuple_pat.rs:6:9:6:22 | TuplePat | 3 | gen_tuple_pat.rs:6:21:6:21 | z | diff --git a/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getField.expected b/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getField.expected index 7a009a0818b7..5885cbcea3e3 100644 --- a/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getField.expected +++ b/rust/ql/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getField.expected @@ -1,7 +1,7 @@ -| gen_tuple_struct_pat.rs:6:9:6:27 | TupleStructPat | 0 | gen_tuple_struct_pat.rs:6:15:6:17 | LiteralPat | -| gen_tuple_struct_pat.rs:6:9:6:27 | TupleStructPat | 1 | gen_tuple_struct_pat.rs:6:20:6:20 | LiteralPat | -| gen_tuple_struct_pat.rs:6:9:6:27 | TupleStructPat | 2 | gen_tuple_struct_pat.rs:6:23:6:23 | LiteralPat | -| gen_tuple_struct_pat.rs:6:9:6:27 | TupleStructPat | 3 | gen_tuple_struct_pat.rs:6:26:6:26 | LiteralPat | -| gen_tuple_struct_pat.rs:7:9:7:20 | TupleStructPat | 0 | gen_tuple_struct_pat.rs:7:15:7:16 | RestPat | -| gen_tuple_struct_pat.rs:7:9:7:20 | TupleStructPat | 1 | gen_tuple_struct_pat.rs:7:19:7:19 | LiteralPat | -| gen_tuple_struct_pat.rs:8:9:8:17 | TupleStructPat | 0 | gen_tuple_struct_pat.rs:8:15:8:16 | RestPat | +| gen_tuple_struct_pat.rs:6:9:6:27 | TupleStructPat | 0 | gen_tuple_struct_pat.rs:6:15:6:17 | "a" | +| gen_tuple_struct_pat.rs:6:9:6:27 | TupleStructPat | 1 | gen_tuple_struct_pat.rs:6:20:6:20 | 1 | +| gen_tuple_struct_pat.rs:6:9:6:27 | TupleStructPat | 2 | gen_tuple_struct_pat.rs:6:23:6:23 | 2 | +| gen_tuple_struct_pat.rs:6:9:6:27 | TupleStructPat | 3 | gen_tuple_struct_pat.rs:6:26:6:26 | 3 | +| gen_tuple_struct_pat.rs:7:9:7:20 | TupleStructPat | 0 | gen_tuple_struct_pat.rs:7:15:7:16 | .. | +| gen_tuple_struct_pat.rs:7:9:7:20 | TupleStructPat | 1 | gen_tuple_struct_pat.rs:7:19:7:19 | 3 | +| gen_tuple_struct_pat.rs:8:9:8:17 | TupleStructPat | 0 | gen_tuple_struct_pat.rs:8:15:8:16 | .. | diff --git a/rust/ql/test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr.expected b/rust/ql/test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr.expected index 3b2effb788e1..ea89e8b29b4e 100644 --- a/rust/ql/test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr.expected +++ b/rust/ql/test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr.expected @@ -1 +1 @@ -| gen_underscore_expr.rs:5:5:5:5 | UnderscoreExpr | getNumberOfAttrs: | 0 | +| gen_underscore_expr.rs:5:5:5:5 | _ | getNumberOfAttrs: | 0 | diff --git a/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr.ql b/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr.ql index ceb095e9d201..8544014e571a 100644 --- a/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr.ql +++ b/rust/ql/test/extractor-tests/generated/WhileExpr/WhileExpr.ql @@ -2,13 +2,13 @@ import codeql.rust.elements import TestUtils -from WhileExpr x, int getNumberOfAttrs, string hasCondition, string hasLabel, string hasLoopBody +from WhileExpr x, string hasLabel, string hasLoopBody, int getNumberOfAttrs, string hasCondition where toBeTested(x) and not x.isUnknown() and - getNumberOfAttrs = x.getNumberOfAttrs() and - (if x.hasCondition() then hasCondition = "yes" else hasCondition = "no") and (if x.hasLabel() then hasLabel = "yes" else hasLabel = "no") and - if x.hasLoopBody() then hasLoopBody = "yes" else hasLoopBody = "no" -select x, "getNumberOfAttrs:", getNumberOfAttrs, "hasCondition:", hasCondition, "hasLabel:", - hasLabel, "hasLoopBody:", hasLoopBody + (if x.hasLoopBody() then hasLoopBody = "yes" else hasLoopBody = "no") and + getNumberOfAttrs = x.getNumberOfAttrs() and + if x.hasCondition() then hasCondition = "yes" else hasCondition = "no" +select x, "hasLabel:", hasLabel, "hasLoopBody:", hasLoopBody, "getNumberOfAttrs:", getNumberOfAttrs, + "hasCondition:", hasCondition diff --git a/rust/ql/test/extractor-tests/generated/WildcardPat/WildcardPat.expected b/rust/ql/test/extractor-tests/generated/WildcardPat/WildcardPat.expected index ceb155671b7f..b8ac989ee1c0 100644 --- a/rust/ql/test/extractor-tests/generated/WildcardPat/WildcardPat.expected +++ b/rust/ql/test/extractor-tests/generated/WildcardPat/WildcardPat.expected @@ -1 +1 @@ -| gen_wildcard_pat.rs:5:9:5:9 | WildcardPat | +| gen_wildcard_pat.rs:5:9:5:9 | _ | diff --git a/rust/ql/test/extractor-tests/utf8/ast.expected b/rust/ql/test/extractor-tests/utf8/ast.expected index dfc20f5ab58b..560f834766e3 100644 --- a/rust/ql/test/extractor-tests/utf8/ast.expected +++ b/rust/ql/test/extractor-tests/utf8/ast.expected @@ -1,33 +1,33 @@ -| lib.rs:1:1:1:21 | Module | | lib.rs:1:1:1:21 | SourceFile | +| lib.rs:1:1:1:21 | mod utf8_identifiers | | lib.rs:1:5:1:20 | utf8_identifiers | -| utf8_identifiers.rs:1:1:4:6 | foo | +| utf8_identifiers.rs:1:1:4:6 | fn foo | | utf8_identifiers.rs:1:1:12:2 | SourceFile | | utf8_identifiers.rs:1:4:1:6 | foo | | utf8_identifiers.rs:1:7:4:1 | GenericParamList | -| utf8_identifiers.rs:2:5:2:6 | Lifetime | +| utf8_identifiers.rs:2:5:2:6 | ''\u03b2 | | utf8_identifiers.rs:2:5:2:6 | LifetimeParam | | utf8_identifiers.rs:3:5:3:5 | TypeParam | | utf8_identifiers.rs:3:5:3:5 | \u03b3 | | utf8_identifiers.rs:4:2:4:3 | ParamList | -| utf8_identifiers.rs:4:5:4:6 | BlockExpr | | utf8_identifiers.rs:4:5:4:6 | StmtList | +| utf8_identifiers.rs:4:5:4:6 | { ... } | | utf8_identifiers.rs:6:1:8:1 | Struct | | utf8_identifiers.rs:6:8:6:8 | X | | utf8_identifiers.rs:6:10:8:1 | RecordFieldList | | utf8_identifiers.rs:7:5:7:5 | \u03b4 | | utf8_identifiers.rs:7:5:7:13 | RecordField | -| utf8_identifiers.rs:7:9:7:13 | PathType | +| utf8_identifiers.rs:7:9:7:13 | usize | | utf8_identifiers.rs:7:9:7:13 | usize | | utf8_identifiers.rs:7:9:7:13 | usize | | utf8_identifiers.rs:7:9:7:13 | usize | | utf8_identifiers.rs:10:1:10:3 | Visibility | -| utf8_identifiers.rs:10:1:12:1 | main | +| utf8_identifiers.rs:10:1:12:1 | fn main | | utf8_identifiers.rs:10:8:10:11 | main | | utf8_identifiers.rs:10:12:10:13 | ParamList | -| utf8_identifiers.rs:10:15:12:1 | BlockExpr | | utf8_identifiers.rs:10:15:12:1 | StmtList | -| utf8_identifiers.rs:11:5:11:24 | LetStmt | +| utf8_identifiers.rs:10:15:12:1 | { ... } | +| utf8_identifiers.rs:11:5:11:24 | let ... = 0.00001f64 | | utf8_identifiers.rs:11:9:11:9 | \u03b1 | | utf8_identifiers.rs:11:9:11:9 | \u03b1 | | utf8_identifiers.rs:11:14:11:23 | 0.00001f64 | diff --git a/rust/ql/test/library-tests/controlflow-unstable/Cfg.expected b/rust/ql/test/library-tests/controlflow-unstable/Cfg.expected index 05851289a35f..4260e2384c8f 100644 --- a/rust/ql/test/library-tests/controlflow-unstable/Cfg.expected +++ b/rust/ql/test/library-tests/controlflow-unstable/Cfg.expected @@ -1,53 +1,53 @@ edges -| test.rs:5:5:11:5 | enter test_and_if_let | test.rs:5:24:5:24 | a | | -| test.rs:5:5:11:5 | exit test_and_if_let (normal) | test.rs:5:5:11:5 | exit test_and_if_let | | -| test.rs:5:24:5:24 | a | test.rs:5:24:5:30 | Param | match | -| test.rs:5:24:5:30 | Param | test.rs:5:33:5:33 | b | | -| test.rs:5:33:5:33 | b | test.rs:5:33:5:47 | Param | match | -| test.rs:5:33:5:47 | Param | test.rs:5:50:5:50 | c | | -| test.rs:5:50:5:50 | c | test.rs:5:50:5:56 | Param | match | -| test.rs:5:50:5:56 | Param | test.rs:6:12:6:12 | a | | -| test.rs:5:67:11:5 | BlockExpr | test.rs:5:5:11:5 | exit test_and_if_let (normal) | | -| test.rs:6:9:10:9 | IfExpr | test.rs:5:67:11:5 | BlockExpr | | +| test.rs:5:5:11:5 | enter fn test_and_if_let | test.rs:5:24:5:24 | a | | +| test.rs:5:5:11:5 | exit fn test_and_if_let (normal) | test.rs:5:5:11:5 | exit fn test_and_if_let | | +| test.rs:5:24:5:24 | a | test.rs:5:24:5:30 | ...: bool | match | +| test.rs:5:24:5:30 | ...: bool | test.rs:5:33:5:33 | b | | +| test.rs:5:33:5:33 | b | test.rs:5:33:5:47 | ...: Option::<...> | match | +| test.rs:5:33:5:47 | ...: Option::<...> | test.rs:5:50:5:50 | c | | +| test.rs:5:50:5:50 | c | test.rs:5:50:5:56 | ...: bool | match | +| test.rs:5:50:5:56 | ...: bool | test.rs:6:12:6:12 | a | | +| test.rs:5:67:11:5 | { ... } | test.rs:5:5:11:5 | exit fn test_and_if_let (normal) | | +| test.rs:6:9:10:9 | if ... {...} else {...} | test.rs:5:67:11:5 | { ... } | | | test.rs:6:12:6:12 | a | test.rs:6:12:6:31 | [boolean(false)] ... && ... | false | -| test.rs:6:12:6:12 | a | test.rs:6:17:6:31 | LetExpr | true | +| test.rs:6:12:6:12 | a | test.rs:6:17:6:31 | let ... = b | true | | test.rs:6:12:6:31 | [boolean(false)] ... && ... | test.rs:9:13:9:17 | false | false | | test.rs:6:12:6:31 | [boolean(true)] ... && ... | test.rs:7:13:7:13 | d | true | -| test.rs:6:17:6:31 | LetExpr | test.rs:6:31:6:31 | b | | +| test.rs:6:17:6:31 | let ... = b | test.rs:6:31:6:31 | b | | | test.rs:6:21:6:27 | TupleStructPat | test.rs:6:12:6:31 | [boolean(false)] ... && ... | no-match | | test.rs:6:21:6:27 | TupleStructPat | test.rs:6:26:6:26 | d | match | | test.rs:6:26:6:26 | d | test.rs:6:12:6:31 | [boolean(true)] ... && ... | match | | test.rs:6:31:6:31 | b | test.rs:6:21:6:27 | TupleStructPat | | -| test.rs:6:33:8:9 | BlockExpr | test.rs:6:9:10:9 | IfExpr | | -| test.rs:7:13:7:13 | d | test.rs:6:33:8:9 | BlockExpr | | -| test.rs:8:16:10:9 | BlockExpr | test.rs:6:9:10:9 | IfExpr | | -| test.rs:9:13:9:17 | false | test.rs:8:16:10:9 | BlockExpr | | -| test.rs:13:5:21:5 | enter test_and_if_let2 | test.rs:13:25:13:25 | a | | -| test.rs:13:5:21:5 | exit test_and_if_let2 (normal) | test.rs:13:5:21:5 | exit test_and_if_let2 | | -| test.rs:13:25:13:25 | a | test.rs:13:25:13:31 | Param | match | -| test.rs:13:25:13:31 | Param | test.rs:13:34:13:34 | b | | -| test.rs:13:34:13:34 | b | test.rs:13:34:13:39 | Param | match | -| test.rs:13:34:13:39 | Param | test.rs:13:42:13:42 | c | | -| test.rs:13:42:13:42 | c | test.rs:13:42:13:48 | Param | match | -| test.rs:13:42:13:48 | Param | test.rs:14:12:14:12 | a | | -| test.rs:13:59:21:5 | BlockExpr | test.rs:13:5:21:5 | exit test_and_if_let2 (normal) | | -| test.rs:14:9:20:9 | IfExpr | test.rs:13:59:21:5 | BlockExpr | | +| test.rs:6:33:8:9 | { ... } | test.rs:6:9:10:9 | if ... {...} else {...} | | +| test.rs:7:13:7:13 | d | test.rs:6:33:8:9 | { ... } | | +| test.rs:8:16:10:9 | { ... } | test.rs:6:9:10:9 | if ... {...} else {...} | | +| test.rs:9:13:9:17 | false | test.rs:8:16:10:9 | { ... } | | +| test.rs:13:5:21:5 | enter fn test_and_if_let2 | test.rs:13:25:13:25 | a | | +| test.rs:13:5:21:5 | exit fn test_and_if_let2 (normal) | test.rs:13:5:21:5 | exit fn test_and_if_let2 | | +| test.rs:13:25:13:25 | a | test.rs:13:25:13:31 | ...: bool | match | +| test.rs:13:25:13:31 | ...: bool | test.rs:13:34:13:34 | b | | +| test.rs:13:34:13:34 | b | test.rs:13:34:13:39 | ...: i64 | match | +| test.rs:13:34:13:39 | ...: i64 | test.rs:13:42:13:42 | c | | +| test.rs:13:42:13:42 | c | test.rs:13:42:13:48 | ...: bool | match | +| test.rs:13:42:13:48 | ...: bool | test.rs:14:12:14:12 | a | | +| test.rs:13:59:21:5 | { ... } | test.rs:13:5:21:5 | exit fn test_and_if_let2 (normal) | | +| test.rs:14:9:20:9 | if ... {...} else {...} | test.rs:13:59:21:5 | { ... } | | | test.rs:14:12:14:12 | a | test.rs:14:12:14:25 | [boolean(false)] ... && ... | false | -| test.rs:14:12:14:12 | a | test.rs:14:17:14:25 | LetExpr | true | +| test.rs:14:12:14:12 | a | test.rs:14:17:14:25 | let ... = b | true | | test.rs:14:12:14:25 | [boolean(false)] ... && ... | test.rs:14:12:15:16 | [boolean(false)] ... && ... | false | | test.rs:14:12:14:25 | [boolean(true)] ... && ... | test.rs:15:16:15:16 | c | true | | test.rs:14:12:15:16 | [boolean(false)] ... && ... | test.rs:19:13:19:17 | false | false | | test.rs:14:12:15:16 | [boolean(true)] ... && ... | test.rs:17:13:17:13 | d | true | -| test.rs:14:17:14:25 | LetExpr | test.rs:14:25:14:25 | b | | +| test.rs:14:17:14:25 | let ... = b | test.rs:14:25:14:25 | b | | | test.rs:14:21:14:21 | d | test.rs:14:12:14:25 | [boolean(true)] ... && ... | match | | test.rs:14:25:14:25 | b | test.rs:14:21:14:21 | d | | | test.rs:15:16:15:16 | c | test.rs:14:12:15:16 | [boolean(false)] ... && ... | false | | test.rs:15:16:15:16 | c | test.rs:14:12:15:16 | [boolean(true)] ... && ... | true | -| test.rs:16:9:18:9 | BlockExpr | test.rs:14:9:20:9 | IfExpr | | +| test.rs:16:9:18:9 | { ... } | test.rs:14:9:20:9 | if ... {...} else {...} | | | test.rs:17:13:17:13 | d | test.rs:17:17:17:17 | 0 | | -| test.rs:17:13:17:17 | ... > ... | test.rs:16:9:18:9 | BlockExpr | | +| test.rs:17:13:17:17 | ... > ... | test.rs:16:9:18:9 | { ... } | | | test.rs:17:17:17:17 | 0 | test.rs:17:13:17:17 | ... > ... | | -| test.rs:18:16:20:9 | BlockExpr | test.rs:14:9:20:9 | IfExpr | | -| test.rs:19:13:19:17 | false | test.rs:18:16:20:9 | BlockExpr | | +| test.rs:18:16:20:9 | { ... } | test.rs:14:9:20:9 | if ... {...} else {...} | | +| test.rs:19:13:19:17 | false | test.rs:18:16:20:9 | { ... } | | breakTarget continueTarget diff --git a/rust/ql/test/library-tests/controlflow/Cfg.expected b/rust/ql/test/library-tests/controlflow/Cfg.expected index 93022fe371d4..5137e2f8b89c 100644 --- a/rust/ql/test/library-tests/controlflow/Cfg.expected +++ b/rust/ql/test/library-tests/controlflow/Cfg.expected @@ -1,479 +1,479 @@ edges -| test.rs:5:5:8:5 | enter function_call | test.rs:6:9:6:64 | ExprStmt | | -| test.rs:5:5:8:5 | exit function_call (normal) | test.rs:5:5:8:5 | exit function_call | | -| test.rs:5:24:8:5 | BlockExpr | test.rs:5:5:8:5 | exit function_call (normal) | | -| test.rs:6:9:6:44 | logical_operators::test_and_operator | test.rs:6:46:6:49 | true | | -| test.rs:6:9:6:63 | CallExpr | test.rs:7:9:7:22 | ExprStmt | | -| test.rs:6:9:6:64 | ExprStmt | test.rs:6:9:6:44 | logical_operators::test_and_operator | | +| test.rs:5:5:8:5 | enter fn function_call | test.rs:6:9:6:64 | ExprStmt | | +| test.rs:5:5:8:5 | exit fn function_call (normal) | test.rs:5:5:8:5 | exit fn function_call | | +| test.rs:5:24:8:5 | { ... } | test.rs:5:5:8:5 | exit fn function_call (normal) | | +| test.rs:6:9:6:44 | ...::test_and_operator | test.rs:6:46:6:49 | true | | +| test.rs:6:9:6:63 | ...::test_and_operator(...) | test.rs:7:9:7:22 | ExprStmt | | +| test.rs:6:9:6:64 | ExprStmt | test.rs:6:9:6:44 | ...::test_and_operator | | | test.rs:6:46:6:49 | true | test.rs:6:52:6:56 | false | | | test.rs:6:52:6:56 | false | test.rs:6:59:6:62 | true | | -| test.rs:6:59:6:62 | true | test.rs:6:9:6:63 | CallExpr | | -| test.rs:7:9:7:19 | method_call | test.rs:7:9:7:21 | CallExpr | | -| test.rs:7:9:7:21 | CallExpr | test.rs:5:24:8:5 | BlockExpr | | +| test.rs:6:59:6:62 | true | test.rs:6:9:6:63 | ...::test_and_operator(...) | | +| test.rs:7:9:7:19 | method_call | test.rs:7:9:7:21 | method_call(...) | | +| test.rs:7:9:7:21 | method_call(...) | test.rs:5:24:8:5 | { ... } | | | test.rs:7:9:7:22 | ExprStmt | test.rs:7:9:7:19 | method_call | | -| test.rs:10:5:13:5 | enter method_call | test.rs:11:9:11:37 | LetStmt | | -| test.rs:10:5:13:5 | exit method_call (normal) | test.rs:10:5:13:5 | exit method_call | | -| test.rs:10:22:13:5 | BlockExpr | test.rs:10:5:13:5 | exit method_call (normal) | | -| test.rs:11:9:11:37 | LetStmt | test.rs:11:23:11:34 | HashMap::new | | +| test.rs:10:5:13:5 | enter fn method_call | test.rs:11:9:11:37 | let ... = ... | | +| test.rs:10:5:13:5 | exit fn method_call (normal) | test.rs:10:5:13:5 | exit fn method_call | | +| test.rs:10:22:13:5 | { ... } | test.rs:10:5:13:5 | exit fn method_call (normal) | | +| test.rs:11:9:11:37 | let ... = ... | test.rs:11:23:11:34 | ...::new | | | test.rs:11:13:11:19 | map | test.rs:12:9:12:28 | ExprStmt | match | -| test.rs:11:23:11:34 | HashMap::new | test.rs:11:23:11:36 | CallExpr | | -| test.rs:11:23:11:36 | CallExpr | test.rs:11:13:11:19 | map | | +| test.rs:11:23:11:34 | ...::new | test.rs:11:23:11:36 | ...::new(...) | | +| test.rs:11:23:11:36 | ...::new(...) | test.rs:11:13:11:19 | map | | | test.rs:12:9:12:11 | map | test.rs:12:20:12:21 | 37 | | -| test.rs:12:9:12:27 | ... .insert(...) | test.rs:10:22:13:5 | BlockExpr | | +| test.rs:12:9:12:27 | ... .insert(...) | test.rs:10:22:13:5 | { ... } | | | test.rs:12:9:12:28 | ExprStmt | test.rs:12:9:12:11 | map | | | test.rs:12:20:12:21 | 37 | test.rs:12:24:12:26 | "a" | | | test.rs:12:24:12:26 | "a" | test.rs:12:9:12:27 | ... .insert(...) | | -| test.rs:18:5:24:5 | enter next | test.rs:18:13:18:13 | n | | -| test.rs:18:5:24:5 | exit next (normal) | test.rs:18:5:24:5 | exit next | | -| test.rs:18:13:18:13 | n | test.rs:18:13:18:18 | Param | match | -| test.rs:18:13:18:18 | Param | test.rs:19:12:19:12 | n | | -| test.rs:18:28:24:5 | BlockExpr | test.rs:18:5:24:5 | exit next (normal) | | -| test.rs:19:9:23:9 | IfExpr | test.rs:18:28:24:5 | BlockExpr | | +| test.rs:18:5:24:5 | enter fn next | test.rs:18:13:18:13 | n | | +| test.rs:18:5:24:5 | exit fn next (normal) | test.rs:18:5:24:5 | exit fn next | | +| test.rs:18:13:18:13 | n | test.rs:18:13:18:18 | ...: i64 | match | +| test.rs:18:13:18:18 | ...: i64 | test.rs:19:12:19:12 | n | | +| test.rs:18:28:24:5 | { ... } | test.rs:18:5:24:5 | exit fn next (normal) | | +| test.rs:19:9:23:9 | if ... {...} else {...} | test.rs:18:28:24:5 | { ... } | | | test.rs:19:12:19:12 | n | test.rs:19:16:19:16 | 2 | | | test.rs:19:12:19:16 | ... % ... | test.rs:19:21:19:21 | 0 | | | test.rs:19:12:19:21 | ... == ... | test.rs:20:13:20:13 | n | true | | test.rs:19:12:19:21 | ... == ... | test.rs:22:13:22:13 | 3 | false | | test.rs:19:16:19:16 | 2 | test.rs:19:12:19:16 | ... % ... | | | test.rs:19:21:19:21 | 0 | test.rs:19:12:19:21 | ... == ... | | -| test.rs:19:23:21:9 | BlockExpr | test.rs:19:9:23:9 | IfExpr | | +| test.rs:19:23:21:9 | { ... } | test.rs:19:9:23:9 | if ... {...} else {...} | | | test.rs:20:13:20:13 | n | test.rs:20:17:20:17 | 2 | | -| test.rs:20:13:20:17 | ... / ... | test.rs:19:23:21:9 | BlockExpr | | +| test.rs:20:13:20:17 | ... / ... | test.rs:19:23:21:9 | { ... } | | | test.rs:20:17:20:17 | 2 | test.rs:20:13:20:17 | ... / ... | | -| test.rs:21:16:23:9 | BlockExpr | test.rs:19:9:23:9 | IfExpr | | +| test.rs:21:16:23:9 | { ... } | test.rs:19:9:23:9 | if ... {...} else {...} | | | test.rs:22:13:22:13 | 3 | test.rs:22:17:22:17 | n | | | test.rs:22:13:22:17 | ... * ... | test.rs:22:21:22:21 | 1 | | -| test.rs:22:13:22:21 | ... + ... | test.rs:21:16:23:9 | BlockExpr | | +| test.rs:22:13:22:21 | ... + ... | test.rs:21:16:23:9 | { ... } | | | test.rs:22:17:22:17 | n | test.rs:22:13:22:17 | ... * ... | | | test.rs:22:21:22:21 | 1 | test.rs:22:13:22:21 | ... + ... | | -| test.rs:26:5:42:5 | enter test_break_and_continue | test.rs:26:32:26:32 | n | | -| test.rs:26:5:42:5 | exit test_break_and_continue (normal) | test.rs:26:5:42:5 | exit test_break_and_continue | | -| test.rs:26:32:26:32 | n | test.rs:26:32:26:37 | Param | match | -| test.rs:26:32:26:37 | Param | test.rs:27:9:27:22 | LetStmt | | -| test.rs:27:9:27:22 | LetStmt | test.rs:27:21:27:21 | n | | +| test.rs:26:5:42:5 | enter fn test_break_and_continue | test.rs:26:32:26:32 | n | | +| test.rs:26:5:42:5 | exit fn test_break_and_continue (normal) | test.rs:26:5:42:5 | exit fn test_break_and_continue | | +| test.rs:26:32:26:32 | n | test.rs:26:32:26:37 | ...: i64 | match | +| test.rs:26:32:26:37 | ...: i64 | test.rs:27:9:27:22 | let ... = n | | +| test.rs:27:9:27:22 | let ... = n | test.rs:27:21:27:21 | n | | | test.rs:27:13:27:17 | i | test.rs:28:9:40:9 | ExprStmt | match | | test.rs:27:21:27:21 | n | test.rs:27:13:27:17 | i | | | test.rs:28:9:40:9 | ExprStmt | test.rs:29:13:29:24 | ExprStmt | | -| test.rs:28:9:40:9 | LoopExpr | test.rs:41:9:41:20 | ExprStmt | | -| test.rs:28:14:40:9 | BlockExpr | test.rs:29:13:29:24 | ExprStmt | | +| test.rs:28:9:40:9 | loop { ... } | test.rs:41:9:41:20 | ExprStmt | | +| test.rs:28:14:40:9 | { ... } | test.rs:29:13:29:24 | ExprStmt | | | test.rs:29:13:29:13 | i | test.rs:29:17:29:20 | next | | | test.rs:29:13:29:23 | ... = ... | test.rs:30:13:32:13 | ExprStmt | | | test.rs:29:13:29:24 | ExprStmt | test.rs:29:13:29:13 | i | | | test.rs:29:17:29:20 | next | test.rs:29:22:29:22 | i | | -| test.rs:29:17:29:23 | CallExpr | test.rs:29:13:29:23 | ... = ... | | -| test.rs:29:22:29:22 | i | test.rs:29:17:29:23 | CallExpr | | +| test.rs:29:17:29:23 | next(...) | test.rs:29:13:29:23 | ... = ... | | +| test.rs:29:22:29:22 | i | test.rs:29:17:29:23 | next(...) | | | test.rs:30:13:32:13 | ExprStmt | test.rs:30:16:30:16 | i | | -| test.rs:30:13:32:13 | IfExpr | test.rs:33:13:35:13 | ExprStmt | | +| test.rs:30:13:32:13 | if ... {...} | test.rs:33:13:35:13 | ExprStmt | | | test.rs:30:16:30:16 | i | test.rs:30:20:30:24 | 10000 | | -| test.rs:30:16:30:24 | ... > ... | test.rs:30:13:32:13 | IfExpr | false | +| test.rs:30:16:30:24 | ... > ... | test.rs:30:13:32:13 | if ... {...} | false | | test.rs:30:16:30:24 | ... > ... | test.rs:31:17:31:29 | ExprStmt | true | | test.rs:30:20:30:24 | 10000 | test.rs:30:16:30:24 | ... > ... | | -| test.rs:31:17:31:28 | ReturnExpr | test.rs:26:5:42:5 | exit test_break_and_continue (normal) | return | +| test.rs:31:17:31:28 | return false | test.rs:26:5:42:5 | exit fn test_break_and_continue (normal) | return | | test.rs:31:17:31:29 | ExprStmt | test.rs:31:24:31:28 | false | | -| test.rs:31:24:31:28 | false | test.rs:31:17:31:28 | ReturnExpr | | +| test.rs:31:24:31:28 | false | test.rs:31:17:31:28 | return false | | | test.rs:33:13:35:13 | ExprStmt | test.rs:33:16:33:16 | i | | -| test.rs:33:13:35:13 | IfExpr | test.rs:36:13:38:13 | ExprStmt | | +| test.rs:33:13:35:13 | if ... {...} | test.rs:36:13:38:13 | ExprStmt | | | test.rs:33:16:33:16 | i | test.rs:33:21:33:21 | 1 | | -| test.rs:33:16:33:21 | ... == ... | test.rs:33:13:35:13 | IfExpr | false | +| test.rs:33:16:33:21 | ... == ... | test.rs:33:13:35:13 | if ... {...} | false | | test.rs:33:16:33:21 | ... == ... | test.rs:34:17:34:22 | ExprStmt | true | | test.rs:33:21:33:21 | 1 | test.rs:33:16:33:21 | ... == ... | | -| test.rs:34:17:34:21 | BreakExpr | test.rs:28:9:40:9 | LoopExpr | break | -| test.rs:34:17:34:22 | ExprStmt | test.rs:34:17:34:21 | BreakExpr | | +| test.rs:34:17:34:21 | break | test.rs:28:9:40:9 | loop { ... } | break | +| test.rs:34:17:34:22 | ExprStmt | test.rs:34:17:34:21 | break | | | test.rs:36:13:38:13 | ExprStmt | test.rs:36:16:36:16 | i | | -| test.rs:36:13:38:13 | IfExpr | test.rs:39:13:39:13 | i | | +| test.rs:36:13:38:13 | if ... {...} | test.rs:39:13:39:13 | i | | | test.rs:36:16:36:16 | i | test.rs:36:20:36:20 | 2 | | | test.rs:36:16:36:20 | ... % ... | test.rs:36:25:36:25 | 0 | | -| test.rs:36:16:36:25 | ... != ... | test.rs:36:13:38:13 | IfExpr | false | +| test.rs:36:16:36:25 | ... != ... | test.rs:36:13:38:13 | if ... {...} | false | | test.rs:36:16:36:25 | ... != ... | test.rs:37:17:37:25 | ExprStmt | true | | test.rs:36:20:36:20 | 2 | test.rs:36:16:36:20 | ... % ... | | | test.rs:36:25:36:25 | 0 | test.rs:36:16:36:25 | ... != ... | | -| test.rs:37:17:37:24 | ContinueExpr | test.rs:29:13:29:24 | ExprStmt | continue | -| test.rs:37:17:37:25 | ExprStmt | test.rs:37:17:37:24 | ContinueExpr | | +| test.rs:37:17:37:24 | continue | test.rs:29:13:29:24 | ExprStmt | continue | +| test.rs:37:17:37:25 | ExprStmt | test.rs:37:17:37:24 | continue | | | test.rs:39:13:39:13 | i | test.rs:39:17:39:17 | i | | -| test.rs:39:13:39:21 | ... = ... | test.rs:28:14:40:9 | BlockExpr | | +| test.rs:39:13:39:21 | ... = ... | test.rs:28:14:40:9 | { ... } | | | test.rs:39:17:39:17 | i | test.rs:39:21:39:21 | 2 | | | test.rs:39:17:39:21 | ... / ... | test.rs:39:13:39:21 | ... = ... | | | test.rs:39:21:39:21 | 2 | test.rs:39:17:39:21 | ... / ... | | -| test.rs:41:9:41:19 | ReturnExpr | test.rs:26:5:42:5 | exit test_break_and_continue (normal) | return | +| test.rs:41:9:41:19 | return true | test.rs:26:5:42:5 | exit fn test_break_and_continue (normal) | return | | test.rs:41:9:41:20 | ExprStmt | test.rs:41:16:41:19 | true | | -| test.rs:41:16:41:19 | true | test.rs:41:9:41:19 | ReturnExpr | | -| test.rs:44:5:56:5 | enter test_break_with_labels | test.rs:44:31:44:31 | b | | -| test.rs:44:5:56:5 | exit test_break_with_labels (normal) | test.rs:44:5:56:5 | exit test_break_with_labels | | -| test.rs:44:31:44:31 | b | test.rs:44:31:44:37 | Param | match | -| test.rs:44:31:44:37 | Param | test.rs:45:9:54:9 | ExprStmt | | -| test.rs:44:48:56:5 | BlockExpr | test.rs:44:5:56:5 | exit test_break_with_labels (normal) | | +| test.rs:41:16:41:19 | true | test.rs:41:9:41:19 | return true | | +| test.rs:44:5:56:5 | enter fn test_break_with_labels | test.rs:44:31:44:31 | b | | +| test.rs:44:5:56:5 | exit fn test_break_with_labels (normal) | test.rs:44:5:56:5 | exit fn test_break_with_labels | | +| test.rs:44:31:44:31 | b | test.rs:44:31:44:37 | ...: bool | match | +| test.rs:44:31:44:37 | ...: bool | test.rs:45:9:54:9 | ExprStmt | | +| test.rs:44:48:56:5 | { ... } | test.rs:44:5:56:5 | exit fn test_break_with_labels (normal) | | +| test.rs:45:9:54:9 | 'outer: loop { ... } | test.rs:55:9:55:12 | true | | | test.rs:45:9:54:9 | ExprStmt | test.rs:47:17:51:17 | ExprStmt | | -| test.rs:45:9:54:9 | LoopExpr | test.rs:55:9:55:12 | true | | -| test.rs:45:22:54:9 | BlockExpr | test.rs:47:17:51:17 | ExprStmt | | -| test.rs:46:13:53:13 | LoopExpr | test.rs:45:22:54:9 | BlockExpr | | +| test.rs:45:22:54:9 | { ... } | test.rs:47:17:51:17 | ExprStmt | | +| test.rs:46:13:53:13 | 'inner: loop { ... } | test.rs:45:22:54:9 | { ... } | | | test.rs:47:17:51:17 | ExprStmt | test.rs:47:20:47:20 | b | | -| test.rs:47:17:51:17 | IfExpr | test.rs:52:17:52:29 | ExprStmt | | +| test.rs:47:17:51:17 | if b {...} else {...} | test.rs:52:17:52:29 | ExprStmt | | | test.rs:47:20:47:20 | b | test.rs:48:21:48:26 | ExprStmt | true | | test.rs:47:20:47:20 | b | test.rs:49:27:49:27 | b | false | -| test.rs:48:21:48:25 | BreakExpr | test.rs:46:13:53:13 | LoopExpr | break | -| test.rs:48:21:48:26 | ExprStmt | test.rs:48:21:48:25 | BreakExpr | | -| test.rs:49:24:51:17 | IfExpr | test.rs:47:17:51:17 | IfExpr | | -| test.rs:49:27:49:27 | b | test.rs:49:24:51:17 | IfExpr | false | +| test.rs:48:21:48:25 | break | test.rs:46:13:53:13 | 'inner: loop { ... } | break | +| test.rs:48:21:48:26 | ExprStmt | test.rs:48:21:48:25 | break | | +| test.rs:49:24:51:17 | if b {...} | test.rs:47:17:51:17 | if b {...} else {...} | | +| test.rs:49:27:49:27 | b | test.rs:49:24:51:17 | if b {...} | false | | test.rs:49:27:49:27 | b | test.rs:50:21:50:33 | ExprStmt | true | -| test.rs:50:21:50:32 | BreakExpr | test.rs:45:9:54:9 | LoopExpr | break | -| test.rs:50:21:50:33 | ExprStmt | test.rs:50:21:50:32 | BreakExpr | | -| test.rs:52:17:52:28 | BreakExpr | test.rs:46:13:53:13 | LoopExpr | break | -| test.rs:52:17:52:29 | ExprStmt | test.rs:52:17:52:28 | BreakExpr | | -| test.rs:55:9:55:12 | true | test.rs:44:48:56:5 | BlockExpr | | -| test.rs:58:5:70:5 | enter test_continue_with_labels | test.rs:58:34:58:34 | b | | -| test.rs:58:34:58:34 | b | test.rs:58:34:58:40 | Param | match | -| test.rs:58:34:58:40 | Param | test.rs:60:13:60:14 | ExprStmt | | +| test.rs:50:21:50:32 | break ''outer | test.rs:45:9:54:9 | 'outer: loop { ... } | break | +| test.rs:50:21:50:33 | ExprStmt | test.rs:50:21:50:32 | break ''outer | | +| test.rs:52:17:52:28 | break ''inner | test.rs:46:13:53:13 | 'inner: loop { ... } | break | +| test.rs:52:17:52:29 | ExprStmt | test.rs:52:17:52:28 | break ''inner | | +| test.rs:55:9:55:12 | true | test.rs:44:48:56:5 | { ... } | | +| test.rs:58:5:70:5 | enter fn test_continue_with_labels | test.rs:58:34:58:34 | b | | +| test.rs:58:34:58:34 | b | test.rs:58:34:58:40 | ...: bool | match | +| test.rs:58:34:58:40 | ...: bool | test.rs:60:13:60:14 | ExprStmt | | | test.rs:60:13:60:13 | 1 | test.rs:62:17:66:17 | ExprStmt | | | test.rs:60:13:60:14 | ExprStmt | test.rs:60:13:60:13 | 1 | | | test.rs:62:17:66:17 | ExprStmt | test.rs:62:20:62:20 | b | | -| test.rs:62:17:66:17 | IfExpr | test.rs:67:17:67:32 | ExprStmt | | +| test.rs:62:17:66:17 | if b {...} else {...} | test.rs:67:17:67:32 | ExprStmt | | | test.rs:62:20:62:20 | b | test.rs:63:21:63:29 | ExprStmt | true | | test.rs:62:20:62:20 | b | test.rs:64:27:64:27 | b | false | -| test.rs:63:21:63:28 | ContinueExpr | test.rs:62:17:66:17 | ExprStmt | continue | -| test.rs:63:21:63:29 | ExprStmt | test.rs:63:21:63:28 | ContinueExpr | | -| test.rs:64:24:66:17 | IfExpr | test.rs:62:17:66:17 | IfExpr | | -| test.rs:64:27:64:27 | b | test.rs:64:24:66:17 | IfExpr | false | +| test.rs:63:21:63:28 | continue | test.rs:62:17:66:17 | ExprStmt | continue | +| test.rs:63:21:63:29 | ExprStmt | test.rs:63:21:63:28 | continue | | +| test.rs:64:24:66:17 | if b {...} | test.rs:62:17:66:17 | if b {...} else {...} | | +| test.rs:64:27:64:27 | b | test.rs:64:24:66:17 | if b {...} | false | | test.rs:64:27:64:27 | b | test.rs:65:21:65:36 | ExprStmt | true | -| test.rs:65:21:65:35 | ContinueExpr | test.rs:60:13:60:14 | ExprStmt | continue | -| test.rs:65:21:65:36 | ExprStmt | test.rs:65:21:65:35 | ContinueExpr | | -| test.rs:67:17:67:31 | ContinueExpr | test.rs:62:17:66:17 | ExprStmt | continue | -| test.rs:67:17:67:32 | ExprStmt | test.rs:67:17:67:31 | ContinueExpr | | -| test.rs:72:5:84:5 | enter test_loop_label_shadowing | test.rs:72:34:72:34 | b | | -| test.rs:72:34:72:34 | b | test.rs:72:34:72:40 | Param | match | -| test.rs:72:34:72:40 | Param | test.rs:74:13:74:14 | ExprStmt | | +| test.rs:65:21:65:35 | continue 'outer | test.rs:60:13:60:14 | ExprStmt | continue | +| test.rs:65:21:65:36 | ExprStmt | test.rs:65:21:65:35 | continue 'outer | | +| test.rs:67:17:67:31 | continue 'inner | test.rs:62:17:66:17 | ExprStmt | continue | +| test.rs:67:17:67:32 | ExprStmt | test.rs:67:17:67:31 | continue 'inner | | +| test.rs:72:5:84:5 | enter fn test_loop_label_shadowing | test.rs:72:34:72:34 | b | | +| test.rs:72:34:72:34 | b | test.rs:72:34:72:40 | ...: bool | match | +| test.rs:72:34:72:40 | ...: bool | test.rs:74:13:74:14 | ExprStmt | | | test.rs:74:13:74:13 | 1 | test.rs:76:17:80:17 | ExprStmt | | | test.rs:74:13:74:14 | ExprStmt | test.rs:74:13:74:13 | 1 | | | test.rs:76:17:80:17 | ExprStmt | test.rs:76:20:76:20 | b | | -| test.rs:76:17:80:17 | IfExpr | test.rs:81:17:81:32 | ExprStmt | | +| test.rs:76:17:80:17 | if b {...} else {...} | test.rs:81:17:81:32 | ExprStmt | | | test.rs:76:20:76:20 | b | test.rs:77:21:77:29 | ExprStmt | true | | test.rs:76:20:76:20 | b | test.rs:78:27:78:27 | b | false | -| test.rs:77:21:77:28 | ContinueExpr | test.rs:76:17:80:17 | ExprStmt | continue | -| test.rs:77:21:77:29 | ExprStmt | test.rs:77:21:77:28 | ContinueExpr | | -| test.rs:78:24:80:17 | IfExpr | test.rs:76:17:80:17 | IfExpr | | -| test.rs:78:27:78:27 | b | test.rs:78:24:80:17 | IfExpr | false | +| test.rs:77:21:77:28 | continue | test.rs:76:17:80:17 | ExprStmt | continue | +| test.rs:77:21:77:29 | ExprStmt | test.rs:77:21:77:28 | continue | | +| test.rs:78:24:80:17 | if b {...} | test.rs:76:17:80:17 | if b {...} else {...} | | +| test.rs:78:27:78:27 | b | test.rs:78:24:80:17 | if b {...} | false | | test.rs:78:27:78:27 | b | test.rs:79:21:79:36 | ExprStmt | true | -| test.rs:79:21:79:35 | ContinueExpr | test.rs:76:17:80:17 | ExprStmt | continue | -| test.rs:79:21:79:36 | ExprStmt | test.rs:79:21:79:35 | ContinueExpr | | -| test.rs:81:17:81:31 | ContinueExpr | test.rs:76:17:80:17 | ExprStmt | continue | -| test.rs:81:17:81:32 | ExprStmt | test.rs:81:17:81:31 | ContinueExpr | | -| test.rs:86:5:95:5 | enter test_while | test.rs:86:19:86:19 | i | | -| test.rs:86:5:95:5 | exit test_while (normal) | test.rs:86:5:95:5 | exit test_while | | -| test.rs:86:19:86:19 | i | test.rs:86:19:86:24 | Param | match | -| test.rs:86:19:86:24 | Param | test.rs:87:9:87:25 | LetStmt | | -| test.rs:86:27:95:5 | BlockExpr | test.rs:86:5:95:5 | exit test_while (normal) | | -| test.rs:87:9:87:25 | LetStmt | test.rs:87:21:87:24 | true | | +| test.rs:79:21:79:35 | continue 'label | test.rs:76:17:80:17 | ExprStmt | continue | +| test.rs:79:21:79:36 | ExprStmt | test.rs:79:21:79:35 | continue 'label | | +| test.rs:81:17:81:31 | continue 'label | test.rs:76:17:80:17 | ExprStmt | continue | +| test.rs:81:17:81:32 | ExprStmt | test.rs:81:17:81:31 | continue 'label | | +| test.rs:86:5:95:5 | enter fn test_while | test.rs:86:19:86:19 | i | | +| test.rs:86:5:95:5 | exit fn test_while (normal) | test.rs:86:5:95:5 | exit fn test_while | | +| test.rs:86:19:86:19 | i | test.rs:86:19:86:24 | ...: i64 | match | +| test.rs:86:19:86:24 | ...: i64 | test.rs:87:9:87:25 | let ... = true | | +| test.rs:86:27:95:5 | { ... } | test.rs:86:5:95:5 | exit fn test_while (normal) | | +| test.rs:87:9:87:25 | let ... = true | test.rs:87:21:87:24 | true | | | test.rs:87:13:87:17 | b | test.rs:88:15:88:15 | b | match | | test.rs:87:21:87:24 | true | test.rs:87:13:87:17 | b | | -| test.rs:88:9:94:9 | WhileExpr | test.rs:86:27:95:5 | BlockExpr | | -| test.rs:88:15:88:15 | b | test.rs:88:9:94:9 | WhileExpr | false | +| test.rs:88:9:94:9 | while b { ... } | test.rs:86:27:95:5 | { ... } | | +| test.rs:88:15:88:15 | b | test.rs:88:9:94:9 | while b { ... } | false | | test.rs:88:15:88:15 | b | test.rs:89:13:89:14 | ExprStmt | true | -| test.rs:88:17:94:9 | BlockExpr | test.rs:88:15:88:15 | b | | +| test.rs:88:17:94:9 | { ... } | test.rs:88:15:88:15 | b | | | test.rs:89:13:89:13 | 1 | test.rs:90:13:92:13 | ExprStmt | | | test.rs:89:13:89:14 | ExprStmt | test.rs:89:13:89:13 | 1 | | | test.rs:90:13:92:13 | ExprStmt | test.rs:90:17:90:17 | i | | -| test.rs:90:13:92:13 | IfExpr | test.rs:93:13:93:22 | ExprStmt | | +| test.rs:90:13:92:13 | if ... {...} | test.rs:93:13:93:22 | ExprStmt | | | test.rs:90:17:90:17 | i | test.rs:90:21:90:21 | 0 | | -| test.rs:90:17:90:21 | ... > ... | test.rs:90:13:92:13 | IfExpr | false | +| test.rs:90:17:90:21 | ... > ... | test.rs:90:13:92:13 | if ... {...} | false | | test.rs:90:17:90:21 | ... > ... | test.rs:91:17:91:22 | ExprStmt | true | | test.rs:90:21:90:21 | 0 | test.rs:90:17:90:21 | ... > ... | | -| test.rs:91:17:91:21 | BreakExpr | test.rs:88:9:94:9 | WhileExpr | break | -| test.rs:91:17:91:22 | ExprStmt | test.rs:91:17:91:21 | BreakExpr | | +| test.rs:91:17:91:21 | break | test.rs:88:9:94:9 | while b { ... } | break | +| test.rs:91:17:91:22 | ExprStmt | test.rs:91:17:91:21 | break | | | test.rs:93:13:93:13 | b | test.rs:93:17:93:21 | false | | -| test.rs:93:13:93:21 | ... = ... | test.rs:88:17:94:9 | BlockExpr | | +| test.rs:93:13:93:21 | ... = ... | test.rs:88:17:94:9 | { ... } | | | test.rs:93:13:93:22 | ExprStmt | test.rs:93:13:93:13 | b | | | test.rs:93:17:93:21 | false | test.rs:93:13:93:21 | ... = ... | | -| test.rs:97:5:104:5 | enter test_while_let | test.rs:98:9:98:29 | LetStmt | | -| test.rs:97:5:104:5 | exit test_while_let (normal) | test.rs:97:5:104:5 | exit test_while_let | | -| test.rs:97:25:104:5 | BlockExpr | test.rs:97:5:104:5 | exit test_while_let (normal) | | -| test.rs:98:9:98:29 | LetStmt | test.rs:98:24:98:24 | 1 | | -| test.rs:98:13:98:20 | iter | test.rs:99:15:99:39 | LetExpr | match | +| test.rs:97:5:104:5 | enter fn test_while_let | test.rs:98:9:98:29 | let ... = ... | | +| test.rs:97:5:104:5 | exit fn test_while_let (normal) | test.rs:97:5:104:5 | exit fn test_while_let | | +| test.rs:97:25:104:5 | { ... } | test.rs:97:5:104:5 | exit fn test_while_let (normal) | | +| test.rs:98:9:98:29 | let ... = ... | test.rs:98:24:98:24 | 1 | | +| test.rs:98:13:98:20 | iter | test.rs:99:15:99:39 | let ... = ... | match | | test.rs:98:24:98:24 | 1 | test.rs:98:27:98:28 | 10 | | -| test.rs:98:24:98:28 | RangeExpr | test.rs:98:13:98:20 | iter | | -| test.rs:98:27:98:28 | 10 | test.rs:98:24:98:28 | RangeExpr | | -| test.rs:99:9:103:9 | WhileExpr | test.rs:97:25:104:5 | BlockExpr | | -| test.rs:99:15:99:39 | LetExpr | test.rs:99:29:99:32 | iter | | -| test.rs:99:19:99:25 | TupleStructPat | test.rs:99:9:103:9 | WhileExpr | no-match | +| test.rs:98:24:98:28 | 1..10 | test.rs:98:13:98:20 | iter | | +| test.rs:98:27:98:28 | 10 | test.rs:98:24:98:28 | 1..10 | | +| test.rs:99:9:103:9 | while ... { ... } | test.rs:97:25:104:5 | { ... } | | +| test.rs:99:15:99:39 | let ... = ... | test.rs:99:29:99:32 | iter | | +| test.rs:99:19:99:25 | TupleStructPat | test.rs:99:9:103:9 | while ... { ... } | no-match | | test.rs:99:19:99:25 | TupleStructPat | test.rs:99:24:99:24 | x | match | | test.rs:99:24:99:24 | x | test.rs:100:17:100:17 | x | match | | test.rs:99:29:99:32 | iter | test.rs:99:29:99:39 | ... .next(...) | | | test.rs:99:29:99:39 | ... .next(...) | test.rs:99:19:99:25 | TupleStructPat | | -| test.rs:99:41:103:9 | BlockExpr | test.rs:99:15:99:39 | LetExpr | | -| test.rs:100:13:102:13 | IfExpr | test.rs:99:41:103:9 | BlockExpr | | +| test.rs:99:41:103:9 | { ... } | test.rs:99:15:99:39 | let ... = ... | | +| test.rs:100:13:102:13 | if ... {...} | test.rs:99:41:103:9 | { ... } | | | test.rs:100:17:100:17 | x | test.rs:100:22:100:22 | 5 | | -| test.rs:100:17:100:22 | ... == ... | test.rs:100:13:102:13 | IfExpr | false | +| test.rs:100:17:100:22 | ... == ... | test.rs:100:13:102:13 | if ... {...} | false | | test.rs:100:17:100:22 | ... == ... | test.rs:101:17:101:22 | ExprStmt | true | | test.rs:100:22:100:22 | 5 | test.rs:100:17:100:22 | ... == ... | | -| test.rs:101:17:101:21 | BreakExpr | test.rs:99:9:103:9 | WhileExpr | break | -| test.rs:101:17:101:22 | ExprStmt | test.rs:101:17:101:21 | BreakExpr | | -| test.rs:106:5:113:5 | enter test_for | test.rs:106:17:106:17 | j | | -| test.rs:106:5:113:5 | exit test_for (normal) | test.rs:106:5:113:5 | exit test_for | | -| test.rs:106:17:106:17 | j | test.rs:106:17:106:22 | Param | match | -| test.rs:106:17:106:22 | Param | test.rs:107:18:107:18 | 0 | | -| test.rs:106:25:113:5 | BlockExpr | test.rs:106:5:113:5 | exit test_for (normal) | | -| test.rs:107:9:112:9 | ForExpr | test.rs:106:25:113:5 | BlockExpr | | -| test.rs:107:13:107:13 | i | test.rs:107:9:112:9 | ForExpr | no-match | +| test.rs:101:17:101:21 | break | test.rs:99:9:103:9 | while ... { ... } | break | +| test.rs:101:17:101:22 | ExprStmt | test.rs:101:17:101:21 | break | | +| test.rs:106:5:113:5 | enter fn test_for | test.rs:106:17:106:17 | j | | +| test.rs:106:5:113:5 | exit fn test_for (normal) | test.rs:106:5:113:5 | exit fn test_for | | +| test.rs:106:17:106:17 | j | test.rs:106:17:106:22 | ...: i64 | match | +| test.rs:106:17:106:22 | ...: i64 | test.rs:107:18:107:18 | 0 | | +| test.rs:106:25:113:5 | { ... } | test.rs:106:5:113:5 | exit fn test_for (normal) | | +| test.rs:107:9:112:9 | for ... in ... { ... } | test.rs:106:25:113:5 | { ... } | | +| test.rs:107:13:107:13 | i | test.rs:107:9:112:9 | for ... in ... { ... } | no-match | | test.rs:107:13:107:13 | i | test.rs:108:13:110:13 | ExprStmt | match | | test.rs:107:18:107:18 | 0 | test.rs:107:21:107:22 | 10 | | -| test.rs:107:18:107:22 | RangeExpr | test.rs:107:13:107:13 | i | | -| test.rs:107:21:107:22 | 10 | test.rs:107:18:107:22 | RangeExpr | | -| test.rs:107:24:112:9 | BlockExpr | test.rs:107:13:107:13 | i | | +| test.rs:107:18:107:22 | 0..10 | test.rs:107:13:107:13 | i | | +| test.rs:107:21:107:22 | 10 | test.rs:107:18:107:22 | 0..10 | | +| test.rs:107:24:112:9 | { ... } | test.rs:107:13:107:13 | i | | | test.rs:108:13:110:13 | ExprStmt | test.rs:108:17:108:17 | i | | -| test.rs:108:13:110:13 | IfExpr | test.rs:111:13:111:14 | ExprStmt | | +| test.rs:108:13:110:13 | if ... {...} | test.rs:111:13:111:14 | ExprStmt | | | test.rs:108:17:108:17 | i | test.rs:108:22:108:22 | j | | -| test.rs:108:17:108:22 | ... == ... | test.rs:108:13:110:13 | IfExpr | false | +| test.rs:108:17:108:22 | ... == ... | test.rs:108:13:110:13 | if ... {...} | false | | test.rs:108:17:108:22 | ... == ... | test.rs:109:17:109:22 | ExprStmt | true | | test.rs:108:22:108:22 | j | test.rs:108:17:108:22 | ... == ... | | -| test.rs:109:17:109:21 | BreakExpr | test.rs:107:9:112:9 | ForExpr | break | -| test.rs:109:17:109:22 | ExprStmt | test.rs:109:17:109:21 | BreakExpr | | -| test.rs:111:13:111:13 | 1 | test.rs:107:24:112:9 | BlockExpr | | +| test.rs:109:17:109:21 | break | test.rs:107:9:112:9 | for ... in ... { ... } | break | +| test.rs:109:17:109:22 | ExprStmt | test.rs:109:17:109:21 | break | | +| test.rs:111:13:111:13 | 1 | test.rs:107:24:112:9 | { ... } | | | test.rs:111:13:111:14 | ExprStmt | test.rs:111:13:111:13 | 1 | | -| test.rs:115:5:119:5 | enter break_with_return | test.rs:117:13:117:27 | ExprStmt | | -| test.rs:115:5:119:5 | exit break_with_return (normal) | test.rs:115:5:119:5 | exit break_with_return | | +| test.rs:115:5:119:5 | enter fn break_with_return | test.rs:117:13:117:27 | ExprStmt | | +| test.rs:115:5:119:5 | exit fn break_with_return (normal) | test.rs:115:5:119:5 | exit fn break_with_return | | | test.rs:117:13:117:27 | ExprStmt | test.rs:117:26:117:26 | 1 | | -| test.rs:117:19:117:26 | ReturnExpr | test.rs:115:5:119:5 | exit break_with_return (normal) | return | -| test.rs:117:26:117:26 | 1 | test.rs:117:19:117:26 | ReturnExpr | | -| test.rs:122:1:125:1 | enter test_nested_function | test.rs:122:25:122:25 | n | | -| test.rs:122:1:125:1 | exit test_nested_function (normal) | test.rs:122:1:125:1 | exit test_nested_function | | -| test.rs:122:25:122:25 | n | test.rs:122:25:122:30 | Param | match | -| test.rs:122:25:122:30 | Param | test.rs:123:5:123:28 | LetStmt | | -| test.rs:122:40:125:1 | BlockExpr | test.rs:122:1:125:1 | exit test_nested_function (normal) | | -| test.rs:123:5:123:28 | LetStmt | test.rs:123:19:123:27 | ClosureExpr | | +| test.rs:117:19:117:26 | return 1 | test.rs:115:5:119:5 | exit fn break_with_return (normal) | return | +| test.rs:117:26:117:26 | 1 | test.rs:117:19:117:26 | return 1 | | +| test.rs:122:1:125:1 | enter fn test_nested_function | test.rs:122:25:122:25 | n | | +| test.rs:122:1:125:1 | exit fn test_nested_function (normal) | test.rs:122:1:125:1 | exit fn test_nested_function | | +| test.rs:122:25:122:25 | n | test.rs:122:25:122:30 | ...: i64 | match | +| test.rs:122:25:122:30 | ...: i64 | test.rs:123:5:123:28 | let ... = ... | | +| test.rs:122:40:125:1 | { ... } | test.rs:122:1:125:1 | exit fn test_nested_function (normal) | | +| test.rs:123:5:123:28 | let ... = ... | test.rs:123:19:123:27 | \|...\| ... | | | test.rs:123:9:123:15 | add_one | test.rs:124:5:124:11 | add_one | match | -| test.rs:123:19:123:27 | ClosureExpr | test.rs:123:9:123:15 | add_one | | -| test.rs:123:19:123:27 | enter ClosureExpr | test.rs:123:20:123:20 | i | | -| test.rs:123:19:123:27 | exit ClosureExpr (normal) | test.rs:123:19:123:27 | exit ClosureExpr | | -| test.rs:123:20:123:20 | Param | test.rs:123:23:123:23 | i | | -| test.rs:123:20:123:20 | i | test.rs:123:20:123:20 | Param | match | +| test.rs:123:19:123:27 | \|...\| ... | test.rs:123:9:123:15 | add_one | | +| test.rs:123:19:123:27 | enter \|...\| ... | test.rs:123:20:123:20 | i | | +| test.rs:123:19:123:27 | exit \|...\| ... (normal) | test.rs:123:19:123:27 | exit \|...\| ... | | +| test.rs:123:20:123:20 | ... | test.rs:123:23:123:23 | i | | +| test.rs:123:20:123:20 | i | test.rs:123:20:123:20 | ... | match | | test.rs:123:23:123:23 | i | test.rs:123:27:123:27 | 1 | | -| test.rs:123:23:123:27 | ... + ... | test.rs:123:19:123:27 | exit ClosureExpr (normal) | | +| test.rs:123:23:123:27 | ... + ... | test.rs:123:19:123:27 | exit \|...\| ... (normal) | | | test.rs:123:27:123:27 | 1 | test.rs:123:23:123:27 | ... + ... | | | test.rs:124:5:124:11 | add_one | test.rs:124:13:124:19 | add_one | | -| test.rs:124:5:124:23 | CallExpr | test.rs:122:40:125:1 | BlockExpr | | +| test.rs:124:5:124:23 | add_one(...) | test.rs:122:40:125:1 | { ... } | | | test.rs:124:13:124:19 | add_one | test.rs:124:21:124:21 | n | | -| test.rs:124:13:124:22 | CallExpr | test.rs:124:5:124:23 | CallExpr | | -| test.rs:124:21:124:21 | n | test.rs:124:13:124:22 | CallExpr | | -| test.rs:129:5:135:5 | enter test_if_else | test.rs:129:21:129:21 | n | | -| test.rs:129:5:135:5 | exit test_if_else (normal) | test.rs:129:5:135:5 | exit test_if_else | | -| test.rs:129:21:129:21 | n | test.rs:129:21:129:26 | Param | match | -| test.rs:129:21:129:26 | Param | test.rs:130:12:130:12 | n | | -| test.rs:129:36:135:5 | BlockExpr | test.rs:129:5:135:5 | exit test_if_else (normal) | | -| test.rs:130:9:134:9 | IfExpr | test.rs:129:36:135:5 | BlockExpr | | +| test.rs:124:13:124:22 | add_one(...) | test.rs:124:5:124:23 | add_one(...) | | +| test.rs:124:21:124:21 | n | test.rs:124:13:124:22 | add_one(...) | | +| test.rs:129:5:135:5 | enter fn test_if_else | test.rs:129:21:129:21 | n | | +| test.rs:129:5:135:5 | exit fn test_if_else (normal) | test.rs:129:5:135:5 | exit fn test_if_else | | +| test.rs:129:21:129:21 | n | test.rs:129:21:129:26 | ...: i64 | match | +| test.rs:129:21:129:26 | ...: i64 | test.rs:130:12:130:12 | n | | +| test.rs:129:36:135:5 | { ... } | test.rs:129:5:135:5 | exit fn test_if_else (normal) | | +| test.rs:130:9:134:9 | if ... {...} else {...} | test.rs:129:36:135:5 | { ... } | | | test.rs:130:12:130:12 | n | test.rs:130:17:130:17 | 0 | | | test.rs:130:12:130:17 | ... <= ... | test.rs:131:13:131:13 | 0 | true | | test.rs:130:12:130:17 | ... <= ... | test.rs:133:13:133:13 | n | false | | test.rs:130:17:130:17 | 0 | test.rs:130:12:130:17 | ... <= ... | | -| test.rs:130:19:132:9 | BlockExpr | test.rs:130:9:134:9 | IfExpr | | -| test.rs:131:13:131:13 | 0 | test.rs:130:19:132:9 | BlockExpr | | -| test.rs:132:16:134:9 | BlockExpr | test.rs:130:9:134:9 | IfExpr | | +| test.rs:130:19:132:9 | { ... } | test.rs:130:9:134:9 | if ... {...} else {...} | | +| test.rs:131:13:131:13 | 0 | test.rs:130:19:132:9 | { ... } | | +| test.rs:132:16:134:9 | { ... } | test.rs:130:9:134:9 | if ... {...} else {...} | | | test.rs:133:13:133:13 | n | test.rs:133:17:133:17 | 1 | | -| test.rs:133:13:133:17 | ... - ... | test.rs:132:16:134:9 | BlockExpr | | +| test.rs:133:13:133:17 | ... - ... | test.rs:132:16:134:9 | { ... } | | | test.rs:133:17:133:17 | 1 | test.rs:133:13:133:17 | ... - ... | | -| test.rs:137:5:143:5 | enter test_if_let_else | test.rs:137:25:137:25 | a | | -| test.rs:137:5:143:5 | exit test_if_let_else (normal) | test.rs:137:5:143:5 | exit test_if_let_else | | -| test.rs:137:25:137:25 | a | test.rs:137:25:137:38 | Param | match | -| test.rs:137:25:137:38 | Param | test.rs:138:12:138:26 | LetExpr | | -| test.rs:137:48:143:5 | BlockExpr | test.rs:137:5:143:5 | exit test_if_let_else (normal) | | -| test.rs:138:9:142:9 | IfExpr | test.rs:137:48:143:5 | BlockExpr | | -| test.rs:138:12:138:26 | LetExpr | test.rs:138:26:138:26 | a | | +| test.rs:137:5:143:5 | enter fn test_if_let_else | test.rs:137:25:137:25 | a | | +| test.rs:137:5:143:5 | exit fn test_if_let_else (normal) | test.rs:137:5:143:5 | exit fn test_if_let_else | | +| test.rs:137:25:137:25 | a | test.rs:137:25:137:38 | ...: Option::<...> | match | +| test.rs:137:25:137:38 | ...: Option::<...> | test.rs:138:12:138:26 | let ... = a | | +| test.rs:137:48:143:5 | { ... } | test.rs:137:5:143:5 | exit fn test_if_let_else (normal) | | +| test.rs:138:9:142:9 | if ... {...} else {...} | test.rs:137:48:143:5 | { ... } | | +| test.rs:138:12:138:26 | let ... = a | test.rs:138:26:138:26 | a | | | test.rs:138:16:138:22 | TupleStructPat | test.rs:138:21:138:21 | n | match | | test.rs:138:16:138:22 | TupleStructPat | test.rs:141:13:141:13 | 0 | no-match | | test.rs:138:21:138:21 | n | test.rs:139:13:139:13 | n | match | | test.rs:138:26:138:26 | a | test.rs:138:16:138:22 | TupleStructPat | | -| test.rs:138:28:140:9 | BlockExpr | test.rs:138:9:142:9 | IfExpr | | -| test.rs:139:13:139:13 | n | test.rs:138:28:140:9 | BlockExpr | | -| test.rs:140:16:142:9 | BlockExpr | test.rs:138:9:142:9 | IfExpr | | -| test.rs:141:13:141:13 | 0 | test.rs:140:16:142:9 | BlockExpr | | -| test.rs:145:5:150:5 | enter test_if_let | test.rs:145:20:145:20 | a | | -| test.rs:145:5:150:5 | exit test_if_let (normal) | test.rs:145:5:150:5 | exit test_if_let | | -| test.rs:145:20:145:20 | a | test.rs:145:20:145:33 | Param | match | -| test.rs:145:20:145:33 | Param | test.rs:146:9:148:9 | ExprStmt | | -| test.rs:145:43:150:5 | BlockExpr | test.rs:145:5:150:5 | exit test_if_let (normal) | | -| test.rs:146:9:148:9 | ExprStmt | test.rs:146:12:146:26 | LetExpr | | -| test.rs:146:9:148:9 | IfExpr | test.rs:149:9:149:9 | 0 | | -| test.rs:146:12:146:26 | LetExpr | test.rs:146:26:146:26 | a | | -| test.rs:146:16:146:22 | TupleStructPat | test.rs:146:9:148:9 | IfExpr | no-match | +| test.rs:138:28:140:9 | { ... } | test.rs:138:9:142:9 | if ... {...} else {...} | | +| test.rs:139:13:139:13 | n | test.rs:138:28:140:9 | { ... } | | +| test.rs:140:16:142:9 | { ... } | test.rs:138:9:142:9 | if ... {...} else {...} | | +| test.rs:141:13:141:13 | 0 | test.rs:140:16:142:9 | { ... } | | +| test.rs:145:5:150:5 | enter fn test_if_let | test.rs:145:20:145:20 | a | | +| test.rs:145:5:150:5 | exit fn test_if_let (normal) | test.rs:145:5:150:5 | exit fn test_if_let | | +| test.rs:145:20:145:20 | a | test.rs:145:20:145:33 | ...: Option::<...> | match | +| test.rs:145:20:145:33 | ...: Option::<...> | test.rs:146:9:148:9 | ExprStmt | | +| test.rs:145:43:150:5 | { ... } | test.rs:145:5:150:5 | exit fn test_if_let (normal) | | +| test.rs:146:9:148:9 | ExprStmt | test.rs:146:12:146:26 | let ... = a | | +| test.rs:146:9:148:9 | if ... {...} | test.rs:149:9:149:9 | 0 | | +| test.rs:146:12:146:26 | let ... = a | test.rs:146:26:146:26 | a | | +| test.rs:146:16:146:22 | TupleStructPat | test.rs:146:9:148:9 | if ... {...} | no-match | | test.rs:146:16:146:22 | TupleStructPat | test.rs:146:21:146:21 | n | match | | test.rs:146:21:146:21 | n | test.rs:147:13:147:21 | ExprStmt | match | | test.rs:146:26:146:26 | a | test.rs:146:16:146:22 | TupleStructPat | | -| test.rs:147:13:147:20 | ReturnExpr | test.rs:145:5:150:5 | exit test_if_let (normal) | return | +| test.rs:147:13:147:20 | return n | test.rs:145:5:150:5 | exit fn test_if_let (normal) | return | | test.rs:147:13:147:21 | ExprStmt | test.rs:147:20:147:20 | n | | -| test.rs:147:20:147:20 | n | test.rs:147:13:147:20 | ReturnExpr | | -| test.rs:149:9:149:9 | 0 | test.rs:145:43:150:5 | BlockExpr | | -| test.rs:152:5:158:5 | enter test_nested_if | test.rs:152:23:152:23 | a | | -| test.rs:152:5:158:5 | exit test_nested_if (normal) | test.rs:152:5:158:5 | exit test_nested_if | | -| test.rs:152:23:152:23 | a | test.rs:152:23:152:28 | Param | match | -| test.rs:152:23:152:28 | Param | test.rs:153:16:153:16 | a | | -| test.rs:152:38:158:5 | BlockExpr | test.rs:152:5:158:5 | exit test_nested_if (normal) | | -| test.rs:153:9:157:9 | IfExpr | test.rs:152:38:158:5 | BlockExpr | | -| test.rs:153:13:153:48 | [boolean(false)] IfExpr | test.rs:156:13:156:13 | 0 | false | -| test.rs:153:13:153:48 | [boolean(true)] IfExpr | test.rs:154:13:154:13 | 1 | true | +| test.rs:147:20:147:20 | n | test.rs:147:13:147:20 | return n | | +| test.rs:149:9:149:9 | 0 | test.rs:145:43:150:5 | { ... } | | +| test.rs:152:5:158:5 | enter fn test_nested_if | test.rs:152:23:152:23 | a | | +| test.rs:152:5:158:5 | exit fn test_nested_if (normal) | test.rs:152:5:158:5 | exit fn test_nested_if | | +| test.rs:152:23:152:23 | a | test.rs:152:23:152:28 | ...: i64 | match | +| test.rs:152:23:152:28 | ...: i64 | test.rs:153:16:153:16 | a | | +| test.rs:152:38:158:5 | { ... } | test.rs:152:5:158:5 | exit fn test_nested_if (normal) | | +| test.rs:153:9:157:9 | if ... {...} else {...} | test.rs:152:38:158:5 | { ... } | | +| test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} | test.rs:156:13:156:13 | 0 | false | +| test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} | test.rs:154:13:154:13 | 1 | true | | test.rs:153:16:153:16 | a | test.rs:153:20:153:20 | 0 | | | test.rs:153:16:153:20 | ... < ... | test.rs:153:24:153:24 | a | true | | test.rs:153:16:153:20 | ... < ... | test.rs:153:41:153:41 | a | false | | test.rs:153:20:153:20 | 0 | test.rs:153:16:153:20 | ... < ... | | -| test.rs:153:22:153:32 | [boolean(false)] BlockExpr | test.rs:153:13:153:48 | [boolean(false)] IfExpr | false | -| test.rs:153:22:153:32 | [boolean(true)] BlockExpr | test.rs:153:13:153:48 | [boolean(true)] IfExpr | true | +| test.rs:153:22:153:32 | [boolean(false)] { ... } | test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} | false | +| test.rs:153:22:153:32 | [boolean(true)] { ... } | test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} | true | | test.rs:153:24:153:24 | a | test.rs:153:29:153:30 | 10 | | -| test.rs:153:24:153:30 | ... < ... | test.rs:153:22:153:32 | [boolean(false)] BlockExpr | false | -| test.rs:153:24:153:30 | ... < ... | test.rs:153:22:153:32 | [boolean(true)] BlockExpr | true | +| test.rs:153:24:153:30 | ... < ... | test.rs:153:22:153:32 | [boolean(false)] { ... } | false | +| test.rs:153:24:153:30 | ... < ... | test.rs:153:22:153:32 | [boolean(true)] { ... } | true | | test.rs:153:28:153:30 | - ... | test.rs:153:24:153:30 | ... < ... | | | test.rs:153:29:153:30 | 10 | test.rs:153:28:153:30 | - ... | | -| test.rs:153:39:153:48 | [boolean(false)] BlockExpr | test.rs:153:13:153:48 | [boolean(false)] IfExpr | false | -| test.rs:153:39:153:48 | [boolean(true)] BlockExpr | test.rs:153:13:153:48 | [boolean(true)] IfExpr | true | +| test.rs:153:39:153:48 | [boolean(false)] { ... } | test.rs:153:13:153:48 | [boolean(false)] if ... {...} else {...} | false | +| test.rs:153:39:153:48 | [boolean(true)] { ... } | test.rs:153:13:153:48 | [boolean(true)] if ... {...} else {...} | true | | test.rs:153:41:153:41 | a | test.rs:153:45:153:46 | 10 | | -| test.rs:153:41:153:46 | ... > ... | test.rs:153:39:153:48 | [boolean(false)] BlockExpr | false | -| test.rs:153:41:153:46 | ... > ... | test.rs:153:39:153:48 | [boolean(true)] BlockExpr | true | +| test.rs:153:41:153:46 | ... > ... | test.rs:153:39:153:48 | [boolean(false)] { ... } | false | +| test.rs:153:41:153:46 | ... > ... | test.rs:153:39:153:48 | [boolean(true)] { ... } | true | | test.rs:153:45:153:46 | 10 | test.rs:153:41:153:46 | ... > ... | | -| test.rs:153:51:155:9 | BlockExpr | test.rs:153:9:157:9 | IfExpr | | -| test.rs:154:13:154:13 | 1 | test.rs:153:51:155:9 | BlockExpr | | -| test.rs:155:16:157:9 | BlockExpr | test.rs:153:9:157:9 | IfExpr | | -| test.rs:156:13:156:13 | 0 | test.rs:155:16:157:9 | BlockExpr | | -| test.rs:160:5:169:5 | enter test_nested_if_match | test.rs:160:29:160:29 | a | | -| test.rs:160:5:169:5 | exit test_nested_if_match (normal) | test.rs:160:5:169:5 | exit test_nested_if_match | | -| test.rs:160:29:160:29 | a | test.rs:160:29:160:34 | Param | match | -| test.rs:160:29:160:34 | Param | test.rs:161:19:161:19 | a | | -| test.rs:160:44:169:5 | BlockExpr | test.rs:160:5:169:5 | exit test_nested_if_match (normal) | | -| test.rs:161:9:168:9 | IfExpr | test.rs:160:44:169:5 | BlockExpr | | -| test.rs:161:13:164:9 | [boolean(false)] MatchExpr | test.rs:167:13:167:13 | 0 | false | -| test.rs:161:13:164:9 | [boolean(true)] MatchExpr | test.rs:165:13:165:13 | 1 | true | +| test.rs:153:51:155:9 | { ... } | test.rs:153:9:157:9 | if ... {...} else {...} | | +| test.rs:154:13:154:13 | 1 | test.rs:153:51:155:9 | { ... } | | +| test.rs:155:16:157:9 | { ... } | test.rs:153:9:157:9 | if ... {...} else {...} | | +| test.rs:156:13:156:13 | 0 | test.rs:155:16:157:9 | { ... } | | +| test.rs:160:5:169:5 | enter fn test_nested_if_match | test.rs:160:29:160:29 | a | | +| test.rs:160:5:169:5 | exit fn test_nested_if_match (normal) | test.rs:160:5:169:5 | exit fn test_nested_if_match | | +| test.rs:160:29:160:29 | a | test.rs:160:29:160:34 | ...: i64 | match | +| test.rs:160:29:160:34 | ...: i64 | test.rs:161:19:161:19 | a | | +| test.rs:160:44:169:5 | { ... } | test.rs:160:5:169:5 | exit fn test_nested_if_match (normal) | | +| test.rs:161:9:168:9 | if ... {...} else {...} | test.rs:160:44:169:5 | { ... } | | +| test.rs:161:13:164:9 | [boolean(false)] match a { ... } | test.rs:167:13:167:13 | 0 | false | +| test.rs:161:13:164:9 | [boolean(true)] match a { ... } | test.rs:165:13:165:13 | 1 | true | | test.rs:161:19:161:19 | a | test.rs:162:13:162:13 | 0 | | -| test.rs:162:13:162:13 | 0 | test.rs:162:13:162:13 | LiteralPat | | -| test.rs:162:13:162:13 | LiteralPat | test.rs:162:18:162:21 | true | match | -| test.rs:162:13:162:13 | LiteralPat | test.rs:163:13:163:13 | WildcardPat | no-match | -| test.rs:162:18:162:21 | true | test.rs:161:13:164:9 | [boolean(true)] MatchExpr | true | -| test.rs:163:13:163:13 | WildcardPat | test.rs:163:18:163:22 | false | match | -| test.rs:163:18:163:22 | false | test.rs:161:13:164:9 | [boolean(false)] MatchExpr | false | -| test.rs:164:12:166:9 | BlockExpr | test.rs:161:9:168:9 | IfExpr | | -| test.rs:165:13:165:13 | 1 | test.rs:164:12:166:9 | BlockExpr | | -| test.rs:166:16:168:9 | BlockExpr | test.rs:161:9:168:9 | IfExpr | | -| test.rs:167:13:167:13 | 0 | test.rs:166:16:168:9 | BlockExpr | | -| test.rs:171:5:180:5 | enter test_nested_if_block | test.rs:171:29:171:29 | a | | -| test.rs:171:5:180:5 | exit test_nested_if_block (normal) | test.rs:171:5:180:5 | exit test_nested_if_block | | -| test.rs:171:29:171:29 | a | test.rs:171:29:171:34 | Param | match | -| test.rs:171:29:171:34 | Param | test.rs:173:13:173:15 | ExprStmt | | -| test.rs:171:44:180:5 | BlockExpr | test.rs:171:5:180:5 | exit test_nested_if_block (normal) | | -| test.rs:172:9:179:9 | IfExpr | test.rs:171:44:180:5 | BlockExpr | | -| test.rs:172:12:175:9 | [boolean(false)] BlockExpr | test.rs:178:13:178:13 | 0 | false | -| test.rs:172:12:175:9 | [boolean(true)] BlockExpr | test.rs:176:13:176:13 | 1 | true | +| test.rs:162:13:162:13 | 0 | test.rs:162:13:162:13 | 0 | | +| test.rs:162:13:162:13 | 0 | test.rs:162:18:162:21 | true | match | +| test.rs:162:13:162:13 | 0 | test.rs:163:13:163:13 | _ | no-match | +| test.rs:162:18:162:21 | true | test.rs:161:13:164:9 | [boolean(true)] match a { ... } | true | +| test.rs:163:13:163:13 | _ | test.rs:163:18:163:22 | false | match | +| test.rs:163:18:163:22 | false | test.rs:161:13:164:9 | [boolean(false)] match a { ... } | false | +| test.rs:164:12:166:9 | { ... } | test.rs:161:9:168:9 | if ... {...} else {...} | | +| test.rs:165:13:165:13 | 1 | test.rs:164:12:166:9 | { ... } | | +| test.rs:166:16:168:9 | { ... } | test.rs:161:9:168:9 | if ... {...} else {...} | | +| test.rs:167:13:167:13 | 0 | test.rs:166:16:168:9 | { ... } | | +| test.rs:171:5:180:5 | enter fn test_nested_if_block | test.rs:171:29:171:29 | a | | +| test.rs:171:5:180:5 | exit fn test_nested_if_block (normal) | test.rs:171:5:180:5 | exit fn test_nested_if_block | | +| test.rs:171:29:171:29 | a | test.rs:171:29:171:34 | ...: i64 | match | +| test.rs:171:29:171:34 | ...: i64 | test.rs:173:13:173:15 | ExprStmt | | +| test.rs:171:44:180:5 | { ... } | test.rs:171:5:180:5 | exit fn test_nested_if_block (normal) | | +| test.rs:172:9:179:9 | if ... {...} else {...} | test.rs:171:44:180:5 | { ... } | | +| test.rs:172:12:175:9 | [boolean(false)] { ... } | test.rs:178:13:178:13 | 0 | false | +| test.rs:172:12:175:9 | [boolean(true)] { ... } | test.rs:176:13:176:13 | 1 | true | | test.rs:173:13:173:14 | TupleExpr | test.rs:174:13:174:13 | a | | | test.rs:173:13:173:15 | ExprStmt | test.rs:173:13:173:14 | TupleExpr | | | test.rs:174:13:174:13 | a | test.rs:174:17:174:17 | 0 | | -| test.rs:174:13:174:17 | ... > ... | test.rs:172:12:175:9 | [boolean(false)] BlockExpr | false | -| test.rs:174:13:174:17 | ... > ... | test.rs:172:12:175:9 | [boolean(true)] BlockExpr | true | +| test.rs:174:13:174:17 | ... > ... | test.rs:172:12:175:9 | [boolean(false)] { ... } | false | +| test.rs:174:13:174:17 | ... > ... | test.rs:172:12:175:9 | [boolean(true)] { ... } | true | | test.rs:174:17:174:17 | 0 | test.rs:174:13:174:17 | ... > ... | | -| test.rs:175:11:177:9 | BlockExpr | test.rs:172:9:179:9 | IfExpr | | -| test.rs:176:13:176:13 | 1 | test.rs:175:11:177:9 | BlockExpr | | -| test.rs:177:16:179:9 | BlockExpr | test.rs:172:9:179:9 | IfExpr | | -| test.rs:178:13:178:13 | 0 | test.rs:177:16:179:9 | BlockExpr | | -| test.rs:182:5:192:5 | enter test_if_assignment | test.rs:182:27:182:27 | a | | -| test.rs:182:5:192:5 | exit test_if_assignment (normal) | test.rs:182:5:192:5 | exit test_if_assignment | | -| test.rs:182:27:182:27 | a | test.rs:182:27:182:32 | Param | match | -| test.rs:182:27:182:32 | Param | test.rs:183:9:183:26 | LetStmt | | -| test.rs:182:42:192:5 | BlockExpr | test.rs:182:5:192:5 | exit test_if_assignment (normal) | | -| test.rs:183:9:183:26 | LetStmt | test.rs:183:21:183:25 | false | | +| test.rs:175:11:177:9 | { ... } | test.rs:172:9:179:9 | if ... {...} else {...} | | +| test.rs:176:13:176:13 | 1 | test.rs:175:11:177:9 | { ... } | | +| test.rs:177:16:179:9 | { ... } | test.rs:172:9:179:9 | if ... {...} else {...} | | +| test.rs:178:13:178:13 | 0 | test.rs:177:16:179:9 | { ... } | | +| test.rs:182:5:192:5 | enter fn test_if_assignment | test.rs:182:27:182:27 | a | | +| test.rs:182:5:192:5 | exit fn test_if_assignment (normal) | test.rs:182:5:192:5 | exit fn test_if_assignment | | +| test.rs:182:27:182:27 | a | test.rs:182:27:182:32 | ...: i64 | match | +| test.rs:182:27:182:32 | ...: i64 | test.rs:183:9:183:26 | let ... = false | | +| test.rs:182:42:192:5 | { ... } | test.rs:182:5:192:5 | exit fn test_if_assignment (normal) | | +| test.rs:183:9:183:26 | let ... = false | test.rs:183:21:183:25 | false | | | test.rs:183:13:183:17 | x | test.rs:185:13:185:21 | ExprStmt | match | | test.rs:183:21:183:25 | false | test.rs:183:13:183:17 | x | | -| test.rs:184:9:191:9 | IfExpr | test.rs:182:42:192:5 | BlockExpr | | -| test.rs:184:12:187:9 | [boolean(false)] BlockExpr | test.rs:190:13:190:13 | 0 | false | -| test.rs:184:12:187:9 | [boolean(true)] BlockExpr | test.rs:188:13:188:13 | 1 | true | +| test.rs:184:9:191:9 | if ... {...} else {...} | test.rs:182:42:192:5 | { ... } | | +| test.rs:184:12:187:9 | [boolean(false)] { ... } | test.rs:190:13:190:13 | 0 | false | +| test.rs:184:12:187:9 | [boolean(true)] { ... } | test.rs:188:13:188:13 | 1 | true | | test.rs:185:13:185:13 | x | test.rs:185:17:185:20 | true | | | test.rs:185:13:185:20 | ... = ... | test.rs:186:13:186:13 | x | | | test.rs:185:13:185:21 | ExprStmt | test.rs:185:13:185:13 | x | | | test.rs:185:17:185:20 | true | test.rs:185:13:185:20 | ... = ... | | -| test.rs:186:13:186:13 | x | test.rs:184:12:187:9 | [boolean(false)] BlockExpr | false | -| test.rs:186:13:186:13 | x | test.rs:184:12:187:9 | [boolean(true)] BlockExpr | true | -| test.rs:187:11:189:9 | BlockExpr | test.rs:184:9:191:9 | IfExpr | | -| test.rs:188:13:188:13 | 1 | test.rs:187:11:189:9 | BlockExpr | | -| test.rs:189:16:191:9 | BlockExpr | test.rs:184:9:191:9 | IfExpr | | -| test.rs:190:13:190:13 | 0 | test.rs:189:16:191:9 | BlockExpr | | -| test.rs:194:5:205:5 | enter test_if_loop1 | test.rs:194:22:194:22 | a | | -| test.rs:194:5:205:5 | exit test_if_loop1 (normal) | test.rs:194:5:205:5 | exit test_if_loop1 | | -| test.rs:194:22:194:22 | a | test.rs:194:22:194:27 | Param | match | -| test.rs:194:22:194:27 | Param | test.rs:196:13:198:14 | ExprStmt | | -| test.rs:194:37:205:5 | BlockExpr | test.rs:194:5:205:5 | exit test_if_loop1 (normal) | | -| test.rs:195:9:204:9 | IfExpr | test.rs:194:37:205:5 | BlockExpr | | -| test.rs:195:13:200:9 | [boolean(false)] LoopExpr | test.rs:203:13:203:13 | 0 | false | -| test.rs:195:13:200:9 | [boolean(true)] LoopExpr | test.rs:201:13:201:13 | 1 | true | -| test.rs:195:18:200:9 | BlockExpr | test.rs:196:13:198:14 | ExprStmt | | -| test.rs:196:13:198:13 | IfExpr | test.rs:199:13:199:19 | ExprStmt | | +| test.rs:186:13:186:13 | x | test.rs:184:12:187:9 | [boolean(false)] { ... } | false | +| test.rs:186:13:186:13 | x | test.rs:184:12:187:9 | [boolean(true)] { ... } | true | +| test.rs:187:11:189:9 | { ... } | test.rs:184:9:191:9 | if ... {...} else {...} | | +| test.rs:188:13:188:13 | 1 | test.rs:187:11:189:9 | { ... } | | +| test.rs:189:16:191:9 | { ... } | test.rs:184:9:191:9 | if ... {...} else {...} | | +| test.rs:190:13:190:13 | 0 | test.rs:189:16:191:9 | { ... } | | +| test.rs:194:5:205:5 | enter fn test_if_loop1 | test.rs:194:22:194:22 | a | | +| test.rs:194:5:205:5 | exit fn test_if_loop1 (normal) | test.rs:194:5:205:5 | exit fn test_if_loop1 | | +| test.rs:194:22:194:22 | a | test.rs:194:22:194:27 | ...: i64 | match | +| test.rs:194:22:194:27 | ...: i64 | test.rs:196:13:198:14 | ExprStmt | | +| test.rs:194:37:205:5 | { ... } | test.rs:194:5:205:5 | exit fn test_if_loop1 (normal) | | +| test.rs:195:9:204:9 | if ... {...} else {...} | test.rs:194:37:205:5 | { ... } | | +| test.rs:195:13:200:9 | [boolean(false)] loop { ... } | test.rs:203:13:203:13 | 0 | false | +| test.rs:195:13:200:9 | [boolean(true)] loop { ... } | test.rs:201:13:201:13 | 1 | true | +| test.rs:195:18:200:9 | { ... } | test.rs:196:13:198:14 | ExprStmt | | +| test.rs:196:13:198:13 | if ... {...} | test.rs:199:13:199:19 | ExprStmt | | | test.rs:196:13:198:14 | ExprStmt | test.rs:196:16:196:16 | a | | | test.rs:196:16:196:16 | a | test.rs:196:20:196:20 | 0 | | -| test.rs:196:16:196:20 | ... > ... | test.rs:196:13:198:13 | IfExpr | false | +| test.rs:196:16:196:20 | ... > ... | test.rs:196:13:198:13 | if ... {...} | false | | test.rs:196:16:196:20 | ... > ... | test.rs:197:17:197:29 | ExprStmt | true | | test.rs:196:20:196:20 | 0 | test.rs:196:16:196:20 | ... > ... | | -| test.rs:197:17:197:28 | [boolean(false)] BreakExpr | test.rs:195:13:200:9 | [boolean(false)] LoopExpr | break | -| test.rs:197:17:197:28 | [boolean(true)] BreakExpr | test.rs:195:13:200:9 | [boolean(true)] LoopExpr | break | +| test.rs:197:17:197:28 | [boolean(false)] break ... | test.rs:195:13:200:9 | [boolean(false)] loop { ... } | break | +| test.rs:197:17:197:28 | [boolean(true)] break ... | test.rs:195:13:200:9 | [boolean(true)] loop { ... } | break | | test.rs:197:17:197:29 | ExprStmt | test.rs:197:23:197:23 | a | | | test.rs:197:23:197:23 | a | test.rs:197:27:197:28 | 10 | | -| test.rs:197:23:197:28 | ... > ... | test.rs:197:17:197:28 | [boolean(false)] BreakExpr | false | -| test.rs:197:23:197:28 | ... > ... | test.rs:197:17:197:28 | [boolean(true)] BreakExpr | true | +| test.rs:197:23:197:28 | ... > ... | test.rs:197:17:197:28 | [boolean(false)] break ... | false | +| test.rs:197:23:197:28 | ... > ... | test.rs:197:17:197:28 | [boolean(true)] break ... | true | | test.rs:197:27:197:28 | 10 | test.rs:197:23:197:28 | ... > ... | | | test.rs:199:13:199:13 | a | test.rs:199:17:199:18 | 10 | | -| test.rs:199:13:199:18 | ... < ... | test.rs:195:18:200:9 | BlockExpr | | +| test.rs:199:13:199:18 | ... < ... | test.rs:195:18:200:9 | { ... } | | | test.rs:199:13:199:19 | ExprStmt | test.rs:199:13:199:13 | a | | | test.rs:199:17:199:18 | 10 | test.rs:199:13:199:18 | ... < ... | | -| test.rs:200:12:202:9 | BlockExpr | test.rs:195:9:204:9 | IfExpr | | -| test.rs:201:13:201:13 | 1 | test.rs:200:12:202:9 | BlockExpr | | -| test.rs:202:16:204:9 | BlockExpr | test.rs:195:9:204:9 | IfExpr | | -| test.rs:203:13:203:13 | 0 | test.rs:202:16:204:9 | BlockExpr | | -| test.rs:207:5:218:5 | enter test_if_loop2 | test.rs:207:22:207:22 | a | | -| test.rs:207:5:218:5 | exit test_if_loop2 (normal) | test.rs:207:5:218:5 | exit test_if_loop2 | | -| test.rs:207:22:207:22 | a | test.rs:207:22:207:27 | Param | match | -| test.rs:207:22:207:27 | Param | test.rs:209:13:211:14 | ExprStmt | | -| test.rs:207:37:218:5 | BlockExpr | test.rs:207:5:218:5 | exit test_if_loop2 (normal) | | -| test.rs:208:9:217:9 | IfExpr | test.rs:207:37:218:5 | BlockExpr | | -| test.rs:208:13:213:9 | [boolean(false)] LoopExpr | test.rs:216:13:216:13 | 0 | false | -| test.rs:208:13:213:9 | [boolean(true)] LoopExpr | test.rs:214:13:214:13 | 1 | true | -| test.rs:208:26:213:9 | BlockExpr | test.rs:209:13:211:14 | ExprStmt | | -| test.rs:209:13:211:13 | IfExpr | test.rs:212:13:212:19 | ExprStmt | | +| test.rs:200:12:202:9 | { ... } | test.rs:195:9:204:9 | if ... {...} else {...} | | +| test.rs:201:13:201:13 | 1 | test.rs:200:12:202:9 | { ... } | | +| test.rs:202:16:204:9 | { ... } | test.rs:195:9:204:9 | if ... {...} else {...} | | +| test.rs:203:13:203:13 | 0 | test.rs:202:16:204:9 | { ... } | | +| test.rs:207:5:218:5 | enter fn test_if_loop2 | test.rs:207:22:207:22 | a | | +| test.rs:207:5:218:5 | exit fn test_if_loop2 (normal) | test.rs:207:5:218:5 | exit fn test_if_loop2 | | +| test.rs:207:22:207:22 | a | test.rs:207:22:207:27 | ...: i64 | match | +| test.rs:207:22:207:27 | ...: i64 | test.rs:209:13:211:14 | ExprStmt | | +| test.rs:207:37:218:5 | { ... } | test.rs:207:5:218:5 | exit fn test_if_loop2 (normal) | | +| test.rs:208:9:217:9 | if ... {...} else {...} | test.rs:207:37:218:5 | { ... } | | +| test.rs:208:13:213:9 | [boolean(false)] 'label: loop { ... } | test.rs:216:13:216:13 | 0 | false | +| test.rs:208:13:213:9 | [boolean(true)] 'label: loop { ... } | test.rs:214:13:214:13 | 1 | true | +| test.rs:208:26:213:9 | { ... } | test.rs:209:13:211:14 | ExprStmt | | +| test.rs:209:13:211:13 | if ... {...} | test.rs:212:13:212:19 | ExprStmt | | | test.rs:209:13:211:14 | ExprStmt | test.rs:209:16:209:16 | a | | | test.rs:209:16:209:16 | a | test.rs:209:20:209:20 | 0 | | -| test.rs:209:16:209:20 | ... > ... | test.rs:209:13:211:13 | IfExpr | false | +| test.rs:209:16:209:20 | ... > ... | test.rs:209:13:211:13 | if ... {...} | false | | test.rs:209:16:209:20 | ... > ... | test.rs:210:17:210:36 | ExprStmt | true | | test.rs:209:20:209:20 | 0 | test.rs:209:16:209:20 | ... > ... | | -| test.rs:210:17:210:35 | [boolean(false)] BreakExpr | test.rs:208:13:213:9 | [boolean(false)] LoopExpr | break | -| test.rs:210:17:210:35 | [boolean(true)] BreakExpr | test.rs:208:13:213:9 | [boolean(true)] LoopExpr | break | +| test.rs:210:17:210:35 | [boolean(false)] break ''label ... | test.rs:208:13:213:9 | [boolean(false)] 'label: loop { ... } | break | +| test.rs:210:17:210:35 | [boolean(true)] break ''label ... | test.rs:208:13:213:9 | [boolean(true)] 'label: loop { ... } | break | | test.rs:210:17:210:36 | ExprStmt | test.rs:210:30:210:30 | a | | | test.rs:210:30:210:30 | a | test.rs:210:34:210:35 | 10 | | -| test.rs:210:30:210:35 | ... > ... | test.rs:210:17:210:35 | [boolean(false)] BreakExpr | false | -| test.rs:210:30:210:35 | ... > ... | test.rs:210:17:210:35 | [boolean(true)] BreakExpr | true | +| test.rs:210:30:210:35 | ... > ... | test.rs:210:17:210:35 | [boolean(false)] break ''label ... | false | +| test.rs:210:30:210:35 | ... > ... | test.rs:210:17:210:35 | [boolean(true)] break ''label ... | true | | test.rs:210:34:210:35 | 10 | test.rs:210:30:210:35 | ... > ... | | | test.rs:212:13:212:13 | a | test.rs:212:17:212:18 | 10 | | -| test.rs:212:13:212:18 | ... < ... | test.rs:208:26:213:9 | BlockExpr | | +| test.rs:212:13:212:18 | ... < ... | test.rs:208:26:213:9 | { ... } | | | test.rs:212:13:212:19 | ExprStmt | test.rs:212:13:212:13 | a | | | test.rs:212:17:212:18 | 10 | test.rs:212:13:212:18 | ... < ... | | -| test.rs:213:12:215:9 | BlockExpr | test.rs:208:9:217:9 | IfExpr | | -| test.rs:214:13:214:13 | 1 | test.rs:213:12:215:9 | BlockExpr | | -| test.rs:215:16:217:9 | BlockExpr | test.rs:208:9:217:9 | IfExpr | | -| test.rs:216:13:216:13 | 0 | test.rs:215:16:217:9 | BlockExpr | | -| test.rs:220:5:228:5 | enter test_labelled_block | test.rs:220:28:220:28 | a | | -| test.rs:220:5:228:5 | exit test_labelled_block (normal) | test.rs:220:5:228:5 | exit test_labelled_block | | -| test.rs:220:28:220:28 | a | test.rs:220:28:220:33 | Param | match | -| test.rs:220:28:220:33 | Param | test.rs:222:13:222:31 | ExprStmt | | -| test.rs:220:43:228:5 | BlockExpr | test.rs:220:5:228:5 | exit test_labelled_block (normal) | | -| test.rs:221:9:227:9 | IfExpr | test.rs:220:43:228:5 | BlockExpr | | -| test.rs:221:13:223:9 | [boolean(false)] BlockExpr | test.rs:226:13:226:13 | 0 | false | -| test.rs:221:13:223:9 | [boolean(true)] BlockExpr | test.rs:224:13:224:13 | 1 | true | -| test.rs:222:13:222:30 | [boolean(false)] BreakExpr | test.rs:221:13:223:9 | [boolean(false)] BlockExpr | break | -| test.rs:222:13:222:30 | [boolean(true)] BreakExpr | test.rs:221:13:223:9 | [boolean(true)] BlockExpr | break | +| test.rs:213:12:215:9 | { ... } | test.rs:208:9:217:9 | if ... {...} else {...} | | +| test.rs:214:13:214:13 | 1 | test.rs:213:12:215:9 | { ... } | | +| test.rs:215:16:217:9 | { ... } | test.rs:208:9:217:9 | if ... {...} else {...} | | +| test.rs:216:13:216:13 | 0 | test.rs:215:16:217:9 | { ... } | | +| test.rs:220:5:228:5 | enter fn test_labelled_block | test.rs:220:28:220:28 | a | | +| test.rs:220:5:228:5 | exit fn test_labelled_block (normal) | test.rs:220:5:228:5 | exit fn test_labelled_block | | +| test.rs:220:28:220:28 | a | test.rs:220:28:220:33 | ...: i64 | match | +| test.rs:220:28:220:33 | ...: i64 | test.rs:222:13:222:31 | ExprStmt | | +| test.rs:220:43:228:5 | { ... } | test.rs:220:5:228:5 | exit fn test_labelled_block (normal) | | +| test.rs:221:9:227:9 | if ... {...} else {...} | test.rs:220:43:228:5 | { ... } | | +| test.rs:221:13:223:9 | [boolean(false)] 'block: { ... } | test.rs:226:13:226:13 | 0 | false | +| test.rs:221:13:223:9 | [boolean(true)] 'block: { ... } | test.rs:224:13:224:13 | 1 | true | +| test.rs:222:13:222:30 | [boolean(false)] break ''block ... | test.rs:221:13:223:9 | [boolean(false)] 'block: { ... } | break | +| test.rs:222:13:222:30 | [boolean(true)] break ''block ... | test.rs:221:13:223:9 | [boolean(true)] 'block: { ... } | break | | test.rs:222:13:222:31 | ExprStmt | test.rs:222:26:222:26 | a | | | test.rs:222:26:222:26 | a | test.rs:222:30:222:30 | 0 | | -| test.rs:222:26:222:30 | ... > ... | test.rs:222:13:222:30 | [boolean(false)] BreakExpr | false | -| test.rs:222:26:222:30 | ... > ... | test.rs:222:13:222:30 | [boolean(true)] BreakExpr | true | +| test.rs:222:26:222:30 | ... > ... | test.rs:222:13:222:30 | [boolean(false)] break ''block ... | false | +| test.rs:222:26:222:30 | ... > ... | test.rs:222:13:222:30 | [boolean(true)] break ''block ... | true | | test.rs:222:30:222:30 | 0 | test.rs:222:26:222:30 | ... > ... | | -| test.rs:223:12:225:9 | BlockExpr | test.rs:221:9:227:9 | IfExpr | | -| test.rs:224:13:224:13 | 1 | test.rs:223:12:225:9 | BlockExpr | | -| test.rs:225:16:227:9 | BlockExpr | test.rs:221:9:227:9 | IfExpr | | -| test.rs:226:13:226:13 | 0 | test.rs:225:16:227:9 | BlockExpr | | -| test.rs:233:5:236:5 | enter test_and_operator | test.rs:233:30:233:30 | a | | -| test.rs:233:5:236:5 | exit test_and_operator (normal) | test.rs:233:5:236:5 | exit test_and_operator | | -| test.rs:233:30:233:30 | a | test.rs:233:30:233:36 | Param | match | -| test.rs:233:30:233:36 | Param | test.rs:233:39:233:39 | b | | -| test.rs:233:39:233:39 | b | test.rs:233:39:233:45 | Param | match | -| test.rs:233:39:233:45 | Param | test.rs:233:48:233:48 | c | | -| test.rs:233:48:233:48 | c | test.rs:233:48:233:54 | Param | match | -| test.rs:233:48:233:54 | Param | test.rs:234:9:234:28 | LetStmt | | -| test.rs:233:65:236:5 | BlockExpr | test.rs:233:5:236:5 | exit test_and_operator (normal) | | -| test.rs:234:9:234:28 | LetStmt | test.rs:234:17:234:17 | a | | +| test.rs:223:12:225:9 | { ... } | test.rs:221:9:227:9 | if ... {...} else {...} | | +| test.rs:224:13:224:13 | 1 | test.rs:223:12:225:9 | { ... } | | +| test.rs:225:16:227:9 | { ... } | test.rs:221:9:227:9 | if ... {...} else {...} | | +| test.rs:226:13:226:13 | 0 | test.rs:225:16:227:9 | { ... } | | +| test.rs:233:5:236:5 | enter fn test_and_operator | test.rs:233:30:233:30 | a | | +| test.rs:233:5:236:5 | exit fn test_and_operator (normal) | test.rs:233:5:236:5 | exit fn test_and_operator | | +| test.rs:233:30:233:30 | a | test.rs:233:30:233:36 | ...: bool | match | +| test.rs:233:30:233:36 | ...: bool | test.rs:233:39:233:39 | b | | +| test.rs:233:39:233:39 | b | test.rs:233:39:233:45 | ...: bool | match | +| test.rs:233:39:233:45 | ...: bool | test.rs:233:48:233:48 | c | | +| test.rs:233:48:233:48 | c | test.rs:233:48:233:54 | ...: bool | match | +| test.rs:233:48:233:54 | ...: bool | test.rs:234:9:234:28 | let ... = ... | | +| test.rs:233:65:236:5 | { ... } | test.rs:233:5:236:5 | exit fn test_and_operator (normal) | | +| test.rs:234:9:234:28 | let ... = ... | test.rs:234:17:234:17 | a | | | test.rs:234:13:234:13 | d | test.rs:235:9:235:9 | d | match | | test.rs:234:17:234:17 | a | test.rs:234:17:234:22 | [boolean(false)] ... && ... | false | | test.rs:234:17:234:17 | a | test.rs:234:22:234:22 | b | true | @@ -483,17 +483,17 @@ edges | test.rs:234:22:234:22 | b | test.rs:234:17:234:22 | [boolean(false)] ... && ... | false | | test.rs:234:22:234:22 | b | test.rs:234:17:234:22 | [boolean(true)] ... && ... | true | | test.rs:234:27:234:27 | c | test.rs:234:17:234:27 | ... && ... | | -| test.rs:235:9:235:9 | d | test.rs:233:65:236:5 | BlockExpr | | -| test.rs:238:5:241:5 | enter test_or_operator | test.rs:238:25:238:25 | a | | -| test.rs:238:5:241:5 | exit test_or_operator (normal) | test.rs:238:5:241:5 | exit test_or_operator | | -| test.rs:238:25:238:25 | a | test.rs:238:25:238:31 | Param | match | -| test.rs:238:25:238:31 | Param | test.rs:238:34:238:34 | b | | -| test.rs:238:34:238:34 | b | test.rs:238:34:238:40 | Param | match | -| test.rs:238:34:238:40 | Param | test.rs:238:43:238:43 | c | | -| test.rs:238:43:238:43 | c | test.rs:238:43:238:49 | Param | match | -| test.rs:238:43:238:49 | Param | test.rs:239:9:239:28 | LetStmt | | -| test.rs:238:60:241:5 | BlockExpr | test.rs:238:5:241:5 | exit test_or_operator (normal) | | -| test.rs:239:9:239:28 | LetStmt | test.rs:239:17:239:17 | a | | +| test.rs:235:9:235:9 | d | test.rs:233:65:236:5 | { ... } | | +| test.rs:238:5:241:5 | enter fn test_or_operator | test.rs:238:25:238:25 | a | | +| test.rs:238:5:241:5 | exit fn test_or_operator (normal) | test.rs:238:5:241:5 | exit fn test_or_operator | | +| test.rs:238:25:238:25 | a | test.rs:238:25:238:31 | ...: bool | match | +| test.rs:238:25:238:31 | ...: bool | test.rs:238:34:238:34 | b | | +| test.rs:238:34:238:34 | b | test.rs:238:34:238:40 | ...: bool | match | +| test.rs:238:34:238:40 | ...: bool | test.rs:238:43:238:43 | c | | +| test.rs:238:43:238:43 | c | test.rs:238:43:238:49 | ...: bool | match | +| test.rs:238:43:238:49 | ...: bool | test.rs:239:9:239:28 | let ... = ... | | +| test.rs:238:60:241:5 | { ... } | test.rs:238:5:241:5 | exit fn test_or_operator (normal) | | +| test.rs:239:9:239:28 | let ... = ... | test.rs:239:17:239:17 | a | | | test.rs:239:13:239:13 | d | test.rs:240:9:240:9 | d | match | | test.rs:239:17:239:17 | a | test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... | true | | test.rs:239:17:239:17 | a | test.rs:239:22:239:22 | b | false | @@ -503,17 +503,17 @@ edges | test.rs:239:22:239:22 | b | test.rs:239:17:239:22 | [boolean(false)] ... \|\| ... | false | | test.rs:239:22:239:22 | b | test.rs:239:17:239:22 | [boolean(true)] ... \|\| ... | true | | test.rs:239:27:239:27 | c | test.rs:239:17:239:27 | ... \|\| ... | | -| test.rs:240:9:240:9 | d | test.rs:238:60:241:5 | BlockExpr | | -| test.rs:243:5:246:5 | enter test_or_operator_2 | test.rs:243:27:243:27 | a | | -| test.rs:243:5:246:5 | exit test_or_operator_2 (normal) | test.rs:243:5:246:5 | exit test_or_operator_2 | | -| test.rs:243:27:243:27 | a | test.rs:243:27:243:33 | Param | match | -| test.rs:243:27:243:33 | Param | test.rs:243:36:243:36 | b | | -| test.rs:243:36:243:36 | b | test.rs:243:36:243:41 | Param | match | -| test.rs:243:36:243:41 | Param | test.rs:243:44:243:44 | c | | -| test.rs:243:44:243:44 | c | test.rs:243:44:243:50 | Param | match | -| test.rs:243:44:243:50 | Param | test.rs:244:9:244:36 | LetStmt | | -| test.rs:243:61:246:5 | BlockExpr | test.rs:243:5:246:5 | exit test_or_operator_2 (normal) | | -| test.rs:244:9:244:36 | LetStmt | test.rs:244:17:244:17 | a | | +| test.rs:240:9:240:9 | d | test.rs:238:60:241:5 | { ... } | | +| test.rs:243:5:246:5 | enter fn test_or_operator_2 | test.rs:243:27:243:27 | a | | +| test.rs:243:5:246:5 | exit fn test_or_operator_2 (normal) | test.rs:243:5:246:5 | exit fn test_or_operator_2 | | +| test.rs:243:27:243:27 | a | test.rs:243:27:243:33 | ...: bool | match | +| test.rs:243:27:243:33 | ...: bool | test.rs:243:36:243:36 | b | | +| test.rs:243:36:243:36 | b | test.rs:243:36:243:41 | ...: i64 | match | +| test.rs:243:36:243:41 | ...: i64 | test.rs:243:44:243:44 | c | | +| test.rs:243:44:243:44 | c | test.rs:243:44:243:50 | ...: bool | match | +| test.rs:243:44:243:50 | ...: bool | test.rs:244:9:244:36 | let ... = ... | | +| test.rs:243:61:246:5 | { ... } | test.rs:243:5:246:5 | exit fn test_or_operator_2 (normal) | | +| test.rs:244:9:244:36 | let ... = ... | test.rs:244:17:244:17 | a | | | test.rs:244:13:244:13 | d | test.rs:245:9:245:9 | d | match | | test.rs:244:17:244:17 | a | test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... | true | | test.rs:244:17:244:17 | a | test.rs:244:23:244:23 | b | false | @@ -525,27 +525,27 @@ edges | test.rs:244:23:244:29 | ... == ... | test.rs:244:17:244:30 | [boolean(true)] ... \|\| ... | true | | test.rs:244:28:244:29 | 28 | test.rs:244:23:244:29 | ... == ... | | | test.rs:244:35:244:35 | c | test.rs:244:17:244:35 | ... \|\| ... | | -| test.rs:245:9:245:9 | d | test.rs:243:61:246:5 | BlockExpr | | -| test.rs:248:5:251:5 | enter test_not_operator | test.rs:248:26:248:26 | a | | -| test.rs:248:5:251:5 | exit test_not_operator (normal) | test.rs:248:5:251:5 | exit test_not_operator | | -| test.rs:248:26:248:26 | a | test.rs:248:26:248:32 | Param | match | -| test.rs:248:26:248:32 | Param | test.rs:249:9:249:19 | LetStmt | | -| test.rs:248:43:251:5 | BlockExpr | test.rs:248:5:251:5 | exit test_not_operator (normal) | | -| test.rs:249:9:249:19 | LetStmt | test.rs:249:18:249:18 | a | | +| test.rs:245:9:245:9 | d | test.rs:243:61:246:5 | { ... } | | +| test.rs:248:5:251:5 | enter fn test_not_operator | test.rs:248:26:248:26 | a | | +| test.rs:248:5:251:5 | exit fn test_not_operator (normal) | test.rs:248:5:251:5 | exit fn test_not_operator | | +| test.rs:248:26:248:26 | a | test.rs:248:26:248:32 | ...: bool | match | +| test.rs:248:26:248:32 | ...: bool | test.rs:249:9:249:19 | let ... = ... | | +| test.rs:248:43:251:5 | { ... } | test.rs:248:5:251:5 | exit fn test_not_operator (normal) | | +| test.rs:249:9:249:19 | let ... = ... | test.rs:249:18:249:18 | a | | | test.rs:249:13:249:13 | d | test.rs:250:9:250:9 | d | match | | test.rs:249:17:249:18 | ! ... | test.rs:249:13:249:13 | d | | | test.rs:249:18:249:18 | a | test.rs:249:17:249:18 | ! ... | | -| test.rs:250:9:250:9 | d | test.rs:248:43:251:5 | BlockExpr | | -| test.rs:253:5:259:5 | enter test_if_and_operator | test.rs:253:29:253:29 | a | | -| test.rs:253:5:259:5 | exit test_if_and_operator (normal) | test.rs:253:5:259:5 | exit test_if_and_operator | | -| test.rs:253:29:253:29 | a | test.rs:253:29:253:35 | Param | match | -| test.rs:253:29:253:35 | Param | test.rs:253:38:253:38 | b | | -| test.rs:253:38:253:38 | b | test.rs:253:38:253:44 | Param | match | -| test.rs:253:38:253:44 | Param | test.rs:253:47:253:47 | c | | -| test.rs:253:47:253:47 | c | test.rs:253:47:253:53 | Param | match | -| test.rs:253:47:253:53 | Param | test.rs:254:12:254:12 | a | | -| test.rs:253:64:259:5 | BlockExpr | test.rs:253:5:259:5 | exit test_if_and_operator (normal) | | -| test.rs:254:9:258:9 | IfExpr | test.rs:253:64:259:5 | BlockExpr | | +| test.rs:250:9:250:9 | d | test.rs:248:43:251:5 | { ... } | | +| test.rs:253:5:259:5 | enter fn test_if_and_operator | test.rs:253:29:253:29 | a | | +| test.rs:253:5:259:5 | exit fn test_if_and_operator (normal) | test.rs:253:5:259:5 | exit fn test_if_and_operator | | +| test.rs:253:29:253:29 | a | test.rs:253:29:253:35 | ...: bool | match | +| test.rs:253:29:253:35 | ...: bool | test.rs:253:38:253:38 | b | | +| test.rs:253:38:253:38 | b | test.rs:253:38:253:44 | ...: bool | match | +| test.rs:253:38:253:44 | ...: bool | test.rs:253:47:253:47 | c | | +| test.rs:253:47:253:47 | c | test.rs:253:47:253:53 | ...: bool | match | +| test.rs:253:47:253:53 | ...: bool | test.rs:254:12:254:12 | a | | +| test.rs:253:64:259:5 | { ... } | test.rs:253:5:259:5 | exit fn test_if_and_operator (normal) | | +| test.rs:254:9:258:9 | if ... {...} else {...} | test.rs:253:64:259:5 | { ... } | | | test.rs:254:12:254:12 | a | test.rs:254:12:254:17 | [boolean(false)] ... && ... | false | | test.rs:254:12:254:12 | a | test.rs:254:17:254:17 | b | true | | test.rs:254:12:254:17 | [boolean(false)] ... && ... | test.rs:254:12:254:22 | [boolean(false)] ... && ... | false | @@ -556,20 +556,20 @@ edges | test.rs:254:17:254:17 | b | test.rs:254:12:254:17 | [boolean(true)] ... && ... | true | | test.rs:254:22:254:22 | c | test.rs:254:12:254:22 | [boolean(false)] ... && ... | false | | test.rs:254:22:254:22 | c | test.rs:254:12:254:22 | [boolean(true)] ... && ... | true | -| test.rs:254:24:256:9 | BlockExpr | test.rs:254:9:258:9 | IfExpr | | -| test.rs:255:13:255:16 | true | test.rs:254:24:256:9 | BlockExpr | | -| test.rs:256:16:258:9 | BlockExpr | test.rs:254:9:258:9 | IfExpr | | -| test.rs:257:13:257:17 | false | test.rs:256:16:258:9 | BlockExpr | | -| test.rs:261:5:267:5 | enter test_if_or_operator | test.rs:261:28:261:28 | a | | -| test.rs:261:5:267:5 | exit test_if_or_operator (normal) | test.rs:261:5:267:5 | exit test_if_or_operator | | -| test.rs:261:28:261:28 | a | test.rs:261:28:261:34 | Param | match | -| test.rs:261:28:261:34 | Param | test.rs:261:37:261:37 | b | | -| test.rs:261:37:261:37 | b | test.rs:261:37:261:43 | Param | match | -| test.rs:261:37:261:43 | Param | test.rs:261:46:261:46 | c | | -| test.rs:261:46:261:46 | c | test.rs:261:46:261:52 | Param | match | -| test.rs:261:46:261:52 | Param | test.rs:262:12:262:12 | a | | -| test.rs:261:63:267:5 | BlockExpr | test.rs:261:5:267:5 | exit test_if_or_operator (normal) | | -| test.rs:262:9:266:9 | IfExpr | test.rs:261:63:267:5 | BlockExpr | | +| test.rs:254:24:256:9 | { ... } | test.rs:254:9:258:9 | if ... {...} else {...} | | +| test.rs:255:13:255:16 | true | test.rs:254:24:256:9 | { ... } | | +| test.rs:256:16:258:9 | { ... } | test.rs:254:9:258:9 | if ... {...} else {...} | | +| test.rs:257:13:257:17 | false | test.rs:256:16:258:9 | { ... } | | +| test.rs:261:5:267:5 | enter fn test_if_or_operator | test.rs:261:28:261:28 | a | | +| test.rs:261:5:267:5 | exit fn test_if_or_operator (normal) | test.rs:261:5:267:5 | exit fn test_if_or_operator | | +| test.rs:261:28:261:28 | a | test.rs:261:28:261:34 | ...: bool | match | +| test.rs:261:28:261:34 | ...: bool | test.rs:261:37:261:37 | b | | +| test.rs:261:37:261:37 | b | test.rs:261:37:261:43 | ...: bool | match | +| test.rs:261:37:261:43 | ...: bool | test.rs:261:46:261:46 | c | | +| test.rs:261:46:261:46 | c | test.rs:261:46:261:52 | ...: bool | match | +| test.rs:261:46:261:52 | ...: bool | test.rs:262:12:262:12 | a | | +| test.rs:261:63:267:5 | { ... } | test.rs:261:5:267:5 | exit fn test_if_or_operator (normal) | | +| test.rs:262:9:266:9 | if ... {...} else {...} | test.rs:261:63:267:5 | { ... } | | | test.rs:262:12:262:12 | a | test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... | true | | test.rs:262:12:262:12 | a | test.rs:262:17:262:17 | b | false | | test.rs:262:12:262:17 | [boolean(false)] ... \|\| ... | test.rs:262:22:262:22 | c | false | @@ -580,89 +580,89 @@ edges | test.rs:262:17:262:17 | b | test.rs:262:12:262:17 | [boolean(true)] ... \|\| ... | true | | test.rs:262:22:262:22 | c | test.rs:262:12:262:22 | [boolean(false)] ... \|\| ... | false | | test.rs:262:22:262:22 | c | test.rs:262:12:262:22 | [boolean(true)] ... \|\| ... | true | -| test.rs:262:24:264:9 | BlockExpr | test.rs:262:9:266:9 | IfExpr | | -| test.rs:263:13:263:16 | true | test.rs:262:24:264:9 | BlockExpr | | -| test.rs:264:16:266:9 | BlockExpr | test.rs:262:9:266:9 | IfExpr | | -| test.rs:265:13:265:17 | false | test.rs:264:16:266:9 | BlockExpr | | -| test.rs:269:5:275:5 | enter test_if_not_operator | test.rs:269:29:269:29 | a | | -| test.rs:269:5:275:5 | exit test_if_not_operator (normal) | test.rs:269:5:275:5 | exit test_if_not_operator | | -| test.rs:269:29:269:29 | a | test.rs:269:29:269:35 | Param | match | -| test.rs:269:29:269:35 | Param | test.rs:270:13:270:13 | a | | -| test.rs:269:46:275:5 | BlockExpr | test.rs:269:5:275:5 | exit test_if_not_operator (normal) | | -| test.rs:270:9:274:9 | IfExpr | test.rs:269:46:275:5 | BlockExpr | | +| test.rs:262:24:264:9 | { ... } | test.rs:262:9:266:9 | if ... {...} else {...} | | +| test.rs:263:13:263:16 | true | test.rs:262:24:264:9 | { ... } | | +| test.rs:264:16:266:9 | { ... } | test.rs:262:9:266:9 | if ... {...} else {...} | | +| test.rs:265:13:265:17 | false | test.rs:264:16:266:9 | { ... } | | +| test.rs:269:5:275:5 | enter fn test_if_not_operator | test.rs:269:29:269:29 | a | | +| test.rs:269:5:275:5 | exit fn test_if_not_operator (normal) | test.rs:269:5:275:5 | exit fn test_if_not_operator | | +| test.rs:269:29:269:29 | a | test.rs:269:29:269:35 | ...: bool | match | +| test.rs:269:29:269:35 | ...: bool | test.rs:270:13:270:13 | a | | +| test.rs:269:46:275:5 | { ... } | test.rs:269:5:275:5 | exit fn test_if_not_operator (normal) | | +| test.rs:270:9:274:9 | if ... {...} else {...} | test.rs:269:46:275:5 | { ... } | | | test.rs:270:12:270:13 | [boolean(false)] ! ... | test.rs:273:13:273:17 | false | false | | test.rs:270:12:270:13 | [boolean(true)] ! ... | test.rs:271:13:271:16 | true | true | | test.rs:270:13:270:13 | a | test.rs:270:12:270:13 | [boolean(false)] ! ... | true | | test.rs:270:13:270:13 | a | test.rs:270:12:270:13 | [boolean(true)] ! ... | false | -| test.rs:270:15:272:9 | BlockExpr | test.rs:270:9:274:9 | IfExpr | | -| test.rs:271:13:271:16 | true | test.rs:270:15:272:9 | BlockExpr | | -| test.rs:272:16:274:9 | BlockExpr | test.rs:270:9:274:9 | IfExpr | | -| test.rs:273:13:273:17 | false | test.rs:272:16:274:9 | BlockExpr | | -| test.rs:277:5:279:5 | enter test_and_return | test.rs:277:24:277:24 | a | | -| test.rs:277:5:279:5 | exit test_and_return (normal) | test.rs:277:5:279:5 | exit test_and_return | | -| test.rs:277:24:277:24 | a | test.rs:277:24:277:30 | Param | match | -| test.rs:277:24:277:30 | Param | test.rs:278:9:278:20 | ExprStmt | | -| test.rs:277:33:279:5 | BlockExpr | test.rs:277:5:279:5 | exit test_and_return (normal) | | +| test.rs:270:15:272:9 | { ... } | test.rs:270:9:274:9 | if ... {...} else {...} | | +| test.rs:271:13:271:16 | true | test.rs:270:15:272:9 | { ... } | | +| test.rs:272:16:274:9 | { ... } | test.rs:270:9:274:9 | if ... {...} else {...} | | +| test.rs:273:13:273:17 | false | test.rs:272:16:274:9 | { ... } | | +| test.rs:277:5:279:5 | enter fn test_and_return | test.rs:277:24:277:24 | a | | +| test.rs:277:5:279:5 | exit fn test_and_return (normal) | test.rs:277:5:279:5 | exit fn test_and_return | | +| test.rs:277:24:277:24 | a | test.rs:277:24:277:30 | ...: bool | match | +| test.rs:277:24:277:30 | ...: bool | test.rs:278:9:278:20 | ExprStmt | | +| test.rs:277:33:279:5 | { ... } | test.rs:277:5:279:5 | exit fn test_and_return (normal) | | | test.rs:278:9:278:9 | a | test.rs:278:9:278:19 | ... && ... | false | -| test.rs:278:9:278:9 | a | test.rs:278:14:278:19 | ReturnExpr | true | -| test.rs:278:9:278:19 | ... && ... | test.rs:277:33:279:5 | BlockExpr | | +| test.rs:278:9:278:9 | a | test.rs:278:14:278:19 | return | true | +| test.rs:278:9:278:19 | ... && ... | test.rs:277:33:279:5 | { ... } | | | test.rs:278:9:278:20 | ExprStmt | test.rs:278:9:278:9 | a | | -| test.rs:278:14:278:19 | ReturnExpr | test.rs:277:5:279:5 | exit test_and_return (normal) | return | -| test.rs:281:5:286:5 | enter test_and_true | test.rs:281:22:281:22 | a | | -| test.rs:281:5:286:5 | exit test_and_true (normal) | test.rs:281:5:286:5 | exit test_and_true | | -| test.rs:281:22:281:22 | a | test.rs:281:22:281:28 | Param | match | -| test.rs:281:22:281:28 | Param | test.rs:282:9:284:9 | ExprStmt | | -| test.rs:281:38:286:5 | BlockExpr | test.rs:281:5:286:5 | exit test_and_true (normal) | | +| test.rs:278:14:278:19 | return | test.rs:277:5:279:5 | exit fn test_and_return (normal) | return | +| test.rs:281:5:286:5 | enter fn test_and_true | test.rs:281:22:281:22 | a | | +| test.rs:281:5:286:5 | exit fn test_and_true (normal) | test.rs:281:5:286:5 | exit fn test_and_true | | +| test.rs:281:22:281:22 | a | test.rs:281:22:281:28 | ...: bool | match | +| test.rs:281:22:281:28 | ...: bool | test.rs:282:9:284:9 | ExprStmt | | +| test.rs:281:38:286:5 | { ... } | test.rs:281:5:286:5 | exit fn test_and_true (normal) | | | test.rs:282:9:284:9 | ExprStmt | test.rs:282:13:282:13 | a | | -| test.rs:282:9:284:9 | IfExpr | test.rs:285:9:285:9 | 0 | | +| test.rs:282:9:284:9 | if ... {...} | test.rs:285:9:285:9 | 0 | | | test.rs:282:13:282:13 | a | test.rs:282:13:282:21 | [boolean(false)] ... && ... | false | | test.rs:282:13:282:13 | a | test.rs:282:18:282:21 | true | true | -| test.rs:282:13:282:21 | [boolean(false)] ... && ... | test.rs:282:9:284:9 | IfExpr | false | +| test.rs:282:13:282:21 | [boolean(false)] ... && ... | test.rs:282:9:284:9 | if ... {...} | false | | test.rs:282:13:282:21 | [boolean(true)] ... && ... | test.rs:283:13:283:21 | ExprStmt | true | | test.rs:282:18:282:21 | true | test.rs:282:13:282:21 | [boolean(true)] ... && ... | true | -| test.rs:283:13:283:20 | ReturnExpr | test.rs:281:5:286:5 | exit test_and_true (normal) | return | +| test.rs:283:13:283:20 | return 1 | test.rs:281:5:286:5 | exit fn test_and_true (normal) | return | | test.rs:283:13:283:21 | ExprStmt | test.rs:283:20:283:20 | 1 | | -| test.rs:283:20:283:20 | 1 | test.rs:283:13:283:20 | ReturnExpr | | -| test.rs:285:9:285:9 | 0 | test.rs:281:38:286:5 | BlockExpr | | -| test.rs:292:5:294:5 | enter test_question_mark_operator_1 | test.rs:292:38:292:38 | s | | -| test.rs:292:5:294:5 | exit test_question_mark_operator_1 (normal) | test.rs:292:5:294:5 | exit test_question_mark_operator_1 | | -| test.rs:292:38:292:38 | s | test.rs:292:38:292:44 | Param | match | -| test.rs:292:38:292:44 | Param | test.rs:293:9:293:10 | Ok | | -| test.rs:292:87:294:5 | BlockExpr | test.rs:292:5:294:5 | exit test_question_mark_operator_1 (normal) | | +| test.rs:283:20:283:20 | 1 | test.rs:283:13:283:20 | return 1 | | +| test.rs:285:9:285:9 | 0 | test.rs:281:38:286:5 | { ... } | | +| test.rs:292:5:294:5 | enter fn test_question_mark_operator_1 | test.rs:292:38:292:38 | s | | +| test.rs:292:5:294:5 | exit fn test_question_mark_operator_1 (normal) | test.rs:292:5:294:5 | exit fn test_question_mark_operator_1 | | +| test.rs:292:38:292:38 | s | test.rs:292:38:292:44 | ...: ... | match | +| test.rs:292:38:292:44 | ...: ... | test.rs:293:9:293:10 | Ok | | +| test.rs:292:87:294:5 | { ... } | test.rs:292:5:294:5 | exit fn test_question_mark_operator_1 (normal) | | | test.rs:293:9:293:10 | Ok | test.rs:293:12:293:12 | s | | -| test.rs:293:9:293:33 | CallExpr | test.rs:292:87:294:5 | BlockExpr | | +| test.rs:293:9:293:33 | Ok(...) | test.rs:292:87:294:5 | { ... } | | | test.rs:293:12:293:12 | s | test.rs:293:12:293:27 | ... .parse(...) | | | test.rs:293:12:293:27 | ... .parse(...) | test.rs:293:12:293:28 | TryExpr | | -| test.rs:293:12:293:28 | TryExpr | test.rs:292:5:294:5 | exit test_question_mark_operator_1 (normal) | return | +| test.rs:293:12:293:28 | TryExpr | test.rs:292:5:294:5 | exit fn test_question_mark_operator_1 (normal) | return | | test.rs:293:12:293:28 | TryExpr | test.rs:293:32:293:32 | 4 | match | -| test.rs:293:12:293:32 | ... + ... | test.rs:293:9:293:33 | CallExpr | | +| test.rs:293:12:293:32 | ... + ... | test.rs:293:9:293:33 | Ok(...) | | | test.rs:293:32:293:32 | 4 | test.rs:293:12:293:32 | ... + ... | | -| test.rs:296:5:301:5 | enter test_question_mark_operator_2 | test.rs:296:38:296:38 | b | | -| test.rs:296:5:301:5 | exit test_question_mark_operator_2 (normal) | test.rs:296:5:301:5 | exit test_question_mark_operator_2 | | -| test.rs:296:38:296:38 | b | test.rs:296:38:296:52 | Param | match | -| test.rs:296:38:296:52 | Param | test.rs:297:15:297:15 | b | | -| test.rs:296:71:301:5 | BlockExpr | test.rs:296:5:301:5 | exit test_question_mark_operator_2 (normal) | | -| test.rs:297:9:300:9 | MatchExpr | test.rs:296:71:301:5 | BlockExpr | | +| test.rs:296:5:301:5 | enter fn test_question_mark_operator_2 | test.rs:296:38:296:38 | b | | +| test.rs:296:5:301:5 | exit fn test_question_mark_operator_2 (normal) | test.rs:296:5:301:5 | exit fn test_question_mark_operator_2 | | +| test.rs:296:38:296:38 | b | test.rs:296:38:296:52 | ...: Option::<...> | match | +| test.rs:296:38:296:52 | ...: Option::<...> | test.rs:297:15:297:15 | b | | +| test.rs:296:71:301:5 | { ... } | test.rs:296:5:301:5 | exit fn test_question_mark_operator_2 (normal) | | +| test.rs:297:9:300:9 | match ... { ... } | test.rs:296:71:301:5 | { ... } | | | test.rs:297:15:297:15 | b | test.rs:297:15:297:16 | TryExpr | | -| test.rs:297:15:297:16 | TryExpr | test.rs:296:5:301:5 | exit test_question_mark_operator_2 (normal) | return | +| test.rs:297:15:297:16 | TryExpr | test.rs:296:5:301:5 | exit fn test_question_mark_operator_2 (normal) | return | | test.rs:297:15:297:16 | TryExpr | test.rs:298:13:298:16 | true | match | -| test.rs:298:13:298:16 | LiteralPat | test.rs:298:21:298:24 | Some | match | -| test.rs:298:13:298:16 | LiteralPat | test.rs:299:13:299:17 | false | no-match | -| test.rs:298:13:298:16 | true | test.rs:298:13:298:16 | LiteralPat | | +| test.rs:298:13:298:16 | true | test.rs:298:13:298:16 | true | | +| test.rs:298:13:298:16 | true | test.rs:298:21:298:24 | Some | match | +| test.rs:298:13:298:16 | true | test.rs:299:13:299:17 | false | no-match | | test.rs:298:21:298:24 | Some | test.rs:298:26:298:30 | false | | -| test.rs:298:21:298:31 | CallExpr | test.rs:297:9:300:9 | MatchExpr | | -| test.rs:298:26:298:30 | false | test.rs:298:21:298:31 | CallExpr | | -| test.rs:299:13:299:17 | LiteralPat | test.rs:299:22:299:25 | Some | match | -| test.rs:299:13:299:17 | false | test.rs:299:13:299:17 | LiteralPat | | +| test.rs:298:21:298:31 | Some(...) | test.rs:297:9:300:9 | match ... { ... } | | +| test.rs:298:26:298:30 | false | test.rs:298:21:298:31 | Some(...) | | +| test.rs:299:13:299:17 | false | test.rs:299:13:299:17 | false | | +| test.rs:299:13:299:17 | false | test.rs:299:22:299:25 | Some | match | | test.rs:299:22:299:25 | Some | test.rs:299:27:299:30 | true | | -| test.rs:299:22:299:31 | CallExpr | test.rs:297:9:300:9 | MatchExpr | | -| test.rs:299:27:299:30 | true | test.rs:299:22:299:31 | CallExpr | | -| test.rs:307:5:313:5 | enter test_match | test.rs:307:19:307:29 | maybe_digit | | -| test.rs:307:5:313:5 | exit test_match (normal) | test.rs:307:5:313:5 | exit test_match | | -| test.rs:307:19:307:29 | maybe_digit | test.rs:307:19:307:42 | Param | match | -| test.rs:307:19:307:42 | Param | test.rs:308:15:308:25 | maybe_digit | | -| test.rs:307:52:313:5 | BlockExpr | test.rs:307:5:313:5 | exit test_match (normal) | | -| test.rs:308:9:312:9 | MatchExpr | test.rs:307:52:313:5 | BlockExpr | | +| test.rs:299:22:299:31 | Some(...) | test.rs:297:9:300:9 | match ... { ... } | | +| test.rs:299:27:299:30 | true | test.rs:299:22:299:31 | Some(...) | | +| test.rs:307:5:313:5 | enter fn test_match | test.rs:307:19:307:29 | maybe_digit | | +| test.rs:307:5:313:5 | exit fn test_match (normal) | test.rs:307:5:313:5 | exit fn test_match | | +| test.rs:307:19:307:29 | maybe_digit | test.rs:307:19:307:42 | ...: Option::<...> | match | +| test.rs:307:19:307:42 | ...: Option::<...> | test.rs:308:15:308:25 | maybe_digit | | +| test.rs:307:52:313:5 | { ... } | test.rs:307:5:313:5 | exit fn test_match (normal) | | +| test.rs:308:9:312:9 | match maybe_digit { ... } | test.rs:307:52:313:5 | { ... } | | | test.rs:308:15:308:25 | maybe_digit | test.rs:309:13:309:27 | TupleStructPat | | | test.rs:309:13:309:27 | TupleStructPat | test.rs:309:26:309:26 | x | match | | test.rs:309:13:309:27 | TupleStructPat | test.rs:310:13:310:27 | TupleStructPat | no-match | @@ -672,448 +672,448 @@ edges | test.rs:309:32:309:37 | ... < ... | test.rs:310:13:310:27 | TupleStructPat | false | | test.rs:309:36:309:37 | 10 | test.rs:309:32:309:37 | ... < ... | | | test.rs:309:42:309:42 | x | test.rs:309:46:309:46 | 5 | | -| test.rs:309:42:309:46 | ... + ... | test.rs:308:9:312:9 | MatchExpr | | +| test.rs:309:42:309:46 | ... + ... | test.rs:308:9:312:9 | match maybe_digit { ... } | | | test.rs:309:46:309:46 | 5 | test.rs:309:42:309:46 | ... + ... | | | test.rs:310:13:310:27 | TupleStructPat | test.rs:310:26:310:26 | x | match | -| test.rs:310:13:310:27 | TupleStructPat | test.rs:311:13:311:24 | PathPat | no-match | +| test.rs:310:13:310:27 | TupleStructPat | test.rs:311:13:311:24 | ...::None | no-match | | test.rs:310:26:310:26 | x | test.rs:310:32:310:32 | x | match | -| test.rs:310:32:310:32 | x | test.rs:308:9:312:9 | MatchExpr | | -| test.rs:311:13:311:24 | PathPat | test.rs:311:29:311:29 | 5 | match | -| test.rs:311:29:311:29 | 5 | test.rs:308:9:312:9 | MatchExpr | | -| test.rs:315:5:324:5 | enter test_match_with_return_in_scrutinee | test.rs:315:44:315:54 | maybe_digit | | -| test.rs:315:5:324:5 | exit test_match_with_return_in_scrutinee (normal) | test.rs:315:5:324:5 | exit test_match_with_return_in_scrutinee | | -| test.rs:315:44:315:54 | maybe_digit | test.rs:315:44:315:67 | Param | match | -| test.rs:315:44:315:67 | Param | test.rs:316:19:316:29 | maybe_digit | | -| test.rs:315:77:324:5 | BlockExpr | test.rs:315:5:324:5 | exit test_match_with_return_in_scrutinee (normal) | | -| test.rs:316:9:323:9 | MatchExpr | test.rs:315:77:324:5 | BlockExpr | | -| test.rs:316:16:320:9 | IfExpr | test.rs:321:13:321:27 | TupleStructPat | | +| test.rs:310:32:310:32 | x | test.rs:308:9:312:9 | match maybe_digit { ... } | | +| test.rs:311:13:311:24 | ...::None | test.rs:311:29:311:29 | 5 | match | +| test.rs:311:29:311:29 | 5 | test.rs:308:9:312:9 | match maybe_digit { ... } | | +| test.rs:315:5:324:5 | enter fn test_match_with_return_in_scrutinee | test.rs:315:44:315:54 | maybe_digit | | +| test.rs:315:5:324:5 | exit fn test_match_with_return_in_scrutinee (normal) | test.rs:315:5:324:5 | exit fn test_match_with_return_in_scrutinee | | +| test.rs:315:44:315:54 | maybe_digit | test.rs:315:44:315:67 | ...: Option::<...> | match | +| test.rs:315:44:315:67 | ...: Option::<...> | test.rs:316:19:316:29 | maybe_digit | | +| test.rs:315:77:324:5 | { ... } | test.rs:315:5:324:5 | exit fn test_match_with_return_in_scrutinee (normal) | | +| test.rs:316:9:323:9 | match ... { ... } | test.rs:315:77:324:5 | { ... } | | +| test.rs:316:16:320:9 | if ... {...} else {...} | test.rs:321:13:321:27 | TupleStructPat | | | test.rs:316:19:316:29 | maybe_digit | test.rs:316:34:316:37 | Some | | | test.rs:316:19:316:40 | ... == ... | test.rs:317:13:317:21 | ExprStmt | true | | test.rs:316:19:316:40 | ... == ... | test.rs:319:13:319:23 | maybe_digit | false | | test.rs:316:34:316:37 | Some | test.rs:316:39:316:39 | 3 | | -| test.rs:316:34:316:40 | CallExpr | test.rs:316:19:316:40 | ... == ... | | -| test.rs:316:39:316:39 | 3 | test.rs:316:34:316:40 | CallExpr | | -| test.rs:317:13:317:20 | ReturnExpr | test.rs:315:5:324:5 | exit test_match_with_return_in_scrutinee (normal) | return | +| test.rs:316:34:316:40 | Some(...) | test.rs:316:19:316:40 | ... == ... | | +| test.rs:316:39:316:39 | 3 | test.rs:316:34:316:40 | Some(...) | | +| test.rs:317:13:317:20 | return 3 | test.rs:315:5:324:5 | exit fn test_match_with_return_in_scrutinee (normal) | return | | test.rs:317:13:317:21 | ExprStmt | test.rs:317:20:317:20 | 3 | | -| test.rs:317:20:317:20 | 3 | test.rs:317:13:317:20 | ReturnExpr | | -| test.rs:318:16:320:9 | BlockExpr | test.rs:316:16:320:9 | IfExpr | | -| test.rs:319:13:319:23 | maybe_digit | test.rs:318:16:320:9 | BlockExpr | | +| test.rs:317:20:317:20 | 3 | test.rs:317:13:317:20 | return 3 | | +| test.rs:318:16:320:9 | { ... } | test.rs:316:16:320:9 | if ... {...} else {...} | | +| test.rs:319:13:319:23 | maybe_digit | test.rs:318:16:320:9 | { ... } | | | test.rs:321:13:321:27 | TupleStructPat | test.rs:321:26:321:26 | x | match | -| test.rs:321:13:321:27 | TupleStructPat | test.rs:322:13:322:24 | PathPat | no-match | +| test.rs:321:13:321:27 | TupleStructPat | test.rs:322:13:322:24 | ...::None | no-match | | test.rs:321:26:321:26 | x | test.rs:321:32:321:32 | x | match | | test.rs:321:32:321:32 | x | test.rs:321:36:321:36 | 5 | | -| test.rs:321:32:321:36 | ... + ... | test.rs:316:9:323:9 | MatchExpr | | +| test.rs:321:32:321:36 | ... + ... | test.rs:316:9:323:9 | match ... { ... } | | | test.rs:321:36:321:36 | 5 | test.rs:321:32:321:36 | ... + ... | | -| test.rs:322:13:322:24 | PathPat | test.rs:322:29:322:29 | 5 | match | -| test.rs:322:29:322:29 | 5 | test.rs:316:9:323:9 | MatchExpr | | -| test.rs:326:5:331:5 | enter test_match_and | test.rs:326:23:326:26 | cond | | -| test.rs:326:5:331:5 | exit test_match_and (normal) | test.rs:326:5:331:5 | exit test_match_and | | -| test.rs:326:23:326:26 | cond | test.rs:326:23:326:32 | Param | match | -| test.rs:326:23:326:32 | Param | test.rs:326:35:326:35 | r | | -| test.rs:326:35:326:35 | r | test.rs:326:35:326:49 | Param | match | -| test.rs:326:35:326:49 | Param | test.rs:327:16:327:16 | r | | -| test.rs:326:60:331:5 | BlockExpr | test.rs:326:5:331:5 | exit test_match_and (normal) | | -| test.rs:327:9:330:18 | ... && ... | test.rs:326:60:331:5 | BlockExpr | | -| test.rs:327:10:330:9 | [boolean(false)] MatchExpr | test.rs:327:9:330:18 | ... && ... | false | -| test.rs:327:10:330:9 | [boolean(true)] MatchExpr | test.rs:330:15:330:18 | cond | true | +| test.rs:322:13:322:24 | ...::None | test.rs:322:29:322:29 | 5 | match | +| test.rs:322:29:322:29 | 5 | test.rs:316:9:323:9 | match ... { ... } | | +| test.rs:326:5:331:5 | enter fn test_match_and | test.rs:326:23:326:26 | cond | | +| test.rs:326:5:331:5 | exit fn test_match_and (normal) | test.rs:326:5:331:5 | exit fn test_match_and | | +| test.rs:326:23:326:26 | cond | test.rs:326:23:326:32 | ...: bool | match | +| test.rs:326:23:326:32 | ...: bool | test.rs:326:35:326:35 | r | | +| test.rs:326:35:326:35 | r | test.rs:326:35:326:49 | ...: Option::<...> | match | +| test.rs:326:35:326:49 | ...: Option::<...> | test.rs:327:16:327:16 | r | | +| test.rs:326:60:331:5 | { ... } | test.rs:326:5:331:5 | exit fn test_match_and (normal) | | +| test.rs:327:9:330:18 | ... && ... | test.rs:326:60:331:5 | { ... } | | +| test.rs:327:10:330:9 | [boolean(false)] match r { ... } | test.rs:327:9:330:18 | ... && ... | false | +| test.rs:327:10:330:9 | [boolean(true)] match r { ... } | test.rs:330:15:330:18 | cond | true | | test.rs:327:16:327:16 | r | test.rs:328:13:328:19 | TupleStructPat | | | test.rs:328:13:328:19 | TupleStructPat | test.rs:328:18:328:18 | a | match | -| test.rs:328:13:328:19 | TupleStructPat | test.rs:329:13:329:13 | WildcardPat | no-match | +| test.rs:328:13:328:19 | TupleStructPat | test.rs:329:13:329:13 | _ | no-match | | test.rs:328:18:328:18 | a | test.rs:328:24:328:24 | a | match | -| test.rs:328:24:328:24 | a | test.rs:327:10:330:9 | [boolean(false)] MatchExpr | false | -| test.rs:328:24:328:24 | a | test.rs:327:10:330:9 | [boolean(true)] MatchExpr | true | -| test.rs:329:13:329:13 | WildcardPat | test.rs:329:18:329:22 | false | match | -| test.rs:329:18:329:22 | false | test.rs:327:10:330:9 | [boolean(false)] MatchExpr | false | +| test.rs:328:24:328:24 | a | test.rs:327:10:330:9 | [boolean(false)] match r { ... } | false | +| test.rs:328:24:328:24 | a | test.rs:327:10:330:9 | [boolean(true)] match r { ... } | true | +| test.rs:329:13:329:13 | _ | test.rs:329:18:329:22 | false | match | +| test.rs:329:18:329:22 | false | test.rs:327:10:330:9 | [boolean(false)] match r { ... } | false | | test.rs:330:15:330:18 | cond | test.rs:327:9:330:18 | ... && ... | | -| test.rs:333:5:338:5 | enter test_match_with_no_arms | test.rs:333:35:333:35 | r | | -| test.rs:333:5:338:5 | exit test_match_with_no_arms (normal) | test.rs:333:5:338:5 | exit test_match_with_no_arms | | -| test.rs:333:35:333:35 | r | test.rs:333:35:333:58 | Param | match | -| test.rs:333:35:333:58 | Param | test.rs:334:15:334:15 | r | | -| test.rs:333:66:338:5 | BlockExpr | test.rs:333:5:338:5 | exit test_match_with_no_arms (normal) | | -| test.rs:334:9:337:9 | MatchExpr | test.rs:333:66:338:5 | BlockExpr | | +| test.rs:333:5:338:5 | enter fn test_match_with_no_arms | test.rs:333:35:333:35 | r | | +| test.rs:333:5:338:5 | exit fn test_match_with_no_arms (normal) | test.rs:333:5:338:5 | exit fn test_match_with_no_arms | | +| test.rs:333:35:333:35 | r | test.rs:333:35:333:58 | ...: Result::<...> | match | +| test.rs:333:35:333:58 | ...: Result::<...> | test.rs:334:15:334:15 | r | | +| test.rs:333:66:338:5 | { ... } | test.rs:333:5:338:5 | exit fn test_match_with_no_arms (normal) | | +| test.rs:334:9:337:9 | match r { ... } | test.rs:333:66:338:5 | { ... } | | | test.rs:334:15:334:15 | r | test.rs:335:13:335:21 | TupleStructPat | | | test.rs:335:13:335:21 | TupleStructPat | test.rs:335:16:335:20 | value | match | | test.rs:335:13:335:21 | TupleStructPat | test.rs:336:13:336:22 | TupleStructPat | no-match | | test.rs:335:16:335:20 | value | test.rs:335:26:335:30 | value | match | -| test.rs:335:26:335:30 | value | test.rs:334:9:337:9 | MatchExpr | | +| test.rs:335:26:335:30 | value | test.rs:334:9:337:9 | match r { ... } | | | test.rs:336:13:336:22 | TupleStructPat | test.rs:336:17:336:21 | never | match | | test.rs:336:17:336:21 | never | test.rs:336:33:336:37 | never | match | -| test.rs:336:27:336:40 | MatchExpr | test.rs:334:9:337:9 | MatchExpr | | -| test.rs:336:33:336:37 | never | test.rs:336:27:336:40 | MatchExpr | | -| test.rs:343:5:346:5 | enter test_let_match | test.rs:343:23:343:23 | a | | -| test.rs:343:5:346:5 | exit test_let_match (normal) | test.rs:343:5:346:5 | exit test_let_match | | -| test.rs:343:23:343:23 | a | test.rs:343:23:343:36 | Param | match | -| test.rs:343:23:343:36 | Param | test.rs:344:9:344:57 | LetStmt | | -| test.rs:343:46:346:5 | BlockExpr | test.rs:343:5:346:5 | exit test_let_match (normal) | | -| test.rs:344:9:344:57 | LetStmt | test.rs:344:23:344:23 | a | | +| test.rs:336:27:336:40 | match never { ... } | test.rs:334:9:337:9 | match r { ... } | | +| test.rs:336:33:336:37 | never | test.rs:336:27:336:40 | match never { ... } | | +| test.rs:343:5:346:5 | enter fn test_let_match | test.rs:343:23:343:23 | a | | +| test.rs:343:5:346:5 | exit fn test_let_match (normal) | test.rs:343:5:346:5 | exit fn test_let_match | | +| test.rs:343:23:343:23 | a | test.rs:343:23:343:36 | ...: Option::<...> | match | +| test.rs:343:23:343:36 | ...: Option::<...> | test.rs:344:9:344:57 | let ... = a else {...} | | +| test.rs:343:46:346:5 | { ... } | test.rs:343:5:346:5 | exit fn test_let_match (normal) | | +| test.rs:344:9:344:57 | let ... = a else {...} | test.rs:344:23:344:23 | a | | | test.rs:344:13:344:19 | TupleStructPat | test.rs:344:18:344:18 | n | match | | test.rs:344:13:344:19 | TupleStructPat | test.rs:344:39:344:53 | MacroStmts | no-match | | test.rs:344:18:344:18 | n | test.rs:345:9:345:9 | n | match | | test.rs:344:23:344:23 | a | test.rs:344:13:344:19 | TupleStructPat | | -| test.rs:344:32:344:54 | $crate::panicking::panic_fmt | test.rs:344:39:344:53 | "Expected some" | | -| test.rs:344:32:344:54 | MacroExpr | test.rs:344:30:344:56 | BlockExpr | | +| test.rs:344:32:344:54 | ...::panic_fmt | test.rs:344:39:344:53 | "Expected some" | | +| test.rs:344:32:344:54 | MacroExpr | test.rs:344:30:344:56 | { ... } | | | test.rs:344:39:344:53 | "Expected some" | test.rs:344:39:344:53 | FormatArgsExpr | | -| test.rs:344:39:344:53 | BlockExpr | test.rs:344:39:344:53 | MacroExpr | | -| test.rs:344:39:344:53 | CallExpr | test.rs:344:39:344:53 | BlockExpr | | -| test.rs:344:39:344:53 | ExprStmt | test.rs:344:32:344:54 | $crate::panicking::panic_fmt | | +| test.rs:344:39:344:53 | ...::panic_fmt(...) | test.rs:344:39:344:53 | { ... } | | +| test.rs:344:39:344:53 | ExprStmt | test.rs:344:32:344:54 | ...::panic_fmt | | | test.rs:344:39:344:53 | FormatArgsExpr | test.rs:344:39:344:53 | MacroExpr | | | test.rs:344:39:344:53 | MacroExpr | test.rs:344:32:344:54 | MacroExpr | | -| test.rs:344:39:344:53 | MacroExpr | test.rs:344:39:344:53 | CallExpr | | +| test.rs:344:39:344:53 | MacroExpr | test.rs:344:39:344:53 | ...::panic_fmt(...) | | | test.rs:344:39:344:53 | MacroStmts | test.rs:344:39:344:53 | ExprStmt | | | test.rs:344:39:344:53 | MacroStmts | test.rs:344:39:344:53 | MacroStmts | | -| test.rs:345:9:345:9 | n | test.rs:343:46:346:5 | BlockExpr | | -| test.rs:348:5:354:5 | enter test_let_with_return | test.rs:348:29:348:29 | m | | -| test.rs:348:5:354:5 | exit test_let_with_return (normal) | test.rs:348:5:354:5 | exit test_let_with_return | | -| test.rs:348:29:348:29 | m | test.rs:348:29:348:42 | Param | match | -| test.rs:348:29:348:42 | Param | test.rs:349:9:352:10 | LetStmt | | -| test.rs:348:53:354:5 | BlockExpr | test.rs:348:5:354:5 | exit test_let_with_return (normal) | | -| test.rs:349:9:352:10 | LetStmt | test.rs:349:25:349:25 | m | | +| test.rs:344:39:344:53 | { ... } | test.rs:344:39:344:53 | MacroExpr | | +| test.rs:345:9:345:9 | n | test.rs:343:46:346:5 | { ... } | | +| test.rs:348:5:354:5 | enter fn test_let_with_return | test.rs:348:29:348:29 | m | | +| test.rs:348:5:354:5 | exit fn test_let_with_return (normal) | test.rs:348:5:354:5 | exit fn test_let_with_return | | +| test.rs:348:29:348:29 | m | test.rs:348:29:348:42 | ...: Option::<...> | match | +| test.rs:348:29:348:42 | ...: Option::<...> | test.rs:349:9:352:10 | let ... = ... | | +| test.rs:348:53:354:5 | { ... } | test.rs:348:5:354:5 | exit fn test_let_with_return (normal) | | +| test.rs:349:9:352:10 | let ... = ... | test.rs:349:25:349:25 | m | | | test.rs:349:13:349:15 | ret | test.rs:353:9:353:12 | true | match | -| test.rs:349:19:352:9 | MatchExpr | test.rs:349:13:349:15 | ret | | +| test.rs:349:19:352:9 | match m { ... } | test.rs:349:13:349:15 | ret | | | test.rs:349:25:349:25 | m | test.rs:350:13:350:21 | TupleStructPat | | | test.rs:350:13:350:21 | TupleStructPat | test.rs:350:18:350:20 | ret | match | | test.rs:350:13:350:21 | TupleStructPat | test.rs:351:13:351:16 | None | no-match | | test.rs:350:18:350:20 | ret | test.rs:350:26:350:28 | ret | match | -| test.rs:350:26:350:28 | ret | test.rs:349:19:352:9 | MatchExpr | | +| test.rs:350:26:350:28 | ret | test.rs:349:19:352:9 | match m { ... } | | | test.rs:351:13:351:16 | None | test.rs:351:28:351:32 | false | match | -| test.rs:351:21:351:32 | ReturnExpr | test.rs:348:5:354:5 | exit test_let_with_return (normal) | return | -| test.rs:351:28:351:32 | false | test.rs:351:21:351:32 | ReturnExpr | | -| test.rs:353:9:353:12 | true | test.rs:348:53:354:5 | BlockExpr | | -| test.rs:359:5:362:5 | enter empty_tuple_pattern | test.rs:359:28:359:31 | unit | | -| test.rs:359:5:362:5 | exit empty_tuple_pattern (normal) | test.rs:359:5:362:5 | exit empty_tuple_pattern | | -| test.rs:359:28:359:31 | unit | test.rs:359:28:359:35 | Param | match | -| test.rs:359:28:359:35 | Param | test.rs:360:9:360:22 | LetStmt | | -| test.rs:360:9:360:22 | LetStmt | test.rs:360:18:360:21 | unit | | +| test.rs:351:21:351:32 | return false | test.rs:348:5:354:5 | exit fn test_let_with_return (normal) | return | +| test.rs:351:28:351:32 | false | test.rs:351:21:351:32 | return false | | +| test.rs:353:9:353:12 | true | test.rs:348:53:354:5 | { ... } | | +| test.rs:359:5:362:5 | enter fn empty_tuple_pattern | test.rs:359:28:359:31 | unit | | +| test.rs:359:5:362:5 | exit fn empty_tuple_pattern (normal) | test.rs:359:5:362:5 | exit fn empty_tuple_pattern | | +| test.rs:359:28:359:31 | unit | test.rs:359:28:359:35 | ...: ... | match | +| test.rs:359:28:359:35 | ...: ... | test.rs:360:9:360:22 | let ... = unit | | +| test.rs:360:9:360:22 | let ... = unit | test.rs:360:18:360:21 | unit | | | test.rs:360:13:360:14 | TuplePat | test.rs:361:9:361:15 | ExprStmt | match | | test.rs:360:18:360:21 | unit | test.rs:360:13:360:14 | TuplePat | | -| test.rs:361:9:361:14 | ReturnExpr | test.rs:359:5:362:5 | exit empty_tuple_pattern (normal) | return | -| test.rs:361:9:361:15 | ExprStmt | test.rs:361:9:361:14 | ReturnExpr | | -| test.rs:366:5:370:5 | enter empty_struct_pattern | test.rs:366:29:366:30 | st | | -| test.rs:366:5:370:5 | exit empty_struct_pattern (normal) | test.rs:366:5:370:5 | exit empty_struct_pattern | | -| test.rs:366:29:366:30 | st | test.rs:366:29:366:40 | Param | match | -| test.rs:366:29:366:40 | Param | test.rs:367:15:367:16 | st | | -| test.rs:366:50:370:5 | BlockExpr | test.rs:366:5:370:5 | exit empty_struct_pattern (normal) | | -| test.rs:367:9:369:9 | MatchExpr | test.rs:366:50:370:5 | BlockExpr | | -| test.rs:367:15:367:16 | st | test.rs:368:13:368:27 | RecordPat | | -| test.rs:368:13:368:27 | RecordPat | test.rs:368:24:368:25 | RestPat | match | -| test.rs:368:24:368:25 | RestPat | test.rs:368:32:368:32 | 1 | match | -| test.rs:368:32:368:32 | 1 | test.rs:367:9:369:9 | MatchExpr | | -| test.rs:372:5:379:5 | enter range_pattern | test.rs:373:15:373:16 | 42 | | -| test.rs:372:5:379:5 | exit range_pattern (normal) | test.rs:372:5:379:5 | exit range_pattern | | -| test.rs:372:31:379:5 | BlockExpr | test.rs:372:5:379:5 | exit range_pattern (normal) | | -| test.rs:373:9:378:9 | MatchExpr | test.rs:372:31:379:5 | BlockExpr | | +| test.rs:361:9:361:14 | return | test.rs:359:5:362:5 | exit fn empty_tuple_pattern (normal) | return | +| test.rs:361:9:361:15 | ExprStmt | test.rs:361:9:361:14 | return | | +| test.rs:366:5:370:5 | enter fn empty_struct_pattern | test.rs:366:29:366:30 | st | | +| test.rs:366:5:370:5 | exit fn empty_struct_pattern (normal) | test.rs:366:5:370:5 | exit fn empty_struct_pattern | | +| test.rs:366:29:366:30 | st | test.rs:366:29:366:40 | ...: MyStruct | match | +| test.rs:366:29:366:40 | ...: MyStruct | test.rs:367:15:367:16 | st | | +| test.rs:366:50:370:5 | { ... } | test.rs:366:5:370:5 | exit fn empty_struct_pattern (normal) | | +| test.rs:367:9:369:9 | match st { ... } | test.rs:366:50:370:5 | { ... } | | +| test.rs:367:15:367:16 | st | test.rs:368:13:368:27 | MyStruct {...} | | +| test.rs:368:13:368:27 | MyStruct {...} | test.rs:368:24:368:25 | .. | match | +| test.rs:368:24:368:25 | .. | test.rs:368:32:368:32 | 1 | match | +| test.rs:368:32:368:32 | 1 | test.rs:367:9:369:9 | match st { ... } | | +| test.rs:372:5:379:5 | enter fn range_pattern | test.rs:373:15:373:16 | 42 | | +| test.rs:372:5:379:5 | exit fn range_pattern (normal) | test.rs:372:5:379:5 | exit fn range_pattern | | +| test.rs:372:31:379:5 | { ... } | test.rs:372:5:379:5 | exit fn range_pattern (normal) | | +| test.rs:373:9:378:9 | match 42 { ... } | test.rs:372:31:379:5 | { ... } | | | test.rs:373:15:373:16 | 42 | test.rs:374:13:374:15 | RangePat | | | test.rs:374:13:374:15 | RangePat | test.rs:374:15:374:15 | 0 | match | | test.rs:374:13:374:15 | RangePat | test.rs:375:13:375:16 | RangePat | no-match | -| test.rs:374:15:374:15 | 0 | test.rs:374:15:374:15 | LiteralPat | | -| test.rs:374:15:374:15 | LiteralPat | test.rs:374:20:374:20 | 1 | match | -| test.rs:374:15:374:15 | LiteralPat | test.rs:375:13:375:16 | RangePat | no-match | -| test.rs:374:20:374:20 | 1 | test.rs:373:9:378:9 | MatchExpr | | -| test.rs:375:13:375:13 | 1 | test.rs:375:13:375:13 | LiteralPat | | -| test.rs:375:13:375:13 | LiteralPat | test.rs:375:16:375:16 | 2 | match | -| test.rs:375:13:375:13 | LiteralPat | test.rs:376:13:376:15 | RangePat | no-match | +| test.rs:374:15:374:15 | 0 | test.rs:374:15:374:15 | 0 | | +| test.rs:374:15:374:15 | 0 | test.rs:374:20:374:20 | 1 | match | +| test.rs:374:15:374:15 | 0 | test.rs:375:13:375:16 | RangePat | no-match | +| test.rs:374:20:374:20 | 1 | test.rs:373:9:378:9 | match 42 { ... } | | +| test.rs:375:13:375:13 | 1 | test.rs:375:13:375:13 | 1 | | +| test.rs:375:13:375:13 | 1 | test.rs:375:16:375:16 | 2 | match | +| test.rs:375:13:375:13 | 1 | test.rs:376:13:376:15 | RangePat | no-match | | test.rs:375:13:375:16 | RangePat | test.rs:375:13:375:13 | 1 | match | | test.rs:375:13:375:16 | RangePat | test.rs:376:13:376:15 | RangePat | no-match | -| test.rs:375:16:375:16 | 2 | test.rs:375:16:375:16 | LiteralPat | | -| test.rs:375:16:375:16 | LiteralPat | test.rs:375:21:375:21 | 2 | match | -| test.rs:375:16:375:16 | LiteralPat | test.rs:376:13:376:15 | RangePat | no-match | -| test.rs:375:21:375:21 | 2 | test.rs:373:9:378:9 | MatchExpr | | -| test.rs:376:13:376:13 | 5 | test.rs:376:13:376:13 | LiteralPat | | -| test.rs:376:13:376:13 | LiteralPat | test.rs:376:20:376:20 | 3 | match | -| test.rs:376:13:376:13 | LiteralPat | test.rs:377:13:377:13 | WildcardPat | no-match | +| test.rs:375:16:375:16 | 2 | test.rs:375:16:375:16 | 2 | | +| test.rs:375:16:375:16 | 2 | test.rs:375:21:375:21 | 2 | match | +| test.rs:375:16:375:16 | 2 | test.rs:376:13:376:15 | RangePat | no-match | +| test.rs:375:21:375:21 | 2 | test.rs:373:9:378:9 | match 42 { ... } | | +| test.rs:376:13:376:13 | 5 | test.rs:376:13:376:13 | 5 | | +| test.rs:376:13:376:13 | 5 | test.rs:376:20:376:20 | 3 | match | +| test.rs:376:13:376:13 | 5 | test.rs:377:13:377:13 | _ | no-match | | test.rs:376:13:376:15 | RangePat | test.rs:376:13:376:13 | 5 | match | -| test.rs:376:13:376:15 | RangePat | test.rs:377:13:377:13 | WildcardPat | no-match | -| test.rs:376:20:376:20 | 3 | test.rs:373:9:378:9 | MatchExpr | | -| test.rs:377:13:377:13 | WildcardPat | test.rs:377:18:377:18 | 4 | match | -| test.rs:377:18:377:18 | 4 | test.rs:373:9:378:9 | MatchExpr | | -| test.rs:383:5:388:5 | enter test_infinite_loop | test.rs:384:9:386:9 | ExprStmt | | +| test.rs:376:13:376:15 | RangePat | test.rs:377:13:377:13 | _ | no-match | +| test.rs:376:20:376:20 | 3 | test.rs:373:9:378:9 | match 42 { ... } | | +| test.rs:377:13:377:13 | _ | test.rs:377:18:377:18 | 4 | match | +| test.rs:377:18:377:18 | 4 | test.rs:373:9:378:9 | match 42 { ... } | | +| test.rs:383:5:388:5 | enter fn test_infinite_loop | test.rs:384:9:386:9 | ExprStmt | | | test.rs:384:9:386:9 | ExprStmt | test.rs:385:13:385:14 | TupleExpr | | -| test.rs:384:14:386:9 | BlockExpr | test.rs:385:13:385:14 | TupleExpr | | -| test.rs:385:13:385:14 | TupleExpr | test.rs:384:14:386:9 | BlockExpr | | -| test.rs:392:5:394:5 | enter say_hello | test.rs:393:9:393:34 | ExprStmt | | -| test.rs:392:5:394:5 | exit say_hello (normal) | test.rs:392:5:394:5 | exit say_hello | | -| test.rs:392:26:394:5 | BlockExpr | test.rs:392:5:394:5 | exit say_hello (normal) | | -| test.rs:393:9:393:33 | $crate::io::_print | test.rs:393:18:393:32 | "hello, world!\\n" | | -| test.rs:393:9:393:33 | MacroExpr | test.rs:392:26:394:5 | BlockExpr | | +| test.rs:384:14:386:9 | { ... } | test.rs:385:13:385:14 | TupleExpr | | +| test.rs:385:13:385:14 | TupleExpr | test.rs:384:14:386:9 | { ... } | | +| test.rs:392:5:394:5 | enter fn say_hello | test.rs:393:9:393:34 | ExprStmt | | +| test.rs:392:5:394:5 | exit fn say_hello (normal) | test.rs:392:5:394:5 | exit fn say_hello | | +| test.rs:392:26:394:5 | { ... } | test.rs:392:5:394:5 | exit fn say_hello (normal) | | +| test.rs:393:9:393:33 | ...::_print | test.rs:393:18:393:32 | "hello, world!\\n" | | +| test.rs:393:9:393:33 | MacroExpr | test.rs:392:26:394:5 | { ... } | | | test.rs:393:9:393:34 | ExprStmt | test.rs:393:18:393:32 | MacroStmts | | | test.rs:393:18:393:32 | "hello, world!\\n" | test.rs:393:18:393:32 | FormatArgsExpr | | -| test.rs:393:18:393:32 | BlockExpr | test.rs:393:9:393:33 | MacroExpr | | -| test.rs:393:18:393:32 | CallExpr | test.rs:393:18:393:32 | BlockExpr | | -| test.rs:393:18:393:32 | ExprStmt | test.rs:393:9:393:33 | $crate::io::_print | | +| test.rs:393:18:393:32 | ...::_print(...) | test.rs:393:18:393:32 | { ... } | | +| test.rs:393:18:393:32 | ExprStmt | test.rs:393:9:393:33 | ...::_print | | | test.rs:393:18:393:32 | FormatArgsExpr | test.rs:393:18:393:32 | MacroExpr | | -| test.rs:393:18:393:32 | MacroExpr | test.rs:393:18:393:32 | CallExpr | | +| test.rs:393:18:393:32 | MacroExpr | test.rs:393:18:393:32 | ...::_print(...) | | | test.rs:393:18:393:32 | MacroStmts | test.rs:393:18:393:32 | ExprStmt | | -| test.rs:396:5:415:5 | enter async_block | test.rs:396:26:396:26 | b | | -| test.rs:396:5:415:5 | exit async_block (normal) | test.rs:396:5:415:5 | exit async_block | | -| test.rs:396:26:396:26 | b | test.rs:396:26:396:32 | Param | match | -| test.rs:396:26:396:32 | Param | test.rs:397:9:399:10 | LetStmt | | -| test.rs:396:35:415:5 | BlockExpr | test.rs:396:5:415:5 | exit async_block (normal) | | -| test.rs:397:9:399:10 | LetStmt | test.rs:397:26:399:9 | BlockExpr | | -| test.rs:397:13:397:22 | say_godbye | test.rs:400:9:402:10 | LetStmt | match | -| test.rs:397:26:399:9 | BlockExpr | test.rs:397:13:397:22 | say_godbye | | -| test.rs:397:26:399:9 | enter BlockExpr | test.rs:398:13:398:42 | ExprStmt | | -| test.rs:397:26:399:9 | exit BlockExpr (normal) | test.rs:397:26:399:9 | exit BlockExpr | | -| test.rs:398:13:398:41 | $crate::io::_print | test.rs:398:22:398:40 | "godbye, everyone!\\n" | | -| test.rs:398:13:398:41 | MacroExpr | test.rs:397:26:399:9 | exit BlockExpr (normal) | | +| test.rs:393:18:393:32 | { ... } | test.rs:393:9:393:33 | MacroExpr | | +| test.rs:396:5:415:5 | enter fn async_block | test.rs:396:26:396:26 | b | | +| test.rs:396:5:415:5 | exit fn async_block (normal) | test.rs:396:5:415:5 | exit fn async_block | | +| test.rs:396:26:396:26 | b | test.rs:396:26:396:32 | ...: bool | match | +| test.rs:396:26:396:32 | ...: bool | test.rs:397:9:399:10 | let ... = ... | | +| test.rs:396:35:415:5 | { ... } | test.rs:396:5:415:5 | exit fn async_block (normal) | | +| test.rs:397:9:399:10 | let ... = ... | test.rs:397:26:399:9 | { ... } | | +| test.rs:397:13:397:22 | say_godbye | test.rs:400:9:402:10 | let ... = ... | match | +| test.rs:397:26:399:9 | enter { ... } | test.rs:398:13:398:42 | ExprStmt | | +| test.rs:397:26:399:9 | exit { ... } (normal) | test.rs:397:26:399:9 | exit { ... } | | +| test.rs:397:26:399:9 | { ... } | test.rs:397:13:397:22 | say_godbye | | +| test.rs:398:13:398:41 | ...::_print | test.rs:398:22:398:40 | "godbye, everyone!\\n" | | +| test.rs:398:13:398:41 | MacroExpr | test.rs:397:26:399:9 | exit { ... } (normal) | | | test.rs:398:13:398:42 | ExprStmt | test.rs:398:22:398:40 | MacroStmts | | | test.rs:398:22:398:40 | "godbye, everyone!\\n" | test.rs:398:22:398:40 | FormatArgsExpr | | -| test.rs:398:22:398:40 | BlockExpr | test.rs:398:13:398:41 | MacroExpr | | -| test.rs:398:22:398:40 | CallExpr | test.rs:398:22:398:40 | BlockExpr | | -| test.rs:398:22:398:40 | ExprStmt | test.rs:398:13:398:41 | $crate::io::_print | | +| test.rs:398:22:398:40 | ...::_print(...) | test.rs:398:22:398:40 | { ... } | | +| test.rs:398:22:398:40 | ExprStmt | test.rs:398:13:398:41 | ...::_print | | | test.rs:398:22:398:40 | FormatArgsExpr | test.rs:398:22:398:40 | MacroExpr | | -| test.rs:398:22:398:40 | MacroExpr | test.rs:398:22:398:40 | CallExpr | | +| test.rs:398:22:398:40 | MacroExpr | test.rs:398:22:398:40 | ...::_print(...) | | | test.rs:398:22:398:40 | MacroStmts | test.rs:398:22:398:40 | ExprStmt | | -| test.rs:400:9:402:10 | LetStmt | test.rs:400:31:402:9 | BlockExpr | | -| test.rs:400:13:400:27 | say_how_are_you | test.rs:403:9:403:28 | LetStmt | match | -| test.rs:400:31:402:9 | BlockExpr | test.rs:400:13:400:27 | say_how_are_you | | -| test.rs:400:31:402:9 | enter BlockExpr | test.rs:401:13:401:37 | ExprStmt | | -| test.rs:400:31:402:9 | exit BlockExpr (normal) | test.rs:400:31:402:9 | exit BlockExpr | | -| test.rs:401:13:401:36 | $crate::io::_print | test.rs:401:22:401:35 | "how are you?\\n" | | -| test.rs:401:13:401:36 | MacroExpr | test.rs:400:31:402:9 | exit BlockExpr (normal) | | +| test.rs:398:22:398:40 | { ... } | test.rs:398:13:398:41 | MacroExpr | | +| test.rs:400:9:402:10 | let ... = ... | test.rs:400:31:402:9 | { ... } | | +| test.rs:400:13:400:27 | say_how_are_you | test.rs:403:9:403:28 | let ... = ... | match | +| test.rs:400:31:402:9 | enter { ... } | test.rs:401:13:401:37 | ExprStmt | | +| test.rs:400:31:402:9 | exit { ... } (normal) | test.rs:400:31:402:9 | exit { ... } | | +| test.rs:400:31:402:9 | { ... } | test.rs:400:13:400:27 | say_how_are_you | | +| test.rs:401:13:401:36 | ...::_print | test.rs:401:22:401:35 | "how are you?\\n" | | +| test.rs:401:13:401:36 | MacroExpr | test.rs:400:31:402:9 | exit { ... } (normal) | | | test.rs:401:13:401:37 | ExprStmt | test.rs:401:22:401:35 | MacroStmts | | | test.rs:401:22:401:35 | "how are you?\\n" | test.rs:401:22:401:35 | FormatArgsExpr | | -| test.rs:401:22:401:35 | BlockExpr | test.rs:401:13:401:36 | MacroExpr | | -| test.rs:401:22:401:35 | CallExpr | test.rs:401:22:401:35 | BlockExpr | | -| test.rs:401:22:401:35 | ExprStmt | test.rs:401:13:401:36 | $crate::io::_print | | +| test.rs:401:22:401:35 | ...::_print(...) | test.rs:401:22:401:35 | { ... } | | +| test.rs:401:22:401:35 | ExprStmt | test.rs:401:13:401:36 | ...::_print | | | test.rs:401:22:401:35 | FormatArgsExpr | test.rs:401:22:401:35 | MacroExpr | | -| test.rs:401:22:401:35 | MacroExpr | test.rs:401:22:401:35 | CallExpr | | +| test.rs:401:22:401:35 | MacroExpr | test.rs:401:22:401:35 | ...::_print(...) | | | test.rs:401:22:401:35 | MacroStmts | test.rs:401:22:401:35 | ExprStmt | | -| test.rs:403:9:403:28 | LetStmt | test.rs:403:20:403:27 | BlockExpr | | +| test.rs:401:22:401:35 | { ... } | test.rs:401:13:401:36 | MacroExpr | | +| test.rs:403:9:403:28 | let ... = ... | test.rs:403:20:403:27 | { ... } | | | test.rs:403:13:403:16 | noop | test.rs:404:9:404:26 | ExprStmt | match | -| test.rs:403:20:403:27 | BlockExpr | test.rs:403:13:403:16 | noop | | -| test.rs:404:9:404:17 | say_hello | test.rs:404:9:404:19 | CallExpr | | -| test.rs:404:9:404:19 | CallExpr | test.rs:404:9:404:25 | AwaitExpr | | -| test.rs:404:9:404:25 | AwaitExpr | test.rs:405:9:405:30 | ExprStmt | | +| test.rs:403:20:403:27 | { ... } | test.rs:403:13:403:16 | noop | | +| test.rs:404:9:404:17 | say_hello | test.rs:404:9:404:19 | say_hello(...) | | +| test.rs:404:9:404:19 | say_hello(...) | test.rs:404:9:404:25 | await ... | | +| test.rs:404:9:404:25 | await ... | test.rs:405:9:405:30 | ExprStmt | | | test.rs:404:9:404:26 | ExprStmt | test.rs:404:9:404:17 | say_hello | | -| test.rs:405:9:405:23 | say_how_are_you | test.rs:405:9:405:29 | AwaitExpr | | -| test.rs:405:9:405:29 | AwaitExpr | test.rs:406:9:406:25 | ExprStmt | | +| test.rs:405:9:405:23 | say_how_are_you | test.rs:405:9:405:29 | await say_how_are_you | | +| test.rs:405:9:405:29 | await say_how_are_you | test.rs:406:9:406:25 | ExprStmt | | | test.rs:405:9:405:30 | ExprStmt | test.rs:405:9:405:23 | say_how_are_you | | -| test.rs:406:9:406:18 | say_godbye | test.rs:406:9:406:24 | AwaitExpr | | -| test.rs:406:9:406:24 | AwaitExpr | test.rs:407:9:407:19 | ExprStmt | | +| test.rs:406:9:406:18 | say_godbye | test.rs:406:9:406:24 | await say_godbye | | +| test.rs:406:9:406:24 | await say_godbye | test.rs:407:9:407:19 | ExprStmt | | | test.rs:406:9:406:25 | ExprStmt | test.rs:406:9:406:18 | say_godbye | | -| test.rs:407:9:407:12 | noop | test.rs:407:9:407:18 | AwaitExpr | | -| test.rs:407:9:407:18 | AwaitExpr | test.rs:409:9:414:10 | LetStmt | | +| test.rs:407:9:407:12 | noop | test.rs:407:9:407:18 | await noop | | +| test.rs:407:9:407:18 | await noop | test.rs:409:9:414:10 | let ... = ... | | | test.rs:407:9:407:19 | ExprStmt | test.rs:407:9:407:12 | noop | | -| test.rs:409:9:414:10 | LetStmt | test.rs:409:22:414:9 | ClosureExpr | | -| test.rs:409:13:409:18 | lambda | test.rs:396:35:415:5 | BlockExpr | match | -| test.rs:409:22:414:9 | ClosureExpr | test.rs:409:13:409:18 | lambda | | -| test.rs:409:22:414:9 | enter ClosureExpr | test.rs:409:23:409:25 | foo | | -| test.rs:409:22:414:9 | exit ClosureExpr (normal) | test.rs:409:22:414:9 | exit ClosureExpr | | -| test.rs:409:23:409:25 | Param | test.rs:409:28:414:9 | BlockExpr | | -| test.rs:409:23:409:25 | foo | test.rs:409:23:409:25 | Param | match | -| test.rs:409:28:414:9 | BlockExpr | test.rs:409:22:414:9 | exit ClosureExpr (normal) | | -| test.rs:409:28:414:9 | enter BlockExpr | test.rs:410:13:412:14 | ExprStmt | | -| test.rs:409:28:414:9 | exit BlockExpr (normal) | test.rs:409:28:414:9 | exit BlockExpr | | -| test.rs:410:13:412:13 | IfExpr | test.rs:413:13:413:15 | foo | | +| test.rs:409:9:414:10 | let ... = ... | test.rs:409:22:414:9 | \|...\| ... | | +| test.rs:409:13:409:18 | lambda | test.rs:396:35:415:5 | { ... } | match | +| test.rs:409:22:414:9 | \|...\| ... | test.rs:409:13:409:18 | lambda | | +| test.rs:409:22:414:9 | enter \|...\| ... | test.rs:409:23:409:25 | foo | | +| test.rs:409:22:414:9 | exit \|...\| ... (normal) | test.rs:409:22:414:9 | exit \|...\| ... | | +| test.rs:409:23:409:25 | ... | test.rs:409:28:414:9 | { ... } | | +| test.rs:409:23:409:25 | foo | test.rs:409:23:409:25 | ... | match | +| test.rs:409:28:414:9 | enter { ... } | test.rs:410:13:412:14 | ExprStmt | | +| test.rs:409:28:414:9 | exit { ... } (normal) | test.rs:409:28:414:9 | exit { ... } | | +| test.rs:409:28:414:9 | { ... } | test.rs:409:22:414:9 | exit \|...\| ... (normal) | | +| test.rs:410:13:412:13 | if b {...} | test.rs:413:13:413:15 | foo | | | test.rs:410:13:412:14 | ExprStmt | test.rs:410:16:410:16 | b | | -| test.rs:410:16:410:16 | b | test.rs:410:13:412:13 | IfExpr | false | +| test.rs:410:16:410:16 | b | test.rs:410:13:412:13 | if b {...} | false | | test.rs:410:16:410:16 | b | test.rs:411:17:411:41 | ExprStmt | true | -| test.rs:411:17:411:40 | ReturnExpr | test.rs:409:28:414:9 | exit BlockExpr (normal) | return | +| test.rs:411:17:411:40 | return ... | test.rs:409:28:414:9 | exit { ... } (normal) | return | | test.rs:411:17:411:41 | ExprStmt | test.rs:411:24:411:34 | async_block | | | test.rs:411:24:411:34 | async_block | test.rs:411:36:411:39 | true | | -| test.rs:411:24:411:40 | CallExpr | test.rs:411:17:411:40 | ReturnExpr | | -| test.rs:411:36:411:39 | true | test.rs:411:24:411:40 | CallExpr | | -| test.rs:413:13:413:15 | foo | test.rs:409:28:414:9 | exit BlockExpr (normal) | | -| test.rs:421:5:423:5 | enter add_two | test.rs:421:22:421:22 | n | | -| test.rs:421:5:423:5 | exit add_two (normal) | test.rs:421:5:423:5 | exit add_two | | -| test.rs:421:22:421:22 | n | test.rs:421:22:421:27 | Param | match | -| test.rs:421:22:421:27 | Param | test.rs:422:9:422:9 | n | | -| test.rs:421:37:423:5 | BlockExpr | test.rs:421:5:423:5 | exit add_two (normal) | | +| test.rs:411:24:411:40 | async_block(...) | test.rs:411:17:411:40 | return ... | | +| test.rs:411:36:411:39 | true | test.rs:411:24:411:40 | async_block(...) | | +| test.rs:413:13:413:15 | foo | test.rs:409:28:414:9 | exit { ... } (normal) | | +| test.rs:421:5:423:5 | enter fn add_two | test.rs:421:22:421:22 | n | | +| test.rs:421:5:423:5 | exit fn add_two (normal) | test.rs:421:5:423:5 | exit fn add_two | | +| test.rs:421:22:421:22 | n | test.rs:421:22:421:27 | ...: i64 | match | +| test.rs:421:22:421:27 | ...: i64 | test.rs:422:9:422:9 | n | | +| test.rs:421:37:423:5 | { ... } | test.rs:421:5:423:5 | exit fn add_two (normal) | | | test.rs:422:9:422:9 | n | test.rs:422:13:422:13 | 2 | | -| test.rs:422:9:422:13 | ... + ... | test.rs:421:37:423:5 | BlockExpr | | +| test.rs:422:9:422:13 | ... + ... | test.rs:421:37:423:5 | { ... } | | | test.rs:422:13:422:13 | 2 | test.rs:422:9:422:13 | ... + ... | | -| test.rs:427:5:435:5 | enter const_block_assert | test.rs:430:9:432:9 | ExprStmt | | -| test.rs:427:5:435:5 | exit const_block_assert (normal) | test.rs:427:5:435:5 | exit const_block_assert | | -| test.rs:427:41:435:5 | BlockExpr | test.rs:427:5:435:5 | exit const_block_assert (normal) | | -| test.rs:430:9:432:9 | BlockExpr | test.rs:434:9:434:10 | 42 | | +| test.rs:427:5:435:5 | enter fn const_block_assert | test.rs:430:9:432:9 | ExprStmt | | +| test.rs:427:5:435:5 | exit fn const_block_assert (normal) | test.rs:427:5:435:5 | exit fn const_block_assert | | +| test.rs:427:41:435:5 | { ... } | test.rs:427:5:435:5 | exit fn const_block_assert (normal) | | | test.rs:430:9:432:9 | ExprStmt | test.rs:431:13:431:50 | ExprStmt | | -| test.rs:431:13:431:49 | $crate::panicking::panic_explicit | test.rs:431:13:431:49 | CallExpr | | -| test.rs:431:13:431:49 | BlockExpr | test.rs:431:13:431:49 | MacroExpr | | -| test.rs:431:13:431:49 | BlockExpr | test.rs:431:13:431:49 | exit panic_cold_explicit (normal) | | -| test.rs:431:13:431:49 | BlockExpr | test.rs:431:21:431:48 | IfExpr | | -| test.rs:431:13:431:49 | CallExpr | test.rs:431:13:431:49 | BlockExpr | | -| test.rs:431:13:431:49 | CallExpr | test.rs:431:13:431:49 | BlockExpr | | +| test.rs:430:9:432:9 | { ... } | test.rs:434:9:434:10 | 42 | | +| test.rs:431:13:431:49 | ...::panic_explicit | test.rs:431:13:431:49 | ...::panic_explicit(...) | | +| test.rs:431:13:431:49 | ...::panic_explicit(...) | test.rs:431:13:431:49 | { ... } | | | test.rs:431:13:431:49 | ExprStmt | test.rs:431:13:431:49 | MacroStmts | | | test.rs:431:13:431:49 | ExprStmt | test.rs:431:13:431:49 | panic_cold_explicit | | -| test.rs:431:13:431:49 | MacroExpr | test.rs:430:9:432:9 | BlockExpr | | -| test.rs:431:13:431:49 | MacroExpr | test.rs:431:13:431:49 | BlockExpr | | -| test.rs:431:13:431:49 | MacroStmts | test.rs:431:13:431:49 | panic_cold_explicit | | -| test.rs:431:13:431:49 | enter panic_cold_explicit | test.rs:431:13:431:49 | $crate::panicking::panic_explicit | | -| test.rs:431:13:431:49 | exit panic_cold_explicit (normal) | test.rs:431:13:431:49 | exit panic_cold_explicit | | -| test.rs:431:13:431:49 | panic_cold_explicit | test.rs:431:13:431:49 | CallExpr | | -| test.rs:431:13:431:49 | panic_cold_explicit | test.rs:431:13:431:49 | ExprStmt | | +| test.rs:431:13:431:49 | MacroExpr | test.rs:430:9:432:9 | { ... } | | +| test.rs:431:13:431:49 | MacroExpr | test.rs:431:13:431:49 | { ... } | | +| test.rs:431:13:431:49 | MacroStmts | test.rs:431:13:431:49 | fn panic_cold_explicit | | +| test.rs:431:13:431:49 | enter fn panic_cold_explicit | test.rs:431:13:431:49 | ...::panic_explicit | | +| test.rs:431:13:431:49 | exit fn panic_cold_explicit (normal) | test.rs:431:13:431:49 | exit fn panic_cold_explicit | | +| test.rs:431:13:431:49 | fn panic_cold_explicit | test.rs:431:13:431:49 | ExprStmt | | +| test.rs:431:13:431:49 | panic_cold_explicit | test.rs:431:13:431:49 | panic_cold_explicit(...) | | +| test.rs:431:13:431:49 | panic_cold_explicit(...) | test.rs:431:13:431:49 | { ... } | | +| test.rs:431:13:431:49 | { ... } | test.rs:431:13:431:49 | MacroExpr | | +| test.rs:431:13:431:49 | { ... } | test.rs:431:13:431:49 | exit fn panic_cold_explicit (normal) | | +| test.rs:431:13:431:49 | { ... } | test.rs:431:21:431:48 | if ... {...} | | | test.rs:431:13:431:50 | ExprStmt | test.rs:431:21:431:48 | MacroStmts | | -| test.rs:431:21:431:42 | std::mem::size_of::<...> | test.rs:431:21:431:44 | CallExpr | | -| test.rs:431:21:431:44 | CallExpr | test.rs:431:48:431:48 | 0 | | +| test.rs:431:21:431:42 | ...::size_of::<...> | test.rs:431:21:431:44 | ...::size_of::<...>(...) | | +| test.rs:431:21:431:44 | ...::size_of::<...>(...) | test.rs:431:48:431:48 | 0 | | | test.rs:431:21:431:48 | ... > ... | test.rs:431:21:431:48 | [boolean(false)] ! ... | true | | test.rs:431:21:431:48 | ... > ... | test.rs:431:21:431:48 | [boolean(true)] ! ... | false | -| test.rs:431:21:431:48 | BlockExpr | test.rs:431:13:431:49 | MacroExpr | | -| test.rs:431:21:431:48 | IfExpr | test.rs:431:21:431:48 | BlockExpr | | -| test.rs:431:21:431:48 | MacroStmts | test.rs:431:21:431:42 | std::mem::size_of::<...> | | -| test.rs:431:21:431:48 | [boolean(false)] ! ... | test.rs:431:21:431:48 | IfExpr | false | +| test.rs:431:21:431:48 | MacroStmts | test.rs:431:21:431:42 | ...::size_of::<...> | | +| test.rs:431:21:431:48 | [boolean(false)] ! ... | test.rs:431:21:431:48 | if ... {...} | false | | test.rs:431:21:431:48 | [boolean(true)] ! ... | test.rs:431:13:431:49 | ExprStmt | true | +| test.rs:431:21:431:48 | if ... {...} | test.rs:431:21:431:48 | { ... } | | +| test.rs:431:21:431:48 | { ... } | test.rs:431:13:431:49 | MacroExpr | | | test.rs:431:48:431:48 | 0 | test.rs:431:21:431:48 | ... > ... | | -| test.rs:434:9:434:10 | 42 | test.rs:427:41:435:5 | BlockExpr | | -| test.rs:437:5:446:5 | enter const_block_panic | test.rs:438:9:438:30 | Const | | -| test.rs:437:5:446:5 | exit const_block_panic (normal) | test.rs:437:5:446:5 | exit const_block_panic | | -| test.rs:437:35:446:5 | BlockExpr | test.rs:437:5:446:5 | exit const_block_panic (normal) | | +| test.rs:434:9:434:10 | 42 | test.rs:427:41:435:5 | { ... } | | +| test.rs:437:5:446:5 | enter fn const_block_panic | test.rs:438:9:438:30 | Const | | +| test.rs:437:5:446:5 | exit fn const_block_panic (normal) | test.rs:437:5:446:5 | exit fn const_block_panic | | +| test.rs:437:35:446:5 | { ... } | test.rs:437:5:446:5 | exit fn const_block_panic (normal) | | | test.rs:438:9:438:30 | Const | test.rs:439:9:444:9 | ExprStmt | | | test.rs:439:9:444:9 | ExprStmt | test.rs:439:12:439:16 | false | | -| test.rs:439:9:444:9 | IfExpr | test.rs:445:9:445:9 | N | | -| test.rs:439:12:439:16 | false | test.rs:439:9:444:9 | IfExpr | false | -| test.rs:442:17:442:24 | $crate::panicking::panic_explicit | test.rs:442:17:442:24 | CallExpr | | -| test.rs:442:17:442:24 | BlockExpr | test.rs:442:17:442:24 | exit panic_cold_explicit (normal) | | -| test.rs:442:17:442:24 | CallExpr | test.rs:442:17:442:24 | BlockExpr | | -| test.rs:442:17:442:24 | enter panic_cold_explicit | test.rs:442:17:442:24 | $crate::panicking::panic_explicit | | -| test.rs:442:17:442:24 | exit panic_cold_explicit (normal) | test.rs:442:17:442:24 | exit panic_cold_explicit | | -| test.rs:445:9:445:9 | N | test.rs:437:35:446:5 | BlockExpr | | -| test.rs:449:1:454:1 | enter dead_code | test.rs:450:5:452:5 | ExprStmt | | -| test.rs:449:1:454:1 | exit dead_code (normal) | test.rs:449:1:454:1 | exit dead_code | | +| test.rs:439:9:444:9 | if false {...} | test.rs:445:9:445:9 | N | | +| test.rs:439:12:439:16 | false | test.rs:439:9:444:9 | if false {...} | false | +| test.rs:442:17:442:24 | ...::panic_explicit | test.rs:442:17:442:24 | ...::panic_explicit(...) | | +| test.rs:442:17:442:24 | ...::panic_explicit(...) | test.rs:442:17:442:24 | { ... } | | +| test.rs:442:17:442:24 | enter fn panic_cold_explicit | test.rs:442:17:442:24 | ...::panic_explicit | | +| test.rs:442:17:442:24 | exit fn panic_cold_explicit (normal) | test.rs:442:17:442:24 | exit fn panic_cold_explicit | | +| test.rs:442:17:442:24 | { ... } | test.rs:442:17:442:24 | exit fn panic_cold_explicit (normal) | | +| test.rs:445:9:445:9 | N | test.rs:437:35:446:5 | { ... } | | +| test.rs:449:1:454:1 | enter fn dead_code | test.rs:450:5:452:5 | ExprStmt | | +| test.rs:449:1:454:1 | exit fn dead_code (normal) | test.rs:449:1:454:1 | exit fn dead_code | | | test.rs:450:5:452:5 | ExprStmt | test.rs:450:9:450:12 | true | | | test.rs:450:9:450:12 | true | test.rs:451:9:451:17 | ExprStmt | true | -| test.rs:451:9:451:16 | ReturnExpr | test.rs:449:1:454:1 | exit dead_code (normal) | return | +| test.rs:451:9:451:16 | return 0 | test.rs:449:1:454:1 | exit fn dead_code (normal) | return | | test.rs:451:9:451:17 | ExprStmt | test.rs:451:16:451:16 | 0 | | -| test.rs:451:16:451:16 | 0 | test.rs:451:9:451:16 | ReturnExpr | | -| test.rs:456:1:456:16 | enter do_thing | test.rs:456:15:456:16 | BlockExpr | | -| test.rs:456:1:456:16 | exit do_thing (normal) | test.rs:456:1:456:16 | exit do_thing | | -| test.rs:456:15:456:16 | BlockExpr | test.rs:456:1:456:16 | exit do_thing (normal) | | -| test.rs:458:1:460:1 | enter condition_not_met | test.rs:459:5:459:9 | false | | -| test.rs:458:1:460:1 | exit condition_not_met (normal) | test.rs:458:1:460:1 | exit condition_not_met | | -| test.rs:458:32:460:1 | BlockExpr | test.rs:458:1:460:1 | exit condition_not_met (normal) | | -| test.rs:459:5:459:9 | false | test.rs:458:32:460:1 | BlockExpr | | -| test.rs:462:1:462:21 | enter do_next_thing | test.rs:462:20:462:21 | BlockExpr | | -| test.rs:462:1:462:21 | exit do_next_thing (normal) | test.rs:462:1:462:21 | exit do_next_thing | | -| test.rs:462:20:462:21 | BlockExpr | test.rs:462:1:462:21 | exit do_next_thing (normal) | | -| test.rs:464:1:464:21 | enter do_last_thing | test.rs:464:20:464:21 | BlockExpr | | -| test.rs:464:1:464:21 | exit do_last_thing (normal) | test.rs:464:1:464:21 | exit do_last_thing | | -| test.rs:464:20:464:21 | BlockExpr | test.rs:464:1:464:21 | exit do_last_thing (normal) | | -| test.rs:466:1:480:1 | enter labelled_block1 | test.rs:467:5:478:6 | LetStmt | | -| test.rs:466:1:480:1 | exit labelled_block1 (normal) | test.rs:466:1:480:1 | exit labelled_block1 | | -| test.rs:466:29:480:1 | BlockExpr | test.rs:466:1:480:1 | exit labelled_block1 (normal) | | -| test.rs:467:5:478:6 | LetStmt | test.rs:468:9:468:19 | ExprStmt | | +| test.rs:451:16:451:16 | 0 | test.rs:451:9:451:16 | return 0 | | +| test.rs:456:1:456:16 | enter fn do_thing | test.rs:456:15:456:16 | { ... } | | +| test.rs:456:1:456:16 | exit fn do_thing (normal) | test.rs:456:1:456:16 | exit fn do_thing | | +| test.rs:456:15:456:16 | { ... } | test.rs:456:1:456:16 | exit fn do_thing (normal) | | +| test.rs:458:1:460:1 | enter fn condition_not_met | test.rs:459:5:459:9 | false | | +| test.rs:458:1:460:1 | exit fn condition_not_met (normal) | test.rs:458:1:460:1 | exit fn condition_not_met | | +| test.rs:458:32:460:1 | { ... } | test.rs:458:1:460:1 | exit fn condition_not_met (normal) | | +| test.rs:459:5:459:9 | false | test.rs:458:32:460:1 | { ... } | | +| test.rs:462:1:462:21 | enter fn do_next_thing | test.rs:462:20:462:21 | { ... } | | +| test.rs:462:1:462:21 | exit fn do_next_thing (normal) | test.rs:462:1:462:21 | exit fn do_next_thing | | +| test.rs:462:20:462:21 | { ... } | test.rs:462:1:462:21 | exit fn do_next_thing (normal) | | +| test.rs:464:1:464:21 | enter fn do_last_thing | test.rs:464:20:464:21 | { ... } | | +| test.rs:464:1:464:21 | exit fn do_last_thing (normal) | test.rs:464:1:464:21 | exit fn do_last_thing | | +| test.rs:464:20:464:21 | { ... } | test.rs:464:1:464:21 | exit fn do_last_thing (normal) | | +| test.rs:466:1:480:1 | enter fn labelled_block1 | test.rs:467:5:478:6 | let ... = ... | | +| test.rs:466:1:480:1 | exit fn labelled_block1 (normal) | test.rs:466:1:480:1 | exit fn labelled_block1 | | +| test.rs:466:29:480:1 | { ... } | test.rs:466:1:480:1 | exit fn labelled_block1 (normal) | | +| test.rs:467:5:478:6 | let ... = ... | test.rs:468:9:468:19 | ExprStmt | | | test.rs:467:9:467:14 | result | test.rs:479:5:479:10 | result | match | -| test.rs:467:18:478:5 | BlockExpr | test.rs:467:9:467:14 | result | | -| test.rs:468:9:468:16 | do_thing | test.rs:468:9:468:18 | CallExpr | | -| test.rs:468:9:468:18 | CallExpr | test.rs:469:9:471:9 | ExprStmt | | +| test.rs:467:18:478:5 | 'block: { ... } | test.rs:467:9:467:14 | result | | +| test.rs:468:9:468:16 | do_thing | test.rs:468:9:468:18 | do_thing(...) | | +| test.rs:468:9:468:18 | do_thing(...) | test.rs:469:9:471:9 | ExprStmt | | | test.rs:468:9:468:19 | ExprStmt | test.rs:468:9:468:16 | do_thing | | | test.rs:469:9:471:9 | ExprStmt | test.rs:469:12:469:28 | condition_not_met | | -| test.rs:469:9:471:9 | IfExpr | test.rs:472:9:472:24 | ExprStmt | | -| test.rs:469:12:469:28 | condition_not_met | test.rs:469:12:469:30 | CallExpr | | -| test.rs:469:12:469:30 | CallExpr | test.rs:469:9:471:9 | IfExpr | false | -| test.rs:469:12:469:30 | CallExpr | test.rs:470:13:470:27 | ExprStmt | true | -| test.rs:470:13:470:26 | BreakExpr | test.rs:467:18:478:5 | BlockExpr | break | +| test.rs:469:9:471:9 | if ... {...} | test.rs:472:9:472:24 | ExprStmt | | +| test.rs:469:12:469:28 | condition_not_met | test.rs:469:12:469:30 | condition_not_met(...) | | +| test.rs:469:12:469:30 | condition_not_met(...) | test.rs:469:9:471:9 | if ... {...} | false | +| test.rs:469:12:469:30 | condition_not_met(...) | test.rs:470:13:470:27 | ExprStmt | true | +| test.rs:470:13:470:26 | break ''block 1 | test.rs:467:18:478:5 | 'block: { ... } | break | | test.rs:470:13:470:27 | ExprStmt | test.rs:470:26:470:26 | 1 | | -| test.rs:470:26:470:26 | 1 | test.rs:470:13:470:26 | BreakExpr | | -| test.rs:472:9:472:21 | do_next_thing | test.rs:472:9:472:23 | CallExpr | | -| test.rs:472:9:472:23 | CallExpr | test.rs:473:9:475:9 | ExprStmt | | +| test.rs:470:26:470:26 | 1 | test.rs:470:13:470:26 | break ''block 1 | | +| test.rs:472:9:472:21 | do_next_thing | test.rs:472:9:472:23 | do_next_thing(...) | | +| test.rs:472:9:472:23 | do_next_thing(...) | test.rs:473:9:475:9 | ExprStmt | | | test.rs:472:9:472:24 | ExprStmt | test.rs:472:9:472:21 | do_next_thing | | | test.rs:473:9:475:9 | ExprStmt | test.rs:473:12:473:28 | condition_not_met | | -| test.rs:473:9:475:9 | IfExpr | test.rs:476:9:476:24 | ExprStmt | | -| test.rs:473:12:473:28 | condition_not_met | test.rs:473:12:473:30 | CallExpr | | -| test.rs:473:12:473:30 | CallExpr | test.rs:473:9:475:9 | IfExpr | false | -| test.rs:473:12:473:30 | CallExpr | test.rs:474:13:474:27 | ExprStmt | true | -| test.rs:474:13:474:26 | BreakExpr | test.rs:467:18:478:5 | BlockExpr | break | +| test.rs:473:9:475:9 | if ... {...} | test.rs:476:9:476:24 | ExprStmt | | +| test.rs:473:12:473:28 | condition_not_met | test.rs:473:12:473:30 | condition_not_met(...) | | +| test.rs:473:12:473:30 | condition_not_met(...) | test.rs:473:9:475:9 | if ... {...} | false | +| test.rs:473:12:473:30 | condition_not_met(...) | test.rs:474:13:474:27 | ExprStmt | true | +| test.rs:474:13:474:26 | break ''block 2 | test.rs:467:18:478:5 | 'block: { ... } | break | | test.rs:474:13:474:27 | ExprStmt | test.rs:474:26:474:26 | 2 | | -| test.rs:474:26:474:26 | 2 | test.rs:474:13:474:26 | BreakExpr | | -| test.rs:476:9:476:21 | do_last_thing | test.rs:476:9:476:23 | CallExpr | | -| test.rs:476:9:476:23 | CallExpr | test.rs:477:9:477:9 | 3 | | +| test.rs:474:26:474:26 | 2 | test.rs:474:13:474:26 | break ''block 2 | | +| test.rs:476:9:476:21 | do_last_thing | test.rs:476:9:476:23 | do_last_thing(...) | | +| test.rs:476:9:476:23 | do_last_thing(...) | test.rs:477:9:477:9 | 3 | | | test.rs:476:9:476:24 | ExprStmt | test.rs:476:9:476:21 | do_last_thing | | -| test.rs:477:9:477:9 | 3 | test.rs:467:18:478:5 | BlockExpr | | -| test.rs:479:5:479:10 | result | test.rs:466:29:480:1 | BlockExpr | | -| test.rs:482:1:490:1 | enter labelled_block2 | test.rs:483:5:489:6 | LetStmt | | -| test.rs:482:1:490:1 | exit labelled_block2 (normal) | test.rs:482:1:490:1 | exit labelled_block2 | | -| test.rs:482:22:490:1 | BlockExpr | test.rs:482:1:490:1 | exit labelled_block2 (normal) | | -| test.rs:483:5:489:6 | LetStmt | test.rs:484:9:484:34 | LetStmt | | -| test.rs:483:9:483:14 | result | test.rs:482:22:490:1 | BlockExpr | match | -| test.rs:483:18:489:5 | BlockExpr | test.rs:483:9:483:14 | result | | -| test.rs:484:9:484:34 | LetStmt | test.rs:484:30:484:33 | None | | -| test.rs:484:13:484:13 | x | test.rs:485:9:487:10 | LetStmt | match | +| test.rs:477:9:477:9 | 3 | test.rs:467:18:478:5 | 'block: { ... } | | +| test.rs:479:5:479:10 | result | test.rs:466:29:480:1 | { ... } | | +| test.rs:482:1:490:1 | enter fn labelled_block2 | test.rs:483:5:489:6 | let ... = ... | | +| test.rs:482:1:490:1 | exit fn labelled_block2 (normal) | test.rs:482:1:490:1 | exit fn labelled_block2 | | +| test.rs:482:22:490:1 | { ... } | test.rs:482:1:490:1 | exit fn labelled_block2 (normal) | | +| test.rs:483:5:489:6 | let ... = ... | test.rs:484:9:484:34 | let ... = None | | +| test.rs:483:9:483:14 | result | test.rs:482:22:490:1 | { ... } | match | +| test.rs:483:18:489:5 | 'block: { ... } | test.rs:483:9:483:14 | result | | +| test.rs:484:9:484:34 | let ... = None | test.rs:484:30:484:33 | None | | +| test.rs:484:13:484:13 | x | test.rs:485:9:487:10 | let ... = x else {...} | match | | test.rs:484:30:484:33 | None | test.rs:484:13:484:13 | x | | -| test.rs:485:9:487:10 | LetStmt | test.rs:485:23:485:23 | x | | +| test.rs:485:9:487:10 | let ... = x else {...} | test.rs:485:23:485:23 | x | | | test.rs:485:13:485:19 | TupleStructPat | test.rs:485:18:485:18 | y | match | | test.rs:485:13:485:19 | TupleStructPat | test.rs:486:13:486:27 | ExprStmt | no-match | | test.rs:485:18:485:18 | y | test.rs:488:9:488:9 | 0 | match | | test.rs:485:23:485:23 | x | test.rs:485:13:485:19 | TupleStructPat | | -| test.rs:486:13:486:26 | BreakExpr | test.rs:483:18:489:5 | BlockExpr | break | +| test.rs:486:13:486:26 | break ''block 1 | test.rs:483:18:489:5 | 'block: { ... } | break | | test.rs:486:13:486:27 | ExprStmt | test.rs:486:26:486:26 | 1 | | -| test.rs:486:26:486:26 | 1 | test.rs:486:13:486:26 | BreakExpr | | -| test.rs:488:9:488:9 | 0 | test.rs:483:18:489:5 | BlockExpr | | -| test.rs:492:1:498:1 | enter test_nested_function2 | test.rs:493:5:493:18 | LetStmt | | -| test.rs:492:1:498:1 | exit test_nested_function2 (normal) | test.rs:492:1:498:1 | exit test_nested_function2 | | -| test.rs:492:28:498:1 | BlockExpr | test.rs:492:1:498:1 | exit test_nested_function2 (normal) | | -| test.rs:493:5:493:18 | LetStmt | test.rs:493:17:493:17 | 0 | | -| test.rs:493:9:493:13 | x | test.rs:494:5:496:5 | nested | match | +| test.rs:486:26:486:26 | 1 | test.rs:486:13:486:26 | break ''block 1 | | +| test.rs:488:9:488:9 | 0 | test.rs:483:18:489:5 | 'block: { ... } | | +| test.rs:492:1:498:1 | enter fn test_nested_function2 | test.rs:493:5:493:18 | let ... = 0 | | +| test.rs:492:1:498:1 | exit fn test_nested_function2 (normal) | test.rs:492:1:498:1 | exit fn test_nested_function2 | | +| test.rs:492:28:498:1 | { ... } | test.rs:492:1:498:1 | exit fn test_nested_function2 (normal) | | +| test.rs:493:5:493:18 | let ... = 0 | test.rs:493:17:493:17 | 0 | | +| test.rs:493:9:493:13 | x | test.rs:494:5:496:5 | fn nested | match | | test.rs:493:17:493:17 | 0 | test.rs:493:9:493:13 | x | | -| test.rs:494:5:496:5 | enter nested | test.rs:494:15:494:15 | x | | -| test.rs:494:5:496:5 | exit nested (normal) | test.rs:494:5:496:5 | exit nested | | -| test.rs:494:5:496:5 | nested | test.rs:497:5:497:19 | ExprStmt | | -| test.rs:494:15:494:15 | x | test.rs:494:15:494:25 | Param | match | -| test.rs:494:15:494:25 | Param | test.rs:495:9:495:16 | ExprStmt | | -| test.rs:494:28:496:5 | BlockExpr | test.rs:494:5:496:5 | exit nested (normal) | | +| test.rs:494:5:496:5 | enter fn nested | test.rs:494:15:494:15 | x | | +| test.rs:494:5:496:5 | exit fn nested (normal) | test.rs:494:5:496:5 | exit fn nested | | +| test.rs:494:5:496:5 | fn nested | test.rs:497:5:497:19 | ExprStmt | | +| test.rs:494:15:494:15 | x | test.rs:494:15:494:25 | ...: ... | match | +| test.rs:494:15:494:25 | ...: ... | test.rs:495:9:495:16 | ExprStmt | | +| test.rs:494:28:496:5 | { ... } | test.rs:494:5:496:5 | exit fn nested (normal) | | | test.rs:495:9:495:10 | * ... | test.rs:495:15:495:15 | 1 | | -| test.rs:495:9:495:15 | ... += ... | test.rs:494:28:496:5 | BlockExpr | | +| test.rs:495:9:495:15 | ... += ... | test.rs:494:28:496:5 | { ... } | | | test.rs:495:9:495:16 | ExprStmt | test.rs:495:10:495:10 | x | | | test.rs:495:10:495:10 | x | test.rs:495:9:495:10 | * ... | | | test.rs:495:15:495:15 | 1 | test.rs:495:9:495:15 | ... += ... | | | test.rs:497:5:497:10 | nested | test.rs:497:17:497:17 | x | | -| test.rs:497:5:497:18 | CallExpr | test.rs:492:28:498:1 | BlockExpr | | +| test.rs:497:5:497:18 | nested(...) | test.rs:492:28:498:1 | { ... } | | | test.rs:497:5:497:19 | ExprStmt | test.rs:497:5:497:10 | nested | | -| test.rs:497:12:497:17 | RefExpr | test.rs:497:5:497:18 | CallExpr | | -| test.rs:497:17:497:17 | x | test.rs:497:12:497:17 | RefExpr | | -| test.rs:509:5:511:5 | enter new | test.rs:509:12:509:12 | a | | -| test.rs:509:5:511:5 | exit new (normal) | test.rs:509:5:511:5 | exit new | | -| test.rs:509:12:509:12 | a | test.rs:509:12:509:17 | Param | match | -| test.rs:509:12:509:17 | Param | test.rs:510:23:510:23 | a | | -| test.rs:509:28:511:5 | BlockExpr | test.rs:509:5:511:5 | exit new (normal) | | -| test.rs:510:9:510:25 | RecordExpr | test.rs:509:28:511:5 | BlockExpr | | -| test.rs:510:23:510:23 | a | test.rs:510:9:510:25 | RecordExpr | | -| test.rs:513:5:515:5 | enter negated | test.rs:513:16:513:19 | self | | -| test.rs:513:5:515:5 | exit negated (normal) | test.rs:513:5:515:5 | exit negated | | +| test.rs:497:12:497:17 | &mut x | test.rs:497:5:497:18 | nested(...) | | +| test.rs:497:17:497:17 | x | test.rs:497:12:497:17 | &mut x | | +| test.rs:509:5:511:5 | enter fn new | test.rs:509:12:509:12 | a | | +| test.rs:509:5:511:5 | exit fn new (normal) | test.rs:509:5:511:5 | exit fn new | | +| test.rs:509:12:509:12 | a | test.rs:509:12:509:17 | ...: i64 | match | +| test.rs:509:12:509:17 | ...: i64 | test.rs:510:23:510:23 | a | | +| test.rs:509:28:511:5 | { ... } | test.rs:509:5:511:5 | exit fn new (normal) | | +| test.rs:510:9:510:25 | MyNumber {...} | test.rs:509:28:511:5 | { ... } | | +| test.rs:510:23:510:23 | a | test.rs:510:9:510:25 | MyNumber {...} | | +| test.rs:513:5:515:5 | enter fn negated | test.rs:513:16:513:19 | self | | +| test.rs:513:5:515:5 | exit fn negated (normal) | test.rs:513:5:515:5 | exit fn negated | | | test.rs:513:16:513:19 | SelfParam | test.rs:514:23:514:26 | self | | | test.rs:513:16:513:19 | self | test.rs:513:16:513:19 | SelfParam | | -| test.rs:513:30:515:5 | BlockExpr | test.rs:513:5:515:5 | exit negated (normal) | | -| test.rs:514:9:514:30 | RecordExpr | test.rs:513:30:515:5 | BlockExpr | | -| test.rs:514:23:514:26 | self | test.rs:514:23:514:28 | FieldExpr | | -| test.rs:514:23:514:28 | FieldExpr | test.rs:514:9:514:30 | RecordExpr | | -| test.rs:517:5:519:5 | enter multifly_add | test.rs:517:26:517:29 | self | | -| test.rs:517:5:519:5 | exit multifly_add (normal) | test.rs:517:5:519:5 | exit multifly_add | | +| test.rs:513:30:515:5 | { ... } | test.rs:513:5:515:5 | exit fn negated (normal) | | +| test.rs:514:9:514:30 | MyNumber {...} | test.rs:513:30:515:5 | { ... } | | +| test.rs:514:23:514:26 | self | test.rs:514:23:514:28 | self.n | | +| test.rs:514:23:514:28 | self.n | test.rs:514:9:514:30 | MyNumber {...} | | +| test.rs:517:5:519:5 | enter fn multifly_add | test.rs:517:26:517:29 | self | | +| test.rs:517:5:519:5 | exit fn multifly_add (normal) | test.rs:517:5:519:5 | exit fn multifly_add | | | test.rs:517:21:517:29 | SelfParam | test.rs:517:32:517:32 | a | | | test.rs:517:26:517:29 | self | test.rs:517:21:517:29 | SelfParam | | -| test.rs:517:32:517:32 | a | test.rs:517:32:517:37 | Param | match | -| test.rs:517:32:517:37 | Param | test.rs:517:40:517:40 | b | | -| test.rs:517:40:517:40 | b | test.rs:517:40:517:45 | Param | match | -| test.rs:517:40:517:45 | Param | test.rs:518:9:518:34 | ExprStmt | | -| test.rs:517:48:519:5 | BlockExpr | test.rs:517:5:519:5 | exit multifly_add (normal) | | -| test.rs:518:9:518:12 | self | test.rs:518:9:518:14 | FieldExpr | | -| test.rs:518:9:518:14 | FieldExpr | test.rs:518:19:518:22 | self | | -| test.rs:518:9:518:33 | ... = ... | test.rs:517:48:519:5 | BlockExpr | | +| test.rs:517:32:517:32 | a | test.rs:517:32:517:37 | ...: i64 | match | +| test.rs:517:32:517:37 | ...: i64 | test.rs:517:40:517:40 | b | | +| test.rs:517:40:517:40 | b | test.rs:517:40:517:45 | ...: i64 | match | +| test.rs:517:40:517:45 | ...: i64 | test.rs:518:9:518:34 | ExprStmt | | +| test.rs:517:48:519:5 | { ... } | test.rs:517:5:519:5 | exit fn multifly_add (normal) | | +| test.rs:518:9:518:12 | self | test.rs:518:9:518:14 | self.n | | +| test.rs:518:9:518:14 | self.n | test.rs:518:19:518:22 | self | | +| test.rs:518:9:518:33 | ... = ... | test.rs:517:48:519:5 | { ... } | | | test.rs:518:9:518:34 | ExprStmt | test.rs:518:9:518:12 | self | | | test.rs:518:18:518:33 | ... + ... | test.rs:518:9:518:33 | ... = ... | | -| test.rs:518:19:518:22 | self | test.rs:518:19:518:24 | FieldExpr | | -| test.rs:518:19:518:24 | FieldExpr | test.rs:518:28:518:28 | a | | +| test.rs:518:19:518:22 | self | test.rs:518:19:518:24 | self.n | | +| test.rs:518:19:518:24 | self.n | test.rs:518:28:518:28 | a | | | test.rs:518:19:518:28 | ... * ... | test.rs:518:33:518:33 | b | | | test.rs:518:28:518:28 | a | test.rs:518:19:518:28 | ... * ... | | | test.rs:518:33:518:33 | b | test.rs:518:18:518:33 | ... + ... | | breakTarget -| test.rs:34:17:34:21 | BreakExpr | test.rs:28:9:40:9 | LoopExpr | -| test.rs:48:21:48:25 | BreakExpr | test.rs:46:13:53:13 | LoopExpr | -| test.rs:50:21:50:32 | BreakExpr | test.rs:45:9:54:9 | LoopExpr | -| test.rs:52:17:52:28 | BreakExpr | test.rs:46:13:53:13 | LoopExpr | -| test.rs:91:17:91:21 | BreakExpr | test.rs:88:9:94:9 | WhileExpr | -| test.rs:101:17:101:21 | BreakExpr | test.rs:99:9:103:9 | WhileExpr | -| test.rs:109:17:109:21 | BreakExpr | test.rs:107:9:112:9 | ForExpr | -| test.rs:117:13:117:26 | BreakExpr | test.rs:116:9:118:9 | LoopExpr | -| test.rs:197:17:197:28 | BreakExpr | test.rs:195:13:200:9 | LoopExpr | -| test.rs:210:17:210:35 | BreakExpr | test.rs:208:13:213:9 | LoopExpr | -| test.rs:222:13:222:30 | BreakExpr | test.rs:221:13:223:9 | BlockExpr | -| test.rs:470:13:470:26 | BreakExpr | test.rs:467:18:478:5 | BlockExpr | -| test.rs:474:13:474:26 | BreakExpr | test.rs:467:18:478:5 | BlockExpr | -| test.rs:486:13:486:26 | BreakExpr | test.rs:483:18:489:5 | BlockExpr | +| test.rs:34:17:34:21 | break | test.rs:28:9:40:9 | loop { ... } | +| test.rs:48:21:48:25 | break | test.rs:46:13:53:13 | 'inner: loop { ... } | +| test.rs:50:21:50:32 | break ''outer | test.rs:45:9:54:9 | 'outer: loop { ... } | +| test.rs:52:17:52:28 | break ''inner | test.rs:46:13:53:13 | 'inner: loop { ... } | +| test.rs:91:17:91:21 | break | test.rs:88:9:94:9 | while b { ... } | +| test.rs:101:17:101:21 | break | test.rs:99:9:103:9 | while ... { ... } | +| test.rs:109:17:109:21 | break | test.rs:107:9:112:9 | for ... in ... { ... } | +| test.rs:117:13:117:26 | break ... | test.rs:116:9:118:9 | loop { ... } | +| test.rs:197:17:197:28 | break ... | test.rs:195:13:200:9 | loop { ... } | +| test.rs:210:17:210:35 | break ''label ... | test.rs:208:13:213:9 | 'label: loop { ... } | +| test.rs:222:13:222:30 | break ''block ... | test.rs:221:13:223:9 | 'block: { ... } | +| test.rs:470:13:470:26 | break ''block 1 | test.rs:467:18:478:5 | 'block: { ... } | +| test.rs:474:13:474:26 | break ''block 2 | test.rs:467:18:478:5 | 'block: { ... } | +| test.rs:486:13:486:26 | break ''block 1 | test.rs:483:18:489:5 | 'block: { ... } | continueTarget -| test.rs:37:17:37:24 | ContinueExpr | test.rs:28:9:40:9 | LoopExpr | -| test.rs:63:21:63:28 | ContinueExpr | test.rs:61:13:68:13 | LoopExpr | -| test.rs:65:21:65:35 | ContinueExpr | test.rs:59:9:69:9 | LoopExpr | -| test.rs:67:17:67:31 | ContinueExpr | test.rs:61:13:68:13 | LoopExpr | -| test.rs:77:21:77:28 | ContinueExpr | test.rs:75:13:82:13 | LoopExpr | -| test.rs:79:21:79:35 | ContinueExpr | test.rs:75:13:82:13 | LoopExpr | -| test.rs:81:17:81:31 | ContinueExpr | test.rs:75:13:82:13 | LoopExpr | +| test.rs:37:17:37:24 | continue | test.rs:28:9:40:9 | loop { ... } | +| test.rs:63:21:63:28 | continue | test.rs:61:13:68:13 | 'inner: loop { ... } | +| test.rs:65:21:65:35 | continue 'outer | test.rs:59:9:69:9 | 'outer: loop { ... } | +| test.rs:67:17:67:31 | continue 'inner | test.rs:61:13:68:13 | 'inner: loop { ... } | +| test.rs:77:21:77:28 | continue | test.rs:75:13:82:13 | 'label: loop { ... } | +| test.rs:79:21:79:35 | continue 'label | test.rs:75:13:82:13 | 'label: loop { ... } | +| test.rs:81:17:81:31 | continue 'label | test.rs:75:13:82:13 | 'label: loop { ... } | diff --git a/rust/ql/test/library-tests/dataflow/barrier/inline-flow.expected b/rust/ql/test/library-tests/dataflow/barrier/inline-flow.expected index dd98dd9cee47..660aee690861 100644 --- a/rust/ql/test/library-tests/dataflow/barrier/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/barrier/inline-flow.expected @@ -1,29 +1,29 @@ models edges -| main.rs:9:13:9:19 | Param : unit | main.rs:9:30:14:1 | BlockExpr : unit | provenance | | -| main.rs:21:13:21:21 | CallExpr : unit | main.rs:22:10:22:10 | s | provenance | | -| main.rs:26:13:26:21 | CallExpr : unit | main.rs:27:22:27:22 | s : unit | provenance | | -| main.rs:27:13:27:23 | CallExpr : unit | main.rs:28:10:28:10 | s | provenance | | -| main.rs:27:22:27:22 | s : unit | main.rs:9:13:9:19 | Param : unit | provenance | | -| main.rs:27:22:27:22 | s : unit | main.rs:27:13:27:23 | CallExpr : unit | provenance | | -| main.rs:32:13:32:21 | CallExpr : unit | main.rs:33:10:33:10 | s | provenance | | +| main.rs:9:13:9:19 | ...: ... : unit | main.rs:9:30:14:1 | { ... } : unit | provenance | | +| main.rs:21:13:21:21 | source(...) : unit | main.rs:22:10:22:10 | s | provenance | | +| main.rs:26:13:26:21 | source(...) : unit | main.rs:27:22:27:22 | s : unit | provenance | | +| main.rs:27:13:27:23 | sanitize(...) : unit | main.rs:28:10:28:10 | s | provenance | | +| main.rs:27:22:27:22 | s : unit | main.rs:9:13:9:19 | ...: ... : unit | provenance | | +| main.rs:27:22:27:22 | s : unit | main.rs:27:13:27:23 | sanitize(...) : unit | provenance | | +| main.rs:32:13:32:21 | source(...) : unit | main.rs:33:10:33:10 | s | provenance | | nodes -| main.rs:9:13:9:19 | Param : unit | semmle.label | Param : unit | -| main.rs:9:30:14:1 | BlockExpr : unit | semmle.label | BlockExpr : unit | -| main.rs:17:10:17:18 | CallExpr | semmle.label | CallExpr | -| main.rs:21:13:21:21 | CallExpr : unit | semmle.label | CallExpr : unit | +| main.rs:9:13:9:19 | ...: ... : unit | semmle.label | ...: ... : unit | +| main.rs:9:30:14:1 | { ... } : unit | semmle.label | { ... } : unit | +| main.rs:17:10:17:18 | source(...) | semmle.label | source(...) | +| main.rs:21:13:21:21 | source(...) : unit | semmle.label | source(...) : unit | | main.rs:22:10:22:10 | s | semmle.label | s | -| main.rs:26:13:26:21 | CallExpr : unit | semmle.label | CallExpr : unit | -| main.rs:27:13:27:23 | CallExpr : unit | semmle.label | CallExpr : unit | +| main.rs:26:13:26:21 | source(...) : unit | semmle.label | source(...) : unit | +| main.rs:27:13:27:23 | sanitize(...) : unit | semmle.label | sanitize(...) : unit | | main.rs:27:22:27:22 | s : unit | semmle.label | s : unit | | main.rs:28:10:28:10 | s | semmle.label | s | -| main.rs:32:13:32:21 | CallExpr : unit | semmle.label | CallExpr : unit | +| main.rs:32:13:32:21 | source(...) : unit | semmle.label | source(...) : unit | | main.rs:33:10:33:10 | s | semmle.label | s | subpaths -| main.rs:27:22:27:22 | s : unit | main.rs:9:13:9:19 | Param : unit | main.rs:9:30:14:1 | BlockExpr : unit | main.rs:27:13:27:23 | CallExpr : unit | +| main.rs:27:22:27:22 | s : unit | main.rs:9:13:9:19 | ...: ... : unit | main.rs:9:30:14:1 | { ... } : unit | main.rs:27:13:27:23 | sanitize(...) : unit | testFailures #select -| main.rs:17:10:17:18 | CallExpr | main.rs:17:10:17:18 | CallExpr | main.rs:17:10:17:18 | CallExpr | $@ | main.rs:17:10:17:18 | CallExpr | CallExpr | -| main.rs:22:10:22:10 | s | main.rs:21:13:21:21 | CallExpr : unit | main.rs:22:10:22:10 | s | $@ | main.rs:21:13:21:21 | CallExpr : unit | CallExpr : unit | -| main.rs:28:10:28:10 | s | main.rs:26:13:26:21 | CallExpr : unit | main.rs:28:10:28:10 | s | $@ | main.rs:26:13:26:21 | CallExpr : unit | CallExpr : unit | -| main.rs:33:10:33:10 | s | main.rs:32:13:32:21 | CallExpr : unit | main.rs:33:10:33:10 | s | $@ | main.rs:32:13:32:21 | CallExpr : unit | CallExpr : unit | +| main.rs:17:10:17:18 | source(...) | main.rs:17:10:17:18 | source(...) | main.rs:17:10:17:18 | source(...) | $@ | main.rs:17:10:17:18 | source(...) | source(...) | +| main.rs:22:10:22:10 | s | main.rs:21:13:21:21 | source(...) : unit | main.rs:22:10:22:10 | s | $@ | main.rs:21:13:21:21 | source(...) : unit | source(...) : unit | +| main.rs:28:10:28:10 | s | main.rs:26:13:26:21 | source(...) : unit | main.rs:28:10:28:10 | s | $@ | main.rs:26:13:26:21 | source(...) : unit | source(...) : unit | +| main.rs:33:10:33:10 | s | main.rs:32:13:32:21 | source(...) : unit | main.rs:33:10:33:10 | s | $@ | main.rs:32:13:32:21 | source(...) : unit | source(...) : unit | diff --git a/rust/ql/test/library-tests/dataflow/global/inline-flow.expected b/rust/ql/test/library-tests/dataflow/global/inline-flow.expected index 8c1d90ee45a6..147fa059c31f 100644 --- a/rust/ql/test/library-tests/dataflow/global/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/global/inline-flow.expected @@ -1,74 +1,74 @@ models edges -| main.rs:12:28:14:1 | BlockExpr : unit | main.rs:17:13:17:23 | CallExpr : unit | provenance | | -| main.rs:13:5:13:13 | CallExpr : unit | main.rs:12:28:14:1 | BlockExpr : unit | provenance | | -| main.rs:17:13:17:23 | CallExpr : unit | main.rs:18:10:18:10 | a | provenance | | -| main.rs:21:12:21:17 | Param : unit | main.rs:22:10:22:10 | n | provenance | | -| main.rs:26:13:26:21 | CallExpr : unit | main.rs:27:13:27:13 | a : unit | provenance | | -| main.rs:27:13:27:13 | a : unit | main.rs:21:12:21:17 | Param : unit | provenance | | -| main.rs:30:17:30:22 | Param : unit | main.rs:30:32:32:1 | BlockExpr : unit | provenance | | -| main.rs:35:13:35:21 | CallExpr : unit | main.rs:36:26:36:26 | a : unit | provenance | | -| main.rs:36:13:36:27 | CallExpr : unit | main.rs:37:10:37:10 | b | provenance | | -| main.rs:36:26:36:26 | a : unit | main.rs:30:17:30:22 | Param : unit | provenance | | -| main.rs:36:26:36:26 | a : unit | main.rs:36:13:36:27 | CallExpr : unit | provenance | | -| main.rs:41:13:44:6 | CallExpr : unit | main.rs:45:10:45:10 | a | provenance | | -| main.rs:41:26:44:5 | BlockExpr : unit | main.rs:30:17:30:22 | Param : unit | provenance | | -| main.rs:41:26:44:5 | BlockExpr : unit | main.rs:41:13:44:6 | CallExpr : unit | provenance | | -| main.rs:43:9:43:18 | CallExpr : unit | main.rs:41:26:44:5 | BlockExpr : unit | provenance | | -| main.rs:56:23:56:28 | Param : unit | main.rs:57:14:57:14 | n | provenance | | -| main.rs:59:31:65:5 | BlockExpr : unit | main.rs:77:13:77:25 | ... .get_data(...) : unit | provenance | | -| main.rs:63:13:63:21 | CallExpr : unit | main.rs:59:31:65:5 | BlockExpr : unit | provenance | | -| main.rs:66:28:66:33 | Param : unit | main.rs:66:43:72:5 | BlockExpr : unit | provenance | | +| main.rs:12:28:14:1 | { ... } : unit | main.rs:17:13:17:23 | get_data(...) : unit | provenance | | +| main.rs:13:5:13:13 | source(...) : unit | main.rs:12:28:14:1 | { ... } : unit | provenance | | +| main.rs:17:13:17:23 | get_data(...) : unit | main.rs:18:10:18:10 | a | provenance | | +| main.rs:21:12:21:17 | ...: i64 : unit | main.rs:22:10:22:10 | n | provenance | | +| main.rs:26:13:26:21 | source(...) : unit | main.rs:27:13:27:13 | a : unit | provenance | | +| main.rs:27:13:27:13 | a : unit | main.rs:21:12:21:17 | ...: i64 : unit | provenance | | +| main.rs:30:17:30:22 | ...: i64 : unit | main.rs:30:32:32:1 | { ... } : unit | provenance | | +| main.rs:35:13:35:21 | source(...) : unit | main.rs:36:26:36:26 | a : unit | provenance | | +| main.rs:36:13:36:27 | pass_through(...) : unit | main.rs:37:10:37:10 | b | provenance | | +| main.rs:36:26:36:26 | a : unit | main.rs:30:17:30:22 | ...: i64 : unit | provenance | | +| main.rs:36:26:36:26 | a : unit | main.rs:36:13:36:27 | pass_through(...) : unit | provenance | | +| main.rs:41:13:44:6 | pass_through(...) : unit | main.rs:45:10:45:10 | a | provenance | | +| main.rs:41:26:44:5 | { ... } : unit | main.rs:30:17:30:22 | ...: i64 : unit | provenance | | +| main.rs:41:26:44:5 | { ... } : unit | main.rs:41:13:44:6 | pass_through(...) : unit | provenance | | +| main.rs:43:9:43:18 | source(...) : unit | main.rs:41:26:44:5 | { ... } : unit | provenance | | +| main.rs:56:23:56:28 | ...: i64 : unit | main.rs:57:14:57:14 | n | provenance | | +| main.rs:59:31:65:5 | { ... } : unit | main.rs:77:13:77:25 | ... .get_data(...) : unit | provenance | | +| main.rs:63:13:63:21 | source(...) : unit | main.rs:59:31:65:5 | { ... } : unit | provenance | | +| main.rs:66:28:66:33 | ...: i64 : unit | main.rs:66:43:72:5 | { ... } : unit | provenance | | | main.rs:77:13:77:25 | ... .get_data(...) : unit | main.rs:78:10:78:10 | a | provenance | | -| main.rs:83:13:83:21 | CallExpr : unit | main.rs:84:16:84:16 | a : unit | provenance | | -| main.rs:84:16:84:16 | a : unit | main.rs:56:23:56:28 | Param : unit | provenance | | -| main.rs:89:13:89:21 | CallExpr : unit | main.rs:90:29:90:29 | a : unit | provenance | | +| main.rs:83:13:83:21 | source(...) : unit | main.rs:84:16:84:16 | a : unit | provenance | | +| main.rs:84:16:84:16 | a : unit | main.rs:56:23:56:28 | ...: i64 : unit | provenance | | +| main.rs:89:13:89:21 | source(...) : unit | main.rs:90:29:90:29 | a : unit | provenance | | | main.rs:90:13:90:30 | ... .data_through(...) : unit | main.rs:91:10:91:10 | b | provenance | | -| main.rs:90:29:90:29 | a : unit | main.rs:66:28:66:33 | Param : unit | provenance | | +| main.rs:90:29:90:29 | a : unit | main.rs:66:28:66:33 | ...: i64 : unit | provenance | | | main.rs:90:29:90:29 | a : unit | main.rs:90:13:90:30 | ... .data_through(...) : unit | provenance | | nodes -| main.rs:12:28:14:1 | BlockExpr : unit | semmle.label | BlockExpr : unit | -| main.rs:13:5:13:13 | CallExpr : unit | semmle.label | CallExpr : unit | -| main.rs:17:13:17:23 | CallExpr : unit | semmle.label | CallExpr : unit | +| main.rs:12:28:14:1 | { ... } : unit | semmle.label | { ... } : unit | +| main.rs:13:5:13:13 | source(...) : unit | semmle.label | source(...) : unit | +| main.rs:17:13:17:23 | get_data(...) : unit | semmle.label | get_data(...) : unit | | main.rs:18:10:18:10 | a | semmle.label | a | -| main.rs:21:12:21:17 | Param : unit | semmle.label | Param : unit | +| main.rs:21:12:21:17 | ...: i64 : unit | semmle.label | ...: i64 : unit | | main.rs:22:10:22:10 | n | semmle.label | n | -| main.rs:26:13:26:21 | CallExpr : unit | semmle.label | CallExpr : unit | +| main.rs:26:13:26:21 | source(...) : unit | semmle.label | source(...) : unit | | main.rs:27:13:27:13 | a : unit | semmle.label | a : unit | -| main.rs:30:17:30:22 | Param : unit | semmle.label | Param : unit | -| main.rs:30:32:32:1 | BlockExpr : unit | semmle.label | BlockExpr : unit | -| main.rs:35:13:35:21 | CallExpr : unit | semmle.label | CallExpr : unit | -| main.rs:36:13:36:27 | CallExpr : unit | semmle.label | CallExpr : unit | +| main.rs:30:17:30:22 | ...: i64 : unit | semmle.label | ...: i64 : unit | +| main.rs:30:32:32:1 | { ... } : unit | semmle.label | { ... } : unit | +| main.rs:35:13:35:21 | source(...) : unit | semmle.label | source(...) : unit | +| main.rs:36:13:36:27 | pass_through(...) : unit | semmle.label | pass_through(...) : unit | | main.rs:36:26:36:26 | a : unit | semmle.label | a : unit | | main.rs:37:10:37:10 | b | semmle.label | b | -| main.rs:41:13:44:6 | CallExpr : unit | semmle.label | CallExpr : unit | -| main.rs:41:26:44:5 | BlockExpr : unit | semmle.label | BlockExpr : unit | -| main.rs:43:9:43:18 | CallExpr : unit | semmle.label | CallExpr : unit | +| main.rs:41:13:44:6 | pass_through(...) : unit | semmle.label | pass_through(...) : unit | +| main.rs:41:26:44:5 | { ... } : unit | semmle.label | { ... } : unit | +| main.rs:43:9:43:18 | source(...) : unit | semmle.label | source(...) : unit | | main.rs:45:10:45:10 | a | semmle.label | a | -| main.rs:56:23:56:28 | Param : unit | semmle.label | Param : unit | +| main.rs:56:23:56:28 | ...: i64 : unit | semmle.label | ...: i64 : unit | | main.rs:57:14:57:14 | n | semmle.label | n | -| main.rs:59:31:65:5 | BlockExpr : unit | semmle.label | BlockExpr : unit | -| main.rs:63:13:63:21 | CallExpr : unit | semmle.label | CallExpr : unit | -| main.rs:66:28:66:33 | Param : unit | semmle.label | Param : unit | -| main.rs:66:43:72:5 | BlockExpr : unit | semmle.label | BlockExpr : unit | +| main.rs:59:31:65:5 | { ... } : unit | semmle.label | { ... } : unit | +| main.rs:63:13:63:21 | source(...) : unit | semmle.label | source(...) : unit | +| main.rs:66:28:66:33 | ...: i64 : unit | semmle.label | ...: i64 : unit | +| main.rs:66:43:72:5 | { ... } : unit | semmle.label | { ... } : unit | | main.rs:77:13:77:25 | ... .get_data(...) : unit | semmle.label | ... .get_data(...) : unit | | main.rs:78:10:78:10 | a | semmle.label | a | -| main.rs:83:13:83:21 | CallExpr : unit | semmle.label | CallExpr : unit | +| main.rs:83:13:83:21 | source(...) : unit | semmle.label | source(...) : unit | | main.rs:84:16:84:16 | a : unit | semmle.label | a : unit | -| main.rs:89:13:89:21 | CallExpr : unit | semmle.label | CallExpr : unit | +| main.rs:89:13:89:21 | source(...) : unit | semmle.label | source(...) : unit | | main.rs:90:13:90:30 | ... .data_through(...) : unit | semmle.label | ... .data_through(...) : unit | | main.rs:90:29:90:29 | a : unit | semmle.label | a : unit | | main.rs:91:10:91:10 | b | semmle.label | b | subpaths -| main.rs:36:26:36:26 | a : unit | main.rs:30:17:30:22 | Param : unit | main.rs:30:32:32:1 | BlockExpr : unit | main.rs:36:13:36:27 | CallExpr : unit | -| main.rs:41:26:44:5 | BlockExpr : unit | main.rs:30:17:30:22 | Param : unit | main.rs:30:32:32:1 | BlockExpr : unit | main.rs:41:13:44:6 | CallExpr : unit | -| main.rs:90:29:90:29 | a : unit | main.rs:66:28:66:33 | Param : unit | main.rs:66:43:72:5 | BlockExpr : unit | main.rs:90:13:90:30 | ... .data_through(...) : unit | +| main.rs:36:26:36:26 | a : unit | main.rs:30:17:30:22 | ...: i64 : unit | main.rs:30:32:32:1 | { ... } : unit | main.rs:36:13:36:27 | pass_through(...) : unit | +| main.rs:41:26:44:5 | { ... } : unit | main.rs:30:17:30:22 | ...: i64 : unit | main.rs:30:32:32:1 | { ... } : unit | main.rs:41:13:44:6 | pass_through(...) : unit | +| main.rs:90:29:90:29 | a : unit | main.rs:66:28:66:33 | ...: i64 : unit | main.rs:66:43:72:5 | { ... } : unit | main.rs:90:13:90:30 | ... .data_through(...) : unit | testFailures #select -| main.rs:18:10:18:10 | a | main.rs:13:5:13:13 | CallExpr : unit | main.rs:18:10:18:10 | a | $@ | main.rs:13:5:13:13 | CallExpr : unit | CallExpr : unit | -| main.rs:22:10:22:10 | n | main.rs:26:13:26:21 | CallExpr : unit | main.rs:22:10:22:10 | n | $@ | main.rs:26:13:26:21 | CallExpr : unit | CallExpr : unit | -| main.rs:37:10:37:10 | b | main.rs:35:13:35:21 | CallExpr : unit | main.rs:37:10:37:10 | b | $@ | main.rs:35:13:35:21 | CallExpr : unit | CallExpr : unit | -| main.rs:45:10:45:10 | a | main.rs:43:9:43:18 | CallExpr : unit | main.rs:45:10:45:10 | a | $@ | main.rs:43:9:43:18 | CallExpr : unit | CallExpr : unit | -| main.rs:57:14:57:14 | n | main.rs:83:13:83:21 | CallExpr : unit | main.rs:57:14:57:14 | n | $@ | main.rs:83:13:83:21 | CallExpr : unit | CallExpr : unit | -| main.rs:78:10:78:10 | a | main.rs:63:13:63:21 | CallExpr : unit | main.rs:78:10:78:10 | a | $@ | main.rs:63:13:63:21 | CallExpr : unit | CallExpr : unit | -| main.rs:91:10:91:10 | b | main.rs:89:13:89:21 | CallExpr : unit | main.rs:91:10:91:10 | b | $@ | main.rs:89:13:89:21 | CallExpr : unit | CallExpr : unit | +| main.rs:18:10:18:10 | a | main.rs:13:5:13:13 | source(...) : unit | main.rs:18:10:18:10 | a | $@ | main.rs:13:5:13:13 | source(...) : unit | source(...) : unit | +| main.rs:22:10:22:10 | n | main.rs:26:13:26:21 | source(...) : unit | main.rs:22:10:22:10 | n | $@ | main.rs:26:13:26:21 | source(...) : unit | source(...) : unit | +| main.rs:37:10:37:10 | b | main.rs:35:13:35:21 | source(...) : unit | main.rs:37:10:37:10 | b | $@ | main.rs:35:13:35:21 | source(...) : unit | source(...) : unit | +| main.rs:45:10:45:10 | a | main.rs:43:9:43:18 | source(...) : unit | main.rs:45:10:45:10 | a | $@ | main.rs:43:9:43:18 | source(...) : unit | source(...) : unit | +| main.rs:57:14:57:14 | n | main.rs:83:13:83:21 | source(...) : unit | main.rs:57:14:57:14 | n | $@ | main.rs:83:13:83:21 | source(...) : unit | source(...) : unit | +| main.rs:78:10:78:10 | a | main.rs:63:13:63:21 | source(...) : unit | main.rs:78:10:78:10 | a | $@ | main.rs:63:13:63:21 | source(...) : unit | source(...) : unit | +| main.rs:91:10:91:10 | b | main.rs:89:13:89:21 | source(...) : unit | main.rs:91:10:91:10 | b | $@ | main.rs:89:13:89:21 | source(...) : unit | source(...) : unit | diff --git a/rust/ql/test/library-tests/dataflow/global/viableCallable.expected b/rust/ql/test/library-tests/dataflow/global/viableCallable.expected index 3a1db5acf22e..eaf4a7b14d91 100644 --- a/rust/ql/test/library-tests/dataflow/global/viableCallable.expected +++ b/rust/ql/test/library-tests/dataflow/global/viableCallable.expected @@ -1,27 +1,27 @@ -| main.rs:13:5:13:13 | CallExpr | main.rs:1:1:3:1 | source | -| main.rs:17:13:17:23 | CallExpr | main.rs:12:1:14:1 | get_data | -| main.rs:18:5:18:11 | CallExpr | main.rs:5:1:7:1 | sink | -| main.rs:22:5:22:11 | CallExpr | main.rs:5:1:7:1 | sink | -| main.rs:26:13:26:21 | CallExpr | main.rs:1:1:3:1 | source | -| main.rs:27:5:27:14 | CallExpr | main.rs:21:1:23:1 | data_in | -| main.rs:35:13:35:21 | CallExpr | main.rs:1:1:3:1 | source | -| main.rs:36:13:36:27 | CallExpr | main.rs:30:1:32:1 | pass_through | -| main.rs:37:5:37:11 | CallExpr | main.rs:5:1:7:1 | sink | -| main.rs:41:13:44:6 | CallExpr | main.rs:30:1:32:1 | pass_through | -| main.rs:43:9:43:18 | CallExpr | main.rs:1:1:3:1 | source | -| main.rs:45:5:45:11 | CallExpr | main.rs:5:1:7:1 | sink | -| main.rs:57:9:57:15 | CallExpr | main.rs:5:1:7:1 | sink | -| main.rs:63:13:63:21 | CallExpr | main.rs:1:1:3:1 | source | -| main.rs:77:13:77:25 | ... .get_data(...) | main.rs:59:5:65:5 | get_data | -| main.rs:78:5:78:11 | CallExpr | main.rs:5:1:7:1 | sink | -| main.rs:83:13:83:21 | CallExpr | main.rs:1:1:3:1 | source | -| main.rs:84:5:84:17 | ... .data_in(...) | main.rs:56:5:58:5 | data_in | -| main.rs:89:13:89:21 | CallExpr | main.rs:1:1:3:1 | source | -| main.rs:90:13:90:30 | ... .data_through(...) | main.rs:66:5:72:5 | data_through | -| main.rs:91:5:91:11 | CallExpr | main.rs:5:1:7:1 | sink | -| main.rs:95:5:95:22 | CallExpr | main.rs:16:1:19:1 | data_out_of_call | -| main.rs:96:5:96:21 | CallExpr | main.rs:25:1:28:1 | data_in_to_call | -| main.rs:97:5:97:23 | CallExpr | main.rs:34:1:38:1 | data_through_call | -| main.rs:99:5:99:24 | CallExpr | main.rs:75:1:79:1 | data_out_of_method | -| main.rs:100:5:100:28 | CallExpr | main.rs:81:1:85:1 | data_in_to_method_call | -| main.rs:101:5:101:25 | CallExpr | main.rs:87:1:92:1 | data_through_method | +| main.rs:13:5:13:13 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:17:13:17:23 | get_data(...) | main.rs:12:1:14:1 | fn get_data | +| main.rs:18:5:18:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:22:5:22:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:26:13:26:21 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:27:5:27:14 | data_in(...) | main.rs:21:1:23:1 | fn data_in | +| main.rs:35:13:35:21 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:36:13:36:27 | pass_through(...) | main.rs:30:1:32:1 | fn pass_through | +| main.rs:37:5:37:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:41:13:44:6 | pass_through(...) | main.rs:30:1:32:1 | fn pass_through | +| main.rs:43:9:43:18 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:45:5:45:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:57:9:57:15 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:63:13:63:21 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:77:13:77:25 | ... .get_data(...) | main.rs:59:5:65:5 | fn get_data | +| main.rs:78:5:78:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:83:13:83:21 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:84:5:84:17 | ... .data_in(...) | main.rs:56:5:58:5 | fn data_in | +| main.rs:89:13:89:21 | source(...) | main.rs:1:1:3:1 | fn source | +| main.rs:90:13:90:30 | ... .data_through(...) | main.rs:66:5:72:5 | fn data_through | +| main.rs:91:5:91:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:95:5:95:22 | data_out_of_call(...) | main.rs:16:1:19:1 | fn data_out_of_call | +| main.rs:96:5:96:21 | data_in_to_call(...) | main.rs:25:1:28:1 | fn data_in_to_call | +| main.rs:97:5:97:23 | data_through_call(...) | main.rs:34:1:38:1 | fn data_through_call | +| main.rs:99:5:99:24 | data_out_of_method(...) | main.rs:75:1:79:1 | fn data_out_of_method | +| main.rs:100:5:100:28 | data_in_to_method_call(...) | main.rs:81:1:85:1 | fn data_in_to_method_call | +| main.rs:101:5:101:25 | data_through_method(...) | main.rs:87:1:92:1 | fn data_through_method | diff --git a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected index 86bc28d7940b..02cc2fdf5919 100644 --- a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected +++ b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected @@ -1,116 +1,116 @@ | main.rs:3:11:3:11 | [SSA] i | main.rs:4:12:4:12 | i | | main.rs:3:11:3:11 | i | main.rs:3:11:3:11 | [SSA] i | -| main.rs:3:11:3:16 | Param | main.rs:3:11:3:11 | i | -| main.rs:4:5:4:12 | ... + ... | main.rs:3:26:5:1 | BlockExpr | +| main.rs:3:11:3:16 | ...: i64 | main.rs:3:11:3:11 | i | +| main.rs:4:5:4:12 | ... + ... | main.rs:3:26:5:1 | { ... } | | main.rs:7:9:7:9 | [SSA] s | main.rs:8:20:8:20 | s | | main.rs:7:9:7:9 | s | main.rs:7:9:7:9 | [SSA] s | -| main.rs:7:9:7:14 | Param | main.rs:7:9:7:9 | s | +| main.rs:7:9:7:14 | ...: i64 | main.rs:7:9:7:9 | s | | main.rs:19:9:19:9 | [SSA] s | main.rs:20:10:20:10 | s | | main.rs:19:9:19:9 | s | main.rs:19:9:19:9 | [SSA] s | -| main.rs:19:13:19:21 | CallExpr | main.rs:19:9:19:9 | s | +| main.rs:19:13:19:21 | source(...) | main.rs:19:9:19:9 | s | | main.rs:23:18:23:21 | [SSA] cond | main.rs:26:16:26:19 | cond | | main.rs:23:18:23:21 | cond | main.rs:23:18:23:21 | [SSA] cond | -| main.rs:23:18:23:27 | Param | main.rs:23:18:23:21 | cond | +| main.rs:23:18:23:27 | ...: bool | main.rs:23:18:23:21 | cond | | main.rs:24:9:24:9 | [SSA] a | main.rs:26:23:26:23 | a | | main.rs:24:9:24:9 | a | main.rs:24:9:24:9 | [SSA] a | -| main.rs:24:13:24:21 | CallExpr | main.rs:24:9:24:9 | a | +| main.rs:24:13:24:21 | source(...) | main.rs:24:9:24:9 | a | | main.rs:25:9:25:9 | [SSA] b | main.rs:26:34:26:34 | b | | main.rs:25:9:25:9 | b | main.rs:25:9:25:9 | [SSA] b | | main.rs:25:13:25:13 | 2 | main.rs:25:9:25:9 | b | | main.rs:26:9:26:9 | [SSA] c | main.rs:27:10:27:10 | c | | main.rs:26:9:26:9 | c | main.rs:26:9:26:9 | [SSA] c | -| main.rs:26:13:26:36 | IfExpr | main.rs:26:9:26:9 | c | -| main.rs:26:21:26:25 | BlockExpr | main.rs:26:13:26:36 | IfExpr | -| main.rs:26:23:26:23 | a | main.rs:26:21:26:25 | BlockExpr | -| main.rs:26:32:26:36 | BlockExpr | main.rs:26:13:26:36 | IfExpr | -| main.rs:26:34:26:34 | b | main.rs:26:32:26:36 | BlockExpr | +| main.rs:26:13:26:36 | if cond {...} else {...} | main.rs:26:9:26:9 | c | +| main.rs:26:21:26:25 | { ... } | main.rs:26:13:26:36 | if cond {...} else {...} | +| main.rs:26:23:26:23 | a | main.rs:26:21:26:25 | { ... } | +| main.rs:26:32:26:36 | { ... } | main.rs:26:13:26:36 | if cond {...} else {...} | +| main.rs:26:34:26:34 | b | main.rs:26:32:26:36 | { ... } | | main.rs:30:21:30:21 | [SSA] m | main.rs:32:19:32:19 | m | | main.rs:30:21:30:21 | m | main.rs:30:21:30:21 | [SSA] m | -| main.rs:30:21:30:34 | Param | main.rs:30:21:30:21 | m | +| main.rs:30:21:30:34 | ...: Option::<...> | main.rs:30:21:30:21 | m | | main.rs:31:9:31:9 | [SSA] a | main.rs:33:20:33:20 | a | | main.rs:31:9:31:9 | a | main.rs:31:9:31:9 | [SSA] a | -| main.rs:31:13:31:21 | CallExpr | main.rs:31:9:31:9 | a | +| main.rs:31:13:31:21 | source(...) | main.rs:31:9:31:9 | a | | main.rs:32:9:32:9 | [SSA] b | main.rs:36:10:36:10 | b | | main.rs:32:9:32:9 | b | main.rs:32:9:32:9 | [SSA] b | -| main.rs:32:13:35:5 | MatchExpr | main.rs:32:9:32:9 | b | -| main.rs:33:20:33:20 | a | main.rs:32:13:35:5 | MatchExpr | -| main.rs:34:17:34:17 | 0 | main.rs:32:13:35:5 | MatchExpr | +| main.rs:32:13:35:5 | match m { ... } | main.rs:32:9:32:9 | b | +| main.rs:33:20:33:20 | a | main.rs:32:13:35:5 | match m { ... } | +| main.rs:34:17:34:17 | 0 | main.rs:32:13:35:5 | match m { ... } | | main.rs:40:9:40:9 | [SSA] a | main.rs:43:10:43:10 | a | | main.rs:40:9:40:9 | a | main.rs:40:9:40:9 | [SSA] a | -| main.rs:40:13:42:5 | LoopExpr | main.rs:40:9:40:9 | a | -| main.rs:41:9:41:15 | BreakExpr | main.rs:40:13:42:5 | LoopExpr | -| main.rs:41:15:41:15 | 1 | main.rs:41:9:41:15 | BreakExpr | +| main.rs:40:13:42:5 | loop { ... } | main.rs:40:9:40:9 | a | +| main.rs:41:9:41:15 | break 1 | main.rs:40:13:42:5 | loop { ... } | +| main.rs:41:15:41:15 | 1 | main.rs:41:9:41:15 | break 1 | | main.rs:44:9:44:9 | [SSA] b | main.rs:47:10:47:10 | b | | main.rs:44:9:44:9 | b | main.rs:44:9:44:9 | [SSA] b | -| main.rs:44:13:46:5 | LoopExpr | main.rs:44:9:44:9 | b | -| main.rs:45:9:45:23 | BreakExpr | main.rs:44:13:46:5 | LoopExpr | -| main.rs:45:15:45:23 | CallExpr | main.rs:45:9:45:23 | BreakExpr | +| main.rs:44:13:46:5 | loop { ... } | main.rs:44:9:44:9 | b | +| main.rs:45:9:45:23 | break ... | main.rs:44:13:46:5 | loop { ... } | +| main.rs:45:15:45:23 | source(...) | main.rs:45:9:45:23 | break ... | | main.rs:51:9:51:13 | [SSA] i | main.rs:52:10:52:10 | i | | main.rs:51:9:51:13 | i | main.rs:51:9:51:13 | [SSA] i | | main.rs:51:17:51:17 | 1 | main.rs:51:9:51:13 | i | | main.rs:53:5:53:5 | [SSA] i | main.rs:54:10:54:10 | i | | main.rs:53:5:53:5 | i | main.rs:53:5:53:5 | [SSA] i | -| main.rs:53:9:53:17 | CallExpr | main.rs:53:5:53:5 | i | +| main.rs:53:9:53:17 | source(...) | main.rs:53:5:53:5 | i | | main.rs:61:9:61:9 | [SSA] i | main.rs:62:11:62:11 | i | | main.rs:61:9:61:9 | i | main.rs:61:9:61:9 | [SSA] i | -| main.rs:61:13:61:31 | CallExpr | main.rs:61:9:61:9 | i | +| main.rs:61:13:61:31 | ...::new(...) | main.rs:61:9:61:9 | i | | main.rs:66:9:66:9 | [SSA] a | main.rs:67:10:67:10 | a | | main.rs:66:9:66:9 | a | main.rs:66:9:66:9 | [SSA] a | | main.rs:66:13:66:26 | TupleExpr | main.rs:66:9:66:9 | a | | main.rs:67:10:67:10 | a | main.rs:68:10:68:10 | a | | main.rs:78:9:78:9 | [SSA] p | main.rs:83:10:83:10 | p | | main.rs:78:9:78:9 | p | main.rs:78:9:78:9 | [SSA] p | -| main.rs:78:13:82:5 | RecordExpr | main.rs:78:9:78:9 | p | +| main.rs:78:13:82:5 | Point {...} | main.rs:78:9:78:9 | p | | main.rs:83:10:83:10 | p | main.rs:84:10:84:10 | p | | main.rs:84:10:84:10 | p | main.rs:85:10:85:10 | p | | main.rs:92:9:92:9 | [SSA] p | main.rs:97:38:97:38 | p | | main.rs:92:9:92:9 | p | main.rs:92:9:92:9 | [SSA] p | -| main.rs:92:13:96:5 | RecordExpr | main.rs:92:9:92:9 | p | +| main.rs:92:13:96:5 | Point {...} | main.rs:92:9:92:9 | p | | main.rs:97:20:97:20 | [SSA] a | main.rs:98:10:98:10 | a | | main.rs:97:20:97:20 | a | main.rs:97:20:97:20 | [SSA] a | | main.rs:97:26:97:26 | [SSA] b | main.rs:99:10:99:10 | b | | main.rs:97:26:97:26 | b | main.rs:97:26:97:26 | [SSA] b | | main.rs:97:32:97:32 | [SSA] c | main.rs:100:10:100:10 | c | | main.rs:97:32:97:32 | c | main.rs:97:32:97:32 | [SSA] c | -| main.rs:97:38:97:38 | p | main.rs:97:9:97:34 | RecordPat | +| main.rs:97:38:97:38 | p | main.rs:97:9:97:34 | Point {...} | | main.rs:104:9:104:10 | [SSA] s1 | main.rs:106:11:106:12 | s1 | | main.rs:104:9:104:10 | s1 | main.rs:104:9:104:10 | [SSA] s1 | -| main.rs:104:14:104:28 | CallExpr | main.rs:104:9:104:10 | s1 | +| main.rs:104:14:104:28 | Some(...) | main.rs:104:9:104:10 | s1 | | main.rs:105:9:105:10 | [SSA] s2 | main.rs:110:11:110:12 | s2 | | main.rs:105:9:105:10 | s2 | main.rs:105:9:105:10 | [SSA] s2 | -| main.rs:105:14:105:20 | CallExpr | main.rs:105:9:105:10 | s2 | +| main.rs:105:14:105:20 | Some(...) | main.rs:105:9:105:10 | s2 | | main.rs:107:14:107:14 | [SSA] n | main.rs:107:25:107:25 | n | | main.rs:107:14:107:14 | n | main.rs:107:14:107:14 | [SSA] n | -| main.rs:107:20:107:26 | CallExpr | main.rs:106:5:109:5 | MatchExpr | -| main.rs:108:17:108:23 | CallExpr | main.rs:106:5:109:5 | MatchExpr | -| main.rs:110:5:113:5 | MatchExpr | main.rs:103:27:114:1 | BlockExpr | +| main.rs:107:20:107:26 | sink(...) | main.rs:106:5:109:5 | match s1 { ... } | +| main.rs:108:17:108:23 | sink(...) | main.rs:106:5:109:5 | match s1 { ... } | +| main.rs:110:5:113:5 | match s2 { ... } | main.rs:103:27:114:1 | { ... } | | main.rs:111:14:111:14 | [SSA] n | main.rs:111:25:111:25 | n | | main.rs:111:14:111:14 | n | main.rs:111:14:111:14 | [SSA] n | -| main.rs:111:20:111:26 | CallExpr | main.rs:110:5:113:5 | MatchExpr | -| main.rs:112:17:112:23 | CallExpr | main.rs:110:5:113:5 | MatchExpr | +| main.rs:111:20:111:26 | sink(...) | main.rs:110:5:113:5 | match s2 { ... } | +| main.rs:112:17:112:23 | sink(...) | main.rs:110:5:113:5 | match s2 { ... } | | main.rs:117:9:117:9 | [SSA] a | main.rs:118:5:118:5 | a | | main.rs:117:9:117:9 | a | main.rs:117:9:117:9 | [SSA] a | -| main.rs:117:13:117:17 | BlockExpr | main.rs:117:9:117:9 | a | -| main.rs:117:15:117:15 | 0 | main.rs:117:13:117:17 | BlockExpr | -| main.rs:118:5:118:5 | a | main.rs:116:31:119:1 | BlockExpr | +| main.rs:117:13:117:17 | { ... } | main.rs:117:9:117:9 | a | +| main.rs:117:15:117:15 | 0 | main.rs:117:13:117:17 | { ... } | +| main.rs:118:5:118:5 | a | main.rs:116:31:119:1 | { ... } | | main.rs:121:22:121:22 | [SSA] b | main.rs:123:12:123:12 | b | | main.rs:121:22:121:22 | b | main.rs:121:22:121:22 | [SSA] b | -| main.rs:121:22:121:28 | Param | main.rs:121:22:121:22 | b | +| main.rs:121:22:121:28 | ...: bool | main.rs:121:22:121:22 | b | | main.rs:122:9:122:9 | [SSA] a | main.rs:128:5:128:5 | a | | main.rs:122:9:122:9 | a | main.rs:122:9:122:9 | [SSA] a | -| main.rs:122:13:127:5 | BlockExpr | main.rs:122:9:122:9 | a | -| main.rs:124:13:124:26 | BreakExpr | main.rs:122:13:127:5 | BlockExpr | -| main.rs:124:26:124:26 | 1 | main.rs:124:13:124:26 | BreakExpr | -| main.rs:126:9:126:9 | 2 | main.rs:122:13:127:5 | BlockExpr | -| main.rs:128:5:128:5 | a | main.rs:121:38:129:1 | BlockExpr | +| main.rs:122:13:127:5 | 'block: { ... } | main.rs:122:9:122:9 | a | +| main.rs:124:13:124:26 | break ''block 1 | main.rs:122:13:127:5 | 'block: { ... } | +| main.rs:124:26:124:26 | 1 | main.rs:124:13:124:26 | break ''block 1 | +| main.rs:126:9:126:9 | 2 | main.rs:122:13:127:5 | 'block: { ... } | +| main.rs:128:5:128:5 | a | main.rs:121:38:129:1 | { ... } | | main.rs:131:22:131:22 | [SSA] b | main.rs:133:12:133:12 | b | | main.rs:131:22:131:22 | b | main.rs:131:22:131:22 | [SSA] b | -| main.rs:131:22:131:28 | Param | main.rs:131:22:131:22 | b | +| main.rs:131:22:131:28 | ...: bool | main.rs:131:22:131:22 | b | | main.rs:132:9:132:9 | [SSA] a | main.rs:138:5:138:5 | a | | main.rs:132:9:132:9 | a | main.rs:132:9:132:9 | [SSA] a | -| main.rs:132:13:137:5 | BlockExpr | main.rs:132:9:132:9 | a | -| main.rs:134:13:134:26 | BreakExpr | main.rs:132:13:137:5 | BlockExpr | -| main.rs:134:26:134:26 | 1 | main.rs:134:13:134:26 | BreakExpr | -| main.rs:136:9:136:22 | BreakExpr | main.rs:132:13:137:5 | BlockExpr | -| main.rs:136:22:136:22 | 2 | main.rs:136:9:136:22 | BreakExpr | -| main.rs:138:5:138:5 | a | main.rs:131:38:139:1 | BlockExpr | +| main.rs:132:13:137:5 | 'block: { ... } | main.rs:132:9:132:9 | a | +| main.rs:134:13:134:26 | break ''block 1 | main.rs:132:13:137:5 | 'block: { ... } | +| main.rs:134:26:134:26 | 1 | main.rs:134:13:134:26 | break ''block 1 | +| main.rs:136:9:136:22 | break ''block 2 | main.rs:132:13:137:5 | 'block: { ... } | +| main.rs:136:22:136:22 | 2 | main.rs:136:9:136:22 | break ''block 2 | +| main.rs:138:5:138:5 | a | main.rs:131:38:139:1 | { ... } | diff --git a/rust/ql/test/library-tests/dataflow/local/inline-flow.expected b/rust/ql/test/library-tests/dataflow/local/inline-flow.expected index 3cb35a1079fe..0932efcf4846 100644 --- a/rust/ql/test/library-tests/dataflow/local/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/local/inline-flow.expected @@ -1,28 +1,28 @@ models edges -| main.rs:19:13:19:21 | CallExpr : unit | main.rs:20:10:20:10 | s | provenance | | -| main.rs:24:13:24:21 | CallExpr : unit | main.rs:27:10:27:10 | c | provenance | | -| main.rs:31:13:31:21 | CallExpr : unit | main.rs:36:10:36:10 | b | provenance | | -| main.rs:45:15:45:23 | CallExpr : unit | main.rs:47:10:47:10 | b | provenance | | -| main.rs:53:9:53:17 | CallExpr : unit | main.rs:54:10:54:10 | i | provenance | | +| main.rs:19:13:19:21 | source(...) : unit | main.rs:20:10:20:10 | s | provenance | | +| main.rs:24:13:24:21 | source(...) : unit | main.rs:27:10:27:10 | c | provenance | | +| main.rs:31:13:31:21 | source(...) : unit | main.rs:36:10:36:10 | b | provenance | | +| main.rs:45:15:45:23 | source(...) : unit | main.rs:47:10:47:10 | b | provenance | | +| main.rs:53:9:53:17 | source(...) : unit | main.rs:54:10:54:10 | i | provenance | | nodes -| main.rs:15:10:15:18 | CallExpr | semmle.label | CallExpr | -| main.rs:19:13:19:21 | CallExpr : unit | semmle.label | CallExpr : unit | +| main.rs:15:10:15:18 | source(...) | semmle.label | source(...) | +| main.rs:19:13:19:21 | source(...) : unit | semmle.label | source(...) : unit | | main.rs:20:10:20:10 | s | semmle.label | s | -| main.rs:24:13:24:21 | CallExpr : unit | semmle.label | CallExpr : unit | +| main.rs:24:13:24:21 | source(...) : unit | semmle.label | source(...) : unit | | main.rs:27:10:27:10 | c | semmle.label | c | -| main.rs:31:13:31:21 | CallExpr : unit | semmle.label | CallExpr : unit | +| main.rs:31:13:31:21 | source(...) : unit | semmle.label | source(...) : unit | | main.rs:36:10:36:10 | b | semmle.label | b | -| main.rs:45:15:45:23 | CallExpr : unit | semmle.label | CallExpr : unit | +| main.rs:45:15:45:23 | source(...) : unit | semmle.label | source(...) : unit | | main.rs:47:10:47:10 | b | semmle.label | b | -| main.rs:53:9:53:17 | CallExpr : unit | semmle.label | CallExpr : unit | +| main.rs:53:9:53:17 | source(...) : unit | semmle.label | source(...) : unit | | main.rs:54:10:54:10 | i | semmle.label | i | subpaths testFailures #select -| main.rs:15:10:15:18 | CallExpr | main.rs:15:10:15:18 | CallExpr | main.rs:15:10:15:18 | CallExpr | $@ | main.rs:15:10:15:18 | CallExpr | CallExpr | -| main.rs:20:10:20:10 | s | main.rs:19:13:19:21 | CallExpr : unit | main.rs:20:10:20:10 | s | $@ | main.rs:19:13:19:21 | CallExpr : unit | CallExpr : unit | -| main.rs:27:10:27:10 | c | main.rs:24:13:24:21 | CallExpr : unit | main.rs:27:10:27:10 | c | $@ | main.rs:24:13:24:21 | CallExpr : unit | CallExpr : unit | -| main.rs:36:10:36:10 | b | main.rs:31:13:31:21 | CallExpr : unit | main.rs:36:10:36:10 | b | $@ | main.rs:31:13:31:21 | CallExpr : unit | CallExpr : unit | -| main.rs:47:10:47:10 | b | main.rs:45:15:45:23 | CallExpr : unit | main.rs:47:10:47:10 | b | $@ | main.rs:45:15:45:23 | CallExpr : unit | CallExpr : unit | -| main.rs:54:10:54:10 | i | main.rs:53:9:53:17 | CallExpr : unit | main.rs:54:10:54:10 | i | $@ | main.rs:53:9:53:17 | CallExpr : unit | CallExpr : unit | +| main.rs:15:10:15:18 | source(...) | main.rs:15:10:15:18 | source(...) | main.rs:15:10:15:18 | source(...) | $@ | main.rs:15:10:15:18 | source(...) | source(...) | +| main.rs:20:10:20:10 | s | main.rs:19:13:19:21 | source(...) : unit | main.rs:20:10:20:10 | s | $@ | main.rs:19:13:19:21 | source(...) : unit | source(...) : unit | +| main.rs:27:10:27:10 | c | main.rs:24:13:24:21 | source(...) : unit | main.rs:27:10:27:10 | c | $@ | main.rs:24:13:24:21 | source(...) : unit | source(...) : unit | +| main.rs:36:10:36:10 | b | main.rs:31:13:31:21 | source(...) : unit | main.rs:36:10:36:10 | b | $@ | main.rs:31:13:31:21 | source(...) : unit | source(...) : unit | +| main.rs:47:10:47:10 | b | main.rs:45:15:45:23 | source(...) : unit | main.rs:47:10:47:10 | b | $@ | main.rs:45:15:45:23 | source(...) : unit | source(...) : unit | +| main.rs:54:10:54:10 | i | main.rs:53:9:53:17 | source(...) : unit | main.rs:54:10:54:10 | i | $@ | main.rs:53:9:53:17 | source(...) : unit | source(...) : unit | diff --git a/rust/ql/test/library-tests/variables/Cfg.expected b/rust/ql/test/library-tests/variables/Cfg.expected index bb635f788792..77ea9a8b15bf 100644 --- a/rust/ql/test/library-tests/variables/Cfg.expected +++ b/rust/ql/test/library-tests/variables/Cfg.expected @@ -1,292 +1,292 @@ edges -| variables.rs:3:1:5:1 | enter print_str | variables.rs:3:14:3:14 | s | | -| variables.rs:3:1:5:1 | exit print_str (normal) | variables.rs:3:1:5:1 | exit print_str | | -| variables.rs:3:14:3:14 | s | variables.rs:3:14:3:20 | Param | match | -| variables.rs:3:14:3:20 | Param | variables.rs:4:5:4:22 | ExprStmt | | -| variables.rs:3:23:5:1 | BlockExpr | variables.rs:3:1:5:1 | exit print_str (normal) | | -| variables.rs:4:5:4:21 | $crate::io::_print | variables.rs:4:14:4:17 | "{}\\n" | | -| variables.rs:4:5:4:21 | MacroExpr | variables.rs:3:23:5:1 | BlockExpr | | +| variables.rs:3:1:5:1 | enter fn print_str | variables.rs:3:14:3:14 | s | | +| variables.rs:3:1:5:1 | exit fn print_str (normal) | variables.rs:3:1:5:1 | exit fn print_str | | +| variables.rs:3:14:3:14 | s | variables.rs:3:14:3:20 | ...: ... | match | +| variables.rs:3:14:3:20 | ...: ... | variables.rs:4:5:4:22 | ExprStmt | | +| variables.rs:3:23:5:1 | { ... } | variables.rs:3:1:5:1 | exit fn print_str (normal) | | +| variables.rs:4:5:4:21 | ...::_print | variables.rs:4:14:4:17 | "{}\\n" | | +| variables.rs:4:5:4:21 | MacroExpr | variables.rs:3:23:5:1 | { ... } | | | variables.rs:4:5:4:22 | ExprStmt | variables.rs:4:14:4:20 | MacroStmts | | | variables.rs:4:14:4:17 | "{}\\n" | variables.rs:4:20:4:20 | s | | -| variables.rs:4:14:4:20 | BlockExpr | variables.rs:4:5:4:21 | MacroExpr | | -| variables.rs:4:14:4:20 | CallExpr | variables.rs:4:14:4:20 | BlockExpr | | -| variables.rs:4:14:4:20 | ExprStmt | variables.rs:4:5:4:21 | $crate::io::_print | | +| variables.rs:4:14:4:20 | ...::_print(...) | variables.rs:4:14:4:20 | { ... } | | +| variables.rs:4:14:4:20 | ExprStmt | variables.rs:4:5:4:21 | ...::_print | | | variables.rs:4:14:4:20 | FormatArgsExpr | variables.rs:4:14:4:20 | MacroExpr | | -| variables.rs:4:14:4:20 | MacroExpr | variables.rs:4:14:4:20 | CallExpr | | +| variables.rs:4:14:4:20 | MacroExpr | variables.rs:4:14:4:20 | ...::_print(...) | | | variables.rs:4:14:4:20 | MacroStmts | variables.rs:4:14:4:20 | ExprStmt | | +| variables.rs:4:14:4:20 | { ... } | variables.rs:4:5:4:21 | MacroExpr | | | variables.rs:4:20:4:20 | s | variables.rs:4:14:4:20 | FormatArgsExpr | | -| variables.rs:7:1:9:1 | enter print_i64 | variables.rs:7:14:7:14 | i | | -| variables.rs:7:1:9:1 | exit print_i64 (normal) | variables.rs:7:1:9:1 | exit print_i64 | | -| variables.rs:7:14:7:14 | i | variables.rs:7:14:7:19 | Param | match | -| variables.rs:7:14:7:19 | Param | variables.rs:8:5:8:22 | ExprStmt | | -| variables.rs:7:22:9:1 | BlockExpr | variables.rs:7:1:9:1 | exit print_i64 (normal) | | -| variables.rs:8:5:8:21 | $crate::io::_print | variables.rs:8:14:8:17 | "{}\\n" | | -| variables.rs:8:5:8:21 | MacroExpr | variables.rs:7:22:9:1 | BlockExpr | | +| variables.rs:7:1:9:1 | enter fn print_i64 | variables.rs:7:14:7:14 | i | | +| variables.rs:7:1:9:1 | exit fn print_i64 (normal) | variables.rs:7:1:9:1 | exit fn print_i64 | | +| variables.rs:7:14:7:14 | i | variables.rs:7:14:7:19 | ...: i64 | match | +| variables.rs:7:14:7:19 | ...: i64 | variables.rs:8:5:8:22 | ExprStmt | | +| variables.rs:7:22:9:1 | { ... } | variables.rs:7:1:9:1 | exit fn print_i64 (normal) | | +| variables.rs:8:5:8:21 | ...::_print | variables.rs:8:14:8:17 | "{}\\n" | | +| variables.rs:8:5:8:21 | MacroExpr | variables.rs:7:22:9:1 | { ... } | | | variables.rs:8:5:8:22 | ExprStmt | variables.rs:8:14:8:20 | MacroStmts | | | variables.rs:8:14:8:17 | "{}\\n" | variables.rs:8:20:8:20 | i | | -| variables.rs:8:14:8:20 | BlockExpr | variables.rs:8:5:8:21 | MacroExpr | | -| variables.rs:8:14:8:20 | CallExpr | variables.rs:8:14:8:20 | BlockExpr | | -| variables.rs:8:14:8:20 | ExprStmt | variables.rs:8:5:8:21 | $crate::io::_print | | +| variables.rs:8:14:8:20 | ...::_print(...) | variables.rs:8:14:8:20 | { ... } | | +| variables.rs:8:14:8:20 | ExprStmt | variables.rs:8:5:8:21 | ...::_print | | | variables.rs:8:14:8:20 | FormatArgsExpr | variables.rs:8:14:8:20 | MacroExpr | | -| variables.rs:8:14:8:20 | MacroExpr | variables.rs:8:14:8:20 | CallExpr | | +| variables.rs:8:14:8:20 | MacroExpr | variables.rs:8:14:8:20 | ...::_print(...) | | | variables.rs:8:14:8:20 | MacroStmts | variables.rs:8:14:8:20 | ExprStmt | | +| variables.rs:8:14:8:20 | { ... } | variables.rs:8:5:8:21 | MacroExpr | | | variables.rs:8:20:8:20 | i | variables.rs:8:14:8:20 | FormatArgsExpr | | -| variables.rs:11:1:13:1 | enter print_i64_ref | variables.rs:11:18:11:18 | i | | -| variables.rs:11:1:13:1 | exit print_i64_ref (normal) | variables.rs:11:1:13:1 | exit print_i64_ref | | -| variables.rs:11:18:11:18 | i | variables.rs:11:18:11:24 | Param | match | -| variables.rs:11:18:11:24 | Param | variables.rs:12:5:12:13 | print_i64 | | -| variables.rs:11:27:13:1 | BlockExpr | variables.rs:11:1:13:1 | exit print_i64_ref (normal) | | +| variables.rs:11:1:13:1 | enter fn print_i64_ref | variables.rs:11:18:11:18 | i | | +| variables.rs:11:1:13:1 | exit fn print_i64_ref (normal) | variables.rs:11:1:13:1 | exit fn print_i64_ref | | +| variables.rs:11:18:11:18 | i | variables.rs:11:18:11:24 | ...: ... | match | +| variables.rs:11:18:11:24 | ...: ... | variables.rs:12:5:12:13 | print_i64 | | +| variables.rs:11:27:13:1 | { ... } | variables.rs:11:1:13:1 | exit fn print_i64_ref (normal) | | | variables.rs:12:5:12:13 | print_i64 | variables.rs:12:16:12:16 | i | | -| variables.rs:12:5:12:17 | CallExpr | variables.rs:11:27:13:1 | BlockExpr | | -| variables.rs:12:15:12:16 | * ... | variables.rs:12:5:12:17 | CallExpr | | +| variables.rs:12:5:12:17 | print_i64(...) | variables.rs:11:27:13:1 | { ... } | | +| variables.rs:12:15:12:16 | * ... | variables.rs:12:5:12:17 | print_i64(...) | | | variables.rs:12:16:12:16 | i | variables.rs:12:15:12:16 | * ... | | -| variables.rs:15:1:18:1 | enter immutable_variable | variables.rs:16:5:16:17 | LetStmt | | -| variables.rs:15:1:18:1 | exit immutable_variable (normal) | variables.rs:15:1:18:1 | exit immutable_variable | | -| variables.rs:15:25:18:1 | BlockExpr | variables.rs:15:1:18:1 | exit immutable_variable (normal) | | -| variables.rs:16:5:16:17 | LetStmt | variables.rs:16:14:16:16 | "a" | | +| variables.rs:15:1:18:1 | enter fn immutable_variable | variables.rs:16:5:16:17 | let ... = "a" | | +| variables.rs:15:1:18:1 | exit fn immutable_variable (normal) | variables.rs:15:1:18:1 | exit fn immutable_variable | | +| variables.rs:15:25:18:1 | { ... } | variables.rs:15:1:18:1 | exit fn immutable_variable (normal) | | +| variables.rs:16:5:16:17 | let ... = "a" | variables.rs:16:14:16:16 | "a" | | | variables.rs:16:9:16:10 | x1 | variables.rs:17:5:17:18 | ExprStmt | match | | variables.rs:16:14:16:16 | "a" | variables.rs:16:9:16:10 | x1 | | | variables.rs:17:5:17:13 | print_str | variables.rs:17:15:17:16 | x1 | | -| variables.rs:17:5:17:17 | CallExpr | variables.rs:15:25:18:1 | BlockExpr | | +| variables.rs:17:5:17:17 | print_str(...) | variables.rs:15:25:18:1 | { ... } | | | variables.rs:17:5:17:18 | ExprStmt | variables.rs:17:5:17:13 | print_str | | -| variables.rs:17:15:17:16 | x1 | variables.rs:17:5:17:17 | CallExpr | | -| variables.rs:20:1:25:1 | enter mutable_variable | variables.rs:21:5:21:19 | LetStmt | | -| variables.rs:20:1:25:1 | exit mutable_variable (normal) | variables.rs:20:1:25:1 | exit mutable_variable | | -| variables.rs:20:23:25:1 | BlockExpr | variables.rs:20:1:25:1 | exit mutable_variable (normal) | | -| variables.rs:21:5:21:19 | LetStmt | variables.rs:21:18:21:18 | 4 | | +| variables.rs:17:15:17:16 | x1 | variables.rs:17:5:17:17 | print_str(...) | | +| variables.rs:20:1:25:1 | enter fn mutable_variable | variables.rs:21:5:21:19 | let ... = 4 | | +| variables.rs:20:1:25:1 | exit fn mutable_variable (normal) | variables.rs:20:1:25:1 | exit fn mutable_variable | | +| variables.rs:20:23:25:1 | { ... } | variables.rs:20:1:25:1 | exit fn mutable_variable (normal) | | +| variables.rs:21:5:21:19 | let ... = 4 | variables.rs:21:18:21:18 | 4 | | | variables.rs:21:9:21:14 | x2 | variables.rs:22:5:22:18 | ExprStmt | match | | variables.rs:21:18:21:18 | 4 | variables.rs:21:9:21:14 | x2 | | | variables.rs:22:5:22:13 | print_i64 | variables.rs:22:15:22:16 | x2 | | -| variables.rs:22:5:22:17 | CallExpr | variables.rs:23:5:23:11 | ExprStmt | | +| variables.rs:22:5:22:17 | print_i64(...) | variables.rs:23:5:23:11 | ExprStmt | | | variables.rs:22:5:22:18 | ExprStmt | variables.rs:22:5:22:13 | print_i64 | | -| variables.rs:22:15:22:16 | x2 | variables.rs:22:5:22:17 | CallExpr | | +| variables.rs:22:15:22:16 | x2 | variables.rs:22:5:22:17 | print_i64(...) | | | variables.rs:23:5:23:6 | x2 | variables.rs:23:10:23:10 | 5 | | | variables.rs:23:5:23:10 | ... = ... | variables.rs:24:5:24:18 | ExprStmt | | | variables.rs:23:5:23:11 | ExprStmt | variables.rs:23:5:23:6 | x2 | | | variables.rs:23:10:23:10 | 5 | variables.rs:23:5:23:10 | ... = ... | | | variables.rs:24:5:24:13 | print_i64 | variables.rs:24:15:24:16 | x2 | | -| variables.rs:24:5:24:17 | CallExpr | variables.rs:20:23:25:1 | BlockExpr | | +| variables.rs:24:5:24:17 | print_i64(...) | variables.rs:20:23:25:1 | { ... } | | | variables.rs:24:5:24:18 | ExprStmt | variables.rs:24:5:24:13 | print_i64 | | -| variables.rs:24:15:24:16 | x2 | variables.rs:24:5:24:17 | CallExpr | | -| variables.rs:27:1:32:1 | enter mutable_variable_immutable_borrow | variables.rs:28:5:28:18 | LetStmt | | -| variables.rs:27:1:32:1 | exit mutable_variable_immutable_borrow (normal) | variables.rs:27:1:32:1 | exit mutable_variable_immutable_borrow | | -| variables.rs:27:40:32:1 | BlockExpr | variables.rs:27:1:32:1 | exit mutable_variable_immutable_borrow (normal) | | -| variables.rs:28:5:28:18 | LetStmt | variables.rs:28:17:28:17 | 1 | | +| variables.rs:24:15:24:16 | x2 | variables.rs:24:5:24:17 | print_i64(...) | | +| variables.rs:27:1:32:1 | enter fn mutable_variable_immutable_borrow | variables.rs:28:5:28:18 | let ... = 1 | | +| variables.rs:27:1:32:1 | exit fn mutable_variable_immutable_borrow (normal) | variables.rs:27:1:32:1 | exit fn mutable_variable_immutable_borrow | | +| variables.rs:27:40:32:1 | { ... } | variables.rs:27:1:32:1 | exit fn mutable_variable_immutable_borrow (normal) | | +| variables.rs:28:5:28:18 | let ... = 1 | variables.rs:28:17:28:17 | 1 | | | variables.rs:28:9:28:13 | x | variables.rs:29:5:29:22 | ExprStmt | match | | variables.rs:28:17:28:17 | 1 | variables.rs:28:9:28:13 | x | | | variables.rs:29:5:29:17 | print_i64_ref | variables.rs:29:20:29:20 | x | | -| variables.rs:29:5:29:21 | CallExpr | variables.rs:30:5:30:10 | ExprStmt | | +| variables.rs:29:5:29:21 | print_i64_ref(...) | variables.rs:30:5:30:10 | ExprStmt | | | variables.rs:29:5:29:22 | ExprStmt | variables.rs:29:5:29:17 | print_i64_ref | | -| variables.rs:29:19:29:20 | RefExpr | variables.rs:29:5:29:21 | CallExpr | | -| variables.rs:29:20:29:20 | x | variables.rs:29:19:29:20 | RefExpr | | +| variables.rs:29:19:29:20 | &x | variables.rs:29:5:29:21 | print_i64_ref(...) | | +| variables.rs:29:20:29:20 | x | variables.rs:29:19:29:20 | &x | | | variables.rs:30:5:30:5 | x | variables.rs:30:9:30:9 | 2 | | | variables.rs:30:5:30:9 | ... = ... | variables.rs:31:5:31:22 | ExprStmt | | | variables.rs:30:5:30:10 | ExprStmt | variables.rs:30:5:30:5 | x | | | variables.rs:30:9:30:9 | 2 | variables.rs:30:5:30:9 | ... = ... | | | variables.rs:31:5:31:17 | print_i64_ref | variables.rs:31:20:31:20 | x | | -| variables.rs:31:5:31:21 | CallExpr | variables.rs:27:40:32:1 | BlockExpr | | +| variables.rs:31:5:31:21 | print_i64_ref(...) | variables.rs:27:40:32:1 | { ... } | | | variables.rs:31:5:31:22 | ExprStmt | variables.rs:31:5:31:17 | print_i64_ref | | -| variables.rs:31:19:31:20 | RefExpr | variables.rs:31:5:31:21 | CallExpr | | -| variables.rs:31:20:31:20 | x | variables.rs:31:19:31:20 | RefExpr | | -| variables.rs:34:1:40:1 | enter variable_shadow1 | variables.rs:35:5:35:15 | LetStmt | | -| variables.rs:34:1:40:1 | exit variable_shadow1 (normal) | variables.rs:34:1:40:1 | exit variable_shadow1 | | -| variables.rs:34:23:40:1 | BlockExpr | variables.rs:34:1:40:1 | exit variable_shadow1 (normal) | | -| variables.rs:35:5:35:15 | LetStmt | variables.rs:35:14:35:14 | 1 | | +| variables.rs:31:19:31:20 | &x | variables.rs:31:5:31:21 | print_i64_ref(...) | | +| variables.rs:31:20:31:20 | x | variables.rs:31:19:31:20 | &x | | +| variables.rs:34:1:40:1 | enter fn variable_shadow1 | variables.rs:35:5:35:15 | let ... = 1 | | +| variables.rs:34:1:40:1 | exit fn variable_shadow1 (normal) | variables.rs:34:1:40:1 | exit fn variable_shadow1 | | +| variables.rs:34:23:40:1 | { ... } | variables.rs:34:1:40:1 | exit fn variable_shadow1 (normal) | | +| variables.rs:35:5:35:15 | let ... = 1 | variables.rs:35:14:35:14 | 1 | | | variables.rs:35:9:35:10 | x3 | variables.rs:36:5:36:18 | ExprStmt | match | | variables.rs:35:14:35:14 | 1 | variables.rs:35:9:35:10 | x3 | | | variables.rs:36:5:36:13 | print_i64 | variables.rs:36:15:36:16 | x3 | | -| variables.rs:36:5:36:17 | CallExpr | variables.rs:37:5:38:15 | LetStmt | | +| variables.rs:36:5:36:17 | print_i64(...) | variables.rs:37:5:38:15 | let ... = ... | | | variables.rs:36:5:36:18 | ExprStmt | variables.rs:36:5:36:13 | print_i64 | | -| variables.rs:36:15:36:16 | x3 | variables.rs:36:5:36:17 | CallExpr | | -| variables.rs:37:5:38:15 | LetStmt | variables.rs:38:9:38:10 | x3 | | +| variables.rs:36:15:36:16 | x3 | variables.rs:36:5:36:17 | print_i64(...) | | +| variables.rs:37:5:38:15 | let ... = ... | variables.rs:38:9:38:10 | x3 | | | variables.rs:37:9:37:10 | x3 | variables.rs:39:5:39:18 | ExprStmt | match | | variables.rs:38:9:38:10 | x3 | variables.rs:38:14:38:14 | 1 | | | variables.rs:38:9:38:14 | ... + ... | variables.rs:37:9:37:10 | x3 | | | variables.rs:38:14:38:14 | 1 | variables.rs:38:9:38:14 | ... + ... | | | variables.rs:39:5:39:13 | print_i64 | variables.rs:39:15:39:16 | x3 | | -| variables.rs:39:5:39:17 | CallExpr | variables.rs:34:23:40:1 | BlockExpr | | +| variables.rs:39:5:39:17 | print_i64(...) | variables.rs:34:23:40:1 | { ... } | | | variables.rs:39:5:39:18 | ExprStmt | variables.rs:39:5:39:13 | print_i64 | | -| variables.rs:39:15:39:16 | x3 | variables.rs:39:5:39:17 | CallExpr | | -| variables.rs:42:1:50:1 | enter variable_shadow2 | variables.rs:43:5:43:17 | LetStmt | | -| variables.rs:42:1:50:1 | exit variable_shadow2 (normal) | variables.rs:42:1:50:1 | exit variable_shadow2 | | -| variables.rs:42:23:50:1 | BlockExpr | variables.rs:42:1:50:1 | exit variable_shadow2 (normal) | | -| variables.rs:43:5:43:17 | LetStmt | variables.rs:43:14:43:16 | "a" | | +| variables.rs:39:15:39:16 | x3 | variables.rs:39:5:39:17 | print_i64(...) | | +| variables.rs:42:1:50:1 | enter fn variable_shadow2 | variables.rs:43:5:43:17 | let ... = "a" | | +| variables.rs:42:1:50:1 | exit fn variable_shadow2 (normal) | variables.rs:42:1:50:1 | exit fn variable_shadow2 | | +| variables.rs:42:23:50:1 | { ... } | variables.rs:42:1:50:1 | exit fn variable_shadow2 (normal) | | +| variables.rs:43:5:43:17 | let ... = "a" | variables.rs:43:14:43:16 | "a" | | | variables.rs:43:9:43:10 | x4 | variables.rs:44:5:44:18 | ExprStmt | match | | variables.rs:43:14:43:16 | "a" | variables.rs:43:9:43:10 | x4 | | | variables.rs:44:5:44:13 | print_str | variables.rs:44:15:44:16 | x4 | | -| variables.rs:44:5:44:17 | CallExpr | variables.rs:45:5:48:5 | ExprStmt | | +| variables.rs:44:5:44:17 | print_str(...) | variables.rs:45:5:48:5 | ExprStmt | | | variables.rs:44:5:44:18 | ExprStmt | variables.rs:44:5:44:13 | print_str | | -| variables.rs:44:15:44:16 | x4 | variables.rs:44:5:44:17 | CallExpr | | -| variables.rs:45:5:48:5 | BlockExpr | variables.rs:49:5:49:18 | ExprStmt | | -| variables.rs:45:5:48:5 | ExprStmt | variables.rs:46:9:46:21 | LetStmt | | -| variables.rs:46:9:46:21 | LetStmt | variables.rs:46:18:46:20 | "b" | | +| variables.rs:44:15:44:16 | x4 | variables.rs:44:5:44:17 | print_str(...) | | +| variables.rs:45:5:48:5 | ExprStmt | variables.rs:46:9:46:21 | let ... = "b" | | +| variables.rs:45:5:48:5 | { ... } | variables.rs:49:5:49:18 | ExprStmt | | +| variables.rs:46:9:46:21 | let ... = "b" | variables.rs:46:18:46:20 | "b" | | | variables.rs:46:13:46:14 | x4 | variables.rs:47:9:47:22 | ExprStmt | match | | variables.rs:46:18:46:20 | "b" | variables.rs:46:13:46:14 | x4 | | | variables.rs:47:9:47:17 | print_str | variables.rs:47:19:47:20 | x4 | | -| variables.rs:47:9:47:21 | CallExpr | variables.rs:45:5:48:5 | BlockExpr | | +| variables.rs:47:9:47:21 | print_str(...) | variables.rs:45:5:48:5 | { ... } | | | variables.rs:47:9:47:22 | ExprStmt | variables.rs:47:9:47:17 | print_str | | -| variables.rs:47:19:47:20 | x4 | variables.rs:47:9:47:21 | CallExpr | | +| variables.rs:47:19:47:20 | x4 | variables.rs:47:9:47:21 | print_str(...) | | | variables.rs:49:5:49:13 | print_str | variables.rs:49:15:49:16 | x4 | | -| variables.rs:49:5:49:17 | CallExpr | variables.rs:42:23:50:1 | BlockExpr | | +| variables.rs:49:5:49:17 | print_str(...) | variables.rs:42:23:50:1 | { ... } | | | variables.rs:49:5:49:18 | ExprStmt | variables.rs:49:5:49:13 | print_str | | -| variables.rs:49:15:49:16 | x4 | variables.rs:49:5:49:17 | CallExpr | | -| variables.rs:57:1:72:1 | enter let_pattern1 | variables.rs:58:5:67:47 | LetStmt | | -| variables.rs:57:1:72:1 | exit let_pattern1 (normal) | variables.rs:57:1:72:1 | exit let_pattern1 | | -| variables.rs:57:19:72:1 | BlockExpr | variables.rs:57:1:72:1 | exit let_pattern1 (normal) | | -| variables.rs:58:5:67:47 | LetStmt | variables.rs:67:11:67:13 | "a" | | +| variables.rs:49:15:49:16 | x4 | variables.rs:49:5:49:17 | print_str(...) | | +| variables.rs:57:1:72:1 | enter fn let_pattern1 | variables.rs:58:5:67:47 | let ... = ... | | +| variables.rs:57:1:72:1 | exit fn let_pattern1 (normal) | variables.rs:57:1:72:1 | exit fn let_pattern1 | | +| variables.rs:57:19:72:1 | { ... } | variables.rs:57:1:72:1 | exit fn let_pattern1 (normal) | | +| variables.rs:58:5:67:47 | let ... = ... | variables.rs:67:11:67:13 | "a" | | | variables.rs:58:9:67:5 | TuplePat | variables.rs:59:9:62:9 | TuplePat | match | | variables.rs:59:9:62:9 | TuplePat | variables.rs:60:13:60:14 | a1 | match | | variables.rs:60:13:60:14 | a1 | variables.rs:61:13:61:14 | b1 | match | -| variables.rs:61:13:61:14 | b1 | variables.rs:63:9:66:9 | RecordPat | match | -| variables.rs:63:9:66:9 | RecordPat | variables.rs:64:13:64:13 | x | match | +| variables.rs:61:13:61:14 | b1 | variables.rs:63:9:66:9 | Point {...} | match | +| variables.rs:63:9:66:9 | Point {...} | variables.rs:64:13:64:13 | x | match | | variables.rs:64:13:64:13 | x | variables.rs:65:13:65:13 | y | match | | variables.rs:65:13:65:13 | y | variables.rs:68:5:68:18 | ExprStmt | match | | variables.rs:67:9:67:46 | TupleExpr | variables.rs:58:9:67:5 | TuplePat | | | variables.rs:67:10:67:19 | TupleExpr | variables.rs:67:33:67:35 | "x" | | | variables.rs:67:11:67:13 | "a" | variables.rs:67:16:67:18 | "b" | | | variables.rs:67:16:67:18 | "b" | variables.rs:67:10:67:19 | TupleExpr | | -| variables.rs:67:22:67:45 | RecordExpr | variables.rs:67:9:67:46 | TupleExpr | | +| variables.rs:67:22:67:45 | Point {...} | variables.rs:67:9:67:46 | TupleExpr | | | variables.rs:67:33:67:35 | "x" | variables.rs:67:41:67:43 | "y" | | -| variables.rs:67:41:67:43 | "y" | variables.rs:67:22:67:45 | RecordExpr | | +| variables.rs:67:41:67:43 | "y" | variables.rs:67:22:67:45 | Point {...} | | | variables.rs:68:5:68:13 | print_str | variables.rs:68:15:68:16 | a1 | | -| variables.rs:68:5:68:17 | CallExpr | variables.rs:69:5:69:18 | ExprStmt | | +| variables.rs:68:5:68:17 | print_str(...) | variables.rs:69:5:69:18 | ExprStmt | | | variables.rs:68:5:68:18 | ExprStmt | variables.rs:68:5:68:13 | print_str | | -| variables.rs:68:15:68:16 | a1 | variables.rs:68:5:68:17 | CallExpr | | +| variables.rs:68:15:68:16 | a1 | variables.rs:68:5:68:17 | print_str(...) | | | variables.rs:69:5:69:13 | print_str | variables.rs:69:15:69:16 | b1 | | -| variables.rs:69:5:69:17 | CallExpr | variables.rs:70:5:70:17 | ExprStmt | | +| variables.rs:69:5:69:17 | print_str(...) | variables.rs:70:5:70:17 | ExprStmt | | | variables.rs:69:5:69:18 | ExprStmt | variables.rs:69:5:69:13 | print_str | | -| variables.rs:69:15:69:16 | b1 | variables.rs:69:5:69:17 | CallExpr | | +| variables.rs:69:15:69:16 | b1 | variables.rs:69:5:69:17 | print_str(...) | | | variables.rs:70:5:70:13 | print_str | variables.rs:70:15:70:15 | x | | -| variables.rs:70:5:70:16 | CallExpr | variables.rs:71:5:71:17 | ExprStmt | | +| variables.rs:70:5:70:16 | print_str(...) | variables.rs:71:5:71:17 | ExprStmt | | | variables.rs:70:5:70:17 | ExprStmt | variables.rs:70:5:70:13 | print_str | | -| variables.rs:70:15:70:15 | x | variables.rs:70:5:70:16 | CallExpr | | +| variables.rs:70:15:70:15 | x | variables.rs:70:5:70:16 | print_str(...) | | | variables.rs:71:5:71:13 | print_str | variables.rs:71:15:71:15 | y | | -| variables.rs:71:5:71:16 | CallExpr | variables.rs:57:19:72:1 | BlockExpr | | +| variables.rs:71:5:71:16 | print_str(...) | variables.rs:57:19:72:1 | { ... } | | | variables.rs:71:5:71:17 | ExprStmt | variables.rs:71:5:71:13 | print_str | | -| variables.rs:71:15:71:15 | y | variables.rs:71:5:71:16 | CallExpr | | -| variables.rs:74:1:82:1 | enter let_pattern2 | variables.rs:75:5:75:38 | LetStmt | | -| variables.rs:74:1:82:1 | exit let_pattern2 (normal) | variables.rs:74:1:82:1 | exit let_pattern2 | | -| variables.rs:74:19:82:1 | BlockExpr | variables.rs:74:1:82:1 | exit let_pattern2 (normal) | | -| variables.rs:75:5:75:38 | LetStmt | variables.rs:75:25:75:27 | "a" | | -| variables.rs:75:9:75:10 | p1 | variables.rs:76:5:79:11 | LetStmt | match | -| variables.rs:75:14:75:37 | RecordExpr | variables.rs:75:9:75:10 | p1 | | +| variables.rs:71:15:71:15 | y | variables.rs:71:5:71:16 | print_str(...) | | +| variables.rs:74:1:82:1 | enter fn let_pattern2 | variables.rs:75:5:75:38 | let ... = ... | | +| variables.rs:74:1:82:1 | exit fn let_pattern2 (normal) | variables.rs:74:1:82:1 | exit fn let_pattern2 | | +| variables.rs:74:19:82:1 | { ... } | variables.rs:74:1:82:1 | exit fn let_pattern2 (normal) | | +| variables.rs:75:5:75:38 | let ... = ... | variables.rs:75:25:75:27 | "a" | | +| variables.rs:75:9:75:10 | p1 | variables.rs:76:5:79:11 | let ... = p1 | match | +| variables.rs:75:14:75:37 | Point {...} | variables.rs:75:9:75:10 | p1 | | | variables.rs:75:25:75:27 | "a" | variables.rs:75:33:75:35 | "b" | | -| variables.rs:75:33:75:35 | "b" | variables.rs:75:14:75:37 | RecordExpr | | -| variables.rs:76:5:79:11 | LetStmt | variables.rs:79:9:79:10 | p1 | | -| variables.rs:76:9:79:5 | RecordPat | variables.rs:77:12:77:13 | a2 | match | +| variables.rs:75:33:75:35 | "b" | variables.rs:75:14:75:37 | Point {...} | | +| variables.rs:76:5:79:11 | let ... = p1 | variables.rs:79:9:79:10 | p1 | | +| variables.rs:76:9:79:5 | Point {...} | variables.rs:77:12:77:13 | a2 | match | | variables.rs:77:12:77:13 | a2 | variables.rs:78:12:78:13 | b2 | match | | variables.rs:78:12:78:13 | b2 | variables.rs:80:5:80:18 | ExprStmt | match | -| variables.rs:79:9:79:10 | p1 | variables.rs:76:9:79:5 | RecordPat | | +| variables.rs:79:9:79:10 | p1 | variables.rs:76:9:79:5 | Point {...} | | | variables.rs:80:5:80:13 | print_str | variables.rs:80:15:80:16 | a2 | | -| variables.rs:80:5:80:17 | CallExpr | variables.rs:81:5:81:18 | ExprStmt | | +| variables.rs:80:5:80:17 | print_str(...) | variables.rs:81:5:81:18 | ExprStmt | | | variables.rs:80:5:80:18 | ExprStmt | variables.rs:80:5:80:13 | print_str | | -| variables.rs:80:15:80:16 | a2 | variables.rs:80:5:80:17 | CallExpr | | +| variables.rs:80:15:80:16 | a2 | variables.rs:80:5:80:17 | print_str(...) | | | variables.rs:81:5:81:13 | print_str | variables.rs:81:15:81:16 | b2 | | -| variables.rs:81:5:81:17 | CallExpr | variables.rs:74:19:82:1 | BlockExpr | | +| variables.rs:81:5:81:17 | print_str(...) | variables.rs:74:19:82:1 | { ... } | | | variables.rs:81:5:81:18 | ExprStmt | variables.rs:81:5:81:13 | print_str | | -| variables.rs:81:15:81:16 | b2 | variables.rs:81:5:81:17 | CallExpr | | -| variables.rs:84:1:91:1 | enter let_pattern3 | variables.rs:85:5:85:42 | LetStmt | | -| variables.rs:84:1:91:1 | exit let_pattern3 (normal) | variables.rs:84:1:91:1 | exit let_pattern3 | | -| variables.rs:84:19:91:1 | BlockExpr | variables.rs:84:1:91:1 | exit let_pattern3 (normal) | | -| variables.rs:85:5:85:42 | LetStmt | variables.rs:85:14:85:17 | Some | | -| variables.rs:85:9:85:10 | s1 | variables.rs:87:8:88:12 | LetExpr | match | -| variables.rs:85:14:85:17 | Some | variables.rs:85:19:85:30 | String::from | | -| variables.rs:85:14:85:41 | CallExpr | variables.rs:85:9:85:10 | s1 | | -| variables.rs:85:19:85:30 | String::from | variables.rs:85:32:85:39 | "Hello!" | | -| variables.rs:85:19:85:40 | CallExpr | variables.rs:85:14:85:41 | CallExpr | | -| variables.rs:85:32:85:39 | "Hello!" | variables.rs:85:19:85:40 | CallExpr | | -| variables.rs:87:5:90:5 | IfExpr | variables.rs:84:19:91:1 | BlockExpr | | -| variables.rs:87:8:88:12 | LetExpr | variables.rs:88:11:88:12 | s1 | | -| variables.rs:87:12:87:23 | TupleStructPat | variables.rs:87:5:90:5 | IfExpr | no-match | +| variables.rs:81:15:81:16 | b2 | variables.rs:81:5:81:17 | print_str(...) | | +| variables.rs:84:1:91:1 | enter fn let_pattern3 | variables.rs:85:5:85:42 | let ... = ... | | +| variables.rs:84:1:91:1 | exit fn let_pattern3 (normal) | variables.rs:84:1:91:1 | exit fn let_pattern3 | | +| variables.rs:84:19:91:1 | { ... } | variables.rs:84:1:91:1 | exit fn let_pattern3 (normal) | | +| variables.rs:85:5:85:42 | let ... = ... | variables.rs:85:14:85:17 | Some | | +| variables.rs:85:9:85:10 | s1 | variables.rs:87:8:88:12 | let ... = s1 | match | +| variables.rs:85:14:85:17 | Some | variables.rs:85:19:85:30 | ...::from | | +| variables.rs:85:14:85:41 | Some(...) | variables.rs:85:9:85:10 | s1 | | +| variables.rs:85:19:85:30 | ...::from | variables.rs:85:32:85:39 | "Hello!" | | +| variables.rs:85:19:85:40 | ...::from(...) | variables.rs:85:14:85:41 | Some(...) | | +| variables.rs:85:32:85:39 | "Hello!" | variables.rs:85:19:85:40 | ...::from(...) | | +| variables.rs:87:5:90:5 | if ... {...} | variables.rs:84:19:91:1 | { ... } | | +| variables.rs:87:8:88:12 | let ... = s1 | variables.rs:88:11:88:12 | s1 | | +| variables.rs:87:12:87:23 | TupleStructPat | variables.rs:87:5:90:5 | if ... {...} | no-match | | variables.rs:87:12:87:23 | TupleStructPat | variables.rs:87:17:87:22 | s2 | match | | variables.rs:87:17:87:22 | s2 | variables.rs:89:9:89:22 | ExprStmt | match | | variables.rs:88:11:88:12 | s1 | variables.rs:87:12:87:23 | TupleStructPat | | -| variables.rs:88:14:90:5 | BlockExpr | variables.rs:87:5:90:5 | IfExpr | | +| variables.rs:88:14:90:5 | { ... } | variables.rs:87:5:90:5 | if ... {...} | | | variables.rs:89:9:89:17 | print_str | variables.rs:89:19:89:20 | s2 | | -| variables.rs:89:9:89:21 | CallExpr | variables.rs:88:14:90:5 | BlockExpr | | +| variables.rs:89:9:89:21 | print_str(...) | variables.rs:88:14:90:5 | { ... } | | | variables.rs:89:9:89:22 | ExprStmt | variables.rs:89:9:89:17 | print_str | | -| variables.rs:89:19:89:20 | s2 | variables.rs:89:9:89:21 | CallExpr | | -| variables.rs:93:1:99:1 | enter let_pattern4 | variables.rs:94:5:97:10 | LetStmt | | -| variables.rs:93:1:99:1 | exit let_pattern4 (normal) | variables.rs:93:1:99:1 | exit let_pattern4 | | -| variables.rs:93:19:99:1 | BlockExpr | variables.rs:93:1:99:1 | exit let_pattern4 (normal) | | -| variables.rs:94:5:97:10 | LetStmt | variables.rs:94:34:94:37 | Some | | +| variables.rs:89:19:89:20 | s2 | variables.rs:89:9:89:21 | print_str(...) | | +| variables.rs:93:1:99:1 | enter fn let_pattern4 | variables.rs:94:5:97:10 | let ... = ... else {...} | | +| variables.rs:93:1:99:1 | exit fn let_pattern4 (normal) | variables.rs:93:1:99:1 | exit fn let_pattern4 | | +| variables.rs:93:19:99:1 | { ... } | variables.rs:93:1:99:1 | exit fn let_pattern4 (normal) | | +| variables.rs:94:5:97:10 | let ... = ... else {...} | variables.rs:94:34:94:37 | Some | | | variables.rs:94:9:94:16 | TupleStructPat | variables.rs:94:14:94:15 | x5 | match | | variables.rs:94:9:94:16 | TupleStructPat | variables.rs:96:13:96:19 | MacroStmts | no-match | | variables.rs:94:14:94:15 | x5 | variables.rs:98:5:98:18 | ExprStmt | match | | variables.rs:94:34:94:37 | Some | variables.rs:94:39:94:42 | "x5" | | -| variables.rs:94:34:94:43 | CallExpr | variables.rs:94:9:94:16 | TupleStructPat | | -| variables.rs:94:39:94:42 | "x5" | variables.rs:94:34:94:43 | CallExpr | | -| variables.rs:96:13:96:19 | "not yet implemented" | variables.rs:96:13:96:19 | CallExpr | | -| variables.rs:96:13:96:19 | $crate::panicking::panic | variables.rs:96:13:96:19 | "not yet implemented" | | -| variables.rs:96:13:96:19 | CallExpr | variables.rs:96:13:96:19 | MacroExpr | | -| variables.rs:96:13:96:19 | MacroExpr | variables.rs:95:14:97:9 | BlockExpr | | -| variables.rs:96:13:96:19 | MacroStmts | variables.rs:96:13:96:19 | $crate::panicking::panic | | +| variables.rs:94:34:94:43 | Some(...) | variables.rs:94:9:94:16 | TupleStructPat | | +| variables.rs:94:39:94:42 | "x5" | variables.rs:94:34:94:43 | Some(...) | | +| variables.rs:96:13:96:19 | "not yet implemented" | variables.rs:96:13:96:19 | ...::panic(...) | | +| variables.rs:96:13:96:19 | ...::panic | variables.rs:96:13:96:19 | "not yet implemented" | | +| variables.rs:96:13:96:19 | ...::panic(...) | variables.rs:96:13:96:19 | MacroExpr | | +| variables.rs:96:13:96:19 | MacroExpr | variables.rs:95:14:97:9 | { ... } | | +| variables.rs:96:13:96:19 | MacroStmts | variables.rs:96:13:96:19 | ...::panic | | | variables.rs:98:5:98:13 | print_str | variables.rs:98:15:98:16 | x5 | | -| variables.rs:98:5:98:17 | CallExpr | variables.rs:93:19:99:1 | BlockExpr | | +| variables.rs:98:5:98:17 | print_str(...) | variables.rs:93:19:99:1 | { ... } | | | variables.rs:98:5:98:18 | ExprStmt | variables.rs:98:5:98:13 | print_str | | -| variables.rs:98:15:98:16 | x5 | variables.rs:98:5:98:17 | CallExpr | | -| variables.rs:101:1:108:1 | enter let_pattern5 | variables.rs:102:5:102:42 | LetStmt | | -| variables.rs:101:1:108:1 | exit let_pattern5 (normal) | variables.rs:101:1:108:1 | exit let_pattern5 | | -| variables.rs:101:19:108:1 | BlockExpr | variables.rs:101:1:108:1 | exit let_pattern5 (normal) | | -| variables.rs:102:5:102:42 | LetStmt | variables.rs:102:14:102:17 | Some | | -| variables.rs:102:9:102:10 | s1 | variables.rs:104:11:105:12 | LetExpr | match | -| variables.rs:102:14:102:17 | Some | variables.rs:102:19:102:30 | String::from | | -| variables.rs:102:14:102:41 | CallExpr | variables.rs:102:9:102:10 | s1 | | -| variables.rs:102:19:102:30 | String::from | variables.rs:102:32:102:39 | "Hello!" | | -| variables.rs:102:19:102:40 | CallExpr | variables.rs:102:14:102:41 | CallExpr | | -| variables.rs:102:32:102:39 | "Hello!" | variables.rs:102:19:102:40 | CallExpr | | -| variables.rs:104:5:107:5 | WhileExpr | variables.rs:101:19:108:1 | BlockExpr | | -| variables.rs:104:11:105:12 | LetExpr | variables.rs:105:11:105:12 | s1 | | -| variables.rs:104:15:104:26 | TupleStructPat | variables.rs:104:5:107:5 | WhileExpr | no-match | +| variables.rs:98:15:98:16 | x5 | variables.rs:98:5:98:17 | print_str(...) | | +| variables.rs:101:1:108:1 | enter fn let_pattern5 | variables.rs:102:5:102:42 | let ... = ... | | +| variables.rs:101:1:108:1 | exit fn let_pattern5 (normal) | variables.rs:101:1:108:1 | exit fn let_pattern5 | | +| variables.rs:101:19:108:1 | { ... } | variables.rs:101:1:108:1 | exit fn let_pattern5 (normal) | | +| variables.rs:102:5:102:42 | let ... = ... | variables.rs:102:14:102:17 | Some | | +| variables.rs:102:9:102:10 | s1 | variables.rs:104:11:105:12 | let ... = s1 | match | +| variables.rs:102:14:102:17 | Some | variables.rs:102:19:102:30 | ...::from | | +| variables.rs:102:14:102:41 | Some(...) | variables.rs:102:9:102:10 | s1 | | +| variables.rs:102:19:102:30 | ...::from | variables.rs:102:32:102:39 | "Hello!" | | +| variables.rs:102:19:102:40 | ...::from(...) | variables.rs:102:14:102:41 | Some(...) | | +| variables.rs:102:32:102:39 | "Hello!" | variables.rs:102:19:102:40 | ...::from(...) | | +| variables.rs:104:5:107:5 | while ... { ... } | variables.rs:101:19:108:1 | { ... } | | +| variables.rs:104:11:105:12 | let ... = s1 | variables.rs:105:11:105:12 | s1 | | +| variables.rs:104:15:104:26 | TupleStructPat | variables.rs:104:5:107:5 | while ... { ... } | no-match | | variables.rs:104:15:104:26 | TupleStructPat | variables.rs:104:20:104:25 | s2 | match | | variables.rs:104:20:104:25 | s2 | variables.rs:106:9:106:22 | ExprStmt | match | | variables.rs:105:11:105:12 | s1 | variables.rs:104:15:104:26 | TupleStructPat | | -| variables.rs:105:14:107:5 | BlockExpr | variables.rs:104:11:105:12 | LetExpr | | +| variables.rs:105:14:107:5 | { ... } | variables.rs:104:11:105:12 | let ... = s1 | | | variables.rs:106:9:106:17 | print_str | variables.rs:106:19:106:20 | s2 | | -| variables.rs:106:9:106:21 | CallExpr | variables.rs:105:14:107:5 | BlockExpr | | +| variables.rs:106:9:106:21 | print_str(...) | variables.rs:105:14:107:5 | { ... } | | | variables.rs:106:9:106:22 | ExprStmt | variables.rs:106:9:106:17 | print_str | | -| variables.rs:106:19:106:20 | s2 | variables.rs:106:9:106:21 | CallExpr | | -| variables.rs:110:1:125:1 | enter match_pattern1 | variables.rs:111:5:111:21 | LetStmt | | -| variables.rs:110:1:125:1 | exit match_pattern1 (normal) | variables.rs:110:1:125:1 | exit match_pattern1 | | -| variables.rs:110:21:125:1 | BlockExpr | variables.rs:110:1:125:1 | exit match_pattern1 (normal) | | -| variables.rs:111:5:111:21 | LetStmt | variables.rs:111:14:111:17 | Some | | -| variables.rs:111:9:111:10 | x6 | variables.rs:112:5:112:16 | LetStmt | match | +| variables.rs:106:19:106:20 | s2 | variables.rs:106:9:106:21 | print_str(...) | | +| variables.rs:110:1:125:1 | enter fn match_pattern1 | variables.rs:111:5:111:21 | let ... = ... | | +| variables.rs:110:1:125:1 | exit fn match_pattern1 (normal) | variables.rs:110:1:125:1 | exit fn match_pattern1 | | +| variables.rs:110:21:125:1 | { ... } | variables.rs:110:1:125:1 | exit fn match_pattern1 (normal) | | +| variables.rs:111:5:111:21 | let ... = ... | variables.rs:111:14:111:17 | Some | | +| variables.rs:111:9:111:10 | x6 | variables.rs:112:5:112:16 | let ... = 10 | match | | variables.rs:111:14:111:17 | Some | variables.rs:111:19:111:19 | 5 | | -| variables.rs:111:14:111:20 | CallExpr | variables.rs:111:9:111:10 | x6 | | -| variables.rs:111:19:111:19 | 5 | variables.rs:111:14:111:20 | CallExpr | | -| variables.rs:112:5:112:16 | LetStmt | variables.rs:112:14:112:15 | 10 | | +| variables.rs:111:14:111:20 | Some(...) | variables.rs:111:9:111:10 | x6 | | +| variables.rs:111:19:111:19 | 5 | variables.rs:111:14:111:20 | Some(...) | | +| variables.rs:112:5:112:16 | let ... = 10 | variables.rs:112:14:112:15 | 10 | | | variables.rs:112:9:112:10 | y1 | variables.rs:114:5:122:5 | ExprStmt | match | | variables.rs:112:14:112:15 | 10 | variables.rs:112:9:112:10 | y1 | | | variables.rs:114:5:122:5 | ExprStmt | variables.rs:114:11:114:12 | x6 | | -| variables.rs:114:5:122:5 | MatchExpr | variables.rs:124:5:124:18 | ExprStmt | | +| variables.rs:114:5:122:5 | match x6 { ... } | variables.rs:124:5:124:18 | ExprStmt | | | variables.rs:114:11:114:12 | x6 | variables.rs:115:9:115:16 | TupleStructPat | | | variables.rs:115:9:115:16 | TupleStructPat | variables.rs:115:14:115:15 | 50 | match | | variables.rs:115:9:115:16 | TupleStructPat | variables.rs:116:9:116:16 | TupleStructPat | no-match | -| variables.rs:115:14:115:15 | 50 | variables.rs:115:14:115:15 | LiteralPat | | -| variables.rs:115:14:115:15 | LiteralPat | variables.rs:115:21:115:29 | print_str | match | -| variables.rs:115:14:115:15 | LiteralPat | variables.rs:116:9:116:16 | TupleStructPat | no-match | +| variables.rs:115:14:115:15 | 50 | variables.rs:115:14:115:15 | 50 | | +| variables.rs:115:14:115:15 | 50 | variables.rs:115:21:115:29 | print_str | match | +| variables.rs:115:14:115:15 | 50 | variables.rs:116:9:116:16 | TupleStructPat | no-match | | variables.rs:115:21:115:29 | print_str | variables.rs:115:31:115:38 | "Got 50" | | -| variables.rs:115:21:115:39 | CallExpr | variables.rs:114:5:122:5 | MatchExpr | | -| variables.rs:115:31:115:38 | "Got 50" | variables.rs:115:21:115:39 | CallExpr | | +| variables.rs:115:21:115:39 | print_str(...) | variables.rs:114:5:122:5 | match x6 { ... } | | +| variables.rs:115:31:115:38 | "Got 50" | variables.rs:115:21:115:39 | print_str(...) | | | variables.rs:116:9:116:16 | TupleStructPat | variables.rs:116:14:116:15 | y1 | match | | variables.rs:116:9:116:16 | TupleStructPat | variables.rs:121:9:121:12 | None | no-match | | variables.rs:116:14:116:15 | y1 | variables.rs:119:13:119:21 | print_i64 | match | -| variables.rs:118:9:120:9 | BlockExpr | variables.rs:114:5:122:5 | MatchExpr | | +| variables.rs:118:9:120:9 | { ... } | variables.rs:114:5:122:5 | match x6 { ... } | | | variables.rs:119:13:119:21 | print_i64 | variables.rs:119:23:119:24 | y1 | | -| variables.rs:119:13:119:25 | CallExpr | variables.rs:118:9:120:9 | BlockExpr | | -| variables.rs:119:23:119:24 | y1 | variables.rs:119:13:119:25 | CallExpr | | +| variables.rs:119:13:119:25 | print_i64(...) | variables.rs:118:9:120:9 | { ... } | | +| variables.rs:119:23:119:24 | y1 | variables.rs:119:13:119:25 | print_i64(...) | | | variables.rs:121:9:121:12 | None | variables.rs:121:17:121:25 | print_str | match | | variables.rs:121:17:121:25 | print_str | variables.rs:121:27:121:32 | "NONE" | | -| variables.rs:121:17:121:33 | CallExpr | variables.rs:114:5:122:5 | MatchExpr | | -| variables.rs:121:27:121:32 | "NONE" | variables.rs:121:17:121:33 | CallExpr | | +| variables.rs:121:17:121:33 | print_str(...) | variables.rs:114:5:122:5 | match x6 { ... } | | +| variables.rs:121:27:121:32 | "NONE" | variables.rs:121:17:121:33 | print_str(...) | | | variables.rs:124:5:124:13 | print_i64 | variables.rs:124:15:124:16 | y1 | | -| variables.rs:124:5:124:17 | CallExpr | variables.rs:110:21:125:1 | BlockExpr | | +| variables.rs:124:5:124:17 | print_i64(...) | variables.rs:110:21:125:1 | { ... } | | | variables.rs:124:5:124:18 | ExprStmt | variables.rs:124:5:124:13 | print_i64 | | -| variables.rs:124:15:124:16 | y1 | variables.rs:124:5:124:17 | CallExpr | | -| variables.rs:127:1:152:1 | enter match_pattern2 | variables.rs:128:5:128:36 | LetStmt | | -| variables.rs:127:1:152:1 | exit match_pattern2 (normal) | variables.rs:127:1:152:1 | exit match_pattern2 | | -| variables.rs:127:21:152:1 | BlockExpr | variables.rs:127:1:152:1 | exit match_pattern2 (normal) | | -| variables.rs:128:5:128:36 | LetStmt | variables.rs:128:20:128:20 | 2 | | +| variables.rs:124:15:124:16 | y1 | variables.rs:124:5:124:17 | print_i64(...) | | +| variables.rs:127:1:152:1 | enter fn match_pattern2 | variables.rs:128:5:128:36 | let ... = ... | | +| variables.rs:127:1:152:1 | exit fn match_pattern2 (normal) | variables.rs:127:1:152:1 | exit fn match_pattern2 | | +| variables.rs:127:21:152:1 | { ... } | variables.rs:127:1:152:1 | exit fn match_pattern2 (normal) | | +| variables.rs:128:5:128:36 | let ... = ... | variables.rs:128:20:128:20 | 2 | | | variables.rs:128:9:128:15 | numbers | variables.rs:130:5:140:5 | ExprStmt | match | | variables.rs:128:19:128:35 | TupleExpr | variables.rs:128:9:128:15 | numbers | | | variables.rs:128:20:128:20 | 2 | variables.rs:128:23:128:23 | 4 | | @@ -295,311 +295,311 @@ edges | variables.rs:128:29:128:30 | 16 | variables.rs:128:33:128:34 | 32 | | | variables.rs:128:33:128:34 | 32 | variables.rs:128:19:128:35 | TupleExpr | | | variables.rs:130:5:140:5 | ExprStmt | variables.rs:130:11:130:17 | numbers | | -| variables.rs:130:5:140:5 | MatchExpr | variables.rs:142:11:142:17 | numbers | | +| variables.rs:130:5:140:5 | match numbers { ... } | variables.rs:142:11:142:17 | numbers | | | variables.rs:130:11:130:17 | numbers | variables.rs:131:9:135:9 | TuplePat | | | variables.rs:131:9:135:9 | TuplePat | variables.rs:132:13:132:17 | first | match | -| variables.rs:132:13:132:17 | first | variables.rs:132:20:132:20 | WildcardPat | match | -| variables.rs:132:20:132:20 | WildcardPat | variables.rs:133:13:133:17 | third | match | -| variables.rs:133:13:133:17 | third | variables.rs:133:20:133:20 | WildcardPat | match | -| variables.rs:133:20:133:20 | WildcardPat | variables.rs:134:13:134:17 | fifth | match | +| variables.rs:132:13:132:17 | first | variables.rs:132:20:132:20 | _ | match | +| variables.rs:132:20:132:20 | _ | variables.rs:133:13:133:17 | third | match | +| variables.rs:133:13:133:17 | third | variables.rs:133:20:133:20 | _ | match | +| variables.rs:133:20:133:20 | _ | variables.rs:134:13:134:17 | fifth | match | | variables.rs:134:13:134:17 | fifth | variables.rs:136:13:136:29 | ExprStmt | match | -| variables.rs:135:14:139:9 | BlockExpr | variables.rs:130:5:140:5 | MatchExpr | | +| variables.rs:135:14:139:9 | { ... } | variables.rs:130:5:140:5 | match numbers { ... } | | | variables.rs:136:13:136:21 | print_i64 | variables.rs:136:23:136:27 | first | | -| variables.rs:136:13:136:28 | CallExpr | variables.rs:137:13:137:29 | ExprStmt | | +| variables.rs:136:13:136:28 | print_i64(...) | variables.rs:137:13:137:29 | ExprStmt | | | variables.rs:136:13:136:29 | ExprStmt | variables.rs:136:13:136:21 | print_i64 | | -| variables.rs:136:23:136:27 | first | variables.rs:136:13:136:28 | CallExpr | | +| variables.rs:136:23:136:27 | first | variables.rs:136:13:136:28 | print_i64(...) | | | variables.rs:137:13:137:21 | print_i64 | variables.rs:137:23:137:27 | third | | -| variables.rs:137:13:137:28 | CallExpr | variables.rs:138:13:138:29 | ExprStmt | | +| variables.rs:137:13:137:28 | print_i64(...) | variables.rs:138:13:138:29 | ExprStmt | | | variables.rs:137:13:137:29 | ExprStmt | variables.rs:137:13:137:21 | print_i64 | | -| variables.rs:137:23:137:27 | third | variables.rs:137:13:137:28 | CallExpr | | +| variables.rs:137:23:137:27 | third | variables.rs:137:13:137:28 | print_i64(...) | | | variables.rs:138:13:138:21 | print_i64 | variables.rs:138:23:138:27 | fifth | | -| variables.rs:138:13:138:28 | CallExpr | variables.rs:135:14:139:9 | BlockExpr | | +| variables.rs:138:13:138:28 | print_i64(...) | variables.rs:135:14:139:9 | { ... } | | | variables.rs:138:13:138:29 | ExprStmt | variables.rs:138:13:138:21 | print_i64 | | -| variables.rs:138:23:138:27 | fifth | variables.rs:138:13:138:28 | CallExpr | | -| variables.rs:142:5:151:5 | MatchExpr | variables.rs:127:21:152:1 | BlockExpr | | +| variables.rs:138:23:138:27 | fifth | variables.rs:138:13:138:28 | print_i64(...) | | +| variables.rs:142:5:151:5 | match numbers { ... } | variables.rs:127:21:152:1 | { ... } | | | variables.rs:142:11:142:17 | numbers | variables.rs:143:9:147:9 | TuplePat | | | variables.rs:143:9:147:9 | TuplePat | variables.rs:144:13:144:17 | first | match | -| variables.rs:144:13:144:17 | first | variables.rs:145:13:145:14 | RestPat | match | -| variables.rs:145:13:145:14 | RestPat | variables.rs:146:13:146:16 | last | match | +| variables.rs:144:13:144:17 | first | variables.rs:145:13:145:14 | .. | match | +| variables.rs:145:13:145:14 | .. | variables.rs:146:13:146:16 | last | match | | variables.rs:146:13:146:16 | last | variables.rs:148:13:148:29 | ExprStmt | match | -| variables.rs:147:14:150:9 | BlockExpr | variables.rs:142:5:151:5 | MatchExpr | | +| variables.rs:147:14:150:9 | { ... } | variables.rs:142:5:151:5 | match numbers { ... } | | | variables.rs:148:13:148:21 | print_i64 | variables.rs:148:23:148:27 | first | | -| variables.rs:148:13:148:28 | CallExpr | variables.rs:149:13:149:28 | ExprStmt | | +| variables.rs:148:13:148:28 | print_i64(...) | variables.rs:149:13:149:28 | ExprStmt | | | variables.rs:148:13:148:29 | ExprStmt | variables.rs:148:13:148:21 | print_i64 | | -| variables.rs:148:23:148:27 | first | variables.rs:148:13:148:28 | CallExpr | | +| variables.rs:148:23:148:27 | first | variables.rs:148:13:148:28 | print_i64(...) | | | variables.rs:149:13:149:21 | print_i64 | variables.rs:149:23:149:26 | last | | -| variables.rs:149:13:149:27 | CallExpr | variables.rs:147:14:150:9 | BlockExpr | | +| variables.rs:149:13:149:27 | print_i64(...) | variables.rs:147:14:150:9 | { ... } | | | variables.rs:149:13:149:28 | ExprStmt | variables.rs:149:13:149:21 | print_i64 | | -| variables.rs:149:23:149:26 | last | variables.rs:149:13:149:27 | CallExpr | | -| variables.rs:154:1:162:1 | enter match_pattern3 | variables.rs:155:5:155:38 | LetStmt | | -| variables.rs:154:1:162:1 | exit match_pattern3 (normal) | variables.rs:154:1:162:1 | exit match_pattern3 | | -| variables.rs:154:21:162:1 | BlockExpr | variables.rs:154:1:162:1 | exit match_pattern3 (normal) | | -| variables.rs:155:5:155:38 | LetStmt | variables.rs:155:25:155:27 | "x" | | +| variables.rs:149:23:149:26 | last | variables.rs:149:13:149:27 | print_i64(...) | | +| variables.rs:154:1:162:1 | enter fn match_pattern3 | variables.rs:155:5:155:38 | let ... = ... | | +| variables.rs:154:1:162:1 | exit fn match_pattern3 (normal) | variables.rs:154:1:162:1 | exit fn match_pattern3 | | +| variables.rs:154:21:162:1 | { ... } | variables.rs:154:1:162:1 | exit fn match_pattern3 (normal) | | +| variables.rs:155:5:155:38 | let ... = ... | variables.rs:155:25:155:27 | "x" | | | variables.rs:155:9:155:10 | p2 | variables.rs:157:11:157:12 | p2 | match | -| variables.rs:155:14:155:37 | RecordExpr | variables.rs:155:9:155:10 | p2 | | +| variables.rs:155:14:155:37 | Point {...} | variables.rs:155:9:155:10 | p2 | | | variables.rs:155:25:155:27 | "x" | variables.rs:155:33:155:35 | "y" | | -| variables.rs:155:33:155:35 | "y" | variables.rs:155:14:155:37 | RecordExpr | | -| variables.rs:157:5:161:5 | MatchExpr | variables.rs:154:21:162:1 | BlockExpr | | -| variables.rs:157:11:157:12 | p2 | variables.rs:158:9:160:9 | RecordPat | | -| variables.rs:158:9:160:9 | RecordPat | variables.rs:159:16:159:17 | x7 | match | -| variables.rs:159:16:159:17 | x7 | variables.rs:159:20:159:21 | RestPat | match | -| variables.rs:159:20:159:21 | RestPat | variables.rs:160:14:160:22 | print_str | match | +| variables.rs:155:33:155:35 | "y" | variables.rs:155:14:155:37 | Point {...} | | +| variables.rs:157:5:161:5 | match p2 { ... } | variables.rs:154:21:162:1 | { ... } | | +| variables.rs:157:11:157:12 | p2 | variables.rs:158:9:160:9 | Point {...} | | +| variables.rs:158:9:160:9 | Point {...} | variables.rs:159:16:159:17 | x7 | match | +| variables.rs:159:16:159:17 | x7 | variables.rs:159:20:159:21 | .. | match | +| variables.rs:159:20:159:21 | .. | variables.rs:160:14:160:22 | print_str | match | | variables.rs:160:14:160:22 | print_str | variables.rs:160:24:160:25 | x7 | | -| variables.rs:160:14:160:26 | CallExpr | variables.rs:157:5:161:5 | MatchExpr | | -| variables.rs:160:24:160:25 | x7 | variables.rs:160:14:160:26 | CallExpr | | -| variables.rs:168:1:181:1 | enter match_pattern4 | variables.rs:169:5:169:39 | LetStmt | | -| variables.rs:168:1:181:1 | exit match_pattern4 (normal) | variables.rs:168:1:181:1 | exit match_pattern4 | | -| variables.rs:168:21:181:1 | BlockExpr | variables.rs:168:1:181:1 | exit match_pattern4 (normal) | | -| variables.rs:169:5:169:39 | LetStmt | variables.rs:169:36:169:36 | 0 | | +| variables.rs:160:14:160:26 | print_str(...) | variables.rs:157:5:161:5 | match p2 { ... } | | +| variables.rs:160:24:160:25 | x7 | variables.rs:160:14:160:26 | print_str(...) | | +| variables.rs:168:1:181:1 | enter fn match_pattern4 | variables.rs:169:5:169:39 | let ... = ... | | +| variables.rs:168:1:181:1 | exit fn match_pattern4 (normal) | variables.rs:168:1:181:1 | exit fn match_pattern4 | | +| variables.rs:168:21:181:1 | { ... } | variables.rs:168:1:181:1 | exit fn match_pattern4 (normal) | | +| variables.rs:169:5:169:39 | let ... = ... | variables.rs:169:36:169:36 | 0 | | | variables.rs:169:9:169:11 | msg | variables.rs:171:11:171:13 | msg | match | -| variables.rs:169:15:169:38 | RecordExpr | variables.rs:169:9:169:11 | msg | | -| variables.rs:169:36:169:36 | 0 | variables.rs:169:15:169:38 | RecordExpr | | -| variables.rs:171:5:180:5 | MatchExpr | variables.rs:168:21:181:1 | BlockExpr | | -| variables.rs:171:11:171:13 | msg | variables.rs:172:9:174:9 | RecordPat | | -| variables.rs:172:9:174:9 | RecordPat | variables.rs:173:31:173:35 | RangePat | match | -| variables.rs:172:9:174:9 | RecordPat | variables.rs:175:9:175:38 | RecordPat | no-match | +| variables.rs:169:15:169:38 | ...::Hello {...} | variables.rs:169:9:169:11 | msg | | +| variables.rs:169:36:169:36 | 0 | variables.rs:169:15:169:38 | ...::Hello {...} | | +| variables.rs:171:5:180:5 | match msg { ... } | variables.rs:168:21:181:1 | { ... } | | +| variables.rs:171:11:171:13 | msg | variables.rs:172:9:174:9 | ...::Hello {...} | | +| variables.rs:172:9:174:9 | ...::Hello {...} | variables.rs:173:31:173:35 | RangePat | match | +| variables.rs:172:9:174:9 | ...::Hello {...} | variables.rs:175:9:175:38 | ...::Hello {...} | no-match | | variables.rs:173:17:173:35 | [match(true)] id_variable | variables.rs:174:14:174:22 | print_i64 | match | -| variables.rs:173:31:173:31 | 3 | variables.rs:173:31:173:31 | LiteralPat | | -| variables.rs:173:31:173:31 | LiteralPat | variables.rs:173:35:173:35 | 7 | match | -| variables.rs:173:31:173:31 | LiteralPat | variables.rs:175:9:175:38 | RecordPat | no-match | +| variables.rs:173:31:173:31 | 3 | variables.rs:173:31:173:31 | 3 | | +| variables.rs:173:31:173:31 | 3 | variables.rs:173:35:173:35 | 7 | match | +| variables.rs:173:31:173:31 | 3 | variables.rs:175:9:175:38 | ...::Hello {...} | no-match | | variables.rs:173:31:173:35 | RangePat | variables.rs:173:31:173:31 | 3 | match | -| variables.rs:173:31:173:35 | RangePat | variables.rs:175:9:175:38 | RecordPat | no-match | -| variables.rs:173:35:173:35 | 7 | variables.rs:173:35:173:35 | LiteralPat | | -| variables.rs:173:35:173:35 | LiteralPat | variables.rs:173:17:173:35 | [match(true)] id_variable | match | -| variables.rs:173:35:173:35 | LiteralPat | variables.rs:175:9:175:38 | RecordPat | no-match | +| variables.rs:173:31:173:35 | RangePat | variables.rs:175:9:175:38 | ...::Hello {...} | no-match | +| variables.rs:173:35:173:35 | 7 | variables.rs:173:17:173:35 | [match(true)] id_variable | match | +| variables.rs:173:35:173:35 | 7 | variables.rs:173:35:173:35 | 7 | | +| variables.rs:173:35:173:35 | 7 | variables.rs:175:9:175:38 | ...::Hello {...} | no-match | | variables.rs:174:14:174:22 | print_i64 | variables.rs:174:24:174:34 | id_variable | | -| variables.rs:174:14:174:35 | CallExpr | variables.rs:171:5:180:5 | MatchExpr | | -| variables.rs:174:24:174:34 | id_variable | variables.rs:174:14:174:35 | CallExpr | | -| variables.rs:175:9:175:38 | RecordPat | variables.rs:175:30:175:36 | RangePat | match | -| variables.rs:175:9:175:38 | RecordPat | variables.rs:178:9:178:29 | RecordPat | no-match | -| variables.rs:175:30:175:31 | 10 | variables.rs:175:30:175:31 | LiteralPat | | -| variables.rs:175:30:175:31 | LiteralPat | variables.rs:175:35:175:36 | 12 | match | -| variables.rs:175:30:175:31 | LiteralPat | variables.rs:178:9:178:29 | RecordPat | no-match | +| variables.rs:174:14:174:35 | print_i64(...) | variables.rs:171:5:180:5 | match msg { ... } | | +| variables.rs:174:24:174:34 | id_variable | variables.rs:174:14:174:35 | print_i64(...) | | +| variables.rs:175:9:175:38 | ...::Hello {...} | variables.rs:175:30:175:36 | RangePat | match | +| variables.rs:175:9:175:38 | ...::Hello {...} | variables.rs:178:9:178:29 | ...::Hello {...} | no-match | +| variables.rs:175:30:175:31 | 10 | variables.rs:175:30:175:31 | 10 | | +| variables.rs:175:30:175:31 | 10 | variables.rs:175:35:175:36 | 12 | match | +| variables.rs:175:30:175:31 | 10 | variables.rs:178:9:178:29 | ...::Hello {...} | no-match | | variables.rs:175:30:175:36 | RangePat | variables.rs:175:30:175:31 | 10 | match | -| variables.rs:175:30:175:36 | RangePat | variables.rs:178:9:178:29 | RecordPat | no-match | -| variables.rs:175:35:175:36 | 12 | variables.rs:175:35:175:36 | LiteralPat | | -| variables.rs:175:35:175:36 | LiteralPat | variables.rs:176:22:176:51 | MacroStmts | match | -| variables.rs:175:35:175:36 | LiteralPat | variables.rs:178:9:178:29 | RecordPat | no-match | -| variables.rs:175:43:177:9 | BlockExpr | variables.rs:171:5:180:5 | MatchExpr | | -| variables.rs:176:13:176:52 | $crate::io::_print | variables.rs:176:22:176:51 | "Found an id in another range\\n" | | -| variables.rs:176:13:176:52 | MacroExpr | variables.rs:175:43:177:9 | BlockExpr | | -| variables.rs:176:22:176:51 | "Found an id in another range\\n" | variables.rs:176:22:176:51 | FormatArgsExpr | | -| variables.rs:176:22:176:51 | BlockExpr | variables.rs:176:13:176:52 | MacroExpr | | -| variables.rs:176:22:176:51 | CallExpr | variables.rs:176:22:176:51 | BlockExpr | | -| variables.rs:176:22:176:51 | ExprStmt | variables.rs:176:13:176:52 | $crate::io::_print | | +| variables.rs:175:30:175:36 | RangePat | variables.rs:178:9:178:29 | ...::Hello {...} | no-match | +| variables.rs:175:35:175:36 | 12 | variables.rs:175:35:175:36 | 12 | | +| variables.rs:175:35:175:36 | 12 | variables.rs:176:22:176:51 | MacroStmts | match | +| variables.rs:175:35:175:36 | 12 | variables.rs:178:9:178:29 | ...::Hello {...} | no-match | +| variables.rs:175:43:177:9 | { ... } | variables.rs:171:5:180:5 | match msg { ... } | | +| variables.rs:176:13:176:52 | ...::_print | variables.rs:176:22:176:51 | "Found an id in another range\\... | | +| variables.rs:176:13:176:52 | MacroExpr | variables.rs:175:43:177:9 | { ... } | | +| variables.rs:176:22:176:51 | "Found an id in another range\\... | variables.rs:176:22:176:51 | FormatArgsExpr | | +| variables.rs:176:22:176:51 | ...::_print(...) | variables.rs:176:22:176:51 | { ... } | | +| variables.rs:176:22:176:51 | ExprStmt | variables.rs:176:13:176:52 | ...::_print | | | variables.rs:176:22:176:51 | FormatArgsExpr | variables.rs:176:22:176:51 | MacroExpr | | -| variables.rs:176:22:176:51 | MacroExpr | variables.rs:176:22:176:51 | CallExpr | | +| variables.rs:176:22:176:51 | MacroExpr | variables.rs:176:22:176:51 | ...::_print(...) | | | variables.rs:176:22:176:51 | MacroStmts | variables.rs:176:22:176:51 | ExprStmt | | -| variables.rs:178:9:178:29 | RecordPat | variables.rs:178:26:178:27 | id | match | +| variables.rs:176:22:176:51 | { ... } | variables.rs:176:13:176:52 | MacroExpr | | +| variables.rs:178:9:178:29 | ...::Hello {...} | variables.rs:178:26:178:27 | id | match | | variables.rs:178:26:178:27 | id | variables.rs:179:13:179:21 | print_i64 | match | | variables.rs:179:13:179:21 | print_i64 | variables.rs:179:23:179:24 | id | | -| variables.rs:179:13:179:25 | CallExpr | variables.rs:171:5:180:5 | MatchExpr | | -| variables.rs:179:23:179:24 | id | variables.rs:179:13:179:25 | CallExpr | | -| variables.rs:188:1:194:1 | enter match_pattern5 | variables.rs:189:5:189:34 | LetStmt | | -| variables.rs:188:1:194:1 | exit match_pattern5 (normal) | variables.rs:188:1:194:1 | exit match_pattern5 | | -| variables.rs:188:21:194:1 | BlockExpr | variables.rs:188:1:194:1 | exit match_pattern5 (normal) | | -| variables.rs:189:5:189:34 | LetStmt | variables.rs:189:18:189:29 | Either::Left | | +| variables.rs:179:13:179:25 | print_i64(...) | variables.rs:171:5:180:5 | match msg { ... } | | +| variables.rs:179:23:179:24 | id | variables.rs:179:13:179:25 | print_i64(...) | | +| variables.rs:188:1:194:1 | enter fn match_pattern5 | variables.rs:189:5:189:34 | let ... = ... | | +| variables.rs:188:1:194:1 | exit fn match_pattern5 (normal) | variables.rs:188:1:194:1 | exit fn match_pattern5 | | +| variables.rs:188:21:194:1 | { ... } | variables.rs:188:1:194:1 | exit fn match_pattern5 (normal) | | +| variables.rs:189:5:189:34 | let ... = ... | variables.rs:189:18:189:29 | ...::Left | | | variables.rs:189:9:189:14 | either | variables.rs:190:11:190:16 | either | match | -| variables.rs:189:18:189:29 | Either::Left | variables.rs:189:31:189:32 | 32 | | -| variables.rs:189:18:189:33 | CallExpr | variables.rs:189:9:189:14 | either | | -| variables.rs:189:31:189:32 | 32 | variables.rs:189:18:189:33 | CallExpr | | -| variables.rs:190:5:193:5 | MatchExpr | variables.rs:188:21:194:1 | BlockExpr | | +| variables.rs:189:18:189:29 | ...::Left | variables.rs:189:31:189:32 | 32 | | +| variables.rs:189:18:189:33 | ...::Left(...) | variables.rs:189:9:189:14 | either | | +| variables.rs:189:31:189:32 | 32 | variables.rs:189:18:189:33 | ...::Left(...) | | +| variables.rs:190:5:193:5 | match either { ... } | variables.rs:188:21:194:1 | { ... } | | | variables.rs:190:11:190:16 | either | variables.rs:191:9:191:24 | TupleStructPat | | | variables.rs:191:9:191:24 | TupleStructPat | variables.rs:191:22:191:23 | a3 | match | | variables.rs:191:9:191:24 | TupleStructPat | variables.rs:191:28:191:44 | TupleStructPat | no-match | -| variables.rs:191:9:191:44 | [match(true)] OrPat | variables.rs:192:16:192:24 | print_i64 | match | -| variables.rs:191:22:191:23 | a3 | variables.rs:191:9:191:44 | [match(true)] OrPat | match | +| variables.rs:191:9:191:44 | [match(true)] ... \| ... | variables.rs:192:16:192:24 | print_i64 | match | +| variables.rs:191:22:191:23 | a3 | variables.rs:191:9:191:44 | [match(true)] ... \| ... | match | | variables.rs:191:28:191:44 | TupleStructPat | variables.rs:191:42:191:43 | a3 | match | -| variables.rs:191:42:191:43 | a3 | variables.rs:191:9:191:44 | [match(true)] OrPat | match | +| variables.rs:191:42:191:43 | a3 | variables.rs:191:9:191:44 | [match(true)] ... \| ... | match | | variables.rs:192:16:192:24 | print_i64 | variables.rs:192:26:192:27 | a3 | | -| variables.rs:192:16:192:28 | CallExpr | variables.rs:190:5:193:5 | MatchExpr | | -| variables.rs:192:26:192:27 | a3 | variables.rs:192:16:192:28 | CallExpr | | -| variables.rs:202:1:216:1 | enter match_pattern6 | variables.rs:203:5:203:37 | LetStmt | | -| variables.rs:202:1:216:1 | exit match_pattern6 (normal) | variables.rs:202:1:216:1 | exit match_pattern6 | | -| variables.rs:202:21:216:1 | BlockExpr | variables.rs:202:1:216:1 | exit match_pattern6 (normal) | | -| variables.rs:203:5:203:37 | LetStmt | variables.rs:203:14:203:32 | ThreeValued::Second | | +| variables.rs:192:16:192:28 | print_i64(...) | variables.rs:190:5:193:5 | match either { ... } | | +| variables.rs:192:26:192:27 | a3 | variables.rs:192:16:192:28 | print_i64(...) | | +| variables.rs:202:1:216:1 | enter fn match_pattern6 | variables.rs:203:5:203:37 | let ... = ... | | +| variables.rs:202:1:216:1 | exit fn match_pattern6 (normal) | variables.rs:202:1:216:1 | exit fn match_pattern6 | | +| variables.rs:202:21:216:1 | { ... } | variables.rs:202:1:216:1 | exit fn match_pattern6 (normal) | | +| variables.rs:203:5:203:37 | let ... = ... | variables.rs:203:14:203:32 | ...::Second | | | variables.rs:203:9:203:10 | tv | variables.rs:204:5:207:5 | ExprStmt | match | -| variables.rs:203:14:203:32 | ThreeValued::Second | variables.rs:203:34:203:35 | 62 | | -| variables.rs:203:14:203:36 | CallExpr | variables.rs:203:9:203:10 | tv | | -| variables.rs:203:34:203:35 | 62 | variables.rs:203:14:203:36 | CallExpr | | +| variables.rs:203:14:203:32 | ...::Second | variables.rs:203:34:203:35 | 62 | | +| variables.rs:203:14:203:36 | ...::Second(...) | variables.rs:203:9:203:10 | tv | | +| variables.rs:203:34:203:35 | 62 | variables.rs:203:14:203:36 | ...::Second(...) | | | variables.rs:204:5:207:5 | ExprStmt | variables.rs:204:11:204:12 | tv | | -| variables.rs:204:5:207:5 | MatchExpr | variables.rs:208:5:211:5 | ExprStmt | | +| variables.rs:204:5:207:5 | match tv { ... } | variables.rs:208:5:211:5 | ExprStmt | | | variables.rs:204:11:204:12 | tv | variables.rs:205:9:205:30 | TupleStructPat | | | variables.rs:205:9:205:30 | TupleStructPat | variables.rs:205:28:205:29 | a4 | match | | variables.rs:205:9:205:30 | TupleStructPat | variables.rs:205:34:205:56 | TupleStructPat | no-match | -| variables.rs:205:9:205:81 | [match(true)] OrPat | variables.rs:206:16:206:24 | print_i64 | match | -| variables.rs:205:28:205:29 | a4 | variables.rs:205:9:205:81 | [match(true)] OrPat | match | +| variables.rs:205:9:205:81 | [match(true)] ... \| ... \| ... | variables.rs:206:16:206:24 | print_i64 | match | +| variables.rs:205:28:205:29 | a4 | variables.rs:205:9:205:81 | [match(true)] ... \| ... \| ... | match | | variables.rs:205:34:205:56 | TupleStructPat | variables.rs:205:54:205:55 | a4 | match | | variables.rs:205:34:205:56 | TupleStructPat | variables.rs:205:60:205:81 | TupleStructPat | no-match | -| variables.rs:205:54:205:55 | a4 | variables.rs:205:9:205:81 | [match(true)] OrPat | match | +| variables.rs:205:54:205:55 | a4 | variables.rs:205:9:205:81 | [match(true)] ... \| ... \| ... | match | | variables.rs:205:60:205:81 | TupleStructPat | variables.rs:205:79:205:80 | a4 | match | -| variables.rs:205:79:205:80 | a4 | variables.rs:205:9:205:81 | [match(true)] OrPat | match | +| variables.rs:205:79:205:80 | a4 | variables.rs:205:9:205:81 | [match(true)] ... \| ... \| ... | match | | variables.rs:206:16:206:24 | print_i64 | variables.rs:206:26:206:27 | a4 | | -| variables.rs:206:16:206:28 | CallExpr | variables.rs:204:5:207:5 | MatchExpr | | -| variables.rs:206:26:206:27 | a4 | variables.rs:206:16:206:28 | CallExpr | | +| variables.rs:206:16:206:28 | print_i64(...) | variables.rs:204:5:207:5 | match tv { ... } | | +| variables.rs:206:26:206:27 | a4 | variables.rs:206:16:206:28 | print_i64(...) | | | variables.rs:208:5:211:5 | ExprStmt | variables.rs:208:11:208:12 | tv | | -| variables.rs:208:5:211:5 | MatchExpr | variables.rs:212:11:212:12 | tv | | +| variables.rs:208:5:211:5 | match tv { ... } | variables.rs:212:11:212:12 | tv | | | variables.rs:208:11:208:12 | tv | variables.rs:209:10:209:31 | TupleStructPat | | -| variables.rs:209:9:209:83 | [match(true)] OrPat | variables.rs:210:16:210:24 | print_i64 | match | +| variables.rs:209:9:209:83 | [match(true)] ... \| ... | variables.rs:210:16:210:24 | print_i64 | match | | variables.rs:209:10:209:31 | TupleStructPat | variables.rs:209:29:209:30 | a5 | match | | variables.rs:209:10:209:31 | TupleStructPat | variables.rs:209:35:209:57 | TupleStructPat | no-match | -| variables.rs:209:10:209:57 | [match(false)] OrPat | variables.rs:209:62:209:83 | TupleStructPat | no-match | -| variables.rs:209:10:209:57 | [match(true)] OrPat | variables.rs:209:9:209:83 | [match(true)] OrPat | match | -| variables.rs:209:29:209:30 | a5 | variables.rs:209:10:209:57 | [match(true)] OrPat | match | -| variables.rs:209:35:209:57 | TupleStructPat | variables.rs:209:10:209:57 | [match(false)] OrPat | no-match | +| variables.rs:209:10:209:57 | [match(false)] ... \| ... | variables.rs:209:62:209:83 | TupleStructPat | no-match | +| variables.rs:209:10:209:57 | [match(true)] ... \| ... | variables.rs:209:9:209:83 | [match(true)] ... \| ... | match | +| variables.rs:209:29:209:30 | a5 | variables.rs:209:10:209:57 | [match(true)] ... \| ... | match | +| variables.rs:209:35:209:57 | TupleStructPat | variables.rs:209:10:209:57 | [match(false)] ... \| ... | no-match | | variables.rs:209:35:209:57 | TupleStructPat | variables.rs:209:55:209:56 | a5 | match | -| variables.rs:209:55:209:56 | a5 | variables.rs:209:10:209:57 | [match(true)] OrPat | match | +| variables.rs:209:55:209:56 | a5 | variables.rs:209:10:209:57 | [match(true)] ... \| ... | match | | variables.rs:209:62:209:83 | TupleStructPat | variables.rs:209:81:209:82 | a5 | match | -| variables.rs:209:81:209:82 | a5 | variables.rs:209:9:209:83 | [match(true)] OrPat | match | +| variables.rs:209:81:209:82 | a5 | variables.rs:209:9:209:83 | [match(true)] ... \| ... | match | | variables.rs:210:16:210:24 | print_i64 | variables.rs:210:26:210:27 | a5 | | -| variables.rs:210:16:210:28 | CallExpr | variables.rs:208:5:211:5 | MatchExpr | | -| variables.rs:210:26:210:27 | a5 | variables.rs:210:16:210:28 | CallExpr | | -| variables.rs:212:5:215:5 | MatchExpr | variables.rs:202:21:216:1 | BlockExpr | | +| variables.rs:210:16:210:28 | print_i64(...) | variables.rs:208:5:211:5 | match tv { ... } | | +| variables.rs:210:26:210:27 | a5 | variables.rs:210:16:210:28 | print_i64(...) | | +| variables.rs:212:5:215:5 | match tv { ... } | variables.rs:202:21:216:1 | { ... } | | | variables.rs:212:11:212:12 | tv | variables.rs:213:9:213:30 | TupleStructPat | | | variables.rs:213:9:213:30 | TupleStructPat | variables.rs:213:28:213:29 | a6 | match | | variables.rs:213:9:213:30 | TupleStructPat | variables.rs:213:35:213:57 | TupleStructPat | no-match | -| variables.rs:213:9:213:83 | [match(true)] OrPat | variables.rs:214:16:214:24 | print_i64 | match | -| variables.rs:213:28:213:29 | a6 | variables.rs:213:9:213:83 | [match(true)] OrPat | match | +| variables.rs:213:9:213:83 | [match(true)] ... \| ... | variables.rs:214:16:214:24 | print_i64 | match | +| variables.rs:213:28:213:29 | a6 | variables.rs:213:9:213:83 | [match(true)] ... \| ... | match | | variables.rs:213:35:213:57 | TupleStructPat | variables.rs:213:55:213:56 | a6 | match | | variables.rs:213:35:213:57 | TupleStructPat | variables.rs:213:61:213:82 | TupleStructPat | no-match | -| variables.rs:213:35:213:82 | [match(true)] OrPat | variables.rs:213:9:213:83 | [match(true)] OrPat | match | -| variables.rs:213:55:213:56 | a6 | variables.rs:213:35:213:82 | [match(true)] OrPat | match | +| variables.rs:213:35:213:82 | [match(true)] ... \| ... | variables.rs:213:9:213:83 | [match(true)] ... \| ... | match | +| variables.rs:213:55:213:56 | a6 | variables.rs:213:35:213:82 | [match(true)] ... \| ... | match | | variables.rs:213:61:213:82 | TupleStructPat | variables.rs:213:80:213:81 | a6 | match | -| variables.rs:213:80:213:81 | a6 | variables.rs:213:35:213:82 | [match(true)] OrPat | match | +| variables.rs:213:80:213:81 | a6 | variables.rs:213:35:213:82 | [match(true)] ... \| ... | match | | variables.rs:214:16:214:24 | print_i64 | variables.rs:214:26:214:27 | a6 | | -| variables.rs:214:16:214:28 | CallExpr | variables.rs:212:5:215:5 | MatchExpr | | -| variables.rs:214:26:214:27 | a6 | variables.rs:214:16:214:28 | CallExpr | | -| variables.rs:218:1:226:1 | enter match_pattern7 | variables.rs:219:5:219:34 | LetStmt | | -| variables.rs:218:1:226:1 | exit match_pattern7 (normal) | variables.rs:218:1:226:1 | exit match_pattern7 | | -| variables.rs:218:21:226:1 | BlockExpr | variables.rs:218:1:226:1 | exit match_pattern7 (normal) | | -| variables.rs:219:5:219:34 | LetStmt | variables.rs:219:18:219:29 | Either::Left | | +| variables.rs:214:16:214:28 | print_i64(...) | variables.rs:212:5:215:5 | match tv { ... } | | +| variables.rs:214:26:214:27 | a6 | variables.rs:214:16:214:28 | print_i64(...) | | +| variables.rs:218:1:226:1 | enter fn match_pattern7 | variables.rs:219:5:219:34 | let ... = ... | | +| variables.rs:218:1:226:1 | exit fn match_pattern7 (normal) | variables.rs:218:1:226:1 | exit fn match_pattern7 | | +| variables.rs:218:21:226:1 | { ... } | variables.rs:218:1:226:1 | exit fn match_pattern7 (normal) | | +| variables.rs:219:5:219:34 | let ... = ... | variables.rs:219:18:219:29 | ...::Left | | | variables.rs:219:9:219:14 | either | variables.rs:220:11:220:16 | either | match | -| variables.rs:219:18:219:29 | Either::Left | variables.rs:219:31:219:32 | 32 | | -| variables.rs:219:18:219:33 | CallExpr | variables.rs:219:9:219:14 | either | | -| variables.rs:219:31:219:32 | 32 | variables.rs:219:18:219:33 | CallExpr | | -| variables.rs:220:5:225:5 | MatchExpr | variables.rs:218:21:226:1 | BlockExpr | | +| variables.rs:219:18:219:29 | ...::Left | variables.rs:219:31:219:32 | 32 | | +| variables.rs:219:18:219:33 | ...::Left(...) | variables.rs:219:9:219:14 | either | | +| variables.rs:219:31:219:32 | 32 | variables.rs:219:18:219:33 | ...::Left(...) | | +| variables.rs:220:5:225:5 | match either { ... } | variables.rs:218:21:226:1 | { ... } | | | variables.rs:220:11:220:16 | either | variables.rs:221:9:221:24 | TupleStructPat | | | variables.rs:221:9:221:24 | TupleStructPat | variables.rs:221:22:221:23 | a7 | match | | variables.rs:221:9:221:24 | TupleStructPat | variables.rs:221:28:221:44 | TupleStructPat | no-match | -| variables.rs:221:9:221:44 | [match(false)] OrPat | variables.rs:224:9:224:9 | WildcardPat | no-match | -| variables.rs:221:9:221:44 | [match(true)] OrPat | variables.rs:222:16:222:17 | a7 | match | -| variables.rs:221:22:221:23 | a7 | variables.rs:221:9:221:44 | [match(true)] OrPat | match | -| variables.rs:221:28:221:44 | TupleStructPat | variables.rs:221:9:221:44 | [match(false)] OrPat | no-match | +| variables.rs:221:9:221:44 | [match(false)] ... \| ... | variables.rs:224:9:224:9 | _ | no-match | +| variables.rs:221:9:221:44 | [match(true)] ... \| ... | variables.rs:222:16:222:17 | a7 | match | +| variables.rs:221:22:221:23 | a7 | variables.rs:221:9:221:44 | [match(true)] ... \| ... | match | +| variables.rs:221:28:221:44 | TupleStructPat | variables.rs:221:9:221:44 | [match(false)] ... \| ... | no-match | | variables.rs:221:28:221:44 | TupleStructPat | variables.rs:221:42:221:43 | a7 | match | -| variables.rs:221:42:221:43 | a7 | variables.rs:221:9:221:44 | [match(true)] OrPat | match | +| variables.rs:221:42:221:43 | a7 | variables.rs:221:9:221:44 | [match(true)] ... \| ... | match | | variables.rs:222:16:222:17 | a7 | variables.rs:222:21:222:21 | 0 | | | variables.rs:222:16:222:21 | ... > ... | variables.rs:223:16:223:24 | print_i64 | true | -| variables.rs:222:16:222:21 | ... > ... | variables.rs:224:9:224:9 | WildcardPat | false | +| variables.rs:222:16:222:21 | ... > ... | variables.rs:224:9:224:9 | _ | false | | variables.rs:222:21:222:21 | 0 | variables.rs:222:16:222:21 | ... > ... | | | variables.rs:223:16:223:24 | print_i64 | variables.rs:223:26:223:27 | a7 | | -| variables.rs:223:16:223:28 | CallExpr | variables.rs:220:5:225:5 | MatchExpr | | -| variables.rs:223:26:223:27 | a7 | variables.rs:223:16:223:28 | CallExpr | | -| variables.rs:224:9:224:9 | WildcardPat | variables.rs:224:14:224:15 | TupleExpr | match | -| variables.rs:224:14:224:15 | TupleExpr | variables.rs:220:5:225:5 | MatchExpr | | -| variables.rs:228:1:243:1 | enter match_pattern8 | variables.rs:229:5:229:34 | LetStmt | | -| variables.rs:228:1:243:1 | exit match_pattern8 (normal) | variables.rs:228:1:243:1 | exit match_pattern8 | | -| variables.rs:228:21:243:1 | BlockExpr | variables.rs:228:1:243:1 | exit match_pattern8 (normal) | | -| variables.rs:229:5:229:34 | LetStmt | variables.rs:229:18:229:29 | Either::Left | | +| variables.rs:223:16:223:28 | print_i64(...) | variables.rs:220:5:225:5 | match either { ... } | | +| variables.rs:223:26:223:27 | a7 | variables.rs:223:16:223:28 | print_i64(...) | | +| variables.rs:224:9:224:9 | _ | variables.rs:224:14:224:15 | TupleExpr | match | +| variables.rs:224:14:224:15 | TupleExpr | variables.rs:220:5:225:5 | match either { ... } | | +| variables.rs:228:1:243:1 | enter fn match_pattern8 | variables.rs:229:5:229:34 | let ... = ... | | +| variables.rs:228:1:243:1 | exit fn match_pattern8 (normal) | variables.rs:228:1:243:1 | exit fn match_pattern8 | | +| variables.rs:228:21:243:1 | { ... } | variables.rs:228:1:243:1 | exit fn match_pattern8 (normal) | | +| variables.rs:229:5:229:34 | let ... = ... | variables.rs:229:18:229:29 | ...::Left | | | variables.rs:229:9:229:14 | either | variables.rs:231:11:231:16 | either | match | -| variables.rs:229:18:229:29 | Either::Left | variables.rs:229:31:229:32 | 32 | | -| variables.rs:229:18:229:33 | CallExpr | variables.rs:229:9:229:14 | either | | -| variables.rs:229:31:229:32 | 32 | variables.rs:229:18:229:33 | CallExpr | | -| variables.rs:231:5:242:5 | MatchExpr | variables.rs:228:21:243:1 | BlockExpr | | +| variables.rs:229:18:229:29 | ...::Left | variables.rs:229:31:229:32 | 32 | | +| variables.rs:229:18:229:33 | ...::Left(...) | variables.rs:229:9:229:14 | either | | +| variables.rs:229:31:229:32 | 32 | variables.rs:229:18:229:33 | ...::Left(...) | | +| variables.rs:231:5:242:5 | match either { ... } | variables.rs:228:21:243:1 | { ... } | | | variables.rs:231:11:231:16 | either | variables.rs:233:14:233:30 | TupleStructPat | | | variables.rs:232:9:233:52 | [match(true)] e | variables.rs:235:13:235:27 | ExprStmt | match | | variables.rs:233:14:233:30 | TupleStructPat | variables.rs:233:27:233:29 | a11 | match | | variables.rs:233:14:233:30 | TupleStructPat | variables.rs:233:34:233:51 | TupleStructPat | no-match | -| variables.rs:233:14:233:51 | [match(false)] OrPat | variables.rs:241:9:241:9 | WildcardPat | no-match | -| variables.rs:233:14:233:51 | [match(true)] OrPat | variables.rs:232:9:233:52 | [match(true)] e | match | -| variables.rs:233:27:233:29 | a11 | variables.rs:233:14:233:51 | [match(true)] OrPat | match | -| variables.rs:233:34:233:51 | TupleStructPat | variables.rs:233:14:233:51 | [match(false)] OrPat | no-match | +| variables.rs:233:14:233:51 | [match(false)] ... \| ... | variables.rs:241:9:241:9 | _ | no-match | +| variables.rs:233:14:233:51 | [match(true)] ... \| ... | variables.rs:232:9:233:52 | [match(true)] e | match | +| variables.rs:233:27:233:29 | a11 | variables.rs:233:14:233:51 | [match(true)] ... \| ... | match | +| variables.rs:233:34:233:51 | TupleStructPat | variables.rs:233:14:233:51 | [match(false)] ... \| ... | no-match | | variables.rs:233:34:233:51 | TupleStructPat | variables.rs:233:48:233:50 | a11 | match | -| variables.rs:233:48:233:50 | a11 | variables.rs:233:14:233:51 | [match(true)] OrPat | match | -| variables.rs:234:12:240:9 | BlockExpr | variables.rs:231:5:242:5 | MatchExpr | | +| variables.rs:233:48:233:50 | a11 | variables.rs:233:14:233:51 | [match(true)] ... \| ... | match | +| variables.rs:234:12:240:9 | { ... } | variables.rs:231:5:242:5 | match either { ... } | | | variables.rs:235:13:235:21 | print_i64 | variables.rs:235:23:235:25 | a11 | | -| variables.rs:235:13:235:26 | CallExpr | variables.rs:236:16:237:15 | LetExpr | | +| variables.rs:235:13:235:26 | print_i64(...) | variables.rs:236:16:237:15 | let ... = e | | | variables.rs:235:13:235:27 | ExprStmt | variables.rs:235:13:235:21 | print_i64 | | -| variables.rs:235:23:235:25 | a11 | variables.rs:235:13:235:26 | CallExpr | | -| variables.rs:236:13:239:13 | IfExpr | variables.rs:234:12:240:9 | BlockExpr | | -| variables.rs:236:16:237:15 | LetExpr | variables.rs:237:15:237:15 | e | | -| variables.rs:236:20:236:36 | TupleStructPat | variables.rs:236:13:239:13 | IfExpr | no-match | +| variables.rs:235:23:235:25 | a11 | variables.rs:235:13:235:26 | print_i64(...) | | +| variables.rs:236:13:239:13 | if ... {...} | variables.rs:234:12:240:9 | { ... } | | +| variables.rs:236:16:237:15 | let ... = e | variables.rs:237:15:237:15 | e | | +| variables.rs:236:20:236:36 | TupleStructPat | variables.rs:236:13:239:13 | if ... {...} | no-match | | variables.rs:236:20:236:36 | TupleStructPat | variables.rs:236:33:236:35 | a12 | match | | variables.rs:236:33:236:35 | a12 | variables.rs:238:17:238:32 | ExprStmt | match | | variables.rs:237:15:237:15 | e | variables.rs:236:20:236:36 | TupleStructPat | | -| variables.rs:237:17:239:13 | BlockExpr | variables.rs:236:13:239:13 | IfExpr | | +| variables.rs:237:17:239:13 | { ... } | variables.rs:236:13:239:13 | if ... {...} | | | variables.rs:238:17:238:25 | print_i64 | variables.rs:238:28:238:30 | a12 | | -| variables.rs:238:17:238:31 | CallExpr | variables.rs:237:17:239:13 | BlockExpr | | +| variables.rs:238:17:238:31 | print_i64(...) | variables.rs:237:17:239:13 | { ... } | | | variables.rs:238:17:238:32 | ExprStmt | variables.rs:238:17:238:25 | print_i64 | | -| variables.rs:238:27:238:30 | * ... | variables.rs:238:17:238:31 | CallExpr | | +| variables.rs:238:27:238:30 | * ... | variables.rs:238:17:238:31 | print_i64(...) | | | variables.rs:238:28:238:30 | a12 | variables.rs:238:27:238:30 | * ... | | -| variables.rs:241:9:241:9 | WildcardPat | variables.rs:241:14:241:15 | TupleExpr | match | -| variables.rs:241:14:241:15 | TupleExpr | variables.rs:231:5:242:5 | MatchExpr | | -| variables.rs:252:1:258:1 | enter match_pattern9 | variables.rs:253:5:253:36 | LetStmt | | -| variables.rs:252:1:258:1 | exit match_pattern9 (normal) | variables.rs:252:1:258:1 | exit match_pattern9 | | -| variables.rs:252:21:258:1 | BlockExpr | variables.rs:252:1:258:1 | exit match_pattern9 (normal) | | -| variables.rs:253:5:253:36 | LetStmt | variables.rs:253:14:253:31 | FourValued::Second | | +| variables.rs:241:9:241:9 | _ | variables.rs:241:14:241:15 | TupleExpr | match | +| variables.rs:241:14:241:15 | TupleExpr | variables.rs:231:5:242:5 | match either { ... } | | +| variables.rs:252:1:258:1 | enter fn match_pattern9 | variables.rs:253:5:253:36 | let ... = ... | | +| variables.rs:252:1:258:1 | exit fn match_pattern9 (normal) | variables.rs:252:1:258:1 | exit fn match_pattern9 | | +| variables.rs:252:21:258:1 | { ... } | variables.rs:252:1:258:1 | exit fn match_pattern9 (normal) | | +| variables.rs:253:5:253:36 | let ... = ... | variables.rs:253:14:253:31 | ...::Second | | | variables.rs:253:9:253:10 | fv | variables.rs:254:11:254:12 | fv | match | -| variables.rs:253:14:253:31 | FourValued::Second | variables.rs:253:33:253:34 | 62 | | -| variables.rs:253:14:253:35 | CallExpr | variables.rs:253:9:253:10 | fv | | -| variables.rs:253:33:253:34 | 62 | variables.rs:253:14:253:35 | CallExpr | | -| variables.rs:254:5:257:5 | MatchExpr | variables.rs:252:21:258:1 | BlockExpr | | +| variables.rs:253:14:253:31 | ...::Second | variables.rs:253:33:253:34 | 62 | | +| variables.rs:253:14:253:35 | ...::Second(...) | variables.rs:253:9:253:10 | fv | | +| variables.rs:253:33:253:34 | 62 | variables.rs:253:14:253:35 | ...::Second(...) | | +| variables.rs:254:5:257:5 | match fv { ... } | variables.rs:252:21:258:1 | { ... } | | | variables.rs:254:11:254:12 | fv | variables.rs:255:9:255:30 | TupleStructPat | | | variables.rs:255:9:255:30 | TupleStructPat | variables.rs:255:27:255:29 | a13 | match | | variables.rs:255:9:255:30 | TupleStructPat | variables.rs:255:35:255:57 | TupleStructPat | no-match | -| variables.rs:255:9:255:109 | [match(true)] OrPat | variables.rs:256:16:256:24 | print_i64 | match | -| variables.rs:255:27:255:29 | a13 | variables.rs:255:9:255:109 | [match(true)] OrPat | match | +| variables.rs:255:9:255:109 | [match(true)] ... \| ... \| ... | variables.rs:256:16:256:24 | print_i64 | match | +| variables.rs:255:27:255:29 | a13 | variables.rs:255:9:255:109 | [match(true)] ... \| ... \| ... | match | | variables.rs:255:35:255:57 | TupleStructPat | variables.rs:255:54:255:56 | a13 | match | | variables.rs:255:35:255:57 | TupleStructPat | variables.rs:255:61:255:82 | TupleStructPat | no-match | -| variables.rs:255:35:255:82 | [match(false)] OrPat | variables.rs:255:87:255:109 | TupleStructPat | no-match | -| variables.rs:255:35:255:82 | [match(true)] OrPat | variables.rs:255:9:255:109 | [match(true)] OrPat | match | -| variables.rs:255:54:255:56 | a13 | variables.rs:255:35:255:82 | [match(true)] OrPat | match | -| variables.rs:255:61:255:82 | TupleStructPat | variables.rs:255:35:255:82 | [match(false)] OrPat | no-match | +| variables.rs:255:35:255:82 | [match(false)] ... \| ... | variables.rs:255:87:255:109 | TupleStructPat | no-match | +| variables.rs:255:35:255:82 | [match(true)] ... \| ... | variables.rs:255:9:255:109 | [match(true)] ... \| ... \| ... | match | +| variables.rs:255:54:255:56 | a13 | variables.rs:255:35:255:82 | [match(true)] ... \| ... | match | +| variables.rs:255:61:255:82 | TupleStructPat | variables.rs:255:35:255:82 | [match(false)] ... \| ... | no-match | | variables.rs:255:61:255:82 | TupleStructPat | variables.rs:255:79:255:81 | a13 | match | -| variables.rs:255:79:255:81 | a13 | variables.rs:255:35:255:82 | [match(true)] OrPat | match | +| variables.rs:255:79:255:81 | a13 | variables.rs:255:35:255:82 | [match(true)] ... \| ... | match | | variables.rs:255:87:255:109 | TupleStructPat | variables.rs:255:106:255:108 | a13 | match | -| variables.rs:255:106:255:108 | a13 | variables.rs:255:9:255:109 | [match(true)] OrPat | match | +| variables.rs:255:106:255:108 | a13 | variables.rs:255:9:255:109 | [match(true)] ... \| ... \| ... | match | | variables.rs:256:16:256:24 | print_i64 | variables.rs:256:26:256:28 | a13 | | -| variables.rs:256:16:256:29 | CallExpr | variables.rs:254:5:257:5 | MatchExpr | | -| variables.rs:256:26:256:28 | a13 | variables.rs:256:16:256:29 | CallExpr | | -| variables.rs:260:1:269:1 | enter param_pattern1 | variables.rs:261:5:261:6 | a8 | | -| variables.rs:260:1:269:1 | exit param_pattern1 (normal) | variables.rs:260:1:269:1 | exit param_pattern1 | | -| variables.rs:261:5:261:6 | a8 | variables.rs:261:5:261:12 | Param | match | -| variables.rs:261:5:261:12 | Param | variables.rs:262:5:265:5 | TuplePat | | +| variables.rs:256:16:256:29 | print_i64(...) | variables.rs:254:5:257:5 | match fv { ... } | | +| variables.rs:256:26:256:28 | a13 | variables.rs:256:16:256:29 | print_i64(...) | | +| variables.rs:260:1:269:1 | enter fn param_pattern1 | variables.rs:261:5:261:6 | a8 | | +| variables.rs:260:1:269:1 | exit fn param_pattern1 (normal) | variables.rs:260:1:269:1 | exit fn param_pattern1 | | +| variables.rs:261:5:261:6 | a8 | variables.rs:261:5:261:12 | ...: ... | match | +| variables.rs:261:5:261:12 | ...: ... | variables.rs:262:5:265:5 | TuplePat | | | variables.rs:262:5:265:5 | TuplePat | variables.rs:263:9:263:10 | b3 | match | -| variables.rs:262:5:265:19 | Param | variables.rs:266:5:266:18 | ExprStmt | | +| variables.rs:262:5:265:19 | ...: ... | variables.rs:266:5:266:18 | ExprStmt | | | variables.rs:263:9:263:10 | b3 | variables.rs:264:9:264:10 | c1 | match | -| variables.rs:264:9:264:10 | c1 | variables.rs:262:5:265:19 | Param | match | -| variables.rs:265:28:269:1 | BlockExpr | variables.rs:260:1:269:1 | exit param_pattern1 (normal) | | +| variables.rs:264:9:264:10 | c1 | variables.rs:262:5:265:19 | ...: ... | match | +| variables.rs:265:28:269:1 | { ... } | variables.rs:260:1:269:1 | exit fn param_pattern1 (normal) | | | variables.rs:266:5:266:13 | print_str | variables.rs:266:15:266:16 | a8 | | -| variables.rs:266:5:266:17 | CallExpr | variables.rs:267:5:267:18 | ExprStmt | | +| variables.rs:266:5:266:17 | print_str(...) | variables.rs:267:5:267:18 | ExprStmt | | | variables.rs:266:5:266:18 | ExprStmt | variables.rs:266:5:266:13 | print_str | | -| variables.rs:266:15:266:16 | a8 | variables.rs:266:5:266:17 | CallExpr | | +| variables.rs:266:15:266:16 | a8 | variables.rs:266:5:266:17 | print_str(...) | | | variables.rs:267:5:267:13 | print_str | variables.rs:267:15:267:16 | b3 | | -| variables.rs:267:5:267:17 | CallExpr | variables.rs:268:5:268:18 | ExprStmt | | +| variables.rs:267:5:267:17 | print_str(...) | variables.rs:268:5:268:18 | ExprStmt | | | variables.rs:267:5:267:18 | ExprStmt | variables.rs:267:5:267:13 | print_str | | -| variables.rs:267:15:267:16 | b3 | variables.rs:267:5:267:17 | CallExpr | | +| variables.rs:267:15:267:16 | b3 | variables.rs:267:5:267:17 | print_str(...) | | | variables.rs:268:5:268:13 | print_str | variables.rs:268:15:268:16 | c1 | | -| variables.rs:268:5:268:17 | CallExpr | variables.rs:265:28:269:1 | BlockExpr | | +| variables.rs:268:5:268:17 | print_str(...) | variables.rs:265:28:269:1 | { ... } | | | variables.rs:268:5:268:18 | ExprStmt | variables.rs:268:5:268:13 | print_str | | -| variables.rs:268:15:268:16 | c1 | variables.rs:268:5:268:17 | CallExpr | | -| variables.rs:271:1:275:1 | enter param_pattern2 | variables.rs:272:6:272:21 | TupleStructPat | | -| variables.rs:271:1:275:1 | exit param_pattern2 (normal) | variables.rs:271:1:275:1 | exit param_pattern2 | | -| variables.rs:272:5:272:50 | Param | variables.rs:274:5:274:18 | ExprStmt | | +| variables.rs:268:15:268:16 | c1 | variables.rs:268:5:268:17 | print_str(...) | | +| variables.rs:271:1:275:1 | enter fn param_pattern2 | variables.rs:272:6:272:21 | TupleStructPat | | +| variables.rs:271:1:275:1 | exit fn param_pattern2 (normal) | variables.rs:271:1:275:1 | exit fn param_pattern2 | | +| variables.rs:272:5:272:50 | ...: Either | variables.rs:274:5:274:18 | ExprStmt | | | variables.rs:272:6:272:21 | TupleStructPat | variables.rs:272:19:272:20 | a9 | match | | variables.rs:272:6:272:21 | TupleStructPat | variables.rs:272:25:272:41 | TupleStructPat | no-match | -| variables.rs:272:6:272:41 | [match(true)] OrPat | variables.rs:272:5:272:50 | Param | match | -| variables.rs:272:19:272:20 | a9 | variables.rs:272:6:272:41 | [match(true)] OrPat | match | +| variables.rs:272:6:272:41 | [match(true)] ... \| ... | variables.rs:272:5:272:50 | ...: Either | match | +| variables.rs:272:19:272:20 | a9 | variables.rs:272:6:272:41 | [match(true)] ... \| ... | match | | variables.rs:272:25:272:41 | TupleStructPat | variables.rs:272:39:272:40 | a9 | match | -| variables.rs:272:39:272:40 | a9 | variables.rs:272:6:272:41 | [match(true)] OrPat | match | -| variables.rs:273:9:275:1 | BlockExpr | variables.rs:271:1:275:1 | exit param_pattern2 (normal) | | +| variables.rs:272:39:272:40 | a9 | variables.rs:272:6:272:41 | [match(true)] ... \| ... | match | +| variables.rs:273:9:275:1 | { ... } | variables.rs:271:1:275:1 | exit fn param_pattern2 (normal) | | | variables.rs:274:5:274:13 | print_i64 | variables.rs:274:15:274:16 | a9 | | -| variables.rs:274:5:274:17 | CallExpr | variables.rs:273:9:275:1 | BlockExpr | | +| variables.rs:274:5:274:17 | print_i64(...) | variables.rs:273:9:275:1 | { ... } | | | variables.rs:274:5:274:18 | ExprStmt | variables.rs:274:5:274:13 | print_i64 | | -| variables.rs:274:15:274:16 | a9 | variables.rs:274:5:274:17 | CallExpr | | -| variables.rs:277:1:312:1 | enter destruct_assignment | variables.rs:278:5:282:18 | LetStmt | | -| variables.rs:277:1:312:1 | exit destruct_assignment (normal) | variables.rs:277:1:312:1 | exit destruct_assignment | | -| variables.rs:277:26:312:1 | BlockExpr | variables.rs:277:1:312:1 | exit destruct_assignment (normal) | | -| variables.rs:278:5:282:18 | LetStmt | variables.rs:282:10:282:10 | 1 | | +| variables.rs:274:15:274:16 | a9 | variables.rs:274:5:274:17 | print_i64(...) | | +| variables.rs:277:1:312:1 | enter fn destruct_assignment | variables.rs:278:5:282:18 | let ... = ... | | +| variables.rs:277:1:312:1 | exit fn destruct_assignment (normal) | variables.rs:277:1:312:1 | exit fn destruct_assignment | | +| variables.rs:277:26:312:1 | { ... } | variables.rs:277:1:312:1 | exit fn destruct_assignment (normal) | | +| variables.rs:278:5:282:18 | let ... = ... | variables.rs:282:10:282:10 | 1 | | | variables.rs:278:9:282:5 | TuplePat | variables.rs:279:9:279:15 | a10 | match | | variables.rs:279:9:279:15 | a10 | variables.rs:280:9:280:14 | b4 | match | | variables.rs:280:9:280:14 | b4 | variables.rs:281:9:281:14 | c2 | match | @@ -609,17 +609,17 @@ edges | variables.rs:282:13:282:13 | 2 | variables.rs:282:16:282:16 | 3 | | | variables.rs:282:16:282:16 | 3 | variables.rs:282:9:282:17 | TupleExpr | | | variables.rs:283:5:283:13 | print_i64 | variables.rs:283:15:283:17 | a10 | | -| variables.rs:283:5:283:18 | CallExpr | variables.rs:284:5:284:18 | ExprStmt | | +| variables.rs:283:5:283:18 | print_i64(...) | variables.rs:284:5:284:18 | ExprStmt | | | variables.rs:283:5:283:19 | ExprStmt | variables.rs:283:5:283:13 | print_i64 | | -| variables.rs:283:15:283:17 | a10 | variables.rs:283:5:283:18 | CallExpr | | +| variables.rs:283:15:283:17 | a10 | variables.rs:283:5:283:18 | print_i64(...) | | | variables.rs:284:5:284:13 | print_i64 | variables.rs:284:15:284:16 | b4 | | -| variables.rs:284:5:284:17 | CallExpr | variables.rs:285:5:285:18 | ExprStmt | | +| variables.rs:284:5:284:17 | print_i64(...) | variables.rs:285:5:285:18 | ExprStmt | | | variables.rs:284:5:284:18 | ExprStmt | variables.rs:284:5:284:13 | print_i64 | | -| variables.rs:284:15:284:16 | b4 | variables.rs:284:5:284:17 | CallExpr | | +| variables.rs:284:15:284:16 | b4 | variables.rs:284:5:284:17 | print_i64(...) | | | variables.rs:285:5:285:13 | print_i64 | variables.rs:285:15:285:16 | c2 | | -| variables.rs:285:5:285:17 | CallExpr | variables.rs:287:5:295:6 | ExprStmt | | +| variables.rs:285:5:285:17 | print_i64(...) | variables.rs:287:5:295:6 | ExprStmt | | | variables.rs:285:5:285:18 | ExprStmt | variables.rs:285:5:285:13 | print_i64 | | -| variables.rs:285:15:285:16 | c2 | variables.rs:285:5:285:17 | CallExpr | | +| variables.rs:285:15:285:16 | c2 | variables.rs:285:5:285:17 | print_i64(...) | | | variables.rs:287:5:291:5 | TupleExpr | variables.rs:292:9:292:11 | a10 | | | variables.rs:287:5:295:5 | ... = ... | variables.rs:296:5:296:19 | ExprStmt | | | variables.rs:287:5:295:6 | ExprStmt | variables.rs:288:9:288:10 | c2 | | @@ -631,105 +631,105 @@ edges | variables.rs:293:9:293:10 | b4 | variables.rs:294:9:294:10 | c2 | | | variables.rs:294:9:294:10 | c2 | variables.rs:291:9:295:5 | TupleExpr | | | variables.rs:296:5:296:13 | print_i64 | variables.rs:296:15:296:17 | a10 | | -| variables.rs:296:5:296:18 | CallExpr | variables.rs:297:5:297:18 | ExprStmt | | +| variables.rs:296:5:296:18 | print_i64(...) | variables.rs:297:5:297:18 | ExprStmt | | | variables.rs:296:5:296:19 | ExprStmt | variables.rs:296:5:296:13 | print_i64 | | -| variables.rs:296:15:296:17 | a10 | variables.rs:296:5:296:18 | CallExpr | | +| variables.rs:296:15:296:17 | a10 | variables.rs:296:5:296:18 | print_i64(...) | | | variables.rs:297:5:297:13 | print_i64 | variables.rs:297:15:297:16 | b4 | | -| variables.rs:297:5:297:17 | CallExpr | variables.rs:298:5:298:18 | ExprStmt | | +| variables.rs:297:5:297:17 | print_i64(...) | variables.rs:298:5:298:18 | ExprStmt | | | variables.rs:297:5:297:18 | ExprStmt | variables.rs:297:5:297:13 | print_i64 | | -| variables.rs:297:15:297:16 | b4 | variables.rs:297:5:297:17 | CallExpr | | +| variables.rs:297:15:297:16 | b4 | variables.rs:297:5:297:17 | print_i64(...) | | | variables.rs:298:5:298:13 | print_i64 | variables.rs:298:15:298:16 | c2 | | -| variables.rs:298:5:298:17 | CallExpr | variables.rs:300:5:308:5 | ExprStmt | | +| variables.rs:298:5:298:17 | print_i64(...) | variables.rs:300:5:308:5 | ExprStmt | | | variables.rs:298:5:298:18 | ExprStmt | variables.rs:298:5:298:13 | print_i64 | | -| variables.rs:298:15:298:16 | c2 | variables.rs:298:5:298:17 | CallExpr | | +| variables.rs:298:15:298:16 | c2 | variables.rs:298:5:298:17 | print_i64(...) | | | variables.rs:300:5:308:5 | ExprStmt | variables.rs:300:12:300:12 | 4 | | -| variables.rs:300:5:308:5 | MatchExpr | variables.rs:310:5:310:19 | ExprStmt | | +| variables.rs:300:5:308:5 | match ... { ... } | variables.rs:310:5:310:19 | ExprStmt | | | variables.rs:300:11:300:16 | TupleExpr | variables.rs:301:9:304:9 | TuplePat | | | variables.rs:300:12:300:12 | 4 | variables.rs:300:15:300:15 | 5 | | | variables.rs:300:15:300:15 | 5 | variables.rs:300:11:300:16 | TupleExpr | | | variables.rs:301:9:304:9 | TuplePat | variables.rs:302:13:302:15 | a10 | match | | variables.rs:302:13:302:15 | a10 | variables.rs:303:13:303:14 | b4 | match | | variables.rs:303:13:303:14 | b4 | variables.rs:305:13:305:27 | ExprStmt | match | -| variables.rs:304:14:307:9 | BlockExpr | variables.rs:300:5:308:5 | MatchExpr | | +| variables.rs:304:14:307:9 | { ... } | variables.rs:300:5:308:5 | match ... { ... } | | | variables.rs:305:13:305:21 | print_i64 | variables.rs:305:23:305:25 | a10 | | -| variables.rs:305:13:305:26 | CallExpr | variables.rs:306:13:306:26 | ExprStmt | | +| variables.rs:305:13:305:26 | print_i64(...) | variables.rs:306:13:306:26 | ExprStmt | | | variables.rs:305:13:305:27 | ExprStmt | variables.rs:305:13:305:21 | print_i64 | | -| variables.rs:305:23:305:25 | a10 | variables.rs:305:13:305:26 | CallExpr | | +| variables.rs:305:23:305:25 | a10 | variables.rs:305:13:305:26 | print_i64(...) | | | variables.rs:306:13:306:21 | print_i64 | variables.rs:306:23:306:24 | b4 | | -| variables.rs:306:13:306:25 | CallExpr | variables.rs:304:14:307:9 | BlockExpr | | +| variables.rs:306:13:306:25 | print_i64(...) | variables.rs:304:14:307:9 | { ... } | | | variables.rs:306:13:306:26 | ExprStmt | variables.rs:306:13:306:21 | print_i64 | | -| variables.rs:306:23:306:24 | b4 | variables.rs:306:13:306:25 | CallExpr | | +| variables.rs:306:23:306:24 | b4 | variables.rs:306:13:306:25 | print_i64(...) | | | variables.rs:310:5:310:13 | print_i64 | variables.rs:310:15:310:17 | a10 | | -| variables.rs:310:5:310:18 | CallExpr | variables.rs:311:5:311:18 | ExprStmt | | +| variables.rs:310:5:310:18 | print_i64(...) | variables.rs:311:5:311:18 | ExprStmt | | | variables.rs:310:5:310:19 | ExprStmt | variables.rs:310:5:310:13 | print_i64 | | -| variables.rs:310:15:310:17 | a10 | variables.rs:310:5:310:18 | CallExpr | | +| variables.rs:310:15:310:17 | a10 | variables.rs:310:5:310:18 | print_i64(...) | | | variables.rs:311:5:311:13 | print_i64 | variables.rs:311:15:311:16 | b4 | | -| variables.rs:311:5:311:17 | CallExpr | variables.rs:277:26:312:1 | BlockExpr | | +| variables.rs:311:5:311:17 | print_i64(...) | variables.rs:277:26:312:1 | { ... } | | | variables.rs:311:5:311:18 | ExprStmt | variables.rs:311:5:311:13 | print_i64 | | -| variables.rs:311:15:311:16 | b4 | variables.rs:311:5:311:17 | CallExpr | | -| variables.rs:314:1:329:1 | enter closure_variable | variables.rs:315:5:317:10 | LetStmt | | -| variables.rs:314:1:329:1 | exit closure_variable (normal) | variables.rs:314:1:329:1 | exit closure_variable | | -| variables.rs:314:23:329:1 | BlockExpr | variables.rs:314:1:329:1 | exit closure_variable (normal) | | -| variables.rs:315:5:317:10 | LetStmt | variables.rs:316:9:317:9 | ClosureExpr | | -| variables.rs:315:9:315:23 | example_closure | variables.rs:318:5:319:27 | LetStmt | match | -| variables.rs:316:9:317:9 | ClosureExpr | variables.rs:315:9:315:23 | example_closure | | -| variables.rs:316:9:317:9 | enter ClosureExpr | variables.rs:316:10:316:10 | x | | -| variables.rs:316:9:317:9 | exit ClosureExpr (normal) | variables.rs:316:9:317:9 | exit ClosureExpr | | -| variables.rs:316:10:316:10 | x | variables.rs:316:10:316:15 | Param | match | -| variables.rs:316:10:316:15 | Param | variables.rs:317:9:317:9 | x | | -| variables.rs:317:9:317:9 | x | variables.rs:316:9:317:9 | exit ClosureExpr (normal) | | -| variables.rs:318:5:319:27 | LetStmt | variables.rs:319:9:319:23 | example_closure | | +| variables.rs:311:15:311:16 | b4 | variables.rs:311:5:311:17 | print_i64(...) | | +| variables.rs:314:1:329:1 | enter fn closure_variable | variables.rs:315:5:317:10 | let ... = ... | | +| variables.rs:314:1:329:1 | exit fn closure_variable (normal) | variables.rs:314:1:329:1 | exit fn closure_variable | | +| variables.rs:314:23:329:1 | { ... } | variables.rs:314:1:329:1 | exit fn closure_variable (normal) | | +| variables.rs:315:5:317:10 | let ... = ... | variables.rs:316:9:317:9 | \|...\| x | | +| variables.rs:315:9:315:23 | example_closure | variables.rs:318:5:319:27 | let ... = ... | match | +| variables.rs:316:9:317:9 | \|...\| x | variables.rs:315:9:315:23 | example_closure | | +| variables.rs:316:9:317:9 | enter \|...\| x | variables.rs:316:10:316:10 | x | | +| variables.rs:316:9:317:9 | exit \|...\| x (normal) | variables.rs:316:9:317:9 | exit \|...\| x | | +| variables.rs:316:10:316:10 | x | variables.rs:316:10:316:15 | ...: i64 | match | +| variables.rs:316:10:316:15 | ...: i64 | variables.rs:317:9:317:9 | x | | +| variables.rs:317:9:317:9 | x | variables.rs:316:9:317:9 | exit \|...\| x (normal) | | +| variables.rs:318:5:319:27 | let ... = ... | variables.rs:319:9:319:23 | example_closure | | | variables.rs:318:9:318:10 | n1 | variables.rs:320:5:320:18 | ExprStmt | match | | variables.rs:319:9:319:23 | example_closure | variables.rs:319:25:319:25 | 5 | | -| variables.rs:319:9:319:26 | CallExpr | variables.rs:318:9:318:10 | n1 | | -| variables.rs:319:25:319:25 | 5 | variables.rs:319:9:319:26 | CallExpr | | +| variables.rs:319:9:319:26 | example_closure(...) | variables.rs:318:9:318:10 | n1 | | +| variables.rs:319:25:319:25 | 5 | variables.rs:319:9:319:26 | example_closure(...) | | | variables.rs:320:5:320:13 | print_i64 | variables.rs:320:15:320:16 | n1 | | -| variables.rs:320:5:320:17 | CallExpr | variables.rs:322:5:322:25 | ExprStmt | | +| variables.rs:320:5:320:17 | print_i64(...) | variables.rs:322:5:322:25 | ExprStmt | | | variables.rs:320:5:320:18 | ExprStmt | variables.rs:320:5:320:13 | print_i64 | | -| variables.rs:320:15:320:16 | n1 | variables.rs:320:5:320:17 | CallExpr | | -| variables.rs:322:5:322:22 | immutable_variable | variables.rs:322:5:322:24 | CallExpr | | -| variables.rs:322:5:322:24 | CallExpr | variables.rs:323:5:325:10 | LetStmt | | +| variables.rs:320:15:320:16 | n1 | variables.rs:320:5:320:17 | print_i64(...) | | +| variables.rs:322:5:322:22 | immutable_variable | variables.rs:322:5:322:24 | immutable_variable(...) | | +| variables.rs:322:5:322:24 | immutable_variable(...) | variables.rs:323:5:325:10 | let ... = ... | | | variables.rs:322:5:322:25 | ExprStmt | variables.rs:322:5:322:22 | immutable_variable | | -| variables.rs:323:5:325:10 | LetStmt | variables.rs:324:9:325:9 | ClosureExpr | | -| variables.rs:323:9:323:26 | immutable_variable | variables.rs:326:5:327:30 | LetStmt | match | -| variables.rs:324:9:325:9 | ClosureExpr | variables.rs:323:9:323:26 | immutable_variable | | -| variables.rs:324:9:325:9 | enter ClosureExpr | variables.rs:324:10:324:10 | x | | -| variables.rs:324:9:325:9 | exit ClosureExpr (normal) | variables.rs:324:9:325:9 | exit ClosureExpr | | -| variables.rs:324:10:324:10 | x | variables.rs:324:10:324:15 | Param | match | -| variables.rs:324:10:324:15 | Param | variables.rs:325:9:325:9 | x | | -| variables.rs:325:9:325:9 | x | variables.rs:324:9:325:9 | exit ClosureExpr (normal) | | -| variables.rs:326:5:327:30 | LetStmt | variables.rs:327:9:327:26 | immutable_variable | | +| variables.rs:323:5:325:10 | let ... = ... | variables.rs:324:9:325:9 | \|...\| x | | +| variables.rs:323:9:323:26 | immutable_variable | variables.rs:326:5:327:30 | let ... = ... | match | +| variables.rs:324:9:325:9 | \|...\| x | variables.rs:323:9:323:26 | immutable_variable | | +| variables.rs:324:9:325:9 | enter \|...\| x | variables.rs:324:10:324:10 | x | | +| variables.rs:324:9:325:9 | exit \|...\| x (normal) | variables.rs:324:9:325:9 | exit \|...\| x | | +| variables.rs:324:10:324:10 | x | variables.rs:324:10:324:15 | ...: i64 | match | +| variables.rs:324:10:324:15 | ...: i64 | variables.rs:325:9:325:9 | x | | +| variables.rs:325:9:325:9 | x | variables.rs:324:9:325:9 | exit \|...\| x (normal) | | +| variables.rs:326:5:327:30 | let ... = ... | variables.rs:327:9:327:26 | immutable_variable | | | variables.rs:326:9:326:10 | n2 | variables.rs:328:5:328:18 | ExprStmt | match | | variables.rs:327:9:327:26 | immutable_variable | variables.rs:327:28:327:28 | 6 | | -| variables.rs:327:9:327:29 | CallExpr | variables.rs:326:9:326:10 | n2 | | -| variables.rs:327:28:327:28 | 6 | variables.rs:327:9:327:29 | CallExpr | | +| variables.rs:327:9:327:29 | immutable_variable(...) | variables.rs:326:9:326:10 | n2 | | +| variables.rs:327:28:327:28 | 6 | variables.rs:327:9:327:29 | immutable_variable(...) | | | variables.rs:328:5:328:13 | print_i64 | variables.rs:328:15:328:16 | n2 | | -| variables.rs:328:5:328:17 | CallExpr | variables.rs:314:23:329:1 | BlockExpr | | +| variables.rs:328:5:328:17 | print_i64(...) | variables.rs:314:23:329:1 | { ... } | | | variables.rs:328:5:328:18 | ExprStmt | variables.rs:328:5:328:13 | print_i64 | | -| variables.rs:328:15:328:16 | n2 | variables.rs:328:5:328:17 | CallExpr | | -| variables.rs:331:1:338:1 | enter for_variable | variables.rs:332:5:332:42 | LetStmt | | -| variables.rs:331:1:338:1 | exit for_variable (normal) | variables.rs:331:1:338:1 | exit for_variable | | -| variables.rs:331:19:338:1 | BlockExpr | variables.rs:331:1:338:1 | exit for_variable (normal) | | -| variables.rs:332:5:332:42 | LetStmt | variables.rs:332:15:332:22 | "apples" | | +| variables.rs:328:15:328:16 | n2 | variables.rs:328:5:328:17 | print_i64(...) | | +| variables.rs:331:1:338:1 | enter fn for_variable | variables.rs:332:5:332:42 | let ... = ... | | +| variables.rs:331:1:338:1 | exit fn for_variable (normal) | variables.rs:331:1:338:1 | exit fn for_variable | | +| variables.rs:331:19:338:1 | { ... } | variables.rs:331:1:338:1 | exit fn for_variable (normal) | | +| variables.rs:332:5:332:42 | let ... = ... | variables.rs:332:15:332:22 | "apples" | | | variables.rs:332:9:332:9 | v | variables.rs:335:12:335:12 | v | match | -| variables.rs:332:13:332:41 | RefExpr | variables.rs:332:9:332:9 | v | | -| variables.rs:332:14:332:41 | ArrayExpr | variables.rs:332:13:332:41 | RefExpr | | +| variables.rs:332:13:332:41 | &... | variables.rs:332:9:332:9 | v | | +| variables.rs:332:14:332:41 | [...] | variables.rs:332:13:332:41 | &... | | | variables.rs:332:15:332:22 | "apples" | variables.rs:332:25:332:30 | "cake" | | | variables.rs:332:25:332:30 | "cake" | variables.rs:332:33:332:40 | "coffee" | | -| variables.rs:332:33:332:40 | "coffee" | variables.rs:332:14:332:41 | ArrayExpr | | -| variables.rs:334:5:337:5 | ForExpr | variables.rs:331:19:338:1 | BlockExpr | | -| variables.rs:334:9:334:12 | text | variables.rs:334:5:337:5 | ForExpr | no-match | +| variables.rs:332:33:332:40 | "coffee" | variables.rs:332:14:332:41 | [...] | | +| variables.rs:334:5:337:5 | for ... in ... { ... } | variables.rs:331:19:338:1 | { ... } | | +| variables.rs:334:9:334:12 | text | variables.rs:334:5:337:5 | for ... in ... { ... } | no-match | | variables.rs:334:9:334:12 | text | variables.rs:336:9:336:24 | ExprStmt | match | | variables.rs:335:12:335:12 | v | variables.rs:334:9:334:12 | text | | -| variables.rs:335:14:337:5 | BlockExpr | variables.rs:334:9:334:12 | text | | +| variables.rs:335:14:337:5 | { ... } | variables.rs:334:9:334:12 | text | | | variables.rs:336:9:336:17 | print_str | variables.rs:336:19:336:22 | text | | -| variables.rs:336:9:336:23 | CallExpr | variables.rs:335:14:337:5 | BlockExpr | | +| variables.rs:336:9:336:23 | print_str(...) | variables.rs:335:14:337:5 | { ... } | | | variables.rs:336:9:336:24 | ExprStmt | variables.rs:336:9:336:17 | print_str | | -| variables.rs:336:19:336:22 | text | variables.rs:336:9:336:23 | CallExpr | | -| variables.rs:340:1:346:1 | enter add_assign | variables.rs:341:5:341:18 | LetStmt | | -| variables.rs:340:1:346:1 | exit add_assign (normal) | variables.rs:340:1:346:1 | exit add_assign | | -| variables.rs:340:17:346:1 | BlockExpr | variables.rs:340:1:346:1 | exit add_assign (normal) | | -| variables.rs:341:5:341:18 | LetStmt | variables.rs:341:17:341:17 | 0 | | +| variables.rs:336:19:336:22 | text | variables.rs:336:9:336:23 | print_str(...) | | +| variables.rs:340:1:346:1 | enter fn add_assign | variables.rs:341:5:341:18 | let ... = 0 | | +| variables.rs:340:1:346:1 | exit fn add_assign (normal) | variables.rs:340:1:346:1 | exit fn add_assign | | +| variables.rs:340:17:346:1 | { ... } | variables.rs:340:1:346:1 | exit fn add_assign (normal) | | +| variables.rs:341:5:341:18 | let ... = 0 | variables.rs:341:17:341:17 | 0 | | | variables.rs:341:9:341:13 | a | variables.rs:342:5:342:11 | ExprStmt | match | | variables.rs:341:17:341:17 | 0 | variables.rs:341:9:341:13 | a | | | variables.rs:342:5:342:5 | a | variables.rs:342:10:342:10 | 1 | | @@ -737,41 +737,41 @@ edges | variables.rs:342:5:342:11 | ExprStmt | variables.rs:342:5:342:5 | a | | | variables.rs:342:10:342:10 | 1 | variables.rs:342:5:342:10 | ... += ... | | | variables.rs:343:5:343:13 | print_i64 | variables.rs:343:15:343:15 | a | | -| variables.rs:343:5:343:16 | CallExpr | variables.rs:344:5:344:28 | ExprStmt | | +| variables.rs:343:5:343:16 | print_i64(...) | variables.rs:344:5:344:28 | ExprStmt | | | variables.rs:343:5:343:17 | ExprStmt | variables.rs:343:5:343:13 | print_i64 | | -| variables.rs:343:15:343:15 | a | variables.rs:343:5:343:16 | CallExpr | | +| variables.rs:343:15:343:15 | a | variables.rs:343:5:343:16 | print_i64(...) | | | variables.rs:344:5:344:27 | ... .add_assign(...) | variables.rs:345:5:345:17 | ExprStmt | | | variables.rs:344:5:344:28 | ExprStmt | variables.rs:344:11:344:11 | a | | -| variables.rs:344:6:344:11 | RefExpr | variables.rs:344:25:344:26 | 10 | | -| variables.rs:344:11:344:11 | a | variables.rs:344:6:344:11 | RefExpr | | +| variables.rs:344:6:344:11 | &mut a | variables.rs:344:25:344:26 | 10 | | +| variables.rs:344:11:344:11 | a | variables.rs:344:6:344:11 | &mut a | | | variables.rs:344:25:344:26 | 10 | variables.rs:344:5:344:27 | ... .add_assign(...) | | | variables.rs:345:5:345:13 | print_i64 | variables.rs:345:15:345:15 | a | | -| variables.rs:345:5:345:16 | CallExpr | variables.rs:340:17:346:1 | BlockExpr | | +| variables.rs:345:5:345:16 | print_i64(...) | variables.rs:340:17:346:1 | { ... } | | | variables.rs:345:5:345:17 | ExprStmt | variables.rs:345:5:345:13 | print_i64 | | -| variables.rs:345:15:345:15 | a | variables.rs:345:5:345:16 | CallExpr | | -| variables.rs:348:1:354:1 | enter mutate | variables.rs:349:5:349:18 | LetStmt | | -| variables.rs:348:1:354:1 | exit mutate (normal) | variables.rs:348:1:354:1 | exit mutate | | -| variables.rs:348:13:354:1 | BlockExpr | variables.rs:348:1:354:1 | exit mutate (normal) | | -| variables.rs:349:5:349:18 | LetStmt | variables.rs:349:17:349:17 | 1 | | -| variables.rs:349:9:349:13 | i | variables.rs:350:5:351:15 | LetStmt | match | +| variables.rs:345:15:345:15 | a | variables.rs:345:5:345:16 | print_i64(...) | | +| variables.rs:348:1:354:1 | enter fn mutate | variables.rs:349:5:349:18 | let ... = 1 | | +| variables.rs:348:1:354:1 | exit fn mutate (normal) | variables.rs:348:1:354:1 | exit fn mutate | | +| variables.rs:348:13:354:1 | { ... } | variables.rs:348:1:354:1 | exit fn mutate (normal) | | +| variables.rs:349:5:349:18 | let ... = 1 | variables.rs:349:17:349:17 | 1 | | +| variables.rs:349:9:349:13 | i | variables.rs:350:5:351:15 | let ... = ... | match | | variables.rs:349:17:349:17 | 1 | variables.rs:349:9:349:13 | i | | -| variables.rs:350:5:351:15 | LetStmt | variables.rs:351:14:351:14 | i | | +| variables.rs:350:5:351:15 | let ... = ... | variables.rs:351:14:351:14 | i | | | variables.rs:350:9:350:13 | ref_i | variables.rs:352:5:352:15 | ExprStmt | match | -| variables.rs:351:9:351:14 | RefExpr | variables.rs:350:9:350:13 | ref_i | | -| variables.rs:351:14:351:14 | i | variables.rs:351:9:351:14 | RefExpr | | +| variables.rs:351:9:351:14 | &mut i | variables.rs:350:9:350:13 | ref_i | | +| variables.rs:351:14:351:14 | i | variables.rs:351:9:351:14 | &mut i | | | variables.rs:352:5:352:10 | * ... | variables.rs:352:14:352:14 | 2 | | | variables.rs:352:5:352:14 | ... = ... | variables.rs:353:5:353:17 | ExprStmt | | | variables.rs:352:5:352:15 | ExprStmt | variables.rs:352:6:352:10 | ref_i | | | variables.rs:352:6:352:10 | ref_i | variables.rs:352:5:352:10 | * ... | | | variables.rs:352:14:352:14 | 2 | variables.rs:352:5:352:14 | ... = ... | | | variables.rs:353:5:353:13 | print_i64 | variables.rs:353:15:353:15 | i | | -| variables.rs:353:5:353:16 | CallExpr | variables.rs:348:13:354:1 | BlockExpr | | +| variables.rs:353:5:353:16 | print_i64(...) | variables.rs:348:13:354:1 | { ... } | | | variables.rs:353:5:353:17 | ExprStmt | variables.rs:353:5:353:13 | print_i64 | | -| variables.rs:353:15:353:15 | i | variables.rs:353:5:353:16 | CallExpr | | -| variables.rs:356:1:361:1 | enter mutate_param | variables.rs:356:17:356:17 | x | | -| variables.rs:356:1:361:1 | exit mutate_param (normal) | variables.rs:356:1:361:1 | exit mutate_param | | -| variables.rs:356:17:356:17 | x | variables.rs:356:17:356:28 | Param | match | -| variables.rs:356:17:356:28 | Param | variables.rs:357:5:359:11 | ExprStmt | | +| variables.rs:353:15:353:15 | i | variables.rs:353:5:353:16 | print_i64(...) | | +| variables.rs:356:1:361:1 | enter fn mutate_param | variables.rs:356:17:356:17 | x | | +| variables.rs:356:1:361:1 | exit fn mutate_param (normal) | variables.rs:356:1:361:1 | exit fn mutate_param | | +| variables.rs:356:17:356:17 | x | variables.rs:356:17:356:28 | ...: ... | match | +| variables.rs:356:17:356:28 | ...: ... | variables.rs:357:5:359:11 | ExprStmt | | | variables.rs:357:5:357:6 | * ... | variables.rs:358:10:358:10 | x | | | variables.rs:357:5:359:10 | ... = ... | variables.rs:360:5:360:13 | ExprStmt | | | variables.rs:357:5:359:11 | ExprStmt | variables.rs:357:6:357:6 | x | | @@ -781,16 +781,16 @@ edges | variables.rs:358:10:358:10 | x | variables.rs:358:9:358:10 | * ... | | | variables.rs:359:9:359:10 | * ... | variables.rs:358:9:359:10 | ... + ... | | | variables.rs:359:10:359:10 | x | variables.rs:359:9:359:10 | * ... | | -| variables.rs:360:5:360:12 | ReturnExpr | variables.rs:356:1:361:1 | exit mutate_param (normal) | return | +| variables.rs:360:5:360:12 | return x | variables.rs:356:1:361:1 | exit fn mutate_param (normal) | return | | variables.rs:360:5:360:13 | ExprStmt | variables.rs:360:12:360:12 | x | | -| variables.rs:360:12:360:12 | x | variables.rs:360:5:360:12 | ReturnExpr | | -| variables.rs:363:1:369:1 | enter mutate_param2 | variables.rs:363:22:363:22 | x | | -| variables.rs:363:1:369:1 | exit mutate_param2 (normal) | variables.rs:363:1:369:1 | exit mutate_param2 | | -| variables.rs:363:22:363:22 | x | variables.rs:363:22:363:36 | Param | match | -| variables.rs:363:22:363:36 | Param | variables.rs:363:39:363:39 | y | | -| variables.rs:363:39:363:39 | y | variables.rs:363:39:363:57 | Param | match | -| variables.rs:363:39:363:57 | Param | variables.rs:364:5:366:11 | ExprStmt | | -| variables.rs:363:60:369:1 | BlockExpr | variables.rs:363:1:369:1 | exit mutate_param2 (normal) | | +| variables.rs:360:12:360:12 | x | variables.rs:360:5:360:12 | return x | | +| variables.rs:363:1:369:1 | enter fn mutate_param2 | variables.rs:363:22:363:22 | x | | +| variables.rs:363:1:369:1 | exit fn mutate_param2 (normal) | variables.rs:363:1:369:1 | exit fn mutate_param2 | | +| variables.rs:363:22:363:22 | x | variables.rs:363:22:363:36 | ...: ... | match | +| variables.rs:363:22:363:36 | ...: ... | variables.rs:363:39:363:39 | y | | +| variables.rs:363:39:363:39 | y | variables.rs:363:39:363:57 | ...: ... | match | +| variables.rs:363:39:363:57 | ...: ... | variables.rs:364:5:366:11 | ExprStmt | | +| variables.rs:363:60:369:1 | { ... } | variables.rs:363:1:369:1 | exit fn mutate_param2 (normal) | | | variables.rs:364:5:364:6 | * ... | variables.rs:365:10:365:10 | x | | | variables.rs:364:5:366:10 | ... = ... | variables.rs:367:5:368:10 | ExprStmt | | | variables.rs:364:5:366:11 | ExprStmt | variables.rs:364:6:364:6 | x | | @@ -801,45 +801,45 @@ edges | variables.rs:366:9:366:10 | * ... | variables.rs:365:9:366:10 | ... + ... | | | variables.rs:366:10:366:10 | x | variables.rs:366:9:366:10 | * ... | | | variables.rs:367:5:367:6 | * ... | variables.rs:368:9:368:9 | x | | -| variables.rs:367:5:368:9 | ... = ... | variables.rs:363:60:369:1 | BlockExpr | | +| variables.rs:367:5:368:9 | ... = ... | variables.rs:363:60:369:1 | { ... } | | | variables.rs:367:5:368:10 | ExprStmt | variables.rs:367:6:367:6 | y | | | variables.rs:367:6:367:6 | y | variables.rs:367:5:367:6 | * ... | | | variables.rs:368:9:368:9 | x | variables.rs:367:5:368:9 | ... = ... | | -| variables.rs:371:1:389:1 | enter mutate_arg | variables.rs:372:5:372:18 | LetStmt | | -| variables.rs:371:1:389:1 | exit mutate_arg (normal) | variables.rs:371:1:389:1 | exit mutate_arg | | -| variables.rs:371:17:389:1 | BlockExpr | variables.rs:371:1:389:1 | exit mutate_arg (normal) | | -| variables.rs:372:5:372:18 | LetStmt | variables.rs:372:17:372:17 | 2 | | -| variables.rs:372:9:372:13 | x | variables.rs:373:5:374:29 | LetStmt | match | +| variables.rs:371:1:389:1 | enter fn mutate_arg | variables.rs:372:5:372:18 | let ... = 2 | | +| variables.rs:371:1:389:1 | exit fn mutate_arg (normal) | variables.rs:371:1:389:1 | exit fn mutate_arg | | +| variables.rs:371:17:389:1 | { ... } | variables.rs:371:1:389:1 | exit fn mutate_arg (normal) | | +| variables.rs:372:5:372:18 | let ... = 2 | variables.rs:372:17:372:17 | 2 | | +| variables.rs:372:9:372:13 | x | variables.rs:373:5:374:29 | let ... = ... | match | | variables.rs:372:17:372:17 | 2 | variables.rs:372:9:372:13 | x | | -| variables.rs:373:5:374:29 | LetStmt | variables.rs:374:9:374:20 | mutate_param | | +| variables.rs:373:5:374:29 | let ... = ... | variables.rs:374:9:374:20 | mutate_param | | | variables.rs:373:9:373:9 | y | variables.rs:375:5:375:12 | ExprStmt | match | | variables.rs:374:9:374:20 | mutate_param | variables.rs:374:27:374:27 | x | | -| variables.rs:374:9:374:28 | CallExpr | variables.rs:373:9:373:9 | y | | -| variables.rs:374:22:374:27 | RefExpr | variables.rs:374:9:374:28 | CallExpr | | -| variables.rs:374:27:374:27 | x | variables.rs:374:22:374:27 | RefExpr | | +| variables.rs:374:9:374:28 | mutate_param(...) | variables.rs:373:9:373:9 | y | | +| variables.rs:374:22:374:27 | &mut x | variables.rs:374:9:374:28 | mutate_param(...) | | +| variables.rs:374:27:374:27 | x | variables.rs:374:22:374:27 | &mut x | | | variables.rs:375:5:375:6 | * ... | variables.rs:375:10:375:11 | 10 | | | variables.rs:375:5:375:11 | ... = ... | variables.rs:377:5:377:17 | ExprStmt | | | variables.rs:375:5:375:12 | ExprStmt | variables.rs:375:6:375:6 | y | | | variables.rs:375:6:375:6 | y | variables.rs:375:5:375:6 | * ... | | | variables.rs:375:10:375:11 | 10 | variables.rs:375:5:375:11 | ... = ... | | | variables.rs:377:5:377:13 | print_i64 | variables.rs:377:15:377:15 | x | | -| variables.rs:377:5:377:16 | CallExpr | variables.rs:379:5:379:18 | LetStmt | | +| variables.rs:377:5:377:16 | print_i64(...) | variables.rs:379:5:379:18 | let ... = 4 | | | variables.rs:377:5:377:17 | ExprStmt | variables.rs:377:5:377:13 | print_i64 | | -| variables.rs:377:15:377:15 | x | variables.rs:377:5:377:16 | CallExpr | | -| variables.rs:379:5:379:18 | LetStmt | variables.rs:379:17:379:17 | 4 | | -| variables.rs:379:9:379:13 | z | variables.rs:380:5:381:20 | LetStmt | match | +| variables.rs:377:15:377:15 | x | variables.rs:377:5:377:16 | print_i64(...) | | +| variables.rs:379:5:379:18 | let ... = 4 | variables.rs:379:17:379:17 | 4 | | +| variables.rs:379:9:379:13 | z | variables.rs:380:5:381:20 | let ... = ... | match | | variables.rs:379:17:379:17 | 4 | variables.rs:379:9:379:13 | z | | -| variables.rs:380:5:381:20 | LetStmt | variables.rs:381:19:381:19 | x | | +| variables.rs:380:5:381:20 | let ... = ... | variables.rs:381:19:381:19 | x | | | variables.rs:380:9:380:9 | w | variables.rs:382:5:385:6 | ExprStmt | match | -| variables.rs:381:9:381:19 | RefExpr | variables.rs:380:9:380:9 | w | | -| variables.rs:381:14:381:19 | RefExpr | variables.rs:381:9:381:19 | RefExpr | | -| variables.rs:381:19:381:19 | x | variables.rs:381:14:381:19 | RefExpr | | +| variables.rs:381:9:381:19 | &mut ... | variables.rs:380:9:380:9 | w | | +| variables.rs:381:14:381:19 | &mut x | variables.rs:381:9:381:19 | &mut ... | | +| variables.rs:381:19:381:19 | x | variables.rs:381:14:381:19 | &mut x | | | variables.rs:382:5:382:17 | mutate_param2 | variables.rs:383:14:383:14 | z | | -| variables.rs:382:5:385:5 | CallExpr | variables.rs:386:5:386:13 | ExprStmt | | +| variables.rs:382:5:385:5 | mutate_param2(...) | variables.rs:386:5:386:13 | ExprStmt | | | variables.rs:382:5:385:6 | ExprStmt | variables.rs:382:5:382:17 | mutate_param2 | | -| variables.rs:383:9:383:14 | RefExpr | variables.rs:384:9:384:9 | w | | -| variables.rs:383:14:383:14 | z | variables.rs:383:9:383:14 | RefExpr | | -| variables.rs:384:9:384:9 | w | variables.rs:382:5:385:5 | CallExpr | | +| variables.rs:383:9:383:14 | &mut z | variables.rs:384:9:384:9 | w | | +| variables.rs:383:14:383:14 | z | variables.rs:383:9:383:14 | &mut z | | +| variables.rs:384:9:384:9 | w | variables.rs:382:5:385:5 | mutate_param2(...) | | | variables.rs:386:5:386:7 | * ... | variables.rs:386:11:386:12 | 11 | | | variables.rs:386:5:386:12 | ... = ... | variables.rs:388:5:388:17 | ExprStmt | | | variables.rs:386:5:386:13 | ExprStmt | variables.rs:386:7:386:7 | w | | @@ -847,426 +847,426 @@ edges | variables.rs:386:7:386:7 | w | variables.rs:386:6:386:7 | * ... | | | variables.rs:386:11:386:12 | 11 | variables.rs:386:5:386:12 | ... = ... | | | variables.rs:388:5:388:13 | print_i64 | variables.rs:388:15:388:15 | z | | -| variables.rs:388:5:388:16 | CallExpr | variables.rs:371:17:389:1 | BlockExpr | | +| variables.rs:388:5:388:16 | print_i64(...) | variables.rs:371:17:389:1 | { ... } | | | variables.rs:388:5:388:17 | ExprStmt | variables.rs:388:5:388:13 | print_i64 | | -| variables.rs:388:15:388:15 | z | variables.rs:388:5:388:16 | CallExpr | | -| variables.rs:391:1:397:1 | enter alias | variables.rs:392:5:392:18 | LetStmt | | -| variables.rs:391:1:397:1 | exit alias (normal) | variables.rs:391:1:397:1 | exit alias | | -| variables.rs:391:12:397:1 | BlockExpr | variables.rs:391:1:397:1 | exit alias (normal) | | -| variables.rs:392:5:392:18 | LetStmt | variables.rs:392:17:392:17 | 1 | | -| variables.rs:392:9:392:13 | x | variables.rs:393:5:394:15 | LetStmt | match | +| variables.rs:388:15:388:15 | z | variables.rs:388:5:388:16 | print_i64(...) | | +| variables.rs:391:1:397:1 | enter fn alias | variables.rs:392:5:392:18 | let ... = 1 | | +| variables.rs:391:1:397:1 | exit fn alias (normal) | variables.rs:391:1:397:1 | exit fn alias | | +| variables.rs:391:12:397:1 | { ... } | variables.rs:391:1:397:1 | exit fn alias (normal) | | +| variables.rs:392:5:392:18 | let ... = 1 | variables.rs:392:17:392:17 | 1 | | +| variables.rs:392:9:392:13 | x | variables.rs:393:5:394:15 | let ... = ... | match | | variables.rs:392:17:392:17 | 1 | variables.rs:392:9:392:13 | x | | -| variables.rs:393:5:394:15 | LetStmt | variables.rs:394:14:394:14 | x | | +| variables.rs:393:5:394:15 | let ... = ... | variables.rs:394:14:394:14 | x | | | variables.rs:393:9:393:9 | y | variables.rs:395:5:395:11 | ExprStmt | match | -| variables.rs:394:9:394:14 | RefExpr | variables.rs:393:9:393:9 | y | | -| variables.rs:394:14:394:14 | x | variables.rs:394:9:394:14 | RefExpr | | +| variables.rs:394:9:394:14 | &mut x | variables.rs:393:9:393:9 | y | | +| variables.rs:394:14:394:14 | x | variables.rs:394:9:394:14 | &mut x | | | variables.rs:395:5:395:6 | * ... | variables.rs:395:10:395:10 | 2 | | | variables.rs:395:5:395:10 | ... = ... | variables.rs:396:5:396:17 | ExprStmt | | | variables.rs:395:5:395:11 | ExprStmt | variables.rs:395:6:395:6 | y | | | variables.rs:395:6:395:6 | y | variables.rs:395:5:395:6 | * ... | | | variables.rs:395:10:395:10 | 2 | variables.rs:395:5:395:10 | ... = ... | | | variables.rs:396:5:396:13 | print_i64 | variables.rs:396:15:396:15 | x | | -| variables.rs:396:5:396:16 | CallExpr | variables.rs:391:12:397:1 | BlockExpr | | +| variables.rs:396:5:396:16 | print_i64(...) | variables.rs:391:12:397:1 | { ... } | | | variables.rs:396:5:396:17 | ExprStmt | variables.rs:396:5:396:13 | print_i64 | | -| variables.rs:396:15:396:15 | x | variables.rs:396:5:396:16 | CallExpr | | -| variables.rs:399:1:407:1 | enter capture_immut | variables.rs:400:5:400:16 | LetStmt | | -| variables.rs:399:1:407:1 | exit capture_immut (normal) | variables.rs:399:1:407:1 | exit capture_immut | | -| variables.rs:399:20:407:1 | BlockExpr | variables.rs:399:1:407:1 | exit capture_immut (normal) | | -| variables.rs:400:5:400:16 | LetStmt | variables.rs:400:13:400:15 | 100 | | -| variables.rs:400:9:400:9 | x | variables.rs:402:5:404:6 | LetStmt | match | +| variables.rs:396:15:396:15 | x | variables.rs:396:5:396:16 | print_i64(...) | | +| variables.rs:399:1:407:1 | enter fn capture_immut | variables.rs:400:5:400:16 | let ... = 100 | | +| variables.rs:399:1:407:1 | exit fn capture_immut (normal) | variables.rs:399:1:407:1 | exit fn capture_immut | | +| variables.rs:399:20:407:1 | { ... } | variables.rs:399:1:407:1 | exit fn capture_immut (normal) | | +| variables.rs:400:5:400:16 | let ... = 100 | variables.rs:400:13:400:15 | 100 | | +| variables.rs:400:9:400:9 | x | variables.rs:402:5:404:6 | let ... = ... | match | | variables.rs:400:13:400:15 | 100 | variables.rs:400:9:400:9 | x | | -| variables.rs:402:5:404:6 | LetStmt | variables.rs:402:15:404:5 | ClosureExpr | | +| variables.rs:402:5:404:6 | let ... = ... | variables.rs:402:15:404:5 | \|...\| ... | | | variables.rs:402:9:402:11 | cap | variables.rs:405:5:405:10 | ExprStmt | match | -| variables.rs:402:15:404:5 | ClosureExpr | variables.rs:402:9:402:11 | cap | | -| variables.rs:402:15:404:5 | enter ClosureExpr | variables.rs:403:9:403:21 | ExprStmt | | -| variables.rs:402:15:404:5 | exit ClosureExpr (normal) | variables.rs:402:15:404:5 | exit ClosureExpr | | -| variables.rs:402:18:404:5 | BlockExpr | variables.rs:402:15:404:5 | exit ClosureExpr (normal) | | +| variables.rs:402:15:404:5 | \|...\| ... | variables.rs:402:9:402:11 | cap | | +| variables.rs:402:15:404:5 | enter \|...\| ... | variables.rs:403:9:403:21 | ExprStmt | | +| variables.rs:402:15:404:5 | exit \|...\| ... (normal) | variables.rs:402:15:404:5 | exit \|...\| ... | | +| variables.rs:402:18:404:5 | { ... } | variables.rs:402:15:404:5 | exit \|...\| ... (normal) | | | variables.rs:403:9:403:17 | print_i64 | variables.rs:403:19:403:19 | x | | -| variables.rs:403:9:403:20 | CallExpr | variables.rs:402:18:404:5 | BlockExpr | | +| variables.rs:403:9:403:20 | print_i64(...) | variables.rs:402:18:404:5 | { ... } | | | variables.rs:403:9:403:21 | ExprStmt | variables.rs:403:9:403:17 | print_i64 | | -| variables.rs:403:19:403:19 | x | variables.rs:403:9:403:20 | CallExpr | | -| variables.rs:405:5:405:7 | cap | variables.rs:405:5:405:9 | CallExpr | | -| variables.rs:405:5:405:9 | CallExpr | variables.rs:406:5:406:17 | ExprStmt | | +| variables.rs:403:19:403:19 | x | variables.rs:403:9:403:20 | print_i64(...) | | +| variables.rs:405:5:405:7 | cap | variables.rs:405:5:405:9 | cap(...) | | +| variables.rs:405:5:405:9 | cap(...) | variables.rs:406:5:406:17 | ExprStmt | | | variables.rs:405:5:405:10 | ExprStmt | variables.rs:405:5:405:7 | cap | | | variables.rs:406:5:406:13 | print_i64 | variables.rs:406:15:406:15 | x | | -| variables.rs:406:5:406:16 | CallExpr | variables.rs:399:20:407:1 | BlockExpr | | +| variables.rs:406:5:406:16 | print_i64(...) | variables.rs:399:20:407:1 | { ... } | | | variables.rs:406:5:406:17 | ExprStmt | variables.rs:406:5:406:13 | print_i64 | | -| variables.rs:406:15:406:15 | x | variables.rs:406:5:406:16 | CallExpr | | -| variables.rs:409:1:433:1 | enter capture_mut | variables.rs:410:5:410:18 | LetStmt | | -| variables.rs:409:1:433:1 | exit capture_mut (normal) | variables.rs:409:1:433:1 | exit capture_mut | | -| variables.rs:409:18:433:1 | BlockExpr | variables.rs:409:1:433:1 | exit capture_mut (normal) | | -| variables.rs:410:5:410:18 | LetStmt | variables.rs:410:17:410:17 | 1 | | -| variables.rs:410:9:410:13 | x | variables.rs:412:5:414:6 | LetStmt | match | +| variables.rs:406:15:406:15 | x | variables.rs:406:5:406:16 | print_i64(...) | | +| variables.rs:409:1:433:1 | enter fn capture_mut | variables.rs:410:5:410:18 | let ... = 1 | | +| variables.rs:409:1:433:1 | exit fn capture_mut (normal) | variables.rs:409:1:433:1 | exit fn capture_mut | | +| variables.rs:409:18:433:1 | { ... } | variables.rs:409:1:433:1 | exit fn capture_mut (normal) | | +| variables.rs:410:5:410:18 | let ... = 1 | variables.rs:410:17:410:17 | 1 | | +| variables.rs:410:9:410:13 | x | variables.rs:412:5:414:6 | let ... = ... | match | | variables.rs:410:17:410:17 | 1 | variables.rs:410:9:410:13 | x | | -| variables.rs:412:5:414:6 | LetStmt | variables.rs:412:20:414:5 | ClosureExpr | | +| variables.rs:412:5:414:6 | let ... = ... | variables.rs:412:20:414:5 | \|...\| ... | | | variables.rs:412:9:412:16 | closure1 | variables.rs:415:5:415:15 | ExprStmt | match | -| variables.rs:412:20:414:5 | ClosureExpr | variables.rs:412:9:412:16 | closure1 | | -| variables.rs:412:20:414:5 | enter ClosureExpr | variables.rs:413:9:413:21 | ExprStmt | | -| variables.rs:412:20:414:5 | exit ClosureExpr (normal) | variables.rs:412:20:414:5 | exit ClosureExpr | | -| variables.rs:412:23:414:5 | BlockExpr | variables.rs:412:20:414:5 | exit ClosureExpr (normal) | | +| variables.rs:412:20:414:5 | \|...\| ... | variables.rs:412:9:412:16 | closure1 | | +| variables.rs:412:20:414:5 | enter \|...\| ... | variables.rs:413:9:413:21 | ExprStmt | | +| variables.rs:412:20:414:5 | exit \|...\| ... (normal) | variables.rs:412:20:414:5 | exit \|...\| ... | | +| variables.rs:412:23:414:5 | { ... } | variables.rs:412:20:414:5 | exit \|...\| ... (normal) | | | variables.rs:413:9:413:17 | print_i64 | variables.rs:413:19:413:19 | x | | -| variables.rs:413:9:413:20 | CallExpr | variables.rs:412:23:414:5 | BlockExpr | | +| variables.rs:413:9:413:20 | print_i64(...) | variables.rs:412:23:414:5 | { ... } | | | variables.rs:413:9:413:21 | ExprStmt | variables.rs:413:9:413:17 | print_i64 | | -| variables.rs:413:19:413:19 | x | variables.rs:413:9:413:20 | CallExpr | | -| variables.rs:415:5:415:12 | closure1 | variables.rs:415:5:415:14 | CallExpr | | -| variables.rs:415:5:415:14 | CallExpr | variables.rs:416:5:416:17 | ExprStmt | | +| variables.rs:413:19:413:19 | x | variables.rs:413:9:413:20 | print_i64(...) | | +| variables.rs:415:5:415:12 | closure1 | variables.rs:415:5:415:14 | closure1(...) | | +| variables.rs:415:5:415:14 | closure1(...) | variables.rs:416:5:416:17 | ExprStmt | | | variables.rs:415:5:415:15 | ExprStmt | variables.rs:415:5:415:12 | closure1 | | | variables.rs:416:5:416:13 | print_i64 | variables.rs:416:15:416:15 | x | | -| variables.rs:416:5:416:16 | CallExpr | variables.rs:418:5:418:18 | LetStmt | | +| variables.rs:416:5:416:16 | print_i64(...) | variables.rs:418:5:418:18 | let ... = 2 | | | variables.rs:416:5:416:17 | ExprStmt | variables.rs:416:5:416:13 | print_i64 | | -| variables.rs:416:15:416:15 | x | variables.rs:416:5:416:16 | CallExpr | | -| variables.rs:418:5:418:18 | LetStmt | variables.rs:418:17:418:17 | 2 | | -| variables.rs:418:9:418:13 | y | variables.rs:420:5:422:6 | LetStmt | match | +| variables.rs:416:15:416:15 | x | variables.rs:416:5:416:16 | print_i64(...) | | +| variables.rs:418:5:418:18 | let ... = 2 | variables.rs:418:17:418:17 | 2 | | +| variables.rs:418:9:418:13 | y | variables.rs:420:5:422:6 | let ... = ... | match | | variables.rs:418:17:418:17 | 2 | variables.rs:418:9:418:13 | y | | -| variables.rs:420:5:422:6 | LetStmt | variables.rs:420:24:422:5 | ClosureExpr | | +| variables.rs:420:5:422:6 | let ... = ... | variables.rs:420:24:422:5 | \|...\| ... | | | variables.rs:420:9:420:20 | closure2 | variables.rs:423:5:423:15 | ExprStmt | match | -| variables.rs:420:24:422:5 | ClosureExpr | variables.rs:420:9:420:20 | closure2 | | -| variables.rs:420:24:422:5 | enter ClosureExpr | variables.rs:421:9:421:14 | ExprStmt | | -| variables.rs:420:24:422:5 | exit ClosureExpr (normal) | variables.rs:420:24:422:5 | exit ClosureExpr | | -| variables.rs:420:27:422:5 | BlockExpr | variables.rs:420:24:422:5 | exit ClosureExpr (normal) | | +| variables.rs:420:24:422:5 | \|...\| ... | variables.rs:420:9:420:20 | closure2 | | +| variables.rs:420:24:422:5 | enter \|...\| ... | variables.rs:421:9:421:14 | ExprStmt | | +| variables.rs:420:24:422:5 | exit \|...\| ... (normal) | variables.rs:420:24:422:5 | exit \|...\| ... | | +| variables.rs:420:27:422:5 | { ... } | variables.rs:420:24:422:5 | exit \|...\| ... (normal) | | | variables.rs:421:9:421:9 | y | variables.rs:421:13:421:13 | 3 | | -| variables.rs:421:9:421:13 | ... = ... | variables.rs:420:27:422:5 | BlockExpr | | +| variables.rs:421:9:421:13 | ... = ... | variables.rs:420:27:422:5 | { ... } | | | variables.rs:421:9:421:14 | ExprStmt | variables.rs:421:9:421:9 | y | | | variables.rs:421:13:421:13 | 3 | variables.rs:421:9:421:13 | ... = ... | | -| variables.rs:423:5:423:12 | closure2 | variables.rs:423:5:423:14 | CallExpr | | -| variables.rs:423:5:423:14 | CallExpr | variables.rs:424:5:424:17 | ExprStmt | | +| variables.rs:423:5:423:12 | closure2 | variables.rs:423:5:423:14 | closure2(...) | | +| variables.rs:423:5:423:14 | closure2(...) | variables.rs:424:5:424:17 | ExprStmt | | | variables.rs:423:5:423:15 | ExprStmt | variables.rs:423:5:423:12 | closure2 | | | variables.rs:424:5:424:13 | print_i64 | variables.rs:424:15:424:15 | y | | -| variables.rs:424:5:424:16 | CallExpr | variables.rs:426:5:426:18 | LetStmt | | +| variables.rs:424:5:424:16 | print_i64(...) | variables.rs:426:5:426:18 | let ... = 2 | | | variables.rs:424:5:424:17 | ExprStmt | variables.rs:424:5:424:13 | print_i64 | | -| variables.rs:424:15:424:15 | y | variables.rs:424:5:424:16 | CallExpr | | -| variables.rs:426:5:426:18 | LetStmt | variables.rs:426:17:426:17 | 2 | | -| variables.rs:426:9:426:13 | z | variables.rs:428:5:430:6 | LetStmt | match | +| variables.rs:424:15:424:15 | y | variables.rs:424:5:424:16 | print_i64(...) | | +| variables.rs:426:5:426:18 | let ... = 2 | variables.rs:426:17:426:17 | 2 | | +| variables.rs:426:9:426:13 | z | variables.rs:428:5:430:6 | let ... = ... | match | | variables.rs:426:17:426:17 | 2 | variables.rs:426:9:426:13 | z | | -| variables.rs:428:5:430:6 | LetStmt | variables.rs:428:24:430:5 | ClosureExpr | | +| variables.rs:428:5:430:6 | let ... = ... | variables.rs:428:24:430:5 | \|...\| ... | | | variables.rs:428:9:428:20 | closure3 | variables.rs:431:5:431:15 | ExprStmt | match | -| variables.rs:428:24:430:5 | ClosureExpr | variables.rs:428:9:428:20 | closure3 | | -| variables.rs:428:24:430:5 | enter ClosureExpr | variables.rs:429:9:429:24 | ExprStmt | | -| variables.rs:428:24:430:5 | exit ClosureExpr (normal) | variables.rs:428:24:430:5 | exit ClosureExpr | | -| variables.rs:428:27:430:5 | BlockExpr | variables.rs:428:24:430:5 | exit ClosureExpr (normal) | | +| variables.rs:428:24:430:5 | \|...\| ... | variables.rs:428:9:428:20 | closure3 | | +| variables.rs:428:24:430:5 | enter \|...\| ... | variables.rs:429:9:429:24 | ExprStmt | | +| variables.rs:428:24:430:5 | exit \|...\| ... (normal) | variables.rs:428:24:430:5 | exit \|...\| ... | | +| variables.rs:428:27:430:5 | { ... } | variables.rs:428:24:430:5 | exit \|...\| ... (normal) | | | variables.rs:429:9:429:9 | z | variables.rs:429:22:429:22 | 1 | | -| variables.rs:429:9:429:23 | ... .add_assign(...) | variables.rs:428:27:430:5 | BlockExpr | | +| variables.rs:429:9:429:23 | ... .add_assign(...) | variables.rs:428:27:430:5 | { ... } | | | variables.rs:429:9:429:24 | ExprStmt | variables.rs:429:9:429:9 | z | | | variables.rs:429:22:429:22 | 1 | variables.rs:429:9:429:23 | ... .add_assign(...) | | -| variables.rs:431:5:431:12 | closure3 | variables.rs:431:5:431:14 | CallExpr | | -| variables.rs:431:5:431:14 | CallExpr | variables.rs:432:5:432:17 | ExprStmt | | +| variables.rs:431:5:431:12 | closure3 | variables.rs:431:5:431:14 | closure3(...) | | +| variables.rs:431:5:431:14 | closure3(...) | variables.rs:432:5:432:17 | ExprStmt | | | variables.rs:431:5:431:15 | ExprStmt | variables.rs:431:5:431:12 | closure3 | | | variables.rs:432:5:432:13 | print_i64 | variables.rs:432:15:432:15 | z | | -| variables.rs:432:5:432:16 | CallExpr | variables.rs:409:18:433:1 | BlockExpr | | +| variables.rs:432:5:432:16 | print_i64(...) | variables.rs:409:18:433:1 | { ... } | | | variables.rs:432:5:432:17 | ExprStmt | variables.rs:432:5:432:13 | print_i64 | | -| variables.rs:432:15:432:15 | z | variables.rs:432:5:432:16 | CallExpr | | -| variables.rs:435:1:443:1 | enter async_block_capture | variables.rs:436:5:436:23 | LetStmt | | -| variables.rs:435:1:443:1 | exit async_block_capture (normal) | variables.rs:435:1:443:1 | exit async_block_capture | | -| variables.rs:435:32:443:1 | BlockExpr | variables.rs:435:1:443:1 | exit async_block_capture (normal) | | -| variables.rs:436:5:436:23 | LetStmt | variables.rs:436:22:436:22 | 0 | | -| variables.rs:436:9:436:13 | i | variables.rs:437:5:439:6 | LetStmt | match | +| variables.rs:432:15:432:15 | z | variables.rs:432:5:432:16 | print_i64(...) | | +| variables.rs:435:1:443:1 | enter fn async_block_capture | variables.rs:436:5:436:23 | let ... = 0 | | +| variables.rs:435:1:443:1 | exit fn async_block_capture (normal) | variables.rs:435:1:443:1 | exit fn async_block_capture | | +| variables.rs:435:32:443:1 | { ... } | variables.rs:435:1:443:1 | exit fn async_block_capture (normal) | | +| variables.rs:436:5:436:23 | let ... = 0 | variables.rs:436:22:436:22 | 0 | | +| variables.rs:436:9:436:13 | i | variables.rs:437:5:439:6 | let ... = ... | match | | variables.rs:436:22:436:22 | 0 | variables.rs:436:9:436:13 | i | | -| variables.rs:437:5:439:6 | LetStmt | variables.rs:437:17:439:5 | BlockExpr | | +| variables.rs:437:5:439:6 | let ... = ... | variables.rs:437:17:439:5 | { ... } | | | variables.rs:437:9:437:13 | block | variables.rs:441:5:441:16 | ExprStmt | match | -| variables.rs:437:17:439:5 | BlockExpr | variables.rs:437:9:437:13 | block | | -| variables.rs:437:17:439:5 | enter BlockExpr | variables.rs:438:9:438:14 | ExprStmt | | -| variables.rs:437:17:439:5 | exit BlockExpr (normal) | variables.rs:437:17:439:5 | exit BlockExpr | | +| variables.rs:437:17:439:5 | enter { ... } | variables.rs:438:9:438:14 | ExprStmt | | +| variables.rs:437:17:439:5 | exit { ... } (normal) | variables.rs:437:17:439:5 | exit { ... } | | +| variables.rs:437:17:439:5 | { ... } | variables.rs:437:9:437:13 | block | | | variables.rs:438:9:438:9 | i | variables.rs:438:13:438:13 | 1 | | -| variables.rs:438:9:438:13 | ... = ... | variables.rs:437:17:439:5 | exit BlockExpr (normal) | | +| variables.rs:438:9:438:13 | ... = ... | variables.rs:437:17:439:5 | exit { ... } (normal) | | | variables.rs:438:9:438:14 | ExprStmt | variables.rs:438:9:438:9 | i | | | variables.rs:438:13:438:13 | 1 | variables.rs:438:9:438:13 | ... = ... | | -| variables.rs:441:5:441:9 | block | variables.rs:441:5:441:15 | AwaitExpr | | -| variables.rs:441:5:441:15 | AwaitExpr | variables.rs:442:5:442:17 | ExprStmt | | +| variables.rs:441:5:441:9 | block | variables.rs:441:5:441:15 | await block | | +| variables.rs:441:5:441:15 | await block | variables.rs:442:5:442:17 | ExprStmt | | | variables.rs:441:5:441:16 | ExprStmt | variables.rs:441:5:441:9 | block | | | variables.rs:442:5:442:13 | print_i64 | variables.rs:442:15:442:15 | i | | -| variables.rs:442:5:442:16 | CallExpr | variables.rs:435:32:443:1 | BlockExpr | | +| variables.rs:442:5:442:16 | print_i64(...) | variables.rs:435:32:443:1 | { ... } | | | variables.rs:442:5:442:17 | ExprStmt | variables.rs:442:5:442:13 | print_i64 | | -| variables.rs:442:15:442:15 | i | variables.rs:442:5:442:16 | CallExpr | | -| variables.rs:445:1:459:1 | enter phi | variables.rs:445:8:445:8 | b | | -| variables.rs:445:1:459:1 | exit phi (normal) | variables.rs:445:1:459:1 | exit phi | | -| variables.rs:445:8:445:8 | b | variables.rs:445:8:445:15 | Param | match | -| variables.rs:445:8:445:15 | Param | variables.rs:446:5:446:18 | LetStmt | | -| variables.rs:445:18:459:1 | BlockExpr | variables.rs:445:1:459:1 | exit phi (normal) | | -| variables.rs:446:5:446:18 | LetStmt | variables.rs:446:17:446:17 | 1 | | +| variables.rs:442:15:442:15 | i | variables.rs:442:5:442:16 | print_i64(...) | | +| variables.rs:445:1:459:1 | enter fn phi | variables.rs:445:8:445:8 | b | | +| variables.rs:445:1:459:1 | exit fn phi (normal) | variables.rs:445:1:459:1 | exit fn phi | | +| variables.rs:445:8:445:8 | b | variables.rs:445:8:445:15 | ...: bool | match | +| variables.rs:445:8:445:15 | ...: bool | variables.rs:446:5:446:18 | let ... = 1 | | +| variables.rs:445:18:459:1 | { ... } | variables.rs:445:1:459:1 | exit fn phi (normal) | | +| variables.rs:446:5:446:18 | let ... = 1 | variables.rs:446:17:446:17 | 1 | | | variables.rs:446:9:446:13 | x | variables.rs:447:5:447:17 | ExprStmt | match | | variables.rs:446:17:446:17 | 1 | variables.rs:446:9:446:13 | x | | | variables.rs:447:5:447:13 | print_i64 | variables.rs:447:15:447:15 | x | | -| variables.rs:447:5:447:16 | CallExpr | variables.rs:448:5:448:21 | ExprStmt | | +| variables.rs:447:5:447:16 | print_i64(...) | variables.rs:448:5:448:21 | ExprStmt | | | variables.rs:447:5:447:17 | ExprStmt | variables.rs:447:5:447:13 | print_i64 | | -| variables.rs:447:15:447:15 | x | variables.rs:447:5:447:16 | CallExpr | | +| variables.rs:447:15:447:15 | x | variables.rs:447:5:447:16 | print_i64(...) | | | variables.rs:448:5:448:13 | print_i64 | variables.rs:448:15:448:15 | x | | -| variables.rs:448:5:448:20 | CallExpr | variables.rs:449:5:457:5 | ExprStmt | | +| variables.rs:448:5:448:20 | print_i64(...) | variables.rs:449:5:457:5 | ExprStmt | | | variables.rs:448:5:448:21 | ExprStmt | variables.rs:448:5:448:13 | print_i64 | | | variables.rs:448:15:448:15 | x | variables.rs:448:19:448:19 | 1 | | -| variables.rs:448:15:448:19 | ... + ... | variables.rs:448:5:448:20 | CallExpr | | +| variables.rs:448:15:448:19 | ... + ... | variables.rs:448:5:448:20 | print_i64(...) | | | variables.rs:448:19:448:19 | 1 | variables.rs:448:15:448:19 | ... + ... | | | variables.rs:449:5:457:5 | ExprStmt | variables.rs:449:8:449:8 | b | | -| variables.rs:449:5:457:5 | IfExpr | variables.rs:458:5:458:17 | ExprStmt | | +| variables.rs:449:5:457:5 | if b {...} else {...} | variables.rs:458:5:458:17 | ExprStmt | | | variables.rs:449:8:449:8 | b | variables.rs:450:9:450:14 | ExprStmt | true | | variables.rs:449:8:449:8 | b | variables.rs:454:9:454:14 | ExprStmt | false | -| variables.rs:449:10:453:5 | BlockExpr | variables.rs:449:5:457:5 | IfExpr | | +| variables.rs:449:10:453:5 | { ... } | variables.rs:449:5:457:5 | if b {...} else {...} | | | variables.rs:450:9:450:9 | x | variables.rs:450:13:450:13 | 2 | | | variables.rs:450:9:450:13 | ... = ... | variables.rs:451:9:451:21 | ExprStmt | | | variables.rs:450:9:450:14 | ExprStmt | variables.rs:450:9:450:9 | x | | | variables.rs:450:13:450:13 | 2 | variables.rs:450:9:450:13 | ... = ... | | | variables.rs:451:9:451:17 | print_i64 | variables.rs:451:19:451:19 | x | | -| variables.rs:451:9:451:20 | CallExpr | variables.rs:452:9:452:25 | ExprStmt | | +| variables.rs:451:9:451:20 | print_i64(...) | variables.rs:452:9:452:25 | ExprStmt | | | variables.rs:451:9:451:21 | ExprStmt | variables.rs:451:9:451:17 | print_i64 | | -| variables.rs:451:19:451:19 | x | variables.rs:451:9:451:20 | CallExpr | | +| variables.rs:451:19:451:19 | x | variables.rs:451:9:451:20 | print_i64(...) | | | variables.rs:452:9:452:17 | print_i64 | variables.rs:452:19:452:19 | x | | -| variables.rs:452:9:452:24 | CallExpr | variables.rs:449:10:453:5 | BlockExpr | | +| variables.rs:452:9:452:24 | print_i64(...) | variables.rs:449:10:453:5 | { ... } | | | variables.rs:452:9:452:25 | ExprStmt | variables.rs:452:9:452:17 | print_i64 | | | variables.rs:452:19:452:19 | x | variables.rs:452:23:452:23 | 1 | | -| variables.rs:452:19:452:23 | ... + ... | variables.rs:452:9:452:24 | CallExpr | | +| variables.rs:452:19:452:23 | ... + ... | variables.rs:452:9:452:24 | print_i64(...) | | | variables.rs:452:23:452:23 | 1 | variables.rs:452:19:452:23 | ... + ... | | -| variables.rs:453:12:457:5 | BlockExpr | variables.rs:449:5:457:5 | IfExpr | | +| variables.rs:453:12:457:5 | { ... } | variables.rs:449:5:457:5 | if b {...} else {...} | | | variables.rs:454:9:454:9 | x | variables.rs:454:13:454:13 | 3 | | | variables.rs:454:9:454:13 | ... = ... | variables.rs:455:9:455:21 | ExprStmt | | | variables.rs:454:9:454:14 | ExprStmt | variables.rs:454:9:454:9 | x | | | variables.rs:454:13:454:13 | 3 | variables.rs:454:9:454:13 | ... = ... | | | variables.rs:455:9:455:17 | print_i64 | variables.rs:455:19:455:19 | x | | -| variables.rs:455:9:455:20 | CallExpr | variables.rs:456:9:456:25 | ExprStmt | | +| variables.rs:455:9:455:20 | print_i64(...) | variables.rs:456:9:456:25 | ExprStmt | | | variables.rs:455:9:455:21 | ExprStmt | variables.rs:455:9:455:17 | print_i64 | | -| variables.rs:455:19:455:19 | x | variables.rs:455:9:455:20 | CallExpr | | +| variables.rs:455:19:455:19 | x | variables.rs:455:9:455:20 | print_i64(...) | | | variables.rs:456:9:456:17 | print_i64 | variables.rs:456:19:456:19 | x | | -| variables.rs:456:9:456:24 | CallExpr | variables.rs:453:12:457:5 | BlockExpr | | +| variables.rs:456:9:456:24 | print_i64(...) | variables.rs:453:12:457:5 | { ... } | | | variables.rs:456:9:456:25 | ExprStmt | variables.rs:456:9:456:17 | print_i64 | | | variables.rs:456:19:456:19 | x | variables.rs:456:23:456:23 | 1 | | -| variables.rs:456:19:456:23 | ... + ... | variables.rs:456:9:456:24 | CallExpr | | +| variables.rs:456:19:456:23 | ... + ... | variables.rs:456:9:456:24 | print_i64(...) | | | variables.rs:456:23:456:23 | 1 | variables.rs:456:19:456:23 | ... + ... | | | variables.rs:458:5:458:13 | print_i64 | variables.rs:458:15:458:15 | x | | -| variables.rs:458:5:458:16 | CallExpr | variables.rs:445:18:459:1 | BlockExpr | | +| variables.rs:458:5:458:16 | print_i64(...) | variables.rs:445:18:459:1 | { ... } | | | variables.rs:458:5:458:17 | ExprStmt | variables.rs:458:5:458:13 | print_i64 | | -| variables.rs:458:15:458:15 | x | variables.rs:458:5:458:16 | CallExpr | | -| variables.rs:461:1:474:1 | enter phi_read | variables.rs:461:13:461:14 | b1 | | -| variables.rs:461:1:474:1 | exit phi_read (normal) | variables.rs:461:1:474:1 | exit phi_read | | -| variables.rs:461:13:461:14 | b1 | variables.rs:461:13:461:21 | Param | match | -| variables.rs:461:13:461:21 | Param | variables.rs:461:24:461:25 | b2 | | -| variables.rs:461:24:461:25 | b2 | variables.rs:461:24:461:32 | Param | match | -| variables.rs:461:24:461:32 | Param | variables.rs:462:5:462:14 | LetStmt | | -| variables.rs:461:35:474:1 | BlockExpr | variables.rs:461:1:474:1 | exit phi_read (normal) | | -| variables.rs:462:5:462:14 | LetStmt | variables.rs:462:13:462:13 | 1 | | +| variables.rs:458:15:458:15 | x | variables.rs:458:5:458:16 | print_i64(...) | | +| variables.rs:461:1:474:1 | enter fn phi_read | variables.rs:461:13:461:14 | b1 | | +| variables.rs:461:1:474:1 | exit fn phi_read (normal) | variables.rs:461:1:474:1 | exit fn phi_read | | +| variables.rs:461:13:461:14 | b1 | variables.rs:461:13:461:21 | ...: bool | match | +| variables.rs:461:13:461:21 | ...: bool | variables.rs:461:24:461:25 | b2 | | +| variables.rs:461:24:461:25 | b2 | variables.rs:461:24:461:32 | ...: bool | match | +| variables.rs:461:24:461:32 | ...: bool | variables.rs:462:5:462:14 | let ... = 1 | | +| variables.rs:461:35:474:1 | { ... } | variables.rs:461:1:474:1 | exit fn phi_read (normal) | | +| variables.rs:462:5:462:14 | let ... = 1 | variables.rs:462:13:462:13 | 1 | | | variables.rs:462:9:462:9 | x | variables.rs:463:5:467:5 | ExprStmt | match | | variables.rs:462:13:462:13 | 1 | variables.rs:462:9:462:9 | x | | | variables.rs:463:5:467:5 | ExprStmt | variables.rs:463:8:463:9 | b1 | | -| variables.rs:463:5:467:5 | IfExpr | variables.rs:469:8:469:9 | b2 | | +| variables.rs:463:5:467:5 | if b1 {...} else {...} | variables.rs:469:8:469:9 | b2 | | | variables.rs:463:8:463:9 | b1 | variables.rs:464:9:464:21 | ExprStmt | true | | variables.rs:463:8:463:9 | b1 | variables.rs:466:9:466:21 | ExprStmt | false | -| variables.rs:463:11:465:5 | BlockExpr | variables.rs:463:5:467:5 | IfExpr | | +| variables.rs:463:11:465:5 | { ... } | variables.rs:463:5:467:5 | if b1 {...} else {...} | | | variables.rs:464:9:464:17 | print_i64 | variables.rs:464:19:464:19 | x | | -| variables.rs:464:9:464:20 | CallExpr | variables.rs:463:11:465:5 | BlockExpr | | +| variables.rs:464:9:464:20 | print_i64(...) | variables.rs:463:11:465:5 | { ... } | | | variables.rs:464:9:464:21 | ExprStmt | variables.rs:464:9:464:17 | print_i64 | | -| variables.rs:464:19:464:19 | x | variables.rs:464:9:464:20 | CallExpr | | -| variables.rs:465:12:467:5 | BlockExpr | variables.rs:463:5:467:5 | IfExpr | | +| variables.rs:464:19:464:19 | x | variables.rs:464:9:464:20 | print_i64(...) | | +| variables.rs:465:12:467:5 | { ... } | variables.rs:463:5:467:5 | if b1 {...} else {...} | | | variables.rs:466:9:466:17 | print_i64 | variables.rs:466:19:466:19 | x | | -| variables.rs:466:9:466:20 | CallExpr | variables.rs:465:12:467:5 | BlockExpr | | +| variables.rs:466:9:466:20 | print_i64(...) | variables.rs:465:12:467:5 | { ... } | | | variables.rs:466:9:466:21 | ExprStmt | variables.rs:466:9:466:17 | print_i64 | | -| variables.rs:466:19:466:19 | x | variables.rs:466:9:466:20 | CallExpr | | -| variables.rs:469:5:473:5 | IfExpr | variables.rs:461:35:474:1 | BlockExpr | | +| variables.rs:466:19:466:19 | x | variables.rs:466:9:466:20 | print_i64(...) | | +| variables.rs:469:5:473:5 | if b2 {...} else {...} | variables.rs:461:35:474:1 | { ... } | | | variables.rs:469:8:469:9 | b2 | variables.rs:470:9:470:21 | ExprStmt | true | | variables.rs:469:8:469:9 | b2 | variables.rs:472:9:472:21 | ExprStmt | false | -| variables.rs:469:11:471:5 | BlockExpr | variables.rs:469:5:473:5 | IfExpr | | +| variables.rs:469:11:471:5 | { ... } | variables.rs:469:5:473:5 | if b2 {...} else {...} | | | variables.rs:470:9:470:17 | print_i64 | variables.rs:470:19:470:19 | x | | -| variables.rs:470:9:470:20 | CallExpr | variables.rs:469:11:471:5 | BlockExpr | | +| variables.rs:470:9:470:20 | print_i64(...) | variables.rs:469:11:471:5 | { ... } | | | variables.rs:470:9:470:21 | ExprStmt | variables.rs:470:9:470:17 | print_i64 | | -| variables.rs:470:19:470:19 | x | variables.rs:470:9:470:20 | CallExpr | | -| variables.rs:471:12:473:5 | BlockExpr | variables.rs:469:5:473:5 | IfExpr | | +| variables.rs:470:19:470:19 | x | variables.rs:470:9:470:20 | print_i64(...) | | +| variables.rs:471:12:473:5 | { ... } | variables.rs:469:5:473:5 | if b2 {...} else {...} | | | variables.rs:472:9:472:17 | print_i64 | variables.rs:472:19:472:19 | x | | -| variables.rs:472:9:472:20 | CallExpr | variables.rs:471:12:473:5 | BlockExpr | | +| variables.rs:472:9:472:20 | print_i64(...) | variables.rs:471:12:473:5 | { ... } | | | variables.rs:472:9:472:21 | ExprStmt | variables.rs:472:9:472:17 | print_i64 | | -| variables.rs:472:19:472:19 | x | variables.rs:472:9:472:20 | CallExpr | | -| variables.rs:482:5:484:5 | enter my_get | variables.rs:482:20:482:23 | self | | -| variables.rs:482:5:484:5 | exit my_get (normal) | variables.rs:482:5:484:5 | exit my_get | | +| variables.rs:472:19:472:19 | x | variables.rs:472:9:472:20 | print_i64(...) | | +| variables.rs:482:5:484:5 | enter fn my_get | variables.rs:482:20:482:23 | self | | +| variables.rs:482:5:484:5 | exit fn my_get (normal) | variables.rs:482:5:484:5 | exit fn my_get | | | variables.rs:482:15:482:23 | SelfParam | variables.rs:483:9:483:24 | ExprStmt | | | variables.rs:482:20:482:23 | self | variables.rs:482:15:482:23 | SelfParam | | -| variables.rs:483:9:483:23 | ReturnExpr | variables.rs:482:5:484:5 | exit my_get (normal) | return | +| variables.rs:483:9:483:23 | return ... | variables.rs:482:5:484:5 | exit fn my_get (normal) | return | | variables.rs:483:9:483:24 | ExprStmt | variables.rs:483:16:483:19 | self | | -| variables.rs:483:16:483:19 | self | variables.rs:483:16:483:23 | FieldExpr | | -| variables.rs:483:16:483:23 | FieldExpr | variables.rs:483:9:483:23 | ReturnExpr | | -| variables.rs:487:1:494:1 | enter structs | variables.rs:488:5:488:36 | LetStmt | | -| variables.rs:487:1:494:1 | exit structs (normal) | variables.rs:487:1:494:1 | exit structs | | -| variables.rs:487:14:494:1 | BlockExpr | variables.rs:487:1:494:1 | exit structs (normal) | | -| variables.rs:488:5:488:36 | LetStmt | variables.rs:488:33:488:33 | 1 | | +| variables.rs:483:16:483:19 | self | variables.rs:483:16:483:23 | self.val | | +| variables.rs:483:16:483:23 | self.val | variables.rs:483:9:483:23 | return ... | | +| variables.rs:487:1:494:1 | enter fn structs | variables.rs:488:5:488:36 | let ... = ... | | +| variables.rs:487:1:494:1 | exit fn structs (normal) | variables.rs:487:1:494:1 | exit fn structs | | +| variables.rs:487:14:494:1 | { ... } | variables.rs:487:1:494:1 | exit fn structs (normal) | | +| variables.rs:488:5:488:36 | let ... = ... | variables.rs:488:33:488:33 | 1 | | | variables.rs:488:9:488:13 | a | variables.rs:489:5:489:26 | ExprStmt | match | -| variables.rs:488:17:488:35 | RecordExpr | variables.rs:488:9:488:13 | a | | -| variables.rs:488:33:488:33 | 1 | variables.rs:488:17:488:35 | RecordExpr | | +| variables.rs:488:17:488:35 | MyStruct {...} | variables.rs:488:9:488:13 | a | | +| variables.rs:488:33:488:33 | 1 | variables.rs:488:17:488:35 | MyStruct {...} | | | variables.rs:489:5:489:13 | print_i64 | variables.rs:489:15:489:15 | a | | -| variables.rs:489:5:489:25 | CallExpr | variables.rs:490:5:490:14 | ExprStmt | | +| variables.rs:489:5:489:25 | print_i64(...) | variables.rs:490:5:490:14 | ExprStmt | | | variables.rs:489:5:489:26 | ExprStmt | variables.rs:489:5:489:13 | print_i64 | | | variables.rs:489:15:489:15 | a | variables.rs:489:15:489:24 | ... .my_get(...) | | -| variables.rs:489:15:489:24 | ... .my_get(...) | variables.rs:489:5:489:25 | CallExpr | | -| variables.rs:490:5:490:5 | a | variables.rs:490:5:490:9 | FieldExpr | | -| variables.rs:490:5:490:9 | FieldExpr | variables.rs:490:13:490:13 | 5 | | +| variables.rs:489:15:489:24 | ... .my_get(...) | variables.rs:489:5:489:25 | print_i64(...) | | +| variables.rs:490:5:490:5 | a | variables.rs:490:5:490:9 | a.val | | +| variables.rs:490:5:490:9 | a.val | variables.rs:490:13:490:13 | 5 | | | variables.rs:490:5:490:13 | ... = ... | variables.rs:491:5:491:26 | ExprStmt | | | variables.rs:490:5:490:14 | ExprStmt | variables.rs:490:5:490:5 | a | | | variables.rs:490:13:490:13 | 5 | variables.rs:490:5:490:13 | ... = ... | | | variables.rs:491:5:491:13 | print_i64 | variables.rs:491:15:491:15 | a | | -| variables.rs:491:5:491:25 | CallExpr | variables.rs:492:5:492:28 | ExprStmt | | +| variables.rs:491:5:491:25 | print_i64(...) | variables.rs:492:5:492:28 | ExprStmt | | | variables.rs:491:5:491:26 | ExprStmt | variables.rs:491:5:491:13 | print_i64 | | | variables.rs:491:15:491:15 | a | variables.rs:491:15:491:24 | ... .my_get(...) | | -| variables.rs:491:15:491:24 | ... .my_get(...) | variables.rs:491:5:491:25 | CallExpr | | +| variables.rs:491:15:491:24 | ... .my_get(...) | variables.rs:491:5:491:25 | print_i64(...) | | | variables.rs:492:5:492:5 | a | variables.rs:492:25:492:25 | 2 | | | variables.rs:492:5:492:27 | ... = ... | variables.rs:493:5:493:26 | ExprStmt | | | variables.rs:492:5:492:28 | ExprStmt | variables.rs:492:5:492:5 | a | | -| variables.rs:492:9:492:27 | RecordExpr | variables.rs:492:5:492:27 | ... = ... | | -| variables.rs:492:25:492:25 | 2 | variables.rs:492:9:492:27 | RecordExpr | | +| variables.rs:492:9:492:27 | MyStruct {...} | variables.rs:492:5:492:27 | ... = ... | | +| variables.rs:492:25:492:25 | 2 | variables.rs:492:9:492:27 | MyStruct {...} | | | variables.rs:493:5:493:13 | print_i64 | variables.rs:493:15:493:15 | a | | -| variables.rs:493:5:493:25 | CallExpr | variables.rs:487:14:494:1 | BlockExpr | | +| variables.rs:493:5:493:25 | print_i64(...) | variables.rs:487:14:494:1 | { ... } | | | variables.rs:493:5:493:26 | ExprStmt | variables.rs:493:5:493:13 | print_i64 | | | variables.rs:493:15:493:15 | a | variables.rs:493:15:493:24 | ... .my_get(...) | | -| variables.rs:493:15:493:24 | ... .my_get(...) | variables.rs:493:5:493:25 | CallExpr | | -| variables.rs:496:1:503:1 | enter ref_arg | variables.rs:497:5:497:15 | LetStmt | | -| variables.rs:496:1:503:1 | exit ref_arg (normal) | variables.rs:496:1:503:1 | exit ref_arg | | -| variables.rs:496:14:503:1 | BlockExpr | variables.rs:496:1:503:1 | exit ref_arg (normal) | | -| variables.rs:497:5:497:15 | LetStmt | variables.rs:497:13:497:14 | 16 | | +| variables.rs:493:15:493:24 | ... .my_get(...) | variables.rs:493:5:493:25 | print_i64(...) | | +| variables.rs:496:1:503:1 | enter fn ref_arg | variables.rs:497:5:497:15 | let ... = 16 | | +| variables.rs:496:1:503:1 | exit fn ref_arg (normal) | variables.rs:496:1:503:1 | exit fn ref_arg | | +| variables.rs:496:14:503:1 | { ... } | variables.rs:496:1:503:1 | exit fn ref_arg (normal) | | +| variables.rs:497:5:497:15 | let ... = 16 | variables.rs:497:13:497:14 | 16 | | | variables.rs:497:9:497:9 | x | variables.rs:498:5:498:22 | ExprStmt | match | | variables.rs:497:13:497:14 | 16 | variables.rs:497:9:497:9 | x | | | variables.rs:498:5:498:17 | print_i64_ref | variables.rs:498:20:498:20 | x | | -| variables.rs:498:5:498:21 | CallExpr | variables.rs:499:5:499:17 | ExprStmt | | +| variables.rs:498:5:498:21 | print_i64_ref(...) | variables.rs:499:5:499:17 | ExprStmt | | | variables.rs:498:5:498:22 | ExprStmt | variables.rs:498:5:498:17 | print_i64_ref | | -| variables.rs:498:19:498:20 | RefExpr | variables.rs:498:5:498:21 | CallExpr | | -| variables.rs:498:20:498:20 | x | variables.rs:498:19:498:20 | RefExpr | | +| variables.rs:498:19:498:20 | &x | variables.rs:498:5:498:21 | print_i64_ref(...) | | +| variables.rs:498:20:498:20 | x | variables.rs:498:19:498:20 | &x | | | variables.rs:499:5:499:13 | print_i64 | variables.rs:499:15:499:15 | x | | -| variables.rs:499:5:499:16 | CallExpr | variables.rs:501:5:501:15 | LetStmt | | +| variables.rs:499:5:499:16 | print_i64(...) | variables.rs:501:5:501:15 | let ... = 17 | | | variables.rs:499:5:499:17 | ExprStmt | variables.rs:499:5:499:13 | print_i64 | | -| variables.rs:499:15:499:15 | x | variables.rs:499:5:499:16 | CallExpr | | -| variables.rs:501:5:501:15 | LetStmt | variables.rs:501:13:501:14 | 17 | | +| variables.rs:499:15:499:15 | x | variables.rs:499:5:499:16 | print_i64(...) | | +| variables.rs:501:5:501:15 | let ... = 17 | variables.rs:501:13:501:14 | 17 | | | variables.rs:501:9:501:9 | z | variables.rs:502:5:502:22 | ExprStmt | match | | variables.rs:501:13:501:14 | 17 | variables.rs:501:9:501:9 | z | | | variables.rs:502:5:502:17 | print_i64_ref | variables.rs:502:20:502:20 | z | | -| variables.rs:502:5:502:21 | CallExpr | variables.rs:496:14:503:1 | BlockExpr | | +| variables.rs:502:5:502:21 | print_i64_ref(...) | variables.rs:496:14:503:1 | { ... } | | | variables.rs:502:5:502:22 | ExprStmt | variables.rs:502:5:502:17 | print_i64_ref | | -| variables.rs:502:19:502:20 | RefExpr | variables.rs:502:5:502:21 | CallExpr | | -| variables.rs:502:20:502:20 | z | variables.rs:502:19:502:20 | RefExpr | | -| variables.rs:510:3:512:3 | enter bar | variables.rs:510:15:510:18 | self | | -| variables.rs:510:3:512:3 | exit bar (normal) | variables.rs:510:3:512:3 | exit bar | | +| variables.rs:502:19:502:20 | &z | variables.rs:502:5:502:21 | print_i64_ref(...) | | +| variables.rs:502:20:502:20 | z | variables.rs:502:19:502:20 | &z | | +| variables.rs:510:3:512:3 | enter fn bar | variables.rs:510:15:510:18 | self | | +| variables.rs:510:3:512:3 | exit fn bar (normal) | variables.rs:510:3:512:3 | exit fn bar | | | variables.rs:510:10:510:18 | SelfParam | variables.rs:511:5:511:32 | ExprStmt | | | variables.rs:510:15:510:18 | self | variables.rs:510:10:510:18 | SelfParam | | -| variables.rs:510:21:512:3 | BlockExpr | variables.rs:510:3:512:3 | exit bar (normal) | | +| variables.rs:510:21:512:3 | { ... } | variables.rs:510:3:512:3 | exit fn bar (normal) | | | variables.rs:511:5:511:9 | * ... | variables.rs:511:29:511:29 | 3 | | -| variables.rs:511:5:511:31 | ... = ... | variables.rs:510:21:512:3 | BlockExpr | | +| variables.rs:511:5:511:31 | ... = ... | variables.rs:510:21:512:3 | { ... } | | | variables.rs:511:5:511:32 | ExprStmt | variables.rs:511:6:511:9 | self | | | variables.rs:511:6:511:9 | self | variables.rs:511:5:511:9 | * ... | | -| variables.rs:511:13:511:31 | RecordExpr | variables.rs:511:5:511:31 | ... = ... | | -| variables.rs:511:29:511:29 | 3 | variables.rs:511:13:511:31 | RecordExpr | | -| variables.rs:515:1:520:1 | enter ref_methodcall_receiver | variables.rs:516:3:516:34 | LetStmt | | -| variables.rs:515:1:520:1 | exit ref_methodcall_receiver (normal) | variables.rs:515:1:520:1 | exit ref_methodcall_receiver | | -| variables.rs:515:30:520:1 | BlockExpr | variables.rs:515:1:520:1 | exit ref_methodcall_receiver (normal) | | -| variables.rs:516:3:516:34 | LetStmt | variables.rs:516:31:516:31 | 1 | | +| variables.rs:511:13:511:31 | MyStruct {...} | variables.rs:511:5:511:31 | ... = ... | | +| variables.rs:511:29:511:29 | 3 | variables.rs:511:13:511:31 | MyStruct {...} | | +| variables.rs:515:1:520:1 | enter fn ref_methodcall_receiver | variables.rs:516:3:516:34 | let ... = ... | | +| variables.rs:515:1:520:1 | exit fn ref_methodcall_receiver (normal) | variables.rs:515:1:520:1 | exit fn ref_methodcall_receiver | | +| variables.rs:515:30:520:1 | { ... } | variables.rs:515:1:520:1 | exit fn ref_methodcall_receiver (normal) | | +| variables.rs:516:3:516:34 | let ... = ... | variables.rs:516:31:516:31 | 1 | | | variables.rs:516:7:516:11 | a | variables.rs:517:3:517:10 | ExprStmt | match | -| variables.rs:516:15:516:33 | RecordExpr | variables.rs:516:7:516:11 | a | | -| variables.rs:516:31:516:31 | 1 | variables.rs:516:15:516:33 | RecordExpr | | +| variables.rs:516:15:516:33 | MyStruct {...} | variables.rs:516:7:516:11 | a | | +| variables.rs:516:31:516:31 | 1 | variables.rs:516:15:516:33 | MyStruct {...} | | | variables.rs:517:3:517:3 | a | variables.rs:517:3:517:9 | ... .bar(...) | | | variables.rs:517:3:517:9 | ... .bar(...) | variables.rs:519:3:519:19 | ExprStmt | | | variables.rs:517:3:517:10 | ExprStmt | variables.rs:517:3:517:3 | a | | | variables.rs:519:3:519:11 | print_i64 | variables.rs:519:13:519:13 | a | | -| variables.rs:519:3:519:18 | CallExpr | variables.rs:515:30:520:1 | BlockExpr | | +| variables.rs:519:3:519:18 | print_i64(...) | variables.rs:515:30:520:1 | { ... } | | | variables.rs:519:3:519:19 | ExprStmt | variables.rs:519:3:519:11 | print_i64 | | -| variables.rs:519:13:519:13 | a | variables.rs:519:13:519:17 | FieldExpr | | -| variables.rs:519:13:519:17 | FieldExpr | variables.rs:519:3:519:18 | CallExpr | | -| variables.rs:522:1:556:1 | enter main | variables.rs:523:5:523:25 | ExprStmt | | -| variables.rs:522:1:556:1 | exit main (normal) | variables.rs:522:1:556:1 | exit main | | -| variables.rs:522:11:556:1 | BlockExpr | variables.rs:522:1:556:1 | exit main (normal) | | -| variables.rs:523:5:523:22 | immutable_variable | variables.rs:523:5:523:24 | CallExpr | | -| variables.rs:523:5:523:24 | CallExpr | variables.rs:524:5:524:23 | ExprStmt | | +| variables.rs:519:13:519:13 | a | variables.rs:519:13:519:17 | a.val | | +| variables.rs:519:13:519:17 | a.val | variables.rs:519:3:519:18 | print_i64(...) | | +| variables.rs:522:1:556:1 | enter fn main | variables.rs:523:5:523:25 | ExprStmt | | +| variables.rs:522:1:556:1 | exit fn main (normal) | variables.rs:522:1:556:1 | exit fn main | | +| variables.rs:522:11:556:1 | { ... } | variables.rs:522:1:556:1 | exit fn main (normal) | | +| variables.rs:523:5:523:22 | immutable_variable | variables.rs:523:5:523:24 | immutable_variable(...) | | +| variables.rs:523:5:523:24 | immutable_variable(...) | variables.rs:524:5:524:23 | ExprStmt | | | variables.rs:523:5:523:25 | ExprStmt | variables.rs:523:5:523:22 | immutable_variable | | -| variables.rs:524:5:524:20 | mutable_variable | variables.rs:524:5:524:22 | CallExpr | | -| variables.rs:524:5:524:22 | CallExpr | variables.rs:525:5:525:40 | ExprStmt | | +| variables.rs:524:5:524:20 | mutable_variable | variables.rs:524:5:524:22 | mutable_variable(...) | | +| variables.rs:524:5:524:22 | mutable_variable(...) | variables.rs:525:5:525:40 | ExprStmt | | | variables.rs:524:5:524:23 | ExprStmt | variables.rs:524:5:524:20 | mutable_variable | | -| variables.rs:525:5:525:37 | mutable_variable_immutable_borrow | variables.rs:525:5:525:39 | CallExpr | | -| variables.rs:525:5:525:39 | CallExpr | variables.rs:526:5:526:23 | ExprStmt | | +| variables.rs:525:5:525:37 | mutable_variable_immutable_borrow | variables.rs:525:5:525:39 | mutable_variable_immutable_borrow(...) | | +| variables.rs:525:5:525:39 | mutable_variable_immutable_borrow(...) | variables.rs:526:5:526:23 | ExprStmt | | | variables.rs:525:5:525:40 | ExprStmt | variables.rs:525:5:525:37 | mutable_variable_immutable_borrow | | -| variables.rs:526:5:526:20 | variable_shadow1 | variables.rs:526:5:526:22 | CallExpr | | -| variables.rs:526:5:526:22 | CallExpr | variables.rs:527:5:527:23 | ExprStmt | | +| variables.rs:526:5:526:20 | variable_shadow1 | variables.rs:526:5:526:22 | variable_shadow1(...) | | +| variables.rs:526:5:526:22 | variable_shadow1(...) | variables.rs:527:5:527:23 | ExprStmt | | | variables.rs:526:5:526:23 | ExprStmt | variables.rs:526:5:526:20 | variable_shadow1 | | -| variables.rs:527:5:527:20 | variable_shadow2 | variables.rs:527:5:527:22 | CallExpr | | -| variables.rs:527:5:527:22 | CallExpr | variables.rs:528:5:528:19 | ExprStmt | | +| variables.rs:527:5:527:20 | variable_shadow2 | variables.rs:527:5:527:22 | variable_shadow2(...) | | +| variables.rs:527:5:527:22 | variable_shadow2(...) | variables.rs:528:5:528:19 | ExprStmt | | | variables.rs:527:5:527:23 | ExprStmt | variables.rs:527:5:527:20 | variable_shadow2 | | -| variables.rs:528:5:528:16 | let_pattern1 | variables.rs:528:5:528:18 | CallExpr | | -| variables.rs:528:5:528:18 | CallExpr | variables.rs:529:5:529:19 | ExprStmt | | +| variables.rs:528:5:528:16 | let_pattern1 | variables.rs:528:5:528:18 | let_pattern1(...) | | +| variables.rs:528:5:528:18 | let_pattern1(...) | variables.rs:529:5:529:19 | ExprStmt | | | variables.rs:528:5:528:19 | ExprStmt | variables.rs:528:5:528:16 | let_pattern1 | | -| variables.rs:529:5:529:16 | let_pattern2 | variables.rs:529:5:529:18 | CallExpr | | -| variables.rs:529:5:529:18 | CallExpr | variables.rs:530:5:530:19 | ExprStmt | | +| variables.rs:529:5:529:16 | let_pattern2 | variables.rs:529:5:529:18 | let_pattern2(...) | | +| variables.rs:529:5:529:18 | let_pattern2(...) | variables.rs:530:5:530:19 | ExprStmt | | | variables.rs:529:5:529:19 | ExprStmt | variables.rs:529:5:529:16 | let_pattern2 | | -| variables.rs:530:5:530:16 | let_pattern3 | variables.rs:530:5:530:18 | CallExpr | | -| variables.rs:530:5:530:18 | CallExpr | variables.rs:531:5:531:19 | ExprStmt | | +| variables.rs:530:5:530:16 | let_pattern3 | variables.rs:530:5:530:18 | let_pattern3(...) | | +| variables.rs:530:5:530:18 | let_pattern3(...) | variables.rs:531:5:531:19 | ExprStmt | | | variables.rs:530:5:530:19 | ExprStmt | variables.rs:530:5:530:16 | let_pattern3 | | -| variables.rs:531:5:531:16 | let_pattern4 | variables.rs:531:5:531:18 | CallExpr | | -| variables.rs:531:5:531:18 | CallExpr | variables.rs:532:5:532:21 | ExprStmt | | +| variables.rs:531:5:531:16 | let_pattern4 | variables.rs:531:5:531:18 | let_pattern4(...) | | +| variables.rs:531:5:531:18 | let_pattern4(...) | variables.rs:532:5:532:21 | ExprStmt | | | variables.rs:531:5:531:19 | ExprStmt | variables.rs:531:5:531:16 | let_pattern4 | | -| variables.rs:532:5:532:18 | match_pattern1 | variables.rs:532:5:532:20 | CallExpr | | -| variables.rs:532:5:532:20 | CallExpr | variables.rs:533:5:533:21 | ExprStmt | | +| variables.rs:532:5:532:18 | match_pattern1 | variables.rs:532:5:532:20 | match_pattern1(...) | | +| variables.rs:532:5:532:20 | match_pattern1(...) | variables.rs:533:5:533:21 | ExprStmt | | | variables.rs:532:5:532:21 | ExprStmt | variables.rs:532:5:532:18 | match_pattern1 | | -| variables.rs:533:5:533:18 | match_pattern2 | variables.rs:533:5:533:20 | CallExpr | | -| variables.rs:533:5:533:20 | CallExpr | variables.rs:534:5:534:21 | ExprStmt | | +| variables.rs:533:5:533:18 | match_pattern2 | variables.rs:533:5:533:20 | match_pattern2(...) | | +| variables.rs:533:5:533:20 | match_pattern2(...) | variables.rs:534:5:534:21 | ExprStmt | | | variables.rs:533:5:533:21 | ExprStmt | variables.rs:533:5:533:18 | match_pattern2 | | -| variables.rs:534:5:534:18 | match_pattern3 | variables.rs:534:5:534:20 | CallExpr | | -| variables.rs:534:5:534:20 | CallExpr | variables.rs:535:5:535:21 | ExprStmt | | +| variables.rs:534:5:534:18 | match_pattern3 | variables.rs:534:5:534:20 | match_pattern3(...) | | +| variables.rs:534:5:534:20 | match_pattern3(...) | variables.rs:535:5:535:21 | ExprStmt | | | variables.rs:534:5:534:21 | ExprStmt | variables.rs:534:5:534:18 | match_pattern3 | | -| variables.rs:535:5:535:18 | match_pattern4 | variables.rs:535:5:535:20 | CallExpr | | -| variables.rs:535:5:535:20 | CallExpr | variables.rs:536:5:536:21 | ExprStmt | | +| variables.rs:535:5:535:18 | match_pattern4 | variables.rs:535:5:535:20 | match_pattern4(...) | | +| variables.rs:535:5:535:20 | match_pattern4(...) | variables.rs:536:5:536:21 | ExprStmt | | | variables.rs:535:5:535:21 | ExprStmt | variables.rs:535:5:535:18 | match_pattern4 | | -| variables.rs:536:5:536:18 | match_pattern5 | variables.rs:536:5:536:20 | CallExpr | | -| variables.rs:536:5:536:20 | CallExpr | variables.rs:537:5:537:21 | ExprStmt | | +| variables.rs:536:5:536:18 | match_pattern5 | variables.rs:536:5:536:20 | match_pattern5(...) | | +| variables.rs:536:5:536:20 | match_pattern5(...) | variables.rs:537:5:537:21 | ExprStmt | | | variables.rs:536:5:536:21 | ExprStmt | variables.rs:536:5:536:18 | match_pattern5 | | -| variables.rs:537:5:537:18 | match_pattern6 | variables.rs:537:5:537:20 | CallExpr | | -| variables.rs:537:5:537:20 | CallExpr | variables.rs:538:5:538:21 | ExprStmt | | +| variables.rs:537:5:537:18 | match_pattern6 | variables.rs:537:5:537:20 | match_pattern6(...) | | +| variables.rs:537:5:537:20 | match_pattern6(...) | variables.rs:538:5:538:21 | ExprStmt | | | variables.rs:537:5:537:21 | ExprStmt | variables.rs:537:5:537:18 | match_pattern6 | | -| variables.rs:538:5:538:18 | match_pattern7 | variables.rs:538:5:538:20 | CallExpr | | -| variables.rs:538:5:538:20 | CallExpr | variables.rs:539:5:539:21 | ExprStmt | | +| variables.rs:538:5:538:18 | match_pattern7 | variables.rs:538:5:538:20 | match_pattern7(...) | | +| variables.rs:538:5:538:20 | match_pattern7(...) | variables.rs:539:5:539:21 | ExprStmt | | | variables.rs:538:5:538:21 | ExprStmt | variables.rs:538:5:538:18 | match_pattern7 | | -| variables.rs:539:5:539:18 | match_pattern8 | variables.rs:539:5:539:20 | CallExpr | | -| variables.rs:539:5:539:20 | CallExpr | variables.rs:540:5:540:21 | ExprStmt | | +| variables.rs:539:5:539:18 | match_pattern8 | variables.rs:539:5:539:20 | match_pattern8(...) | | +| variables.rs:539:5:539:20 | match_pattern8(...) | variables.rs:540:5:540:21 | ExprStmt | | | variables.rs:539:5:539:21 | ExprStmt | variables.rs:539:5:539:18 | match_pattern8 | | -| variables.rs:540:5:540:18 | match_pattern9 | variables.rs:540:5:540:20 | CallExpr | | -| variables.rs:540:5:540:20 | CallExpr | variables.rs:541:5:541:36 | ExprStmt | | +| variables.rs:540:5:540:18 | match_pattern9 | variables.rs:540:5:540:20 | match_pattern9(...) | | +| variables.rs:540:5:540:20 | match_pattern9(...) | variables.rs:541:5:541:36 | ExprStmt | | | variables.rs:540:5:540:21 | ExprStmt | variables.rs:540:5:540:18 | match_pattern9 | | | variables.rs:541:5:541:18 | param_pattern1 | variables.rs:541:20:541:22 | "a" | | -| variables.rs:541:5:541:35 | CallExpr | variables.rs:542:5:542:37 | ExprStmt | | +| variables.rs:541:5:541:35 | param_pattern1(...) | variables.rs:542:5:542:37 | ExprStmt | | | variables.rs:541:5:541:36 | ExprStmt | variables.rs:541:5:541:18 | param_pattern1 | | | variables.rs:541:20:541:22 | "a" | variables.rs:541:26:541:28 | "b" | | -| variables.rs:541:25:541:34 | TupleExpr | variables.rs:541:5:541:35 | CallExpr | | +| variables.rs:541:25:541:34 | TupleExpr | variables.rs:541:5:541:35 | param_pattern1(...) | | | variables.rs:541:26:541:28 | "b" | variables.rs:541:31:541:33 | "c" | | | variables.rs:541:31:541:33 | "c" | variables.rs:541:25:541:34 | TupleExpr | | -| variables.rs:542:5:542:18 | param_pattern2 | variables.rs:542:20:542:31 | Either::Left | | -| variables.rs:542:5:542:36 | CallExpr | variables.rs:543:5:543:26 | ExprStmt | | +| variables.rs:542:5:542:18 | param_pattern2 | variables.rs:542:20:542:31 | ...::Left | | +| variables.rs:542:5:542:36 | param_pattern2(...) | variables.rs:543:5:543:26 | ExprStmt | | | variables.rs:542:5:542:37 | ExprStmt | variables.rs:542:5:542:18 | param_pattern2 | | -| variables.rs:542:20:542:31 | Either::Left | variables.rs:542:33:542:34 | 45 | | -| variables.rs:542:20:542:35 | CallExpr | variables.rs:542:5:542:36 | CallExpr | | -| variables.rs:542:33:542:34 | 45 | variables.rs:542:20:542:35 | CallExpr | | -| variables.rs:543:5:543:23 | destruct_assignment | variables.rs:543:5:543:25 | CallExpr | | -| variables.rs:543:5:543:25 | CallExpr | variables.rs:544:5:544:23 | ExprStmt | | +| variables.rs:542:20:542:31 | ...::Left | variables.rs:542:33:542:34 | 45 | | +| variables.rs:542:20:542:35 | ...::Left(...) | variables.rs:542:5:542:36 | param_pattern2(...) | | +| variables.rs:542:33:542:34 | 45 | variables.rs:542:20:542:35 | ...::Left(...) | | +| variables.rs:543:5:543:23 | destruct_assignment | variables.rs:543:5:543:25 | destruct_assignment(...) | | +| variables.rs:543:5:543:25 | destruct_assignment(...) | variables.rs:544:5:544:23 | ExprStmt | | | variables.rs:543:5:543:26 | ExprStmt | variables.rs:543:5:543:23 | destruct_assignment | | -| variables.rs:544:5:544:20 | closure_variable | variables.rs:544:5:544:22 | CallExpr | | -| variables.rs:544:5:544:22 | CallExpr | variables.rs:545:5:545:19 | ExprStmt | | +| variables.rs:544:5:544:20 | closure_variable | variables.rs:544:5:544:22 | closure_variable(...) | | +| variables.rs:544:5:544:22 | closure_variable(...) | variables.rs:545:5:545:19 | ExprStmt | | | variables.rs:544:5:544:23 | ExprStmt | variables.rs:544:5:544:20 | closure_variable | | -| variables.rs:545:5:545:16 | for_variable | variables.rs:545:5:545:18 | CallExpr | | -| variables.rs:545:5:545:18 | CallExpr | variables.rs:546:5:546:17 | ExprStmt | | +| variables.rs:545:5:545:16 | for_variable | variables.rs:545:5:545:18 | for_variable(...) | | +| variables.rs:545:5:545:18 | for_variable(...) | variables.rs:546:5:546:17 | ExprStmt | | | variables.rs:545:5:545:19 | ExprStmt | variables.rs:545:5:545:16 | for_variable | | -| variables.rs:546:5:546:14 | add_assign | variables.rs:546:5:546:16 | CallExpr | | -| variables.rs:546:5:546:16 | CallExpr | variables.rs:547:5:547:13 | ExprStmt | | +| variables.rs:546:5:546:14 | add_assign | variables.rs:546:5:546:16 | add_assign(...) | | +| variables.rs:546:5:546:16 | add_assign(...) | variables.rs:547:5:547:13 | ExprStmt | | | variables.rs:546:5:546:17 | ExprStmt | variables.rs:546:5:546:14 | add_assign | | -| variables.rs:547:5:547:10 | mutate | variables.rs:547:5:547:12 | CallExpr | | -| variables.rs:547:5:547:12 | CallExpr | variables.rs:548:5:548:17 | ExprStmt | | +| variables.rs:547:5:547:10 | mutate | variables.rs:547:5:547:12 | mutate(...) | | +| variables.rs:547:5:547:12 | mutate(...) | variables.rs:548:5:548:17 | ExprStmt | | | variables.rs:547:5:547:13 | ExprStmt | variables.rs:547:5:547:10 | mutate | | -| variables.rs:548:5:548:14 | mutate_arg | variables.rs:548:5:548:16 | CallExpr | | -| variables.rs:548:5:548:16 | CallExpr | variables.rs:549:5:549:12 | ExprStmt | | +| variables.rs:548:5:548:14 | mutate_arg | variables.rs:548:5:548:16 | mutate_arg(...) | | +| variables.rs:548:5:548:16 | mutate_arg(...) | variables.rs:549:5:549:12 | ExprStmt | | | variables.rs:548:5:548:17 | ExprStmt | variables.rs:548:5:548:14 | mutate_arg | | -| variables.rs:549:5:549:9 | alias | variables.rs:549:5:549:11 | CallExpr | | -| variables.rs:549:5:549:11 | CallExpr | variables.rs:550:5:550:18 | ExprStmt | | +| variables.rs:549:5:549:9 | alias | variables.rs:549:5:549:11 | alias(...) | | +| variables.rs:549:5:549:11 | alias(...) | variables.rs:550:5:550:18 | ExprStmt | | | variables.rs:549:5:549:12 | ExprStmt | variables.rs:549:5:549:9 | alias | | -| variables.rs:550:5:550:15 | capture_mut | variables.rs:550:5:550:17 | CallExpr | | -| variables.rs:550:5:550:17 | CallExpr | variables.rs:551:5:551:20 | ExprStmt | | +| variables.rs:550:5:550:15 | capture_mut | variables.rs:550:5:550:17 | capture_mut(...) | | +| variables.rs:550:5:550:17 | capture_mut(...) | variables.rs:551:5:551:20 | ExprStmt | | | variables.rs:550:5:550:18 | ExprStmt | variables.rs:550:5:550:15 | capture_mut | | -| variables.rs:551:5:551:17 | capture_immut | variables.rs:551:5:551:19 | CallExpr | | -| variables.rs:551:5:551:19 | CallExpr | variables.rs:552:5:552:26 | ExprStmt | | +| variables.rs:551:5:551:17 | capture_immut | variables.rs:551:5:551:19 | capture_immut(...) | | +| variables.rs:551:5:551:19 | capture_immut(...) | variables.rs:552:5:552:26 | ExprStmt | | | variables.rs:551:5:551:20 | ExprStmt | variables.rs:551:5:551:17 | capture_immut | | -| variables.rs:552:5:552:23 | async_block_capture | variables.rs:552:5:552:25 | CallExpr | | -| variables.rs:552:5:552:25 | CallExpr | variables.rs:553:5:553:14 | ExprStmt | | +| variables.rs:552:5:552:23 | async_block_capture | variables.rs:552:5:552:25 | async_block_capture(...) | | +| variables.rs:552:5:552:25 | async_block_capture(...) | variables.rs:553:5:553:14 | ExprStmt | | | variables.rs:552:5:552:26 | ExprStmt | variables.rs:552:5:552:23 | async_block_capture | | -| variables.rs:553:5:553:11 | structs | variables.rs:553:5:553:13 | CallExpr | | -| variables.rs:553:5:553:13 | CallExpr | variables.rs:554:5:554:14 | ExprStmt | | +| variables.rs:553:5:553:11 | structs | variables.rs:553:5:553:13 | structs(...) | | +| variables.rs:553:5:553:13 | structs(...) | variables.rs:554:5:554:14 | ExprStmt | | | variables.rs:553:5:553:14 | ExprStmt | variables.rs:553:5:553:11 | structs | | -| variables.rs:554:5:554:11 | ref_arg | variables.rs:554:5:554:13 | CallExpr | | -| variables.rs:554:5:554:13 | CallExpr | variables.rs:555:5:555:30 | ExprStmt | | +| variables.rs:554:5:554:11 | ref_arg | variables.rs:554:5:554:13 | ref_arg(...) | | +| variables.rs:554:5:554:13 | ref_arg(...) | variables.rs:555:5:555:30 | ExprStmt | | | variables.rs:554:5:554:14 | ExprStmt | variables.rs:554:5:554:11 | ref_arg | | -| variables.rs:555:5:555:27 | ref_methodcall_receiver | variables.rs:555:5:555:29 | CallExpr | | -| variables.rs:555:5:555:29 | CallExpr | variables.rs:522:11:556:1 | BlockExpr | | +| variables.rs:555:5:555:27 | ref_methodcall_receiver | variables.rs:555:5:555:29 | ref_methodcall_receiver(...) | | +| variables.rs:555:5:555:29 | ref_methodcall_receiver(...) | variables.rs:522:11:556:1 | { ... } | | | variables.rs:555:5:555:30 | ExprStmt | variables.rs:555:5:555:27 | ref_methodcall_receiver | | breakTarget continueTarget diff --git a/rust/ql/test/library-tests/variables/Ssa.expected b/rust/ql/test/library-tests/variables/Ssa.expected index f17152793a3e..af3c96d95030 100644 --- a/rust/ql/test/library-tests/variables/Ssa.expected +++ b/rust/ql/test/library-tests/variables/Ssa.expected @@ -120,12 +120,12 @@ definition | variables.rs:418:9:418:13 | y | variables.rs:418:13:418:13 | y | | variables.rs:420:9:420:20 | closure2 | variables.rs:420:13:420:20 | closure2 | | variables.rs:421:9:421:9 | y | variables.rs:418:13:418:13 | y | -| variables.rs:423:5:423:14 | CallExpr | variables.rs:418:13:418:13 | y | +| variables.rs:423:5:423:14 | closure2(...) | variables.rs:418:13:418:13 | y | | variables.rs:428:9:428:20 | closure3 | variables.rs:428:13:428:20 | closure3 | | variables.rs:436:9:436:13 | i | variables.rs:436:13:436:13 | i | | variables.rs:437:9:437:13 | block | variables.rs:437:9:437:13 | block | | variables.rs:438:9:438:9 | i | variables.rs:436:13:436:13 | i | -| variables.rs:441:5:441:15 | AwaitExpr | variables.rs:436:13:436:13 | i | +| variables.rs:441:5:441:15 | await block | variables.rs:436:13:436:13 | i | | variables.rs:445:8:445:8 | b | variables.rs:445:8:445:8 | b | | variables.rs:446:9:446:13 | x | variables.rs:446:13:446:13 | x | | variables.rs:449:5:457:5 | phi | variables.rs:446:13:446:13 | x | @@ -239,10 +239,10 @@ read | variables.rs:412:9:412:16 | closure1 | variables.rs:412:9:412:16 | closure1 | variables.rs:415:5:415:12 | closure1 | | variables.rs:412:20:414:5 | x | variables.rs:410:13:410:13 | x | variables.rs:413:19:413:19 | x | | variables.rs:420:9:420:20 | closure2 | variables.rs:420:13:420:20 | closure2 | variables.rs:423:5:423:12 | closure2 | -| variables.rs:423:5:423:14 | CallExpr | variables.rs:418:13:418:13 | y | variables.rs:424:15:424:15 | y | +| variables.rs:423:5:423:14 | closure2(...) | variables.rs:418:13:418:13 | y | variables.rs:424:15:424:15 | y | | variables.rs:428:9:428:20 | closure3 | variables.rs:428:13:428:20 | closure3 | variables.rs:431:5:431:12 | closure3 | | variables.rs:437:9:437:13 | block | variables.rs:437:9:437:13 | block | variables.rs:441:5:441:9 | block | -| variables.rs:441:5:441:15 | AwaitExpr | variables.rs:436:13:436:13 | i | variables.rs:442:15:442:15 | i | +| variables.rs:441:5:441:15 | await block | variables.rs:436:13:436:13 | i | variables.rs:442:15:442:15 | i | | variables.rs:445:8:445:8 | b | variables.rs:445:8:445:8 | b | variables.rs:449:8:449:8 | b | | variables.rs:446:9:446:13 | x | variables.rs:446:13:446:13 | x | variables.rs:447:15:447:15 | x | | variables.rs:446:9:446:13 | x | variables.rs:446:13:446:13 | x | variables.rs:448:15:448:15 | x | @@ -343,10 +343,10 @@ firstRead | variables.rs:412:9:412:16 | closure1 | variables.rs:412:9:412:16 | closure1 | variables.rs:415:5:415:12 | closure1 | | variables.rs:412:20:414:5 | x | variables.rs:410:13:410:13 | x | variables.rs:413:19:413:19 | x | | variables.rs:420:9:420:20 | closure2 | variables.rs:420:13:420:20 | closure2 | variables.rs:423:5:423:12 | closure2 | -| variables.rs:423:5:423:14 | CallExpr | variables.rs:418:13:418:13 | y | variables.rs:424:15:424:15 | y | +| variables.rs:423:5:423:14 | closure2(...) | variables.rs:418:13:418:13 | y | variables.rs:424:15:424:15 | y | | variables.rs:428:9:428:20 | closure3 | variables.rs:428:13:428:20 | closure3 | variables.rs:431:5:431:12 | closure3 | | variables.rs:437:9:437:13 | block | variables.rs:437:9:437:13 | block | variables.rs:441:5:441:9 | block | -| variables.rs:441:5:441:15 | AwaitExpr | variables.rs:436:13:436:13 | i | variables.rs:442:15:442:15 | i | +| variables.rs:441:5:441:15 | await block | variables.rs:436:13:436:13 | i | variables.rs:442:15:442:15 | i | | variables.rs:445:8:445:8 | b | variables.rs:445:8:445:8 | b | variables.rs:449:8:449:8 | b | | variables.rs:446:9:446:13 | x | variables.rs:446:13:446:13 | x | variables.rs:447:15:447:15 | x | | variables.rs:449:5:457:5 | phi | variables.rs:446:13:446:13 | x | variables.rs:458:15:458:15 | x | @@ -443,10 +443,10 @@ lastRead | variables.rs:412:9:412:16 | closure1 | variables.rs:412:9:412:16 | closure1 | variables.rs:415:5:415:12 | closure1 | | variables.rs:412:20:414:5 | x | variables.rs:410:13:410:13 | x | variables.rs:413:19:413:19 | x | | variables.rs:420:9:420:20 | closure2 | variables.rs:420:13:420:20 | closure2 | variables.rs:423:5:423:12 | closure2 | -| variables.rs:423:5:423:14 | CallExpr | variables.rs:418:13:418:13 | y | variables.rs:424:15:424:15 | y | +| variables.rs:423:5:423:14 | closure2(...) | variables.rs:418:13:418:13 | y | variables.rs:424:15:424:15 | y | | variables.rs:428:9:428:20 | closure3 | variables.rs:428:13:428:20 | closure3 | variables.rs:431:5:431:12 | closure3 | | variables.rs:437:9:437:13 | block | variables.rs:437:9:437:13 | block | variables.rs:441:5:441:9 | block | -| variables.rs:441:5:441:15 | AwaitExpr | variables.rs:436:13:436:13 | i | variables.rs:442:15:442:15 | i | +| variables.rs:441:5:441:15 | await block | variables.rs:436:13:436:13 | i | variables.rs:442:15:442:15 | i | | variables.rs:445:8:445:8 | b | variables.rs:445:8:445:8 | b | variables.rs:449:8:449:8 | b | | variables.rs:446:9:446:13 | x | variables.rs:446:13:446:13 | x | variables.rs:448:15:448:15 | x | | variables.rs:449:5:457:5 | phi | variables.rs:446:13:446:13 | x | variables.rs:458:15:458:15 | x | diff --git a/rust/ql/test/library-tests/variables/variables.expected b/rust/ql/test/library-tests/variables/variables.expected index 6760f9bcdde3..d888734f3dc4 100644 --- a/rust/ql/test/library-tests/variables/variables.expected +++ b/rust/ql/test/library-tests/variables/variables.expected @@ -411,49 +411,49 @@ variableInitializer | variables.rs:37:9:37:10 | x3 | variables.rs:38:9:38:14 | ... + ... | | variables.rs:43:9:43:10 | x4 | variables.rs:43:14:43:16 | "a" | | variables.rs:46:13:46:14 | x4 | variables.rs:46:18:46:20 | "b" | -| variables.rs:75:9:75:10 | p1 | variables.rs:75:14:75:37 | RecordExpr | -| variables.rs:85:9:85:10 | s1 | variables.rs:85:14:85:41 | CallExpr | -| variables.rs:102:9:102:10 | s1 | variables.rs:102:14:102:41 | CallExpr | -| variables.rs:111:9:111:10 | x6 | variables.rs:111:14:111:20 | CallExpr | +| variables.rs:75:9:75:10 | p1 | variables.rs:75:14:75:37 | Point {...} | +| variables.rs:85:9:85:10 | s1 | variables.rs:85:14:85:41 | Some(...) | +| variables.rs:102:9:102:10 | s1 | variables.rs:102:14:102:41 | Some(...) | +| variables.rs:111:9:111:10 | x6 | variables.rs:111:14:111:20 | Some(...) | | variables.rs:112:9:112:10 | y1 | variables.rs:112:14:112:15 | 10 | | variables.rs:128:9:128:15 | numbers | variables.rs:128:19:128:35 | TupleExpr | -| variables.rs:155:9:155:10 | p2 | variables.rs:155:14:155:37 | RecordExpr | -| variables.rs:169:9:169:11 | msg | variables.rs:169:15:169:38 | RecordExpr | -| variables.rs:189:9:189:14 | either | variables.rs:189:18:189:33 | CallExpr | -| variables.rs:203:9:203:10 | tv | variables.rs:203:14:203:36 | CallExpr | -| variables.rs:219:9:219:14 | either | variables.rs:219:18:219:33 | CallExpr | -| variables.rs:229:9:229:14 | either | variables.rs:229:18:229:33 | CallExpr | -| variables.rs:253:9:253:10 | fv | variables.rs:253:14:253:35 | CallExpr | -| variables.rs:315:9:315:23 | example_closure | variables.rs:316:9:317:9 | ClosureExpr | -| variables.rs:318:9:318:10 | n1 | variables.rs:319:9:319:26 | CallExpr | -| variables.rs:323:9:323:26 | immutable_variable | variables.rs:324:9:325:9 | ClosureExpr | -| variables.rs:326:9:326:10 | n2 | variables.rs:327:9:327:29 | CallExpr | -| variables.rs:332:9:332:9 | v | variables.rs:332:13:332:41 | RefExpr | +| variables.rs:155:9:155:10 | p2 | variables.rs:155:14:155:37 | Point {...} | +| variables.rs:169:9:169:11 | msg | variables.rs:169:15:169:38 | ...::Hello {...} | +| variables.rs:189:9:189:14 | either | variables.rs:189:18:189:33 | ...::Left(...) | +| variables.rs:203:9:203:10 | tv | variables.rs:203:14:203:36 | ...::Second(...) | +| variables.rs:219:9:219:14 | either | variables.rs:219:18:219:33 | ...::Left(...) | +| variables.rs:229:9:229:14 | either | variables.rs:229:18:229:33 | ...::Left(...) | +| variables.rs:253:9:253:10 | fv | variables.rs:253:14:253:35 | ...::Second(...) | +| variables.rs:315:9:315:23 | example_closure | variables.rs:316:9:317:9 | \|...\| x | +| variables.rs:318:9:318:10 | n1 | variables.rs:319:9:319:26 | example_closure(...) | +| variables.rs:323:9:323:26 | immutable_variable | variables.rs:324:9:325:9 | \|...\| x | +| variables.rs:326:9:326:10 | n2 | variables.rs:327:9:327:29 | immutable_variable(...) | +| variables.rs:332:9:332:9 | v | variables.rs:332:13:332:41 | &... | | variables.rs:341:13:341:13 | a | variables.rs:341:17:341:17 | 0 | | variables.rs:349:13:349:13 | i | variables.rs:349:17:349:17 | 1 | -| variables.rs:350:9:350:13 | ref_i | variables.rs:351:9:351:14 | RefExpr | +| variables.rs:350:9:350:13 | ref_i | variables.rs:351:9:351:14 | &mut i | | variables.rs:372:13:372:13 | x | variables.rs:372:17:372:17 | 2 | -| variables.rs:373:9:373:9 | y | variables.rs:374:9:374:28 | CallExpr | +| variables.rs:373:9:373:9 | y | variables.rs:374:9:374:28 | mutate_param(...) | | variables.rs:379:13:379:13 | z | variables.rs:379:17:379:17 | 4 | -| variables.rs:380:9:380:9 | w | variables.rs:381:9:381:19 | RefExpr | +| variables.rs:380:9:380:9 | w | variables.rs:381:9:381:19 | &mut ... | | variables.rs:392:13:392:13 | x | variables.rs:392:17:392:17 | 1 | -| variables.rs:393:9:393:9 | y | variables.rs:394:9:394:14 | RefExpr | +| variables.rs:393:9:393:9 | y | variables.rs:394:9:394:14 | &mut x | | variables.rs:400:9:400:9 | x | variables.rs:400:13:400:15 | 100 | -| variables.rs:402:9:402:11 | cap | variables.rs:402:15:404:5 | ClosureExpr | +| variables.rs:402:9:402:11 | cap | variables.rs:402:15:404:5 | \|...\| ... | | variables.rs:410:13:410:13 | x | variables.rs:410:17:410:17 | 1 | -| variables.rs:412:9:412:16 | closure1 | variables.rs:412:20:414:5 | ClosureExpr | +| variables.rs:412:9:412:16 | closure1 | variables.rs:412:20:414:5 | \|...\| ... | | variables.rs:418:13:418:13 | y | variables.rs:418:17:418:17 | 2 | -| variables.rs:420:13:420:20 | closure2 | variables.rs:420:24:422:5 | ClosureExpr | +| variables.rs:420:13:420:20 | closure2 | variables.rs:420:24:422:5 | \|...\| ... | | variables.rs:426:13:426:13 | z | variables.rs:426:17:426:17 | 2 | -| variables.rs:428:13:428:20 | closure3 | variables.rs:428:24:430:5 | ClosureExpr | +| variables.rs:428:13:428:20 | closure3 | variables.rs:428:24:430:5 | \|...\| ... | | variables.rs:436:13:436:13 | i | variables.rs:436:22:436:22 | 0 | -| variables.rs:437:9:437:13 | block | variables.rs:437:17:439:5 | BlockExpr | +| variables.rs:437:9:437:13 | block | variables.rs:437:17:439:5 | { ... } | | variables.rs:446:13:446:13 | x | variables.rs:446:17:446:17 | 1 | | variables.rs:462:9:462:9 | x | variables.rs:462:13:462:13 | 1 | -| variables.rs:488:13:488:13 | a | variables.rs:488:17:488:35 | RecordExpr | +| variables.rs:488:13:488:13 | a | variables.rs:488:17:488:35 | MyStruct {...} | | variables.rs:497:9:497:9 | x | variables.rs:497:13:497:14 | 16 | | variables.rs:501:9:501:9 | z | variables.rs:501:13:501:14 | 17 | -| variables.rs:516:11:516:11 | a | variables.rs:516:15:516:33 | RecordExpr | +| variables.rs:516:11:516:11 | a | variables.rs:516:15:516:33 | MyStruct {...} | capturedVariable | variables.rs:400:9:400:9 | x | | variables.rs:410:13:410:13 | x | diff --git a/rust/ql/test/query-tests/diagnostics/CONSISTENCY/ExtractionConsistency.expected b/rust/ql/test/query-tests/diagnostics/CONSISTENCY/ExtractionConsistency.expected index bdfa4a9792dd..5b4796faa8c5 100644 --- a/rust/ql/test/query-tests/diagnostics/CONSISTENCY/ExtractionConsistency.expected +++ b/rust/ql/test/query-tests/diagnostics/CONSISTENCY/ExtractionConsistency.expected @@ -4,5 +4,4 @@ extractionWarning | does_not_compile.rs:2:13:2:12 | expected SEMICOLON | | does_not_compile.rs:2:21:2:20 | expected SEMICOLON | | does_not_compile.rs:2:26:2:25 | expected SEMICOLON | -| does_not_compile.rs:2:32:2:31 | expected field name or number | | error.rs:2:5:2:17 | An error! | diff --git a/rust/ql/test/query-tests/diagnostics/ExtractionWarnings.expected b/rust/ql/test/query-tests/diagnostics/ExtractionWarnings.expected index 1ebd7e232214..5ea7e808176e 100644 --- a/rust/ql/test/query-tests/diagnostics/ExtractionWarnings.expected +++ b/rust/ql/test/query-tests/diagnostics/ExtractionWarnings.expected @@ -3,5 +3,4 @@ | does_not_compile.rs:2:13:2:12 | expected SEMICOLON | Extraction warning in does_not_compile.rs with message expected SEMICOLON | 1 | | does_not_compile.rs:2:21:2:20 | expected SEMICOLON | Extraction warning in does_not_compile.rs with message expected SEMICOLON | 1 | | does_not_compile.rs:2:26:2:25 | expected SEMICOLON | Extraction warning in does_not_compile.rs with message expected SEMICOLON | 1 | -| does_not_compile.rs:2:32:2:31 | expected field name or number | Extraction warning in does_not_compile.rs with message expected field name or number | 1 | | error.rs:2:5:2:17 | An error! | Extraction warning in error.rs with message An error! | 1 | diff --git a/rust/ql/test/query-tests/diagnostics/SummaryStats.expected b/rust/ql/test/query-tests/diagnostics/SummaryStats.expected index aeba0ac1ee6c..a1ece2b1fd7b 100644 --- a/rust/ql/test/query-tests/diagnostics/SummaryStats.expected +++ b/rust/ql/test/query-tests/diagnostics/SummaryStats.expected @@ -1,7 +1,7 @@ -| Elements extracted | 376 | +| Elements extracted | 375 | | Elements unextracted | 0 | | Extraction errors | 0 | -| Extraction warnings | 7 | +| Extraction warnings | 6 | | Files extracted - total | 8 | | Files extracted - with errors | 2 | | Files extracted - without errors | 6 | diff --git a/rust/ql/test/query-tests/diagnostics/does_not_compile.rs b/rust/ql/test/query-tests/diagnostics/does_not_compile.rs index 9aedaffcd93a..15f85e1ab4bf 100644 --- a/rust/ql/test/query-tests/diagnostics/does_not_compile.rs +++ b/rust/ql/test/query-tests/diagnostics/does_not_compile.rs @@ -1,3 +1,3 @@ pub fn my_func() { - This is not correct Rust code. + This is not correct Rust code } diff --git a/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/DataFlowConsistency.expected b/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/DataFlowConsistency.expected deleted file mode 100644 index d9a60435a6f9..000000000000 --- a/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/DataFlowConsistency.expected +++ /dev/null @@ -1,3 +0,0 @@ -uniqueNodeToString -| sqlx.rs:154:13:154:81 | (no string representation) | Node should have one toString but has 0. | -| sqlx.rs:156:17:156:86 | (no string representation) | Node should have one toString but has 0. | diff --git a/rust/schema/annotations.py b/rust/schema/annotations.py index 60f67a710d84..91a6d6add281 100644 --- a/rust/schema/annotations.py +++ b/rust/schema/annotations.py @@ -1,6 +1,19 @@ from misc.codegen.lib.schemadefs import * from .ast import * +class LabelableExpr(Expr): + """ + The base class for expressions that can be labeled (`LoopExpr`, `ForExpr`, `WhileExpr` or `BlockExpr`). + """ + label: optional[Label] | child + +class LoopingExpr(LabelableExpr): + """ + The base class for expressions that loop (`LoopExpr`, `ForExpr` or `WhileExpr`). + """ + loop_body: optional["BlockExpr"] | child + + @annotate(Module) @rust.doc_test_signature(None) @@ -68,6 +81,7 @@ class _: """ A path. For example: ```rust + use some_crate::some_module::some_item; foo::bar; ``` """ @@ -107,6 +121,7 @@ class PathExprBase(Expr): @annotate(PathExpr, replace_bases={Expr: PathExprBase}, cfg = True) +@qltest.test_with(Path) class _: """ A path expression. For example: @@ -151,7 +166,7 @@ class _: """ -@annotate(BlockExpr, cfg = True) +@annotate(BlockExpr, replace_bases={Expr: LabelableExpr}, cfg = True) class _: """ A block expression. For example: @@ -167,9 +182,10 @@ class _: } ``` """ + label: drop -@annotate(LoopExpr, cfg = True) +@annotate(LoopExpr, replace_bases={Expr: LoopingExpr}, cfg = True) class _: """ A loop expression. For example: @@ -195,6 +211,8 @@ class _: }; ``` """ + label: drop + loop_body: drop class CallExprBase(Expr): @@ -705,6 +723,7 @@ class _: @annotate(PathPat, cfg = True) +@qltest.test_with(Path) class _: """ A path pattern. For example: @@ -990,7 +1009,7 @@ class _: """ -@annotate(ForExpr, cfg = True) +@annotate(ForExpr, replace_bases={Expr: LoopingExpr}, cfg = True) class _: """ A ForExpr. For example: @@ -998,6 +1017,8 @@ class _: todo!() ``` """ + label: drop + loop_body: drop @annotate(ForType) @@ -1354,21 +1375,21 @@ class _: @annotate(PathSegment) +@qltest.test_with(Path) class _: """ - A PathSegment. For example: - ```rust - todo!() - ``` + A path segment, which is one part of a whole path. """ @annotate(PathType) +@qltest.test_with(Path) class _: """ - A PathType. For example: + A type referring to a path. For example: ```rust - todo!() + type X = std::collections::HashMap; + type Y = X::Item; ``` """ @@ -1750,7 +1771,7 @@ class _: """ -@annotate(WhileExpr, cfg = True) +@annotate(WhileExpr, replace_bases={Expr: LoopingExpr}, cfg = True) class _: """ A WhileExpr. For example: @@ -1758,6 +1779,8 @@ class _: todo!() ``` """ + label: drop + loop_body: drop @annotate(Function, add_bases=[Callable])