Compare commits

...

10 Commits

Author SHA1 Message Date
Paolo Tranquilli
b0b9bf7753 Merge branch 'main' into redsun82/rust-expand-assoc-items 2025-06-18 13:14:37 +02:00
Paolo Tranquilli
40e1af9428 Merge branch 'redsun82/rust-qltest-proc-macro' into redsun82/rust-expand-assoc-items 2025-06-18 11:12:40 +02:00
Paolo Tranquilli
f3c5bde3c0 Merge branch 'redsun82/rust-qltest-proc-macro' into redsun82/rust-expand-assoc-items 2025-06-18 10:50:40 +02:00
Paolo Tranquilli
69cdef7797 Rust: fix ArrayRepeatExpr control flow 2025-06-17 11:48:29 +02:00
Paolo Tranquilli
6ec89c1ba1 Merge branch 'main' into redsun82/rust-expand-assoc-items 2025-06-17 10:18:01 +02:00
Paolo Tranquilli
f086eb759e Rust: accept test changes 2025-06-17 10:17:46 +02:00
Paolo Tranquilli
9841668bde Rust: rename macro_expansion test to macro-expansion 2025-06-17 10:17:37 +02:00
Paolo Tranquilli
1486f8aa67 Rust: fix multiplePositions consistency check 2025-06-17 10:16:54 +02:00
Paolo Tranquilli
5718ef4e7f Codegen: fix parent-child in case of diamond inheritance 2025-06-17 10:14:57 +02:00
Paolo Tranquilli
1f4b5628c1 Rust: expand attribute macros on AssocItem 2025-06-16 17:58:51 +02:00
45 changed files with 15808 additions and 695 deletions

View File

@@ -63,7 +63,7 @@ none()
{{#classes}}
{{#final}}
or
result = getImmediateChildOf{{name}}(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOf{{name}}(e, i, partialAccessor) | i)
{{/final}}
{{/classes}}
}

View File

@@ -0,0 +1,7 @@
class Element extends @element {
string toString() { none() }
}
query predicate new_item_attribute_macro_expansions(Element id, Element attribute_macro_expansion) {
expandable_item_attribute_macro_expansions(id, attribute_macro_expansion) and id instanceof @item
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,5 @@
description: Restrict `expandable_item_attribute_macro_expansions` to `item_attribute_macro_expansions`
compatibility: partial
expandable_item_attribute_macro_expansions.rel: delete
item_attribute_macro_expansions.rel: run downgrade.ql new_item_attribute_macro_expansions

View File

@@ -1,2 +1,2 @@
mod.rs 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7
top.rs 69c1fcaf0efea87feb898f32fdb7bcb842a22119b69ecedd61c2d946eb7e67de 69c1fcaf0efea87feb898f32fdb7bcb842a22119b69ecedd61c2d946eb7e67de
top.rs 4e4563824a0e0323d940c204b39beebb6a664dfce032026bf6f5209b86fe3ca7 4e4563824a0e0323d940c204b39beebb6a664dfce032026bf6f5209b86fe3ca7

View File

@@ -693,42 +693,6 @@ impl From<trap::Label<AsmRegSpec>> for trap::Label<Element> {
}
}
#[derive(Debug)]
pub struct AssocItem {
_unused: ()
}
impl trap::TrapClass for AssocItem {
fn class_name() -> &'static str { "AssocItem" }
}
impl From<trap::Label<AssocItem>> for trap::Label<AstNode> {
fn from(value: trap::Label<AssocItem>) -> Self {
// SAFETY: this is safe because in the dbscheme AssocItem is a subclass of AstNode
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
impl From<trap::Label<AssocItem>> for trap::Label<Locatable> {
fn from(value: trap::Label<AssocItem>) -> Self {
// SAFETY: this is safe because in the dbscheme AssocItem is a subclass of Locatable
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
impl From<trap::Label<AssocItem>> for trap::Label<Element> {
fn from(value: trap::Label<AssocItem>) -> Self {
// SAFETY: this is safe because in the dbscheme AssocItem is a subclass of Element
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
#[derive(Debug)]
pub struct AssocItemList {
pub id: trap::TrapId<AssocItemList>,
@@ -919,6 +883,48 @@ impl From<trap::Label<ClosureBinder>> for trap::Label<Element> {
}
}
#[derive(Debug)]
pub struct ExpandableItem {
_unused: ()
}
impl ExpandableItem {
pub fn emit_attribute_macro_expansion(id: trap::Label<Self>, value: trap::Label<MacroItems>, out: &mut trap::Writer) {
out.add_tuple("expandable_item_attribute_macro_expansions", vec![id.into(), value.into()]);
}
}
impl trap::TrapClass for ExpandableItem {
fn class_name() -> &'static str { "ExpandableItem" }
}
impl From<trap::Label<ExpandableItem>> for trap::Label<AstNode> {
fn from(value: trap::Label<ExpandableItem>) -> Self {
// SAFETY: this is safe because in the dbscheme ExpandableItem is a subclass of AstNode
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
impl From<trap::Label<ExpandableItem>> for trap::Label<Locatable> {
fn from(value: trap::Label<ExpandableItem>) -> Self {
// SAFETY: this is safe because in the dbscheme ExpandableItem is a subclass of Locatable
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
impl From<trap::Label<ExpandableItem>> for trap::Label<Element> {
fn from(value: trap::Label<ExpandableItem>) -> Self {
// SAFETY: this is safe because in the dbscheme ExpandableItem is a subclass of Element
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
#[derive(Debug)]
pub struct Expr {
_unused: ()
@@ -4091,6 +4097,51 @@ impl From<trap::Label<AsmSym>> for trap::Label<Element> {
}
}
#[derive(Debug)]
pub struct AssocItem {
_unused: ()
}
impl trap::TrapClass for AssocItem {
fn class_name() -> &'static str { "AssocItem" }
}
impl From<trap::Label<AssocItem>> for trap::Label<ExpandableItem> {
fn from(value: trap::Label<AssocItem>) -> Self {
// SAFETY: this is safe because in the dbscheme AssocItem is a subclass of ExpandableItem
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
impl From<trap::Label<AssocItem>> for trap::Label<AstNode> {
fn from(value: trap::Label<AssocItem>) -> Self {
// SAFETY: this is safe because in the dbscheme AssocItem is a subclass of AstNode
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
impl From<trap::Label<AssocItem>> for trap::Label<Locatable> {
fn from(value: trap::Label<AssocItem>) -> Self {
// SAFETY: this is safe because in the dbscheme AssocItem is a subclass of Locatable
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
impl From<trap::Label<AssocItem>> for trap::Label<Element> {
fn from(value: trap::Label<AssocItem>) -> Self {
// SAFETY: this is safe because in the dbscheme AssocItem is a subclass of Element
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
#[derive(Debug)]
pub struct AssocTypeArg {
pub id: trap::TrapId<AssocTypeArg>,
@@ -5760,12 +5811,6 @@ pub struct Item {
_unused: ()
}
impl Item {
pub fn emit_attribute_macro_expansion(id: trap::Label<Self>, value: trap::Label<MacroItems>, out: &mut trap::Writer) {
out.add_tuple("item_attribute_macro_expansions", vec![id.into(), value.into()]);
}
}
impl trap::TrapClass for Item {
fn class_name() -> &'static str { "Item" }
}
@@ -5815,6 +5860,15 @@ impl From<trap::Label<Item>> for trap::Label<Addressable> {
}
}
impl From<trap::Label<Item>> for trap::Label<ExpandableItem> {
fn from(value: trap::Label<Item>) -> Self {
// SAFETY: this is safe because in the dbscheme Item is a subclass of ExpandableItem
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
#[derive(Debug)]
pub struct LabelableExpr {
_unused: ()
@@ -9103,6 +9157,15 @@ impl From<trap::Label<Const>> for trap::Label<AssocItem> {
}
}
impl From<trap::Label<Const>> for trap::Label<ExpandableItem> {
fn from(value: trap::Label<Const>) -> Self {
// SAFETY: this is safe because in the dbscheme Const is a subclass of ExpandableItem
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
impl From<trap::Label<Const>> for trap::Label<AstNode> {
fn from(value: trap::Label<Const>) -> Self {
// SAFETY: this is safe because in the dbscheme Const is a subclass of AstNode
@@ -9254,6 +9317,15 @@ impl From<trap::Label<Enum>> for trap::Label<Addressable> {
}
}
impl From<trap::Label<Enum>> for trap::Label<ExpandableItem> {
fn from(value: trap::Label<Enum>) -> Self {
// SAFETY: this is safe because in the dbscheme Enum is a subclass of ExpandableItem
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
#[derive(Debug)]
pub struct ExternBlock {
pub id: trap::TrapId<ExternBlock>,
@@ -9343,6 +9415,15 @@ impl From<trap::Label<ExternBlock>> for trap::Label<Addressable> {
}
}
impl From<trap::Label<ExternBlock>> for trap::Label<ExpandableItem> {
fn from(value: trap::Label<ExternBlock>) -> Self {
// SAFETY: this is safe because in the dbscheme ExternBlock is a subclass of ExpandableItem
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
#[derive(Debug)]
pub struct ExternCrate {
pub id: trap::TrapId<ExternCrate>,
@@ -9432,6 +9513,15 @@ impl From<trap::Label<ExternCrate>> for trap::Label<Addressable> {
}
}
impl From<trap::Label<ExternCrate>> for trap::Label<ExpandableItem> {
fn from(value: trap::Label<ExternCrate>) -> Self {
// SAFETY: this is safe because in the dbscheme ExternCrate is a subclass of ExpandableItem
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
#[derive(Debug)]
pub struct Function {
pub id: trap::TrapId<Function>,
@@ -9522,6 +9612,15 @@ impl From<trap::Label<Function>> for trap::Label<AssocItem> {
}
}
impl From<trap::Label<Function>> for trap::Label<ExpandableItem> {
fn from(value: trap::Label<Function>) -> Self {
// SAFETY: this is safe because in the dbscheme Function is a subclass of ExpandableItem
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
impl From<trap::Label<Function>> for trap::Label<AstNode> {
fn from(value: trap::Label<Function>) -> Self {
// SAFETY: this is safe because in the dbscheme Function is a subclass of AstNode
@@ -9707,6 +9806,15 @@ impl From<trap::Label<Impl>> for trap::Label<Addressable> {
}
}
impl From<trap::Label<Impl>> for trap::Label<ExpandableItem> {
fn from(value: trap::Label<Impl>) -> Self {
// SAFETY: this is safe because in the dbscheme Impl is a subclass of ExpandableItem
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
#[derive(Debug)]
pub struct LoopingExpr {
_unused: ()
@@ -9807,6 +9915,15 @@ impl From<trap::Label<MacroCall>> for trap::Label<AssocItem> {
}
}
impl From<trap::Label<MacroCall>> for trap::Label<ExpandableItem> {
fn from(value: trap::Label<MacroCall>) -> Self {
// SAFETY: this is safe because in the dbscheme MacroCall is a subclass of ExpandableItem
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
impl From<trap::Label<MacroCall>> for trap::Label<AstNode> {
fn from(value: trap::Label<MacroCall>) -> Self {
// SAFETY: this is safe because in the dbscheme MacroCall is a subclass of AstNode
@@ -9963,6 +10080,15 @@ impl From<trap::Label<MacroDef>> for trap::Label<Addressable> {
}
}
impl From<trap::Label<MacroDef>> for trap::Label<ExpandableItem> {
fn from(value: trap::Label<MacroDef>) -> Self {
// SAFETY: this is safe because in the dbscheme MacroDef is a subclass of ExpandableItem
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
#[derive(Debug)]
pub struct MacroRules {
pub id: trap::TrapId<MacroRules>,
@@ -10052,6 +10178,15 @@ impl From<trap::Label<MacroRules>> for trap::Label<Addressable> {
}
}
impl From<trap::Label<MacroRules>> for trap::Label<ExpandableItem> {
fn from(value: trap::Label<MacroRules>) -> Self {
// SAFETY: this is safe because in the dbscheme MacroRules is a subclass of ExpandableItem
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
#[derive(Debug)]
pub struct MethodCallExpr {
pub id: trap::TrapId<MethodCallExpr>,
@@ -10234,6 +10369,15 @@ impl From<trap::Label<Module>> for trap::Label<Addressable> {
}
}
impl From<trap::Label<Module>> for trap::Label<ExpandableItem> {
fn from(value: trap::Label<Module>) -> Self {
// SAFETY: this is safe because in the dbscheme Module is a subclass of ExpandableItem
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
#[derive(Debug)]
pub struct PathExpr {
pub id: trap::TrapId<PathExpr>,
@@ -10515,6 +10659,15 @@ impl From<trap::Label<Static>> for trap::Label<Addressable> {
}
}
impl From<trap::Label<Static>> for trap::Label<ExpandableItem> {
fn from(value: trap::Label<Static>) -> Self {
// SAFETY: this is safe because in the dbscheme Static is a subclass of ExpandableItem
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
#[derive(Debug)]
pub struct Struct {
pub id: trap::TrapId<Struct>,
@@ -10612,6 +10765,15 @@ impl From<trap::Label<Struct>> for trap::Label<Addressable> {
}
}
impl From<trap::Label<Struct>> for trap::Label<ExpandableItem> {
fn from(value: trap::Label<Struct>) -> Self {
// SAFETY: this is safe because in the dbscheme Struct is a subclass of ExpandableItem
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
impl From<trap::Label<Struct>> for trap::Label<VariantDef> {
fn from(value: trap::Label<Struct>) -> Self {
// SAFETY: this is safe because in the dbscheme Struct is a subclass of VariantDef
@@ -10892,6 +11054,15 @@ impl From<trap::Label<Trait>> for trap::Label<Addressable> {
}
}
impl From<trap::Label<Trait>> for trap::Label<ExpandableItem> {
fn from(value: trap::Label<Trait>) -> Self {
// SAFETY: this is safe because in the dbscheme Trait is a subclass of ExpandableItem
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
#[derive(Debug)]
pub struct TraitAlias {
pub id: trap::TrapId<TraitAlias>,
@@ -10989,6 +11160,15 @@ impl From<trap::Label<TraitAlias>> for trap::Label<Addressable> {
}
}
impl From<trap::Label<TraitAlias>> for trap::Label<ExpandableItem> {
fn from(value: trap::Label<TraitAlias>) -> Self {
// SAFETY: this is safe because in the dbscheme TraitAlias is a subclass of ExpandableItem
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
#[derive(Debug)]
pub struct TupleStructPat {
pub id: trap::TrapId<TupleStructPat>,
@@ -11130,6 +11310,15 @@ impl From<trap::Label<TypeAlias>> for trap::Label<AssocItem> {
}
}
impl From<trap::Label<TypeAlias>> for trap::Label<ExpandableItem> {
fn from(value: trap::Label<TypeAlias>) -> Self {
// SAFETY: this is safe because in the dbscheme TypeAlias is a subclass of ExpandableItem
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
impl From<trap::Label<TypeAlias>> for trap::Label<AstNode> {
fn from(value: trap::Label<TypeAlias>) -> Self {
// SAFETY: this is safe because in the dbscheme TypeAlias is a subclass of AstNode
@@ -11290,6 +11479,15 @@ impl From<trap::Label<Union>> for trap::Label<Addressable> {
}
}
impl From<trap::Label<Union>> for trap::Label<ExpandableItem> {
fn from(value: trap::Label<Union>) -> Self {
// SAFETY: this is safe because in the dbscheme Union is a subclass of ExpandableItem
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
impl From<trap::Label<Union>> for trap::Label<VariantDef> {
fn from(value: trap::Label<Union>) -> Self {
// SAFETY: this is safe because in the dbscheme Union is a subclass of VariantDef
@@ -11384,6 +11582,15 @@ impl From<trap::Label<Use>> for trap::Label<Addressable> {
}
}
impl From<trap::Label<Use>> for trap::Label<ExpandableItem> {
fn from(value: trap::Label<Use>) -> Self {
// SAFETY: this is safe because in the dbscheme Use is a subclass of ExpandableItem
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
#[derive(Debug)]
pub struct ForExpr {
pub id: trap::TrapId<ForExpr>,

View File

@@ -26,7 +26,12 @@ use ra_ap_syntax::{
macro_rules! pre_emit {
(Item, $self:ident, $node:ident) => {
if let Some(label) = $self.prepare_item_expansion($node) {
return Some(label);
return Some(label.into());
}
};
(AssocItem, $self:ident, $node:ident) => {
if let Some(label) = $self.prepare_item_expansion(&$node.clone().into()) {
return Some(label.into());
}
};
($($_:tt)*) => {};
@@ -60,7 +65,13 @@ macro_rules! post_emit {
$self.extract_canonical_origin_of_enum_variant($node, $label);
};
(Item, $self:ident, $node:ident, $label:ident) => {
$self.emit_item_expansion($node, $label);
$self.emit_item_expansion($node, From::<Label<generated::Item>>::from($label));
};
(AssocItem, $self:ident, $node:ident, $label:ident) => {
$self.emit_item_expansion(
&$node.clone().into(),
From::<Label<generated::AssocItem>>::from($label),
);
};
// TODO canonical origin of other items
(PathExpr, $self:ident, $node:ident, $label:ident) => {
@@ -694,10 +705,21 @@ impl<'a> Translator<'a> {
}
}
fn is_attribute_macro_target(&self, node: &ast::Item) -> bool {
// rust-analyzer considers as an `attr_macro_call` also a plain macro call, but we want to
// process that differently (in `extract_macro_call_expanded`)
!matches!(node, ast::Item::MacroCall(_))
&& self.semantics.is_some_and(|semantics| {
let file = semantics.hir_file_for(node.syntax());
let node = InFile::new(file, node);
semantics.is_attr_macro_call(node)
})
}
pub(crate) fn prepare_item_expansion(
&mut self,
node: &ast::Item,
) -> Option<Label<generated::Item>> {
) -> Option<Label<generated::MacroCall>> {
if self.source_kind == SourceKind::Library {
// if the item expands via an attribute macro, we want to only emit the expansion
if let Some(expanded) = self.emit_attribute_macro_expansion(node) {
@@ -714,13 +736,10 @@ impl<'a> Translator<'a> {
expanded.into(),
&mut self.trap.writer,
);
return Some(label.into());
return Some(label);
}
}
let semantics = self.semantics.as_ref()?;
let file = semantics.hir_file_for(node.syntax());
let node = InFile::new(file, node);
if semantics.is_attr_macro_call(node) {
if self.is_attribute_macro_target(node) {
self.macro_context_depth += 1;
}
None
@@ -730,10 +749,7 @@ impl<'a> Translator<'a> {
&mut self,
node: &ast::Item,
) -> Option<Label<generated::MacroItems>> {
let semantics = self.semantics?;
let file = semantics.hir_file_for(node.syntax());
let infile_node = InFile::new(file, node);
if !semantics.is_attr_macro_call(infile_node) {
if !self.is_attribute_macro_target(node) {
return None;
}
self.macro_context_depth -= 1;
@@ -743,7 +759,7 @@ impl<'a> Translator<'a> {
}
let ExpandResult {
value: expanded, ..
} = semantics.expand_attr_macro(node)?;
} = self.semantics.and_then(|s| s.expand_attr_macro(node))?;
self.emit_macro_expansion_parse_errors(node, &expanded);
let macro_items = ast::MacroItems::cast(expanded).or_else(|| {
let message = "attribute macro expansion cannot be cast to MacroItems".to_owned();
@@ -760,9 +776,17 @@ impl<'a> Translator<'a> {
self.emit_macro_items(&macro_items)
}
pub(crate) fn emit_item_expansion(&mut self, node: &ast::Item, label: Label<generated::Item>) {
pub(crate) fn emit_item_expansion(
&mut self,
node: &ast::Item,
label: Label<generated::ExpandableItem>,
) {
if let Some(expanded) = self.emit_attribute_macro_expansion(node) {
generated::Item::emit_attribute_macro_expansion(label, expanded, &mut self.trap.writer);
generated::ExpandableItem::emit_attribute_macro_expansion(
label,
expanded,
&mut self.trap.writer,
);
}
}

View File

@@ -20,7 +20,7 @@ lib/codeql/rust/elements/AsmPiece.qll 8650bf07246fac95533876db66178e4b30ed3210de
lib/codeql/rust/elements/AsmRegOperand.qll 27abfffe1fc99e243d9b915f9a9694510133e5f72100ec0df53796d27a45de0c 8919ab83081dae2970adb6033340c6a18751ffd6a8157cf8c55916ac4253c791
lib/codeql/rust/elements/AsmRegSpec.qll 77483fc3d1de8761564e2f7b57ecf1300d67de50b66c11144bb4e3e0059ebfd6 521f8dd0af859b7eef6ab2edab2f422c9ff65aa11bad065cfba2ec082e0c786b
lib/codeql/rust/elements/AsmSym.qll ba29b59ae2a4aa68bdc09e61b324fd26e8b7e188af852345676fc5434d818eef 10ba571059888f13f71ac5e75d20b58f3aa6eecead0d4c32a7617018c7c72e0e
lib/codeql/rust/elements/AssocItem.qll 89e547c3ce2f49b5eb29063c5d9263a52810838a8cfb30b25bee108166be65a1 238fc6f33c18e02ae023af627afa2184fa8e6055d78ab0936bd1b6180bccb699
lib/codeql/rust/elements/AssocItem.qll 353ebc96f33394da0a63ac1d8d3a38f0334fb60d38ba5bf9e53e56bd928fa32d 01faf8a312aeec0f59670b5991434ae284ab0702d2f056c1dc9e9d161949bfed
lib/codeql/rust/elements/AssocItemList.qll 5d2660e199e59647e3a8b6234531428f6e0a236ed2ced3c9fede13e7f83a5ba5 a2a8e87ab8978f77a70e4c0a8cc7322c522fc4a7a05116646a2b97a2f47428a4
lib/codeql/rust/elements/AssocTypeArg.qll 6ceeec7a0ec78a6f8b2e74c0798d4727ad350cebde954b4ffe442b06e08eb4aa d615f5cd696892518387d20f04dae240fb10ee7c9577028fb6f2a51cd9f5b9e4
lib/codeql/rust/elements/AstNode.qll 5ee6355afb1cafd6dfe408b8c21836a1ba2aeb709fb618802aa09f9342646084 dee708f19c1b333cbd9609819db3dfdb48a0c90d26266c380f31357b1e2d6141
@@ -47,6 +47,7 @@ lib/codeql/rust/elements/Crate.qll 1426960e6f36195e42ea5ea321405c1a72fccd40cd6c0
lib/codeql/rust/elements/DynTraitTypeRepr.qll e4d27112d27ae93c621defd2c976fd4e90663ab7f6115e83ae4fe8106cb5e015 eb9fde89698588f3b7116f62388c54e937f99559b22c93d11a5596e754560072
lib/codeql/rust/elements/Element.qll 0b62d139fef54ed2cf2e2334806aa9bfbc036c9c2085d558f15a42cc3fa84c48 24b999b93df79383ef27ede46e38da752868c88a07fe35fcff5d526684ba7294
lib/codeql/rust/elements/Enum.qll accb97d0bd8c0f41df873d41886f606b6ae4cd1ffa38b70fe9504cfb89d0bd7d b456103ac992e384165d151eb0f169499be4961c3ec35b94a32201b5e4e22189
lib/codeql/rust/elements/ExpandableItem.qll a285721540a25f08f3bd143f807a2b8ead1a589024e5b58fb130bc7fcff43f27 be0730db9aadb8f23f5ccb32285a24a259f77ba448c10e62a9ad3fe8b94eb262
lib/codeql/rust/elements/Expr.qll e5d65e805ccf440d64d331e55df4c4144ab8c8f63f367382494714087659ffe8 2bbc1e5d3a65f413ec33d9822fa451fbdbe32349158db58cc0bfcfafb0e21bda
lib/codeql/rust/elements/ExprStmt.qll 00ac4c7d0192b9e8b0f28d5ae59c27729ff5a831ca11938ea3e677a262337a64 7cc02aa5346cd7c50d75ca63cd6501097b0a3979eb2ed838adff114fe17d35a3
lib/codeql/rust/elements/ExternBlock.qll 96c70d0761ec385fe17aa7228e15fd1711949d5abba5877a1c2f4c180d202125 38ad458868a368d437b2dda44307d788a85c887f45ea76c99adbfc9a53f14d81
@@ -74,7 +75,7 @@ lib/codeql/rust/elements/Impl.qll ce5225fd97b184db7235bcf2561cf23c679de2fc96feca
lib/codeql/rust/elements/ImplTraitTypeRepr.qll 1d559b16c659f447a1bde94cc656718f20f133f767060437b755ac81eea9f852 de69c596701f0af4db28c5802d092a39c88a90bf42ea85aea25eecb79417e454
lib/codeql/rust/elements/IndexExpr.qll 0e2e9f018d06ae72be0fc4ddbc019a9aacd8a06f42b4c4431760bd149e7f2290 2bcfd557abd53a48e48de7915c4f2089107c62dfb3e732a904848248dfd3727b
lib/codeql/rust/elements/InferTypeRepr.qll 1b8bdcb574a7b6e7dd49f4cfb96655a6ccc355744b424b8c2593fe8218090d53 c20a2a5b0346dc277721deb450e732a47812c8e872ffb60aaba351b1708e9477
lib/codeql/rust/elements/Item.qll 59d2ac7b5b111579951bf42f68834ecf6dab47a5fb342ed0841c905b977923ab 0d220ec12a373098b26e6cb3a7b327b2d0c1882c3d9b6de00f4df1e8d00bae68
lib/codeql/rust/elements/Item.qll 283637747974c8e96b92b353a6e6675ed68eed1757c8ccb356307fd867606777 41855c37d8602b8881075b418abdffb5c9f4303bf86acc128dbcc1610110cc2f
lib/codeql/rust/elements/ItemList.qll b302d25a7570504e88bfcedf7afc99d25740f320ab27a4a9def1ae66569a4c15 4012a5e43639fa39d5313356ff3ab56c4bb567add1ce012bfede4835406a9571
lib/codeql/rust/elements/Label.qll a31d41db351af7f99a55b26cdbbc7f13b4e96b660a74e2f1cc90c17ee8df8d73 689f87cb056c8a2aefe1a0bfc2486a32feb44eb3175803c61961a6aeee53d66e
lib/codeql/rust/elements/LabelableExpr.qll 598be487cd051b004ab95cbbc3029100069dc9955851c492029d80f230e56f0d 92c49b3cfdaba07982f950e18a8d62dae4e96f5d9ae0d7d2f4292628361f0ddc
@@ -258,6 +259,7 @@ lib/codeql/rust/elements/internal/CrateConstructor.qll 2a3710ed6ff4ffdbc773ac16e
lib/codeql/rust/elements/internal/DynTraitTypeReprConstructor.qll 6964e6c80fb7f5e283c1d15562cef18ed097452b7fcbc04eff780c7646675c7a f03c4830bf1b958fdfb6563136fa21c911b2e41ce1d1caee14ec572c7232866d
lib/codeql/rust/elements/internal/DynTraitTypeReprImpl.qll 635b491538a2ede0b2cf8ecaa1cea21e115a707dec4e023fcdbc1f7197615e8c 7a0dc718656631e08c4becc53174af42fbaaa639e252fb087d4317f5add840dc
lib/codeql/rust/elements/internal/EnumConstructor.qll eca1a13937faacb1db50e4cf69d175f992f2204a5aaed9144bb6f3cb63814ac5 1bafba78b2729fdb052a25a1ba3f4f70871564aa4df632b4a1d467858a437924
lib/codeql/rust/elements/internal/ExpandableItemImpl.qll 8744ac626aed1febbaae83ac71484be65f5bbe259113db874304630537bda616 d2187af4900e74f751ba2c3a35ebfc97f0ea8cbfee14552175a7fdb6f024c20c
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
@@ -479,7 +481,7 @@ lib/codeql/rust/elements/internal/generated/AsmPiece.qll 17f425727781cdda3a2ec59
lib/codeql/rust/elements/internal/generated/AsmRegOperand.qll e1412c7a9135669cb3e07f82dcf2bebc2ea28958d9ffb9520ae48d299344997c d81f18570703c9eb300241bd1900b7969d12d71cec0a3ce55c33f7d586600c24
lib/codeql/rust/elements/internal/generated/AsmRegSpec.qll 73a24744f62dd6dfa28a0978087828f009fb0619762798f5e0965003fff1e8ec fdb8fd2f89b64086a2ca873c683c02a68d088bb01007d534617d0b7f67fde2cb
lib/codeql/rust/elements/internal/generated/AsmSym.qll 476ee9ad15db015c43633072175bca3822af30c379ee10eb8ffc091c88d573f6 9f24baf36506eb959e9077dc5ba1cddbc4d93e3d8cba6e357dff5f9780d1e492
lib/codeql/rust/elements/internal/generated/AssocItem.qll fad035ba1dab733489690538fbb94ac85072b96b6c2f3e8bcd58a129b9707a26 d9988025b12b8682be83ce9df8c31ce236214683fc50facd4a658f68645248cb
lib/codeql/rust/elements/internal/generated/AssocItem.qll e15e5794e75c7bcfe2527514330edc06abe2eef6fe505af3bce1d28d30a347f9 3b96bbedda8bfe7fd68f41a632271b3f1a0c1b2360a42076e49a4fb27c3df932
lib/codeql/rust/elements/internal/generated/AssocItemList.qll 52900dcf32ef749a3bd285b4a01ff337df3c52255fe2698c9c1547c40652f3b9 10709dd626a527c37186b02c4ea738a9edb6c9e97b87370de206d3eb9941575b
lib/codeql/rust/elements/internal/generated/AssocTypeArg.qll a93a42278263bb0c9692aca507108e25f99292aef2a9822501b31489c4ce620d afd9559e0c799988ef7ff1957a5a9ebc4fb92c6e960cbe7fecf12a0a484fef08
lib/codeql/rust/elements/internal/generated/AstNode.qll 1cbfae6a732a1de54b56669ee69d875b0e1d15e58d9aa621df9337c59db5619d 37e16a0c70ae69c5dc1b6df241b9acca96a6326d6cca15456699c44a81c93666
@@ -506,6 +508,7 @@ lib/codeql/rust/elements/internal/generated/Crate.qll 37f3760d7c0c1c3ca809d07daf
lib/codeql/rust/elements/internal/generated/DynTraitTypeRepr.qll b2e0e728b6708923b862d9d8d6104d13f572da17e393ec1485b8465e4bfdc206 4a87ea9669c55c4905ce4e781b680f674989591b0cb56af1e9fa1058c13300b3
lib/codeql/rust/elements/internal/generated/Element.qll d56d22c060fa929464f837b1e16475a4a2a2e42d68235a014f7369bcb48431db 0e48426ca72179f675ac29aa49bbaadb8b1d27b08ad5cbc72ec5a005c291848e
lib/codeql/rust/elements/internal/generated/Enum.qll ad2a79ae52665f88a41ee045adce4e60beb43483547d958f8230b9917824f0a1 cb12e304d04dffb4d8fb838eb9dbecf00fa8ac18fbf3edc37ee049ad248a4f67
lib/codeql/rust/elements/internal/generated/ExpandableItem.qll 3ceb3b62eae98d78c254c74e3d3b1dddbdf30d80c892ed283dd11e15fb1334df c9b2fe2c52daa59b8cb2f5470ac0bc387735ea24ad936e06ff8984f829fd6d1e
lib/codeql/rust/elements/internal/generated/Expr.qll 5fa34f2ed21829a1509417440dae42d416234ff43433002974328e7aabb8f30f 46f3972c7413b7db28a3ea8acb5a50a74b6dd9b658e8725f6953a8829ac912f8
lib/codeql/rust/elements/internal/generated/ExprStmt.qll d1112230015fbeb216b43407a268dc2ccd0f9e0836ab2dca4800c51b38fa1d7d 4a80562dcc55efa5e72c6c3b1d6747ab44fe494e76faff2b8f6e9f10a4b08b5b
lib/codeql/rust/elements/internal/generated/ExternBlock.qll e7faac92297a53ac6e0420eec36255a54f360eeb962bf663a00da709407832dd 5ff32c54ec7097d43cc3311492090b9b90f411eead3bc849f258858f29405e81
@@ -534,7 +537,7 @@ lib/codeql/rust/elements/internal/generated/Impl.qll 5afadb7f80c5ffbd5cd3816c678
lib/codeql/rust/elements/internal/generated/ImplTraitTypeRepr.qll e376a2e34ba51df403d42b02afe25140543e3e53aaf04b9ea118eb575acb4644 dc3a7e3eac758423c90a9803cc40dfdf53818bd62ee894982cd636f6b1596dfc
lib/codeql/rust/elements/internal/generated/IndexExpr.qll cf951fc40f6690e966b4dc78fa9a6221aa5c6cade44759dcb52254f799292d11 1572e71918cc4e0b7e028331b6d98c9db23100a3646cd3874d1915e06ab6211d
lib/codeql/rust/elements/internal/generated/InferTypeRepr.qll 4f101c1cb1278e919f9195cac4aa0c768e304c1881394b500874e7627e62d6c4 dca3f85d0a78ecc8bf030b4324f0d219ffff60784a2ecf565a4257e888dea0ff
lib/codeql/rust/elements/internal/generated/Item.qll 03077c9d2f3200ebbc5df5d31f7d9b78a3ae25957ac46899a19a93684b2d7306 6492e341b9d9270c0181da0a5330f588238ced81657041ad1ad343db2bdf210b
lib/codeql/rust/elements/internal/generated/Item.qll a0219d40ecb7964883e0cf6c6e04994d55b2c4e82944ef3e331f52144493398c 4551433225679e687fa94f97cfc25348202f0edf7f2d7b3e098a91d803381a83
lib/codeql/rust/elements/internal/generated/ItemList.qll 1571a3ab0f2c7c0d8384549f8eac7f6e6863c42f3ec5d5ea5e01fc26b9f1056f 7b2cade995505f214df9bb2d73143a28b2499f76d88abc56ae8fcc59bf709204
lib/codeql/rust/elements/internal/generated/Label.qll 6630fe16e9d2de6c759ff2684f5b9950bc8566a1525c835c131ebb26f3eea63e 671143775e811fd88ec90961837a6c0ee4db96e54f42efd80c5ae2571661f108
lib/codeql/rust/elements/internal/generated/LabelableExpr.qll 896fd165b438b60d7169e8f30fa2a94946490c4d284e1bbadfec4253b909ee6c 5c6b029ea0b22cf096df2b15fe6f9384ad3e65b50b253cae7f19a2e5ffb04a58
@@ -577,7 +580,7 @@ lib/codeql/rust/elements/internal/generated/ParamList.qll eaa0cd4402d3665013d47e
lib/codeql/rust/elements/internal/generated/ParenExpr.qll 812d2ff65079277f39f15c084657a955a960a7c1c0e96dd60472a58d56b945eb eb8c607f43e1fcbb41f37a10de203a1db806690e10ff4f04d48ed874189cb0eb
lib/codeql/rust/elements/internal/generated/ParenPat.qll 24f9dc7fce75827d6fddb856cd48f80168143151b27295c0bab6db5a06567a09 ebadbc6f5498e9ed754b39893ce0763840409a0721036a25b56e1ead7dcc09aa
lib/codeql/rust/elements/internal/generated/ParenTypeRepr.qll 03f5c5b96a37adeb845352d7fcea3e098da9050e534972d14ac0f70d60a2d776 ed3d6e5d02086523087adebce4e89e35461eb95f2a66d1d4100fe23fc691b126
lib/codeql/rust/elements/internal/generated/ParentChild.qll 5278b74de04d54708f078fd813d83ae5f934fa12d420b188c1334e3a7c3b8324 61cf70eb649f241e2fcd5e0ba34df63f3a14f07032811b9ae151721783a0fd20
lib/codeql/rust/elements/internal/generated/ParentChild.qll 95c48218482dae9323396d5069a714fe69e78fe00b52bae9b70594ebd8501687 b24fbe0755ce07388348479c6c9d9343387937a0ccb31bc7e17caffa94b28641
lib/codeql/rust/elements/internal/generated/ParenthesizedArgList.qll d901fdc8142a5b8847cc98fc2afcfd16428b8ace4fbffb457e761b5fd3901a77 5dbb0aea5a13f937da666ccb042494af8f11e776ade1459d16b70a4dd193f9fb
lib/codeql/rust/elements/internal/generated/Pat.qll 3605ac062be2f294ee73336e9669027b8b655f4ad55660e1eab35266275154ee 7f9400db2884d336dd1d21df2a8093759c2a110be9bf6482ce8e80ae0fd74ed4
lib/codeql/rust/elements/internal/generated/Path.qll 9b12afb46fc5a9ad3a811b05472621bbecccb900c47504feb7f29d96b28421ca bcacbffc36fb3e0c9b26523b5963af0ffa9fd6b19f00a2a31bdb2316071546bd
@@ -592,7 +595,7 @@ lib/codeql/rust/elements/internal/generated/PtrTypeRepr.qll 8d0ea4f6c7f8203340bf
lib/codeql/rust/elements/internal/generated/PureSynthConstructors.qll e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f
lib/codeql/rust/elements/internal/generated/RangeExpr.qll 23cca03bf43535f33b22a38894f70d669787be4e4f5b8fe5c8f7b964d30e9027 18624cef6c6b679eeace2a98737e472432e0ead354cca02192b4d45330f047c9
lib/codeql/rust/elements/internal/generated/RangePat.qll 80826a6a6868a803aa2372e31c52a03e1811a3f1f2abdb469f91ca0bfdd9ecb6 34ee1e208c1690cba505dff2c588837c0cd91e185e2a87d1fe673191962276a9
lib/codeql/rust/elements/internal/generated/Raw.qll b6e439cc24f8c02fe73301cd2bc16d59dfd28e2a8a201388d8318c43937309e2 62139c3df2f6c4dca1c897b1384233ff0151b7e5fb1c41a178c5e8e41b5e7f05
lib/codeql/rust/elements/internal/generated/Raw.qll 33ecfe8cb145c9987b8fb62919e68fd28c2e568b76ecea307da90bbf65e75c88 21e20e24c51d6502e8eb8ca55e74f5da17b009aa4b26f64813c06be75a5c7679
lib/codeql/rust/elements/internal/generated/RefExpr.qll 7d995884e3dc1c25fc719f5d7253179344d63650e217e9ff6530285fe7a57f64 f2c3c12551deea4964b66553fb9b6423ee16fec53bd63db4796191aa60dc6c66
lib/codeql/rust/elements/internal/generated/RefPat.qll 456ede39837463ee22a630ec7ab6c8630d3664a8ea206fcc6e4f199e92fa564c 5622062765f32930465ba6b170e986706f159f6070f48adee3c20e24e8df4e05
lib/codeql/rust/elements/internal/generated/RefTypeRepr.qll 5b0663a6d234572fb3e467e276d019415caa95ef006438cc59b7af4e1783161e 0e27c8a8f0e323c0e4d6db01fca821bf07c0864d293cdf96fa891b10820c1e4b
@@ -618,7 +621,7 @@ lib/codeql/rust/elements/internal/generated/StructFieldList.qll 5da528a51a6a5db9
lib/codeql/rust/elements/internal/generated/StructPat.qll c76fa005c2fd0448a8803233e1e8818c4123301eb66ac5cf69d0b9eaafc61e98 6e0dffccdce24bca20e87d5ba0f0995c9a1ae8983283e71e7dbfcf6fffc67a58
lib/codeql/rust/elements/internal/generated/StructPatField.qll 5b5c7302dbc4a902ca8e69ff31875c867e295a16a626ba3cef29cd0aa248f179 4e192a0df79947f5cb0d47fdbbba7986137a6a40a1be92ae119873e2fad67edf
lib/codeql/rust/elements/internal/generated/StructPatFieldList.qll 1a95a1bd9f64fb18e9571657cf2d02a8b13c747048a1f0f74baf31b91f0392ad fc274e414ff4ed54386046505920de92755ad0b4d39a7523cdffa4830bd53b37
lib/codeql/rust/elements/internal/generated/Synth.qll eb248f4e57985ec8eabf9ed5cfb8ba8f5ebd6ca17fb712c992811bced0e342d4 bbcbdba484d3b977a0d6b9158c5fa506f59ced2ad3ae8239d536bf826bfb7e31
lib/codeql/rust/elements/internal/generated/Synth.qll e4771b110a5089b1ece7b7738c31580e598d75ec0f92340e8c2c7c79bf3955a2 5d64c80b46d6aa2675e1ee215a44643be83476409d2bad4b433056a5d37778d8
lib/codeql/rust/elements/internal/generated/SynthConstructors.qll bcc7f617b775ac0c7f04b1cc333ed7cc0bd91f1fabc8baa03c824d1df03f6076 bcc7f617b775ac0c7f04b1cc333ed7cc0bd91f1fabc8baa03c824d1df03f6076
lib/codeql/rust/elements/internal/generated/Token.qll 77a91a25ca5669703cf3a4353b591cef4d72caa6b0b9db07bb9e005d69c848d1 2fdffc4882ed3a6ca9ac6d1fb5f1ac5a471ca703e2ffdc642885fa558d6e373b
lib/codeql/rust/elements/internal/generated/TokenTree.qll 1a3c4f5f30659738641abdd28cb793dab3cfde484196b59656fc0a2767e53511 de2ebb210c7759ef7a6f7ee9f805e1cac879221287281775fc80ba34a5492edf
@@ -656,7 +659,7 @@ lib/codeql/rust/elements/internal/generated/WhileExpr.qll 0353aab87c49569e1fbf58
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 da721d51bc659921998521579df5bff6172d9079d8e243c2b65a5b9eb441b52e da721d51bc659921998521579df5bff6172d9079d8e243c2b65a5b9eb441b52e
lib/codeql/rust/elements.qll 5f3bc7b5ec773dc261a7a7b2965db13bbf086af19840b18ac568a7e841ff4de6 5f3bc7b5ec773dc261a7a7b2965db13bbf086af19840b18ac568a7e841ff4de6
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
@@ -748,7 +751,7 @@ test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParam.ql c87b61e80dd62
test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParamList.ql 68ce501516094512dd5bfed42a785474583a91312f704087cba801b02ba7b834 eacbf89d63159e7decfd84c2a1dc5c067dfce56a8157fbb52bc133e9702d266d
test/extractor-tests/generated/ClosureExpr/ClosureExpr_getRetType.ql c95bc7306b2d77aa05a6501b6321e6f1e7a48b7ad422ba082635ab20014288ae fe72d44c9819b42fff49b9092a9fb2bfafde6d3b9e4967547fb5298822f30bc3
test/extractor-tests/generated/Comment/Comment.ql 5428b8417a737f88f0d55d87de45c4693d81f03686f03da11dc5369e163d977b 8948c1860cde198d49cff7c74741f554a9e89f8af97bb94de80f3c62e1e29244
test/extractor-tests/generated/Const/Const.ql 7f9c9ce5b04391ff8f0d419a62972292b1d9811a978cceb129ef5a0f68a02fab c6c1dfa688248310cadd2d6d71d1a70a2b48f5b29ea2078f4dd51db59a0021c0
test/extractor-tests/generated/Const/Const.ql 8fb93d4b85ceb00c7025557722883589f51e73ae1cb13f405553ae1d4d1f766a 9e522945427ff5209656df11a97ce1fdb9d6f0b7c67b2f540c152523ba7d21f6
test/extractor-tests/generated/Const/Const_getAttr.ql bd6296dab00065db39663db8d09fe62146838875206ff9d8595d06d6439f5043 34cb55ca6d1f44e27d82a8b624f16f9408bae2485c85da94cc76327eed168577
test/extractor-tests/generated/Const/Const_getAttributeMacroExpansion.ql 82e86399d5cd72621dc8d9cd9f310d3dc7f2ecf208149dab0d202047ccbbd2f8 33df8c5b5044f49ec244e183c61c3b81fabd987f590ba6da4e18e08231343dc8
test/extractor-tests/generated/Const/Const_getBody.ql f50f79b7f42bb1043b79ec96f999fa4740c8014e6969a25812d5d023d7a5a5d8 90e5060ba9757f1021429ed4ec4913bc78747f3fc415456ef7e7fc284b8a0026
@@ -834,7 +837,7 @@ test/extractor-tests/generated/FormatArgsExpr/FormatTemplateVariableAccess.ql 27
test/extractor-tests/generated/FormatArgsExpr/Format_getArgumentRef.ql 634efdffaae4199aa9d95652cf081a8dc26e88224e24678845f8a67dc24ce090 d0302fee5c50403214771d5c6b896ba7c6e52be10c9bea59720ef2bb954e6f40
test/extractor-tests/generated/FormatArgsExpr/Format_getPrecisionArgument.ql 0d2140f84d0220b0c72c48c6bd272f4cfe1863d1797eddd16a6e238552a61e4d f4fe9b29697041e30764fa3dea44f125546bfb648f32c3474a1e922a4255c534
test/extractor-tests/generated/FormatArgsExpr/Format_getWidthArgument.ql 01ef27dd0bfab273e1ddc57ada0e079ece8a2bfd195ce413261006964b444093 acd0161f86010759417015c5b58044467a7f760f288ec4e8525458c54ae9a715
test/extractor-tests/generated/Function/Function.ql 66e6a81a80cdf30652f00fae1b060e93b9d7c61b08cb3d3c1cac16cad445e769 97ace9f51b9ae933c79484b06b92355164ff3582cadfc6e3bac5c00072cdeff3
test/extractor-tests/generated/Function/Function.ql ec159b90102b39adc151fa810d1cb206394df93c69e9c749514cb2de8f66468e 86fd03741d6dbb8c416b19ef7d00fe411869439725a4f24f546f6fcb03499159
test/extractor-tests/generated/Function/Function_getAbi.ql e5c9c97de036ddd51cae5d99d41847c35c6b2eabbbd145f4467cb501edc606d8 0b81511528bd0ef9e63b19edfc3cb638d8af43eb87d018fad69d6ef8f8221454
test/extractor-tests/generated/Function/Function_getAttr.ql 44067ee11bdec8e91774ff10de0704a8c5c1b60816d587378e86bf3d82e1f660 b4bebf9441bda1f2d1e34e9261e07a7468cbabf53cf8047384f3c8b11869f04e
test/extractor-tests/generated/Function/Function_getAttributeMacroExpansion.ql 17a346a9e5d28af99522520d1af3852db4cae01fb3d290a65c5f84d8d039c345 36fb06b55370828d9bc379cf5fad7f383cdb6f6db6f7377660276943ab0e1ec8
@@ -916,7 +919,7 @@ test/extractor-tests/generated/LoopExpr/LoopExpr_getLoopBody.ql 0267f54077640f3d
test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr.ql 03144a5448de91801037f3c1e6d29a230e18f9c077c718e5c3801a31cf593977 9a035e3f119b0e0c88fc4c775a032220a01680fbea2cc7f8e98180205b9bb8da
test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr_getStatement.ql 415a762768df2c850d21742daab5e53cd248dc3dc9652414b99737f1d5c5824b bdd2ba6c004ada34f26dac3bbc7abcd5fe250c77a97faa7fd71fb54a0dd4743a
test/extractor-tests/generated/MacroBlockExpr/MacroBlockExpr_getTailExpr.ql 8f6604c09e85da1a19b0f87340cebeb1cdf4e94b208305c7393082d88cf0b032 5081d9db5b38454fad1daad2f8972661bd2fb4cce2c815a560a15f8a7b9cfcee
test/extractor-tests/generated/MacroCall/MacroCall.ql 992e338a9c1353030f4bb31cae6ae4a1b957052e28c8753bae5b6d33dbe03fe9 863fbfd712a4f9ed613abb64ecb814b0a72b9ab65c50aa0dc5279d319249ae6a
test/extractor-tests/generated/MacroCall/MacroCall.ql 6c30f104a452ca3b2f219b2e67bbb1b76886751e48e221caa5af90ffa9331553 db6024cb5d4a680d2bb5a9601290f838c170124ee4a407f4b54fc1aa9435819e
test/extractor-tests/generated/MacroCall/MacroCall_getAttr.ql c22a2a29d705e85b03a6586d1eda1a2f4f99f95f7dfeb4e6908ec3188b5ad0ad 9b8d9dcc2116a123c15c520a880efab73ade20e08197c64bc3ed0c50902c4672
test/extractor-tests/generated/MacroCall/MacroCall_getAttributeMacroExpansion.ql 60cf2c12ec7fc3b25ed2a75bb7f3da5689469a65a418ba68db0ab26d0c227967 7f71c88c67834f82ef4bda93a678a084d41e9acb86808c3257b37dfc6c2908d2
test/extractor-tests/generated/MacroCall/MacroCall_getCrateOrigin.ql 3030e87de6f773d510882ee4469146f6008898e23a4a4ccabcbaa7da1a4e765e a10fe67315eda1c59d726d538ead34f35ccffc3e121eeda74c286d49a4ce4f54
@@ -1180,7 +1183,7 @@ test/extractor-tests/generated/TupleStructPat/TupleStructPat_getResolvedCrateOri
test/extractor-tests/generated/TupleStructPat/TupleStructPat_getResolvedPath.ql 150898b6e55cc74b9ddb947f136b5a7f538ee5598928c5724d80e3ddf93ae499 66e0bd7b32df8f5bbe229cc02be6a07cb9ec0fe8b444dad3f5b32282a90551ee
test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr.ql 2f99917a95a85a932f423cba5a619a51cada8e704b93c54b0a8cb5d7a1129fa1 759bd02347c898139ac7dabe207988eea125be24d3e4c2282b791ec810c16ea7
test/extractor-tests/generated/TupleTypeRepr/TupleTypeRepr_getField.ql 615acfcbc475b5c2ffa8e46d023fc2e19d29ee879b4949644a7f0b25c33125e6 81b037af5dcb8a0489a7a81a0ad668ca781b71d4406c123c4f1c4f558722f13e
test/extractor-tests/generated/TypeAlias/TypeAlias.ql 5cbf0b82a25a492c153b4663e5a2c0bea4b15ff53fa22ba1217edaf3bb48c6af d28e6a9eafff3fb84a6f38e3c79ad0d54cb08c7609cd43c968efd3fbc4154957
test/extractor-tests/generated/TypeAlias/TypeAlias.ql c106db713031eb0a72c065b70103ab1d6661bc51a4133166032fbbe8956ef487 2f8487a19bb8ee5ad797aa3c669773c82f16d26048c421dad979979fd4767d84
test/extractor-tests/generated/TypeAlias/TypeAlias_getAttr.ql ecf4b45ef4876e46252785d2e42b11207e65757cdb26e60decafd765e7b03b49 21bb4d635d3d38abd731b9ad1a2b871f8e0788f48a03e9572823abeea0ea9382
test/extractor-tests/generated/TypeAlias/TypeAlias_getAttributeMacroExpansion.ql fa2f0867039866e6405a735f9251de182429d3f1fdf00a749c7cfc3e3d62a7bb 56083d34fffd07a43b5736479b4d3b191d138415759639e9dd60789fefe5cb6f
test/extractor-tests/generated/TypeAlias/TypeAlias_getCrateOrigin.ql cd66db5b43bcb46a6cf6db8c262fd524017ef67cdb67c010af61fab303e3bc65 2aebae618448530ec537709c5381359ea98399db83eeae3be88825ebefa1829d

3
rust/ql/.gitattributes generated vendored
View File

@@ -49,6 +49,7 @@
/lib/codeql/rust/elements/DynTraitTypeRepr.qll linguist-generated
/lib/codeql/rust/elements/Element.qll linguist-generated
/lib/codeql/rust/elements/Enum.qll linguist-generated
/lib/codeql/rust/elements/ExpandableItem.qll linguist-generated
/lib/codeql/rust/elements/Expr.qll linguist-generated
/lib/codeql/rust/elements/ExprStmt.qll linguist-generated
/lib/codeql/rust/elements/ExternBlock.qll linguist-generated
@@ -260,6 +261,7 @@
/lib/codeql/rust/elements/internal/DynTraitTypeReprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/DynTraitTypeReprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/EnumConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ExpandableItemImpl.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
@@ -508,6 +510,7 @@
/lib/codeql/rust/elements/internal/generated/DynTraitTypeRepr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Element.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Enum.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ExpandableItem.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Expr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ExprStmt.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ExternBlock.qll linguist-generated

View File

@@ -204,10 +204,18 @@ class TypeReprTree extends LeafTree instanceof TypeRepr { }
* `LetExpr`s.
*/
module ExprTrees {
class ArrayExprTree extends StandardPostOrderTree, ArrayExpr {
class ArrayListExprTree extends StandardPostOrderTree, ArrayListExpr {
override AstNode getChildNode(int i) { result = this.getExpr(i) }
}
class ArrayRepeatExprTree extends StandardPostOrderTree, ArrayRepeatExpr {
override AstNode getChildNode(int i) {
i = 0 and result = this.getRepeatOperand()
or
i = 1 and result = this.getRepeatLength()
}
}
class AsmExprTree extends LeafTree instanceof AsmExpr { }
class AwaitExprTree extends StandardPostOrderTree instanceof AwaitExpr {

View File

@@ -52,6 +52,7 @@ import codeql.rust.elements.Crate
import codeql.rust.elements.DynTraitTypeRepr
import codeql.rust.elements.Element
import codeql.rust.elements.Enum
import codeql.rust.elements.ExpandableItem
import codeql.rust.elements.Expr
import codeql.rust.elements.ExprStmt
import codeql.rust.elements.ExternBlock

View File

@@ -4,7 +4,7 @@
*/
private import internal.AssocItemImpl
import codeql.rust.elements.AstNode
import codeql.rust.elements.ExpandableItem
/**
* An associated item in a `Trait` or `Impl`.

View File

@@ -0,0 +1,13 @@
// generated by codegen, do not edit
/**
* This module provides the public class `ExpandableItem`.
*/
private import internal.ExpandableItemImpl
import codeql.rust.elements.AstNode
import codeql.rust.elements.MacroItems
/**
* Something that can be expanded by an attribute macro
*/
final class ExpandableItem = Impl::ExpandableItem;

View File

@@ -5,7 +5,7 @@
private import internal.ItemImpl
import codeql.rust.elements.Addressable
import codeql.rust.elements.MacroItems
import codeql.rust.elements.ExpandableItem
import codeql.rust.elements.Stmt
/**

View File

@@ -27,8 +27,10 @@ module Impl {
this.getRepeatLength().toAbbreviatedString() + "]"
}
override Expr getRepeatOperand() { result = this.getExpr(0) }
override Expr getExpr(int index) { none() }
override Expr getRepeatLength() { result = this.getExpr(1) }
override Expr getRepeatOperand() { result = super.getExpr(0) }
override Expr getRepeatLength() { result = super.getExpr(1) }
}
}

View File

@@ -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 `ExpandableItem`.
*
* INTERNAL: Do not use.
*/
private import codeql.rust.elements.internal.generated.ExpandableItem
/**
* INTERNAL: This module contains the customizable definition of `ExpandableItem` and should not
* be referenced directly.
*/
module Impl {
/**
* Something that can be expanded by an attribute macro
*/
class ExpandableItem extends Generated::ExpandableItem { }
}

View File

@@ -6,7 +6,7 @@
private import codeql.rust.elements.internal.generated.Synth
private import codeql.rust.elements.internal.generated.Raw
import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl
import codeql.rust.elements.internal.ExpandableItemImpl::Impl as ExpandableItemImpl
/**
* INTERNAL: This module contains the fully generated definition of `AssocItem` and should not
@@ -24,5 +24,5 @@ module Generated {
* INTERNAL: Do not reference the `Generated::AssocItem` class directly.
* Use the subclass `AssocItem`, where the following predicates are available.
*/
class AssocItem extends Synth::TAssocItem, AstNodeImpl::AstNode { }
class AssocItem extends Synth::TAssocItem, ExpandableItemImpl::ExpandableItem { }
}

View File

@@ -0,0 +1,38 @@
// generated by codegen, do not edit
/**
* This module provides the generated definition of `ExpandableItem`.
* 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.AstNodeImpl::Impl as AstNodeImpl
import codeql.rust.elements.MacroItems
/**
* INTERNAL: This module contains the fully generated definition of `ExpandableItem` and should not
* be referenced directly.
*/
module Generated {
/**
* Something that can be expanded by an attribute macro
* INTERNAL: Do not reference the `Generated::ExpandableItem` class directly.
* Use the subclass `ExpandableItem`, where the following predicates are available.
*/
class ExpandableItem extends Synth::TExpandableItem, AstNodeImpl::AstNode {
/**
* Gets the attribute macro expansion of this expandable item, if it exists.
*/
MacroItems getAttributeMacroExpansion() {
result =
Synth::convertMacroItemsFromRaw(Synth::convertExpandableItemToRaw(this)
.(Raw::ExpandableItem)
.getAttributeMacroExpansion())
}
/**
* Holds if `getAttributeMacroExpansion()` exists.
*/
final predicate hasAttributeMacroExpansion() { exists(this.getAttributeMacroExpansion()) }
}
}

View File

@@ -7,7 +7,7 @@
private import codeql.rust.elements.internal.generated.Synth
private import codeql.rust.elements.internal.generated.Raw
import codeql.rust.elements.internal.AddressableImpl::Impl as AddressableImpl
import codeql.rust.elements.MacroItems
import codeql.rust.elements.internal.ExpandableItemImpl::Impl as ExpandableItemImpl
import codeql.rust.elements.internal.StmtImpl::Impl as StmtImpl
/**
@@ -27,20 +27,7 @@ module Generated {
* INTERNAL: Do not reference the `Generated::Item` class directly.
* Use the subclass `Item`, where the following predicates are available.
*/
class Item extends Synth::TItem, StmtImpl::Stmt, AddressableImpl::Addressable {
/**
* Gets the attribute macro expansion of this item, if it exists.
*/
MacroItems getAttributeMacroExpansion() {
result =
Synth::convertMacroItemsFromRaw(Synth::convertItemToRaw(this)
.(Raw::Item)
.getAttributeMacroExpansion())
}
/**
* Holds if `getAttributeMacroExpansion()` exists.
*/
final predicate hasAttributeMacroExpansion() { exists(this.getAttributeMacroExpansion()) }
}
class Item extends Synth::TItem, StmtImpl::Stmt, AddressableImpl::Addressable,
ExpandableItemImpl::ExpandableItem
{ }
}

View File

@@ -305,19 +305,6 @@ private module Impl {
)
}
private Element getImmediateChildOfAssocItem(AssocItem e, int index, string partialPredicateCall) {
exists(int b, int bAstNode, int n |
b = 0 and
bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and
n = bAstNode and
(
none()
or
result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall)
)
)
}
private Element getImmediateChildOfAssocItemList(
AssocItemList e, int index, string partialPredicateCall
) {
@@ -397,6 +384,26 @@ private module Impl {
)
}
private Element getImmediateChildOfExpandableItem(
ExpandableItem e, int index, string partialPredicateCall
) {
exists(int b, int bAstNode, int n, int nAttributeMacroExpansion |
b = 0 and
bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and
n = bAstNode and
nAttributeMacroExpansion = n + 1 and
(
none()
or
result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall)
or
index = n and
result = e.getAttributeMacroExpansion() and
partialPredicateCall = "AttributeMacroExpansion()"
)
)
}
private Element getImmediateChildOfExpr(Expr e, int index, string partialPredicateCall) {
exists(int b, int bAstNode, int n |
b = 0 and
@@ -1617,6 +1624,20 @@ private module Impl {
)
}
private Element getImmediateChildOfAssocItem(AssocItem e, int index, string partialPredicateCall) {
exists(int b, int bExpandableItem, int n |
b = 0 and
bExpandableItem =
b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpandableItem(e, i, _)) | i) and
n = bExpandableItem and
(
none()
or
result = getImmediateChildOfExpandableItem(e, index - b, partialPredicateCall)
)
)
}
private Element getImmediateChildOfAssocTypeArg(
AssocTypeArg e, int index, string partialPredicateCall
) {
@@ -2184,13 +2205,15 @@ private module Impl {
}
private Element getImmediateChildOfItem(Item e, int index, string partialPredicateCall) {
exists(int b, int bStmt, int bAddressable, int n, int nAttributeMacroExpansion |
exists(int b, int bStmt, int bAddressable, int bExpandableItem, int n |
b = 0 and
bStmt = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfStmt(e, i, _)) | i) and
bAddressable =
bStmt + 1 + max(int i | i = -1 or exists(getImmediateChildOfAddressable(e, i, _)) | i) and
n = bAddressable and
nAttributeMacroExpansion = n + 1 and
bExpandableItem =
bAddressable + 1 +
max(int i | i = -1 or exists(getImmediateChildOfExpandableItem(e, i, _)) | i) and
n = bExpandableItem and
(
none()
or
@@ -2198,9 +2221,7 @@ private module Impl {
or
result = getImmediateChildOfAddressable(e, index - bStmt, partialPredicateCall)
or
index = n and
result = e.getAttributeMacroExpansion() and
partialPredicateCall = "AttributeMacroExpansion()"
result = getImmediateChildOfExpandableItem(e, index - bAddressable, partialPredicateCall)
)
)
}
@@ -4117,335 +4138,340 @@ private module Impl {
// * none() simplifies generation, as we can append `or ...` without a special case for the first item
none()
or
result = getImmediateChildOfExtractorStep(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfExtractorStep(e, i, partialAccessor) | i)
or
result = getImmediateChildOfNamedCrate(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfNamedCrate(e, i, partialAccessor) | i)
or
result = getImmediateChildOfCrate(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfCrate(e, i, partialAccessor) | i)
or
result = getImmediateChildOfFormat(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfFormat(e, i, partialAccessor) | i)
or
result = getImmediateChildOfFormatArgument(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfFormatArgument(e, i, partialAccessor) | i)
or
result = getImmediateChildOfMissing(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfMissing(e, i, partialAccessor) | i)
or
result = getImmediateChildOfUnimplemented(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfUnimplemented(e, i, partialAccessor) | i)
or
result = getImmediateChildOfAbi(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfAbi(e, i, partialAccessor) | i)
or
result = getImmediateChildOfArgList(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfArgList(e, i, partialAccessor) | i)
or
result = getImmediateChildOfAsmDirSpec(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfAsmDirSpec(e, i, partialAccessor) | i)
or
result = getImmediateChildOfAsmOperandExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfAsmOperandExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfAsmOption(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfAsmOption(e, i, partialAccessor) | i)
or
result = getImmediateChildOfAsmRegSpec(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfAsmRegSpec(e, i, partialAccessor) | i)
or
result = getImmediateChildOfAssocItemList(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfAssocItemList(e, i, partialAccessor) | i)
or
result = getImmediateChildOfAttr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfAttr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfClosureBinder(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfClosureBinder(e, i, partialAccessor) | i)
or
result = getImmediateChildOfExternItemList(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfExternItemList(e, i, partialAccessor) | i)
or
result = getImmediateChildOfFormatArgsArg(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfFormatArgsArg(e, i, partialAccessor) | i)
or
result = getImmediateChildOfGenericArgList(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfGenericArgList(e, i, partialAccessor) | i)
or
result = getImmediateChildOfGenericParamList(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfGenericParamList(e, i, partialAccessor) | i)
or
result = getImmediateChildOfItemList(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfItemList(e, i, partialAccessor) | i)
or
result = getImmediateChildOfLabel(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfLabel(e, i, partialAccessor) | i)
or
result = getImmediateChildOfLetElse(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfLetElse(e, i, partialAccessor) | i)
or
result = getImmediateChildOfMacroItems(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfMacroItems(e, i, partialAccessor) | i)
or
result = getImmediateChildOfMatchArm(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfMatchArm(e, i, partialAccessor) | i)
or
result = getImmediateChildOfMatchArmList(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfMatchArmList(e, i, partialAccessor) | i)
or
result = getImmediateChildOfMatchGuard(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfMatchGuard(e, i, partialAccessor) | i)
or
result = getImmediateChildOfMeta(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfMeta(e, i, partialAccessor) | i)
or
result = getImmediateChildOfName(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfName(e, i, partialAccessor) | i)
or
result = getImmediateChildOfParamList(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfParamList(e, i, partialAccessor) | i)
or
result = getImmediateChildOfParenthesizedArgList(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfParenthesizedArgList(e, i, partialAccessor) | i)
or
result = getImmediateChildOfPath(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfPath(e, i, partialAccessor) | i)
or
result = getImmediateChildOfPathSegment(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfPathSegment(e, i, partialAccessor) | i)
or
result = getImmediateChildOfRename(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfRename(e, i, partialAccessor) | i)
or
result = getImmediateChildOfRetTypeRepr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfRetTypeRepr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfReturnTypeSyntax(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfReturnTypeSyntax(e, i, partialAccessor) | i)
or
result = getImmediateChildOfSourceFile(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfSourceFile(e, i, partialAccessor) | i)
or
result = getImmediateChildOfStmtList(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfStmtList(e, i, partialAccessor) | i)
or
result = getImmediateChildOfStructExprField(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfStructExprField(e, i, partialAccessor) | i)
or
result = getImmediateChildOfStructExprFieldList(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfStructExprFieldList(e, i, partialAccessor) | i)
or
result = getImmediateChildOfStructField(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfStructField(e, i, partialAccessor) | i)
or
result = getImmediateChildOfStructPatField(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfStructPatField(e, i, partialAccessor) | i)
or
result = getImmediateChildOfStructPatFieldList(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfStructPatFieldList(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTokenTree(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTokenTree(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTupleField(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTupleField(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTypeBound(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTypeBound(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTypeBoundList(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTypeBoundList(e, i, partialAccessor) | i)
or
result = getImmediateChildOfUseBoundGenericArgs(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfUseBoundGenericArgs(e, i, partialAccessor) | i)
or
result = getImmediateChildOfUseTree(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfUseTree(e, i, partialAccessor) | i)
or
result = getImmediateChildOfUseTreeList(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfUseTreeList(e, i, partialAccessor) | i)
or
result = getImmediateChildOfVariantList(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfVariantList(e, i, partialAccessor) | i)
or
result = getImmediateChildOfVisibility(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfVisibility(e, i, partialAccessor) | i)
or
result = getImmediateChildOfWhereClause(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfWhereClause(e, i, partialAccessor) | i)
or
result = getImmediateChildOfWherePred(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfWherePred(e, i, partialAccessor) | i)
or
result = getImmediateChildOfArrayExprInternal(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfArrayExprInternal(e, i, partialAccessor) | i)
or
result = getImmediateChildOfArrayTypeRepr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfArrayTypeRepr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfAsmClobberAbi(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfAsmClobberAbi(e, i, partialAccessor) | i)
or
result = getImmediateChildOfAsmConst(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfAsmConst(e, i, partialAccessor) | i)
or
result = getImmediateChildOfAsmExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfAsmExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfAsmLabel(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfAsmLabel(e, i, partialAccessor) | i)
or
result = getImmediateChildOfAsmOperandNamed(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfAsmOperandNamed(e, i, partialAccessor) | i)
or
result = getImmediateChildOfAsmOptionsList(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfAsmOptionsList(e, i, partialAccessor) | i)
or
result = getImmediateChildOfAsmRegOperand(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfAsmRegOperand(e, i, partialAccessor) | i)
or
result = getImmediateChildOfAsmSym(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfAsmSym(e, i, partialAccessor) | i)
or
result = getImmediateChildOfAssocTypeArg(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfAssocTypeArg(e, i, partialAccessor) | i)
or
result = getImmediateChildOfAwaitExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfAwaitExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBecomeExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfBecomeExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBinaryExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfBinaryExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBoxPat(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfBoxPat(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBreakExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfBreakExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfCastExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfCastExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfClosureExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfClosureExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfComment(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfComment(e, i, partialAccessor) | i)
or
result = getImmediateChildOfConstArg(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfConstArg(e, i, partialAccessor) | i)
or
result = getImmediateChildOfConstBlockPat(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfConstBlockPat(e, i, partialAccessor) | i)
or
result = getImmediateChildOfConstParam(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfConstParam(e, i, partialAccessor) | i)
or
result = getImmediateChildOfContinueExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfContinueExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfDynTraitTypeRepr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfDynTraitTypeRepr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfExprStmt(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfExprStmt(e, i, partialAccessor) | i)
or
result = getImmediateChildOfFieldExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfFieldExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfFnPtrTypeRepr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfFnPtrTypeRepr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfForTypeRepr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfForTypeRepr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfFormatArgsExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfFormatArgsExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfIdentPat(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfIdentPat(e, i, partialAccessor) | i)
or
result = getImmediateChildOfIfExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfIfExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfImplTraitTypeRepr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfImplTraitTypeRepr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfIndexExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfIndexExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfInferTypeRepr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfInferTypeRepr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfLetExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfLetExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfLetStmt(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfLetStmt(e, i, partialAccessor) | i)
or
result = getImmediateChildOfLifetime(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfLifetime(e, i, partialAccessor) | i)
or
result = getImmediateChildOfLifetimeArg(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfLifetimeArg(e, i, partialAccessor) | i)
or
result = getImmediateChildOfLifetimeParam(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfLifetimeParam(e, i, partialAccessor) | i)
or
result = getImmediateChildOfLiteralExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfLiteralExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfLiteralPat(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfLiteralPat(e, i, partialAccessor) | i)
or
result = getImmediateChildOfMacroBlockExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfMacroBlockExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfMacroExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfMacroExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfMacroPat(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfMacroPat(e, i, partialAccessor) | i)
or
result = getImmediateChildOfMacroTypeRepr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfMacroTypeRepr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfMatchExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfMatchExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfNameRef(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfNameRef(e, i, partialAccessor) | i)
or
result = getImmediateChildOfNeverTypeRepr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfNeverTypeRepr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfOffsetOfExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfOffsetOfExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfOrPat(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfOrPat(e, i, partialAccessor) | i)
or
result = getImmediateChildOfParam(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfParam(e, i, partialAccessor) | i)
or
result = getImmediateChildOfParenExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfParenExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfParenPat(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfParenPat(e, i, partialAccessor) | i)
or
result = getImmediateChildOfParenTypeRepr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfParenTypeRepr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfPathTypeRepr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfPathTypeRepr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfPrefixExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfPrefixExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfPtrTypeRepr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfPtrTypeRepr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfRangeExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfRangeExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfRangePat(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfRangePat(e, i, partialAccessor) | i)
or
result = getImmediateChildOfRefExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfRefExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfRefPat(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfRefPat(e, i, partialAccessor) | i)
or
result = getImmediateChildOfRefTypeRepr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfRefTypeRepr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfRestPat(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfRestPat(e, i, partialAccessor) | i)
or
result = getImmediateChildOfReturnExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfReturnExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfSelfParam(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfSelfParam(e, i, partialAccessor) | i)
or
result = getImmediateChildOfSlicePat(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfSlicePat(e, i, partialAccessor) | i)
or
result = getImmediateChildOfSliceTypeRepr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfSliceTypeRepr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfStructFieldList(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfStructFieldList(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTryExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTryExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTupleExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTupleExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTupleFieldList(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTupleFieldList(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTuplePat(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTuplePat(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTupleTypeRepr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTupleTypeRepr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTypeArg(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTypeArg(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTypeParam(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTypeParam(e, i, partialAccessor) | i)
or
result = getImmediateChildOfUnderscoreExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfUnderscoreExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfVariant(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfVariant(e, i, partialAccessor) | i)
or
result = getImmediateChildOfWildcardPat(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfWildcardPat(e, i, partialAccessor) | i)
or
result = getImmediateChildOfYeetExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfYeetExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfYieldExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfYieldExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfArrayListExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfArrayListExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfArrayRepeatExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfArrayRepeatExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBlockExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfBlockExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfCallExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfCallExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfConst(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfConst(e, i, partialAccessor) | i)
or
result = getImmediateChildOfEnum(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfEnum(e, i, partialAccessor) | i)
or
result = getImmediateChildOfExternBlock(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfExternBlock(e, i, partialAccessor) | i)
or
result = getImmediateChildOfExternCrate(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfExternCrate(e, i, partialAccessor) | i)
or
result = getImmediateChildOfFormatTemplateVariableAccess(e, index, partialAccessor)
index =
min(int i |
result = getImmediateChildOfFormatTemplateVariableAccess(e, i, partialAccessor)
|
i
)
or
result = getImmediateChildOfFunction(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfFunction(e, i, partialAccessor) | i)
or
result = getImmediateChildOfImpl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfImpl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfMacroCall(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfMacroCall(e, i, partialAccessor) | i)
or
result = getImmediateChildOfMacroDef(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfMacroDef(e, i, partialAccessor) | i)
or
result = getImmediateChildOfMacroRules(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfMacroRules(e, i, partialAccessor) | i)
or
result = getImmediateChildOfMethodCallExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfMethodCallExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfModule(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfModule(e, i, partialAccessor) | i)
or
result = getImmediateChildOfPathExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfPathExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfPathPat(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfPathPat(e, i, partialAccessor) | i)
or
result = getImmediateChildOfStatic(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfStatic(e, i, partialAccessor) | i)
or
result = getImmediateChildOfStruct(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfStruct(e, i, partialAccessor) | i)
or
result = getImmediateChildOfStructExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfStructExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfStructPat(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfStructPat(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTrait(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTrait(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTraitAlias(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTraitAlias(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTupleStructPat(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTupleStructPat(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTypeAlias(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTypeAlias(e, i, partialAccessor) | i)
or
result = getImmediateChildOfUnion(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfUnion(e, i, partialAccessor) | i)
or
result = getImmediateChildOfUse(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfUse(e, i, partialAccessor) | i)
or
result = getImmediateChildOfForExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfForExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfLoopExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfLoopExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfWhileExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfWhileExpr(e, i, partialAccessor) | i)
}
}

View File

@@ -265,18 +265,6 @@ module Raw {
NameRef getIdentifier() { asm_reg_spec_identifiers(this, result) }
}
/**
* INTERNAL: Do not use.
* An associated item in a `Trait` or `Impl`.
*
* For example:
* ```rust
* trait T {fn foo(&self);}
* // ^^^^^^^^^^^^^
* ```
*/
class AssocItem extends @assoc_item, AstNode { }
/**
* INTERNAL: Do not use.
* A list of `AssocItem` elements, as appearing in a `Trait` or `Impl`.
@@ -355,6 +343,19 @@ module Raw {
GenericParamList getGenericParamList() { closure_binder_generic_param_lists(this, result) }
}
/**
* INTERNAL: Do not use.
* Something that can be expanded by an attribute macro
*/
class ExpandableItem extends @expandable_item, AstNode {
/**
* Gets the attribute macro expansion of this expandable item, if it exists.
*/
MacroItems getAttributeMacroExpansion() {
expandable_item_attribute_macro_expansions(this, result)
}
}
/**
* INTERNAL: Do not use.
* The base class for expressions.
@@ -1699,6 +1700,18 @@ module Raw {
Path getPath() { asm_sym_paths(this, result) }
}
/**
* INTERNAL: Do not use.
* An associated item in a `Trait` or `Impl`.
*
* For example:
* ```rust
* trait T {fn foo(&self);}
* // ^^^^^^^^^^^^^
* ```
*/
class AssocItem extends @assoc_item, ExpandableItem { }
/**
* INTERNAL: Do not use.
* An associated type argument in a path.
@@ -2465,12 +2478,7 @@ module Raw {
* enum E {}
* ```
*/
class Item extends @item, Stmt, Addressable {
/**
* Gets the attribute macro expansion of this item, if it exists.
*/
MacroItems getAttributeMacroExpansion() { item_attribute_macro_expansions(this, result) }
}
class Item extends @item, Stmt, Addressable, ExpandableItem { }
/**
* INTERNAL: Do not use.

View File

@@ -713,17 +713,17 @@ module Synth {
*/
class TAstNode =
TAbi or TAddressable or TArgList or TAsmDirSpec or TAsmOperand or TAsmOperandExpr or
TAsmOption or TAsmPiece or TAsmRegSpec or TAssocItem or TAssocItemList or TAttr or
TCallable or TClosureBinder or TExpr or TExternItem or TExternItemList or TFieldList or
TFormatArgsArg or TGenericArg or TGenericArgList or TGenericParam or TGenericParamList or
TItemList or TLabel or TLetElse or TMacroItems or TMatchArm or TMatchArmList or
TMatchGuard or TMeta or TName or TParamBase or TParamList or TParenthesizedArgList or
TPat or TPath or TPathSegment or TRename or TResolvable or TRetTypeRepr or
TReturnTypeSyntax or TSourceFile or TStmt or TStmtList or TStructExprField or
TStructExprFieldList or TStructField or TStructPatField or TStructPatFieldList or TToken or
TTokenTree or TTupleField or TTypeBound or TTypeBoundList or TTypeRepr or
TUseBoundGenericArg or TUseBoundGenericArgs or TUseTree or TUseTreeList or TVariantDef or
TVariantList or TVisibility or TWhereClause or TWherePred;
TAsmOption or TAsmPiece or TAsmRegSpec or TAssocItemList or TAttr or TCallable or
TClosureBinder or TExpandableItem or TExpr or TExternItem or TExternItemList or
TFieldList or TFormatArgsArg or TGenericArg or TGenericArgList or TGenericParam or
TGenericParamList or TItemList or TLabel or TLetElse or TMacroItems or TMatchArm or
TMatchArmList or TMatchGuard or TMeta or TName or TParamBase or TParamList or
TParenthesizedArgList or TPat or TPath or TPathSegment or TRename or TResolvable or
TRetTypeRepr or TReturnTypeSyntax or TSourceFile or TStmt or TStmtList or
TStructExprField or TStructExprFieldList or TStructField or TStructPatField or
TStructPatFieldList or TToken or TTokenTree or TTupleField or TTypeBound or
TTypeBoundList or TTypeRepr or TUseBoundGenericArg or TUseBoundGenericArgs or TUseTree or
TUseTreeList or TVariantDef or TVariantList or TVisibility or TWhereClause or TWherePred;
/**
* INTERNAL: Do not use.
@@ -735,6 +735,11 @@ module Synth {
*/
class TCallable = TClosureExpr or TFunction;
/**
* INTERNAL: Do not use.
*/
class TExpandableItem = TAssocItem or TItem;
/**
* INTERNAL: Do not use.
*/
@@ -1937,8 +1942,6 @@ module Synth {
or
result = convertAsmRegSpecFromRaw(e)
or
result = convertAssocItemFromRaw(e)
or
result = convertAssocItemListFromRaw(e)
or
result = convertAttrFromRaw(e)
@@ -1947,6 +1950,8 @@ module Synth {
or
result = convertClosureBinderFromRaw(e)
or
result = convertExpandableItemFromRaw(e)
or
result = convertExprFromRaw(e)
or
result = convertExternItemFromRaw(e)
@@ -2084,6 +2089,16 @@ module Synth {
result = convertUnextractedFromRaw(e)
}
/**
* INTERNAL: Do not use.
* Converts a raw DB element to a synthesized `TExpandableItem`, if possible.
*/
TExpandableItem convertExpandableItemFromRaw(Raw::Element e) {
result = convertAssocItemFromRaw(e)
or
result = convertItemFromRaw(e)
}
/**
* INTERNAL: Do not use.
* Converts a raw DB element to a synthesized `TExpr`, if possible.
@@ -3537,8 +3552,6 @@ module Synth {
or
result = convertAsmRegSpecToRaw(e)
or
result = convertAssocItemToRaw(e)
or
result = convertAssocItemListToRaw(e)
or
result = convertAttrToRaw(e)
@@ -3547,6 +3560,8 @@ module Synth {
or
result = convertClosureBinderToRaw(e)
or
result = convertExpandableItemToRaw(e)
or
result = convertExprToRaw(e)
or
result = convertExternItemToRaw(e)
@@ -3684,6 +3699,16 @@ module Synth {
result = convertUnextractedToRaw(e)
}
/**
* INTERNAL: Do not use.
* Converts a synthesized `TExpandableItem` to a raw DB element, if possible.
*/
Raw::Element convertExpandableItemToRaw(TExpandableItem e) {
result = convertAssocItemToRaw(e)
or
result = convertItemToRaw(e)
}
/**
* INTERNAL: Do not use.
* Converts a synthesized `TExpr` to a raw DB element, if possible.

View File

@@ -60,17 +60,12 @@ query predicate multipleChildren(Element parent, int index, Element child1, Elem
}
/**
* Holds if `child` has multiple positions amongst the `accessor` children
* of `parent`.
*
* Children are allowed to have multiple positions for _different_ accessors,
* for example in an array repeat expression `[1; 10]`, `1` has positions for
* both `getRepeatOperand()` and `getExpr()`.
* Holds if `child` has multiple positions amongst the children of `parent`.
*/
query predicate multiplePositions(Element parent, int pos1, int pos2, string accessor, Element child) {
child = getChildAndAccessor(parent, pos1, accessor) and
child = getChildAndAccessor(parent, pos2, accessor) and
pos1 != pos2
query predicate multiplePositions(Element parent, int pos1, int pos2, Element child) {
child = getChildAndAccessor(parent, pos1, _) and
child = getChildAndAccessor(parent, pos2, _) and
pos1 < pos2
}
/**
@@ -97,5 +92,5 @@ int getAstInconsistencyCounts(string type) {
result = count(Element e | multipleChildren(_, _, e, _) | e)
or
type = "Multiple positions" and
result = count(Element e | multiplePositions(_, _, _, _, e) | e)
result = count(Element e | multiplePositions(_, _, _, e) | e)
}

View File

@@ -164,11 +164,11 @@ named_crates(
| @asm_option
| @asm_piece
| @asm_reg_spec
| @assoc_item
| @assoc_item_list
| @attr
| @callable
| @closure_binder
| @expandable_item
| @expr
| @extern_item
| @extern_item_list
@@ -350,13 +350,6 @@ asm_reg_spec_identifiers(
int identifier: @name_ref ref
);
@assoc_item =
@const
| @function
| @macro_call
| @type_alias
;
assoc_item_lists(
unique int id: @assoc_item_list
);
@@ -413,6 +406,17 @@ closure_binder_generic_param_lists(
int generic_param_list: @generic_param_list ref
);
@expandable_item =
@assoc_item
| @item
;
#keyset[id]
expandable_item_attribute_macro_expansions(
int id: @expandable_item ref,
int attribute_macro_expansion: @macro_items ref
);
@expr =
@array_expr_internal
| @asm_expr
@@ -1379,6 +1383,13 @@ asm_sym_paths(
int path: @path ref
);
@assoc_item =
@const
| @function
| @macro_call
| @type_alias
;
assoc_type_args(
unique int id: @assoc_type_arg
);
@@ -1936,12 +1947,6 @@ infer_type_reprs(
| @use
;
#keyset[id]
item_attribute_macro_expansions(
int id: @item ref,
int attribute_macro_expansion: @macro_items ref
);
@labelable_expr =
@block_expr
| @looping_expr

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,5 @@
description: Generalize `item_attribute_macro_expansions` to `expandable_item_attribute_macro_expansions`
compatibility: partial
expandable_item_attribute_macro_expansions.rel: reorder item_attribute_macro_expansions.rel (@item id, @macro_items attribute_macro_expansion) id attribute_macro_expansion
item_attribute_macro_expansions.rel: delete

View File

@@ -1 +1 @@
| gen_array_repeat_expr.rs:5:5:5:11 | [1; 10] | getNumberOfExprs: | 2 | getNumberOfAttrs: | 0 | getRepeatOperand: | gen_array_repeat_expr.rs:5:6:5:6 | 1 | getRepeatLength: | gen_array_repeat_expr.rs:5:9:5:10 | 10 |
| gen_array_repeat_expr.rs:5:5:5:11 | [1; 10] | getNumberOfExprs: | 0 | getNumberOfAttrs: | 0 | getRepeatOperand: | gen_array_repeat_expr.rs:5:6:5:6 | 1 | getRepeatLength: | gen_array_repeat_expr.rs:5:9:5:10 | 10 |

View File

@@ -1,2 +0,0 @@
| gen_array_repeat_expr.rs:5:5:5:11 | [1; 10] | 0 | gen_array_repeat_expr.rs:5:6:5:6 | 1 |
| gen_array_repeat_expr.rs:5:5:5:11 | [1; 10] | 1 | gen_array_repeat_expr.rs:5:9:5:10 | 10 |

View File

@@ -1 +1 @@
| gen_const.rs:4:5:7:22 | Const | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | hasAttributeMacroExpansion: | no | getNumberOfAttrs: | 0 | hasBody: | yes | isConst: | yes | isDefault: | no | hasName: | yes | hasTypeRepr: | yes | hasVisibility: | no | hasImplementation: | yes |
| gen_const.rs:4:5:7:22 | Const | hasAttributeMacroExpansion: | no | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | getNumberOfAttrs: | 0 | hasBody: | yes | isConst: | yes | isDefault: | no | hasName: | yes | hasTypeRepr: | yes | hasVisibility: | no | hasImplementation: | yes |

View File

@@ -3,24 +3,23 @@ import codeql.rust.elements
import TestUtils
from
Const x, string hasExtendedCanonicalPath, string hasCrateOrigin,
string hasAttributeMacroExpansion, int getNumberOfAttrs, string hasBody, string isConst,
string isDefault, string hasName, string hasTypeRepr, string hasVisibility,
string hasImplementation
Const x, string hasAttributeMacroExpansion, string hasExtendedCanonicalPath,
string hasCrateOrigin, int getNumberOfAttrs, string hasBody, string isConst, string isDefault,
string hasName, string hasTypeRepr, string hasVisibility, string hasImplementation
where
toBeTested(x) and
not x.isUnknown() and
(
if x.hasAttributeMacroExpansion()
then hasAttributeMacroExpansion = "yes"
else hasAttributeMacroExpansion = "no"
) and
(
if x.hasExtendedCanonicalPath()
then hasExtendedCanonicalPath = "yes"
else hasExtendedCanonicalPath = "no"
) and
(if x.hasCrateOrigin() then hasCrateOrigin = "yes" else hasCrateOrigin = "no") and
(
if x.hasAttributeMacroExpansion()
then hasAttributeMacroExpansion = "yes"
else hasAttributeMacroExpansion = "no"
) and
getNumberOfAttrs = x.getNumberOfAttrs() and
(if x.hasBody() then hasBody = "yes" else hasBody = "no") and
(if x.isConst() then isConst = "yes" else isConst = "no") and
@@ -29,8 +28,8 @@ where
(if x.hasTypeRepr() then hasTypeRepr = "yes" else hasTypeRepr = "no") and
(if x.hasVisibility() then hasVisibility = "yes" else hasVisibility = "no") and
if x.hasImplementation() then hasImplementation = "yes" else hasImplementation = "no"
select x, "hasExtendedCanonicalPath:", hasExtendedCanonicalPath, "hasCrateOrigin:", hasCrateOrigin,
"hasAttributeMacroExpansion:", hasAttributeMacroExpansion, "getNumberOfAttrs:", getNumberOfAttrs,
"hasBody:", hasBody, "isConst:", isConst, "isDefault:", isDefault, "hasName:", hasName,
"hasTypeRepr:", hasTypeRepr, "hasVisibility:", hasVisibility, "hasImplementation:",
select x, "hasAttributeMacroExpansion:", hasAttributeMacroExpansion, "hasExtendedCanonicalPath:",
hasExtendedCanonicalPath, "hasCrateOrigin:", hasCrateOrigin, "getNumberOfAttrs:",
getNumberOfAttrs, "hasBody:", hasBody, "isConst:", isConst, "isDefault:", isDefault, "hasName:",
hasName, "hasTypeRepr:", hasTypeRepr, "hasVisibility:", hasVisibility, "hasImplementation:",
hasImplementation

View File

@@ -1,2 +1,2 @@
| gen_function.rs:3:1:4:38 | fn foo | hasParamList: | yes | getNumberOfAttrs: | 0 | getNumberOfParams: | 1 | hasExtendedCanonicalPath: | yes | hasCrateOrigin: | yes | hasAttributeMacroExpansion: | no | hasAbi: | no | hasBody: | yes | hasGenericParamList: | no | isAsync: | no | isConst: | no | isDefault: | no | isGen: | no | isUnsafe: | no | hasName: | yes | hasRetType: | yes | hasVisibility: | no | hasWhereClause: | no | hasImplementation: | yes |
| gen_function.rs:7:5:7:13 | fn bar | hasParamList: | yes | getNumberOfAttrs: | 0 | getNumberOfParams: | 0 | hasExtendedCanonicalPath: | yes | hasCrateOrigin: | yes | hasAttributeMacroExpansion: | no | hasAbi: | no | hasBody: | no | hasGenericParamList: | no | isAsync: | no | isConst: | no | isDefault: | no | isGen: | no | isUnsafe: | no | hasName: | yes | hasRetType: | no | hasVisibility: | no | hasWhereClause: | no | hasImplementation: | no |
| gen_function.rs:3:1:4:38 | fn foo | hasAttributeMacroExpansion: | no | hasParamList: | yes | getNumberOfAttrs: | 0 | getNumberOfParams: | 1 | 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 | hasImplementation: | yes |
| gen_function.rs:7:5:7:13 | fn bar | hasAttributeMacroExpansion: | no | hasParamList: | yes | getNumberOfAttrs: | 0 | getNumberOfParams: | 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 | hasImplementation: | no |

View File

@@ -3,14 +3,19 @@ import codeql.rust.elements
import TestUtils
from
Function x, string hasParamList, int getNumberOfAttrs, int getNumberOfParams,
string hasExtendedCanonicalPath, string hasCrateOrigin, string hasAttributeMacroExpansion,
string hasAbi, string hasBody, string hasGenericParamList, string isAsync, string isConst,
string isDefault, string isGen, string isUnsafe, string hasName, string hasRetType,
string hasVisibility, string hasWhereClause, string hasImplementation
Function x, string hasAttributeMacroExpansion, string hasParamList, int getNumberOfAttrs,
int getNumberOfParams, string hasExtendedCanonicalPath, string hasCrateOrigin, string hasAbi,
string hasBody, string hasGenericParamList, string isAsync, string isConst, string isDefault,
string isGen, string isUnsafe, string hasName, string hasRetType, string hasVisibility,
string hasWhereClause, string hasImplementation
where
toBeTested(x) and
not x.isUnknown() and
(
if x.hasAttributeMacroExpansion()
then hasAttributeMacroExpansion = "yes"
else hasAttributeMacroExpansion = "no"
) and
(if x.hasParamList() then hasParamList = "yes" else hasParamList = "no") and
getNumberOfAttrs = x.getNumberOfAttrs() and
getNumberOfParams = x.getNumberOfParams() and
@@ -20,11 +25,6 @@ where
else hasExtendedCanonicalPath = "no"
) and
(if x.hasCrateOrigin() then hasCrateOrigin = "yes" else hasCrateOrigin = "no") and
(
if x.hasAttributeMacroExpansion()
then hasAttributeMacroExpansion = "yes"
else hasAttributeMacroExpansion = "no"
) and
(if x.hasAbi() then hasAbi = "yes" else hasAbi = "no") and
(if x.hasBody() then hasBody = "yes" else hasBody = "no") and
(if x.hasGenericParamList() then hasGenericParamList = "yes" else hasGenericParamList = "no") and
@@ -38,9 +38,9 @@ where
(if x.hasVisibility() then hasVisibility = "yes" else hasVisibility = "no") and
(if x.hasWhereClause() then hasWhereClause = "yes" else hasWhereClause = "no") and
if x.hasImplementation() then hasImplementation = "yes" else hasImplementation = "no"
select x, "hasParamList:", hasParamList, "getNumberOfAttrs:", getNumberOfAttrs,
"getNumberOfParams:", getNumberOfParams, "hasExtendedCanonicalPath:", hasExtendedCanonicalPath,
"hasCrateOrigin:", hasCrateOrigin, "hasAttributeMacroExpansion:", hasAttributeMacroExpansion,
select x, "hasAttributeMacroExpansion:", hasAttributeMacroExpansion, "hasParamList:", hasParamList,
"getNumberOfAttrs:", getNumberOfAttrs, "getNumberOfParams:", getNumberOfParams,
"hasExtendedCanonicalPath:", hasExtendedCanonicalPath, "hasCrateOrigin:", hasCrateOrigin,
"hasAbi:", hasAbi, "hasBody:", hasBody, "hasGenericParamList:", hasGenericParamList, "isAsync:",
isAsync, "isConst:", isConst, "isDefault:", isDefault, "isGen:", isGen, "isUnsafe:", isUnsafe,
"hasName:", hasName, "hasRetType:", hasRetType, "hasVisibility:", hasVisibility,

View File

@@ -1,2 +1,2 @@
| gen_macro_call.rs:7:5:7:29 | println!... | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | hasAttributeMacroExpansion: | no | getNumberOfAttrs: | 0 | hasPath: | yes | hasTokenTree: | yes | hasMacroCallExpansion: | yes |
| gen_macro_call.rs:7:14:7:28 | ...::format_args_nl!... | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | hasAttributeMacroExpansion: | no | getNumberOfAttrs: | 0 | hasPath: | yes | hasTokenTree: | yes | hasMacroCallExpansion: | yes |
| gen_macro_call.rs:7:5:7:29 | println!... | hasAttributeMacroExpansion: | no | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | getNumberOfAttrs: | 0 | hasPath: | yes | hasTokenTree: | yes | hasMacroCallExpansion: | yes |
| gen_macro_call.rs:7:14:7:28 | ...::format_args_nl!... | hasAttributeMacroExpansion: | no | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | getNumberOfAttrs: | 0 | hasPath: | yes | hasTokenTree: | yes | hasMacroCallExpansion: | yes |

View File

@@ -3,28 +3,28 @@ import codeql.rust.elements
import TestUtils
from
MacroCall x, string hasExtendedCanonicalPath, string hasCrateOrigin,
string hasAttributeMacroExpansion, int getNumberOfAttrs, string hasPath, string hasTokenTree,
MacroCall x, string hasAttributeMacroExpansion, string hasExtendedCanonicalPath,
string hasCrateOrigin, int getNumberOfAttrs, string hasPath, string hasTokenTree,
string hasMacroCallExpansion
where
toBeTested(x) and
not x.isUnknown() and
(
if x.hasAttributeMacroExpansion()
then hasAttributeMacroExpansion = "yes"
else hasAttributeMacroExpansion = "no"
) and
(
if x.hasExtendedCanonicalPath()
then hasExtendedCanonicalPath = "yes"
else hasExtendedCanonicalPath = "no"
) and
(if x.hasCrateOrigin() then hasCrateOrigin = "yes" else hasCrateOrigin = "no") and
(
if x.hasAttributeMacroExpansion()
then hasAttributeMacroExpansion = "yes"
else hasAttributeMacroExpansion = "no"
) and
getNumberOfAttrs = x.getNumberOfAttrs() and
(if x.hasPath() then hasPath = "yes" else hasPath = "no") and
(if x.hasTokenTree() then hasTokenTree = "yes" else hasTokenTree = "no") and
if x.hasMacroCallExpansion() then hasMacroCallExpansion = "yes" else hasMacroCallExpansion = "no"
select x, "hasExtendedCanonicalPath:", hasExtendedCanonicalPath, "hasCrateOrigin:", hasCrateOrigin,
"hasAttributeMacroExpansion:", hasAttributeMacroExpansion, "getNumberOfAttrs:", getNumberOfAttrs,
"hasPath:", hasPath, "hasTokenTree:", hasTokenTree, "hasMacroCallExpansion:",
select x, "hasAttributeMacroExpansion:", hasAttributeMacroExpansion, "hasExtendedCanonicalPath:",
hasExtendedCanonicalPath, "hasCrateOrigin:", hasCrateOrigin, "getNumberOfAttrs:",
getNumberOfAttrs, "hasPath:", hasPath, "hasTokenTree:", hasTokenTree, "hasMacroCallExpansion:",
hasMacroCallExpansion

View File

@@ -1,2 +1,2 @@
| gen_type_alias.rs:4:5:5:26 | type Point | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | hasAttributeMacroExpansion: | no | getNumberOfAttrs: | 0 | hasGenericParamList: | no | isDefault: | no | hasName: | yes | hasTypeRepr: | yes | hasTypeBoundList: | no | hasVisibility: | no | hasWhereClause: | no |
| gen_type_alias.rs:8:9:8:20 | type Output | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | hasAttributeMacroExpansion: | no | getNumberOfAttrs: | 0 | hasGenericParamList: | no | isDefault: | no | hasName: | yes | hasTypeRepr: | no | hasTypeBoundList: | no | hasVisibility: | no | hasWhereClause: | no |
| gen_type_alias.rs:4:5:5:26 | type Point | hasAttributeMacroExpansion: | no | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | getNumberOfAttrs: | 0 | hasGenericParamList: | no | isDefault: | no | hasName: | yes | hasTypeRepr: | yes | hasTypeBoundList: | no | hasVisibility: | no | hasWhereClause: | no |
| gen_type_alias.rs:8:9:8:20 | type Output | hasAttributeMacroExpansion: | no | hasExtendedCanonicalPath: | no | hasCrateOrigin: | no | getNumberOfAttrs: | 0 | hasGenericParamList: | no | isDefault: | no | hasName: | yes | hasTypeRepr: | no | hasTypeBoundList: | no | hasVisibility: | no | hasWhereClause: | no |

View File

@@ -3,24 +3,24 @@ import codeql.rust.elements
import TestUtils
from
TypeAlias x, string hasExtendedCanonicalPath, string hasCrateOrigin,
string hasAttributeMacroExpansion, int getNumberOfAttrs, string hasGenericParamList,
string isDefault, string hasName, string hasTypeRepr, string hasTypeBoundList,
string hasVisibility, string hasWhereClause
TypeAlias x, string hasAttributeMacroExpansion, string hasExtendedCanonicalPath,
string hasCrateOrigin, int getNumberOfAttrs, string hasGenericParamList, string isDefault,
string hasName, string hasTypeRepr, string hasTypeBoundList, string hasVisibility,
string hasWhereClause
where
toBeTested(x) and
not x.isUnknown() and
(
if x.hasAttributeMacroExpansion()
then hasAttributeMacroExpansion = "yes"
else hasAttributeMacroExpansion = "no"
) and
(
if x.hasExtendedCanonicalPath()
then hasExtendedCanonicalPath = "yes"
else hasExtendedCanonicalPath = "no"
) and
(if x.hasCrateOrigin() then hasCrateOrigin = "yes" else hasCrateOrigin = "no") and
(
if x.hasAttributeMacroExpansion()
then hasAttributeMacroExpansion = "yes"
else hasAttributeMacroExpansion = "no"
) and
getNumberOfAttrs = x.getNumberOfAttrs() and
(if x.hasGenericParamList() then hasGenericParamList = "yes" else hasGenericParamList = "no") and
(if x.isDefault() then isDefault = "yes" else isDefault = "no") and
@@ -29,8 +29,8 @@ where
(if x.hasTypeBoundList() then hasTypeBoundList = "yes" else hasTypeBoundList = "no") and
(if x.hasVisibility() then hasVisibility = "yes" else hasVisibility = "no") and
if x.hasWhereClause() then hasWhereClause = "yes" else hasWhereClause = "no"
select x, "hasExtendedCanonicalPath:", hasExtendedCanonicalPath, "hasCrateOrigin:", hasCrateOrigin,
"hasAttributeMacroExpansion:", hasAttributeMacroExpansion, "getNumberOfAttrs:", getNumberOfAttrs,
"hasGenericParamList:", hasGenericParamList, "isDefault:", isDefault, "hasName:", hasName,
"hasTypeRepr:", hasTypeRepr, "hasTypeBoundList:", hasTypeBoundList, "hasVisibility:",
hasVisibility, "hasWhereClause:", hasWhereClause
select x, "hasAttributeMacroExpansion:", hasAttributeMacroExpansion, "hasExtendedCanonicalPath:",
hasExtendedCanonicalPath, "hasCrateOrigin:", hasCrateOrigin, "getNumberOfAttrs:",
getNumberOfAttrs, "hasGenericParamList:", hasGenericParamList, "isDefault:", isDefault,
"hasName:", hasName, "hasTypeRepr:", hasTypeRepr, "hasTypeBoundList:", hasTypeBoundList,
"hasVisibility:", hasVisibility, "hasWhereClause:", hasWhereClause

View File

@@ -406,6 +406,151 @@ macro_expansion.rs:
# 30| getItem(6): [Impl] impl S { ... }
# 30| getAssocItemList(): [AssocItemList] AssocItemList
# 31| getAssocItem(0): [Function] fn bzz
# 32| getAttributeMacroExpansion(): [MacroItems] MacroItems
# 32| getItem(0): [Function] fn bzz_0
# 32| getParamList(): [ParamList] ParamList
# 32| getBody(): [BlockExpr] { ... }
# 32| getStmtList(): [StmtList] StmtList
# 33| getStatement(0): [ExprStmt] ExprStmt
# 33| getExpr(): [MacroExpr] MacroExpr
# 33| getMacroCall(): [MacroCall] hello!...
# 33| getPath(): [Path] hello
# 33| getSegment(): [PathSegment] hello
# 33| getIdentifier(): [NameRef] hello
# 33| getTokenTree(): [TokenTree] TokenTree
# 31| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr
# 31| getStatement(0): [ExprStmt] ExprStmt
# 31| getExpr(): [MacroExpr] MacroExpr
# 31| getMacroCall(): [MacroCall] println!...
# 31| getPath(): [Path] println
# 31| getSegment(): [PathSegment] println
# 31| getIdentifier(): [NameRef] println
# 31| getTokenTree(): [TokenTree] TokenTree
# 31| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr
# 31| getTailExpr(): [BlockExpr] { ... }
# 31| getStmtList(): [StmtList] StmtList
# 31| getStatement(0): [ExprStmt] ExprStmt
# 31| getExpr(): [CallExpr] ...::_print(...)
# 31| getArgList(): [ArgList] ArgList
# 31| getArg(0): [MacroExpr] MacroExpr
# 31| getMacroCall(): [MacroCall] ...::format_args_nl!...
# 31| getPath(): [Path] ...::format_args_nl
# 31| getQualifier(): [Path] $crate
# 31| getSegment(): [PathSegment] $crate
# 31| getIdentifier(): [NameRef] $crate
# 31| getSegment(): [PathSegment] format_args_nl
# 31| getIdentifier(): [NameRef] format_args_nl
# 31| getTokenTree(): [TokenTree] TokenTree
# 31| getMacroCallExpansion(): [FormatArgsExpr] FormatArgsExpr
# 31| getTemplate(): [StringLiteralExpr] "hello!\n"
# 31| getFunction(): [PathExpr] ...::_print
# 31| getPath(): [Path] ...::_print
# 31| getQualifier(): [Path] ...::io
# 31| getQualifier(): [Path] $crate
# 31| getSegment(): [PathSegment] $crate
# 31| getIdentifier(): [NameRef] $crate
# 31| getSegment(): [PathSegment] io
# 31| getIdentifier(): [NameRef] io
# 31| getSegment(): [PathSegment] _print
# 31| getIdentifier(): [NameRef] _print
# 32| getName(): [Name] bzz_0
# 32| getVisibility(): [Visibility] Visibility
# 32| getItem(1): [Function] fn bzz_1
# 32| getParamList(): [ParamList] ParamList
# 32| getBody(): [BlockExpr] { ... }
# 32| getStmtList(): [StmtList] StmtList
# 33| getStatement(0): [ExprStmt] ExprStmt
# 33| getExpr(): [MacroExpr] MacroExpr
# 33| getMacroCall(): [MacroCall] hello!...
# 33| getPath(): [Path] hello
# 33| getSegment(): [PathSegment] hello
# 33| getIdentifier(): [NameRef] hello
# 33| getTokenTree(): [TokenTree] TokenTree
# 31| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr
# 31| getStatement(0): [ExprStmt] ExprStmt
# 31| getExpr(): [MacroExpr] MacroExpr
# 31| getMacroCall(): [MacroCall] println!...
# 31| getPath(): [Path] println
# 31| getSegment(): [PathSegment] println
# 31| getIdentifier(): [NameRef] println
# 31| getTokenTree(): [TokenTree] TokenTree
# 31| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr
# 31| getTailExpr(): [BlockExpr] { ... }
# 31| getStmtList(): [StmtList] StmtList
# 31| getStatement(0): [ExprStmt] ExprStmt
# 31| getExpr(): [CallExpr] ...::_print(...)
# 31| getArgList(): [ArgList] ArgList
# 31| getArg(0): [MacroExpr] MacroExpr
# 31| getMacroCall(): [MacroCall] ...::format_args_nl!...
# 31| getPath(): [Path] ...::format_args_nl
# 31| getQualifier(): [Path] $crate
# 31| getSegment(): [PathSegment] $crate
# 31| getIdentifier(): [NameRef] $crate
# 31| getSegment(): [PathSegment] format_args_nl
# 31| getIdentifier(): [NameRef] format_args_nl
# 31| getTokenTree(): [TokenTree] TokenTree
# 31| getMacroCallExpansion(): [FormatArgsExpr] FormatArgsExpr
# 31| getTemplate(): [StringLiteralExpr] "hello!\n"
# 31| getFunction(): [PathExpr] ...::_print
# 31| getPath(): [Path] ...::_print
# 31| getQualifier(): [Path] ...::io
# 31| getQualifier(): [Path] $crate
# 31| getSegment(): [PathSegment] $crate
# 31| getIdentifier(): [NameRef] $crate
# 31| getSegment(): [PathSegment] io
# 31| getIdentifier(): [NameRef] io
# 31| getSegment(): [PathSegment] _print
# 31| getIdentifier(): [NameRef] _print
# 32| getName(): [Name] bzz_1
# 32| getVisibility(): [Visibility] Visibility
# 32| getItem(2): [Function] fn bzz_2
# 32| getParamList(): [ParamList] ParamList
# 32| getBody(): [BlockExpr] { ... }
# 32| getStmtList(): [StmtList] StmtList
# 33| getStatement(0): [ExprStmt] ExprStmt
# 33| getExpr(): [MacroExpr] MacroExpr
# 33| getMacroCall(): [MacroCall] hello!...
# 33| getPath(): [Path] hello
# 33| getSegment(): [PathSegment] hello
# 33| getIdentifier(): [NameRef] hello
# 33| getTokenTree(): [TokenTree] TokenTree
# 31| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr
# 31| getStatement(0): [ExprStmt] ExprStmt
# 31| getExpr(): [MacroExpr] MacroExpr
# 31| getMacroCall(): [MacroCall] println!...
# 31| getPath(): [Path] println
# 31| getSegment(): [PathSegment] println
# 31| getIdentifier(): [NameRef] println
# 31| getTokenTree(): [TokenTree] TokenTree
# 31| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr
# 31| getTailExpr(): [BlockExpr] { ... }
# 31| getStmtList(): [StmtList] StmtList
# 31| getStatement(0): [ExprStmt] ExprStmt
# 31| getExpr(): [CallExpr] ...::_print(...)
# 31| getArgList(): [ArgList] ArgList
# 31| getArg(0): [MacroExpr] MacroExpr
# 31| getMacroCall(): [MacroCall] ...::format_args_nl!...
# 31| getPath(): [Path] ...::format_args_nl
# 31| getQualifier(): [Path] $crate
# 31| getSegment(): [PathSegment] $crate
# 31| getIdentifier(): [NameRef] $crate
# 31| getSegment(): [PathSegment] format_args_nl
# 31| getIdentifier(): [NameRef] format_args_nl
# 31| getTokenTree(): [TokenTree] TokenTree
# 31| getMacroCallExpansion(): [FormatArgsExpr] FormatArgsExpr
# 31| getTemplate(): [StringLiteralExpr] "hello!\n"
# 31| getFunction(): [PathExpr] ...::_print
# 31| getPath(): [Path] ...::_print
# 31| getQualifier(): [Path] ...::io
# 31| getQualifier(): [Path] $crate
# 31| getSegment(): [PathSegment] $crate
# 31| getIdentifier(): [NameRef] $crate
# 31| getSegment(): [PathSegment] io
# 31| getIdentifier(): [NameRef] io
# 31| getSegment(): [PathSegment] _print
# 31| getIdentifier(): [NameRef] _print
# 32| getName(): [Name] bzz_2
# 32| getVisibility(): [Visibility] Visibility
# 32| getParamList(): [ParamList] ParamList
# 31| getAttr(0): [Attr] Attr
# 31| getMeta(): [Meta] Meta
@@ -422,41 +567,6 @@ macro_expansion.rs:
# 33| getSegment(): [PathSegment] hello
# 33| getIdentifier(): [NameRef] hello
# 33| getTokenTree(): [TokenTree] TokenTree
# 33| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr
# 33| getStatement(0): [ExprStmt] ExprStmt
# 33| getExpr(): [MacroExpr] MacroExpr
# 33| getMacroCall(): [MacroCall] println!...
# 33| getPath(): [Path] println
# 33| getSegment(): [PathSegment] println
# 33| getIdentifier(): [NameRef] println
# 33| getTokenTree(): [TokenTree] TokenTree
# 33| getMacroCallExpansion(): [MacroBlockExpr] MacroBlockExpr
# 33| getTailExpr(): [BlockExpr] { ... }
# 33| getStmtList(): [StmtList] StmtList
# 33| getStatement(0): [ExprStmt] ExprStmt
# 33| getExpr(): [CallExpr] ...::_print(...)
# 33| getArgList(): [ArgList] ArgList
# 33| getArg(0): [MacroExpr] MacroExpr
# 33| getMacroCall(): [MacroCall] ...::format_args_nl!...
# 33| getPath(): [Path] ...::format_args_nl
# 33| getQualifier(): [Path] $crate
# 33| getSegment(): [PathSegment] $crate
# 33| getIdentifier(): [NameRef] $crate
# 33| getSegment(): [PathSegment] format_args_nl
# 33| getIdentifier(): [NameRef] format_args_nl
# 33| getTokenTree(): [TokenTree] TokenTree
# 33| getMacroCallExpansion(): [FormatArgsExpr] FormatArgsExpr
# 33| getTemplate(): [StringLiteralExpr] "hello!\n"
# 33| getFunction(): [PathExpr] ...::_print
# 33| getPath(): [Path] ...::_print
# 33| getQualifier(): [Path] ...::io
# 33| getQualifier(): [Path] $crate
# 33| getSegment(): [PathSegment] $crate
# 33| getIdentifier(): [NameRef] $crate
# 33| getSegment(): [PathSegment] io
# 33| getIdentifier(): [NameRef] io
# 33| getSegment(): [PathSegment] _print
# 33| getIdentifier(): [NameRef] _print
# 32| getName(): [Name] bzz
# 32| getVisibility(): [Visibility] Visibility
# 30| getSelfTy(): [PathTypeRepr] S

View File

@@ -77,4 +77,4 @@ type MyInt = my_int!(); // this didn't expand in 0.0.274..0.0.287
struct MyStruct {
field: my_int!(), // this didn't expand in 0.0.274..0.0.287
}
}

View File

@@ -11,13 +11,22 @@ attribute_macros
| macro_expansion.rs:15:1:16:14 | fn bar_0 | 1 | macro_expansion.rs:16:1:16:14 | fn bar_0_new |
| macro_expansion.rs:15:1:16:14 | fn bar_1 | 0 | macro_expansion.rs:16:1:16:14 | fn bar_1 |
| macro_expansion.rs:15:1:16:14 | fn bar_1 | 1 | macro_expansion.rs:16:1:16:14 | fn bar_1_new |
| macro_expansion.rs:31:5:34:5 | fn bzz | 0 | macro_expansion.rs:32:5:33:17 | fn bzz_0 |
| macro_expansion.rs:31:5:34:5 | fn bzz | 1 | macro_expansion.rs:32:5:33:17 | fn bzz_1 |
| macro_expansion.rs:31:5:34:5 | fn bzz | 2 | macro_expansion.rs:32:5:33:17 | fn bzz_2 |
macro_calls
| included/included.rs:2:9:2:39 | concat!... | included/included.rs:2:17:2:38 | "Hello world!" |
| macro_expansion.rs:5:9:5:34 | concat!... | macro_expansion.rs:5:17:5:34 | "Hello world!" |
| macro_expansion.rs:5:9:5:34 | concat!... | macro_expansion.rs:5:17:5:34 | "Hello world!" |
| macro_expansion.rs:33:9:33:16 | ...::format_args_nl!... | macro_expansion.rs:33:9:33:16 | FormatArgsExpr |
| macro_expansion.rs:33:9:33:16 | hello!... | macro_expansion.rs:33:9:33:16 | MacroBlockExpr |
| macro_expansion.rs:33:9:33:16 | println!... | macro_expansion.rs:33:9:33:16 | MacroBlockExpr |
| macro_expansion.rs:31:5:31:16 | ...::format_args_nl!... | macro_expansion.rs:31:5:31:16 | FormatArgsExpr |
| macro_expansion.rs:31:5:31:16 | ...::format_args_nl!... | macro_expansion.rs:31:5:31:16 | FormatArgsExpr |
| macro_expansion.rs:31:5:31:16 | ...::format_args_nl!... | macro_expansion.rs:31:5:31:16 | FormatArgsExpr |
| macro_expansion.rs:31:5:31:16 | println!... | macro_expansion.rs:31:5:31:16 | MacroBlockExpr |
| macro_expansion.rs:31:5:31:16 | println!... | macro_expansion.rs:31:5:31:16 | MacroBlockExpr |
| macro_expansion.rs:31:5:31:16 | println!... | macro_expansion.rs:31:5:31:16 | MacroBlockExpr |
| macro_expansion.rs:33:9:33:15 | hello!... | macro_expansion.rs:31:5:31:16 | MacroBlockExpr |
| macro_expansion.rs:33:9:33:15 | hello!... | macro_expansion.rs:31:5:31:16 | MacroBlockExpr |
| macro_expansion.rs:33:9:33:15 | hello!... | macro_expansion.rs:31:5:31:16 | MacroBlockExpr |
| macro_expansion.rs:44:5:44:13 | def_x!... | macro_expansion.rs:44:5:44:13 | MacroItems |
| macro_expansion.rs:53:9:53:25 | concat!... | macro_expansion.rs:53:17:53:24 | "xy" |
| macro_expansion.rs:55:9:58:5 | my_macro!... | macro_expansion.rs:56:9:57:13 | MacroExpr |
@@ -34,4 +43,5 @@ macro_calls
| macro_expansion.rs:79:12:79:20 | my_int!... | macro_expansion.rs:79:12:79:20 | i32 |
unexpanded_macro_calls
| macro_expansion.rs:5:9:5:35 | concat!... |
| macro_expansion.rs:33:9:33:16 | hello!... |
warnings

View File

@@ -906,7 +906,7 @@ class _:
"""
@annotate(AssocItem)
@annotate(AssocItem, replace_bases={AstNode: ExpandableItem})
class _:
"""
An associated item in a `Trait` or `Impl`.
@@ -1267,7 +1267,7 @@ class _:
"""
@annotate(Item, add_bases=(Addressable,))
@annotate(Item, add_bases=(Addressable, ExpandableItem))
class _:
"""
An item such as a function, struct, enum, etc.
@@ -1279,7 +1279,6 @@ class _:
enum E {}
```
"""
attribute_macro_expansion: optional[MacroItems] | child | rust.detach
@annotate(ItemList)

View File

@@ -90,6 +90,13 @@ class Addressable(AstNode):
crate_origin: optional[string] | desc(
"One of `rustc:<name>`, `repo:<repository>:<name>` or `lang:<name>`.") | rust.detach | ql.internal
class ExpandableItem(AstNode):
"""
Something that can be expanded by an attribute macro
"""
attribute_macro_expansion: optional["MacroItems"] | child | rust.detach
class Resolvable(AstNode):
"""

View File

@@ -733,7 +733,7 @@ lib/codeql/swift/generated/Locatable.qll 1d37fa20de71c0b9986bfd7a7c0cb82ab7bf3fd
lib/codeql/swift/generated/Location.qll 5e20316c3e480ddfe632b7e88e016c19f10a67df1f6ae9c8f128755a6907d6f5 5a0af2d070bcb2ed53d6d0282bf9c60dc64c2dce89c21fdd485e9c7893c1c8fa
lib/codeql/swift/generated/MacroRole.qll facf907e75490d69cd401c491215e4719324d751f40ea46c86ccf24cf3663c1f 969d8d4b44e3f1a9c193a152a4d83a303e56d2dbb871fc920c47a33f699cf018
lib/codeql/swift/generated/OtherAvailabilitySpec.qll d9feaa2a71acff3184ca389045b0a49d09156210df0e034923d715b432ad594b 046737621a8bcf69bf805afb0cff476bd15259f12f0d77fce3206dd01b31518f
lib/codeql/swift/generated/ParentChild.qll d66e5c28e93a3085fbae0ada238a96577ad21fd64a37ce967032bf5df8bdfb1d 2d440ad9c0304f658d54c6c53a8b1db1d3e032ee5522b51c46116413d0cf5dbb
lib/codeql/swift/generated/ParentChild.qll c8cb49c7c6977732771cb13aeeb0767f856a297da3e7d031341b60b4214cae8d 67987706502e52aa2f432671bd388087192ba0060e3866dea798fcee0d447dce
lib/codeql/swift/generated/PlatformVersionAvailabilitySpec.qll dc17b49a90a18a8f7607adf2433bc8f0c194fa3e803aa3822f809d4d4fbd6793 be48ea9f8ae17354c8508aaed24337a9e57ce01f288fece3dcecd99776cabcec
lib/codeql/swift/generated/PureSynthConstructors.qll bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4 bc31a6c4d142fa3fbdcae69d5ba6f1cec00eb9ad92b46c8d7b91ebfa7ef6c1f4
lib/codeql/swift/generated/Raw.qll 96d5f8778f25cd396b5cc56c38dce597c5a9a5c2b1e9ed8b9a4d2eca89e49323 d65072b5c508dad1dd813e19f7431087d8bfc0e5d85aa3d19beffbcbbec585ec

View File

@@ -5259,515 +5259,650 @@ private module Impl {
// * none() simplifies generation, as we can append `or ...` without a special case for the first item
none()
or
result = getImmediateChildOfComment(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfComment(e, i, partialAccessor) | i)
or
result = getImmediateChildOfDbFile(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfDbFile(e, i, partialAccessor) | i)
or
result = getImmediateChildOfDbLocation(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfDbLocation(e, i, partialAccessor) | i)
or
result = getImmediateChildOfDiagnostics(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfDiagnostics(e, i, partialAccessor) | i)
or
result = getImmediateChildOfUnknownFile(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfUnknownFile(e, i, partialAccessor) | i)
or
result = getImmediateChildOfUnknownLocation(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfUnknownLocation(e, i, partialAccessor) | i)
or
result = getImmediateChildOfAvailabilityInfo(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfAvailabilityInfo(e, i, partialAccessor) | i)
or
result = getImmediateChildOfKeyPathComponent(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfKeyPathComponent(e, i, partialAccessor) | i)
or
result = getImmediateChildOfMacroRole(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfMacroRole(e, i, partialAccessor) | i)
or
result = getImmediateChildOfUnspecifiedElement(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfUnspecifiedElement(e, i, partialAccessor) | i)
or
result = getImmediateChildOfOtherAvailabilitySpec(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfOtherAvailabilitySpec(e, i, partialAccessor) | i)
or
result = getImmediateChildOfPlatformVersionAvailabilitySpec(e, index, partialAccessor)
index =
min(int i |
result = getImmediateChildOfPlatformVersionAvailabilitySpec(e, i, partialAccessor)
|
i
)
or
result = getImmediateChildOfCapturedDecl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfCapturedDecl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfEnumCaseDecl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfEnumCaseDecl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfExtensionDecl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfExtensionDecl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfIfConfigDecl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfIfConfigDecl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfImportDecl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfImportDecl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfMissingMemberDecl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfMissingMemberDecl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfPatternBindingDecl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfPatternBindingDecl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfPoundDiagnosticDecl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfPoundDiagnosticDecl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfPrecedenceGroupDecl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfPrecedenceGroupDecl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTopLevelCodeDecl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTopLevelCodeDecl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfEnumElementDecl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfEnumElementDecl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfInfixOperatorDecl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfInfixOperatorDecl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfMacroDecl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfMacroDecl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfPostfixOperatorDecl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfPostfixOperatorDecl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfPrefixOperatorDecl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfPrefixOperatorDecl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfDeinitializer(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfDeinitializer(e, i, partialAccessor) | i)
or
result = getImmediateChildOfInitializer(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfInitializer(e, i, partialAccessor) | i)
or
result = getImmediateChildOfModuleDecl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfModuleDecl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfSubscriptDecl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfSubscriptDecl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfAccessor(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfAccessor(e, i, partialAccessor) | i)
or
result = getImmediateChildOfAssociatedTypeDecl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfAssociatedTypeDecl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfConcreteVarDecl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfConcreteVarDecl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfGenericTypeParamDecl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfGenericTypeParamDecl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfNamedFunction(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfNamedFunction(e, i, partialAccessor) | i)
or
result = getImmediateChildOfOpaqueTypeDecl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfOpaqueTypeDecl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfParamDecl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfParamDecl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTypeAliasDecl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTypeAliasDecl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfClassDecl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfClassDecl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfEnumDecl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfEnumDecl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfProtocolDecl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfProtocolDecl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfStructDecl(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfStructDecl(e, i, partialAccessor) | i)
or
result = getImmediateChildOfArgument(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfArgument(e, i, partialAccessor) | i)
or
result = getImmediateChildOfAppliedPropertyWrapperExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfAppliedPropertyWrapperExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfAssignExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfAssignExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBindOptionalExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfBindOptionalExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfCaptureListExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfCaptureListExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfConsumeExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfConsumeExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfCopyExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfCopyExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfCurrentContextIsolationExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfCurrentContextIsolationExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfDeclRefExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfDeclRefExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfDefaultArgumentExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfDefaultArgumentExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfDiscardAssignmentExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfDiscardAssignmentExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfDotSyntaxBaseIgnoredExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfDotSyntaxBaseIgnoredExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfDynamicTypeExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfDynamicTypeExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfEnumIsCaseExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfEnumIsCaseExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfErrorExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfErrorExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfExtractFunctionIsolationExpr(e, index, partialAccessor)
index =
min(int i |
result = getImmediateChildOfExtractFunctionIsolationExpr(e, i, partialAccessor)
|
i
)
or
result = getImmediateChildOfForceValueExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfForceValueExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfIfExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfIfExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfInOutExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfInOutExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfKeyPathApplicationExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfKeyPathApplicationExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfKeyPathDotExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfKeyPathDotExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfKeyPathExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfKeyPathExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfLazyInitializationExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfLazyInitializationExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfMakeTemporarilyEscapableExpr(e, index, partialAccessor)
index =
min(int i |
result = getImmediateChildOfMakeTemporarilyEscapableExpr(e, i, partialAccessor)
|
i
)
or
result = getImmediateChildOfMaterializePackExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfMaterializePackExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfObjCSelectorExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfObjCSelectorExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfOneWayExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfOneWayExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfOpaqueValueExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfOpaqueValueExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfOpenExistentialExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfOpenExistentialExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfOptionalEvaluationExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfOptionalEvaluationExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfOtherInitializerRefExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfOtherInitializerRefExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfOverloadedDeclRefExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfOverloadedDeclRefExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfPackElementExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfPackElementExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfPackExpansionExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfPackExpansionExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfPropertyWrapperValuePlaceholderExpr(e, index, partialAccessor)
index =
min(int i |
result = getImmediateChildOfPropertyWrapperValuePlaceholderExpr(e, i, partialAccessor)
|
i
)
or
result = getImmediateChildOfRebindSelfInInitializerExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfRebindSelfInInitializerExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfSequenceExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfSequenceExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfSingleValueStmtExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfSingleValueStmtExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfSuperRefExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfSuperRefExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTapExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTapExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTupleElementExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTupleElementExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTupleExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTupleExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTypeExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTypeExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTypeValueExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTypeValueExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfUnresolvedDeclRefExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfUnresolvedDeclRefExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfUnresolvedDotExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfUnresolvedDotExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfUnresolvedMemberExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfUnresolvedMemberExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfUnresolvedPatternExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfUnresolvedPatternExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfUnresolvedSpecializeExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfUnresolvedSpecializeExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfVarargExpansionExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfVarargExpansionExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfAbiSafeConversionExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfAbiSafeConversionExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfActorIsolationErasureExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfActorIsolationErasureExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfAnyHashableErasureExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfAnyHashableErasureExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfArchetypeToSuperExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfArchetypeToSuperExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfArrayExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfArrayExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfArrayToPointerExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfArrayToPointerExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfAutoClosureExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfAutoClosureExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfAwaitExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfAwaitExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBinaryExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfBinaryExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBorrowExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfBorrowExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBridgeFromObjCExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfBridgeFromObjCExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBridgeToObjCExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfBridgeToObjCExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfCallExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfCallExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfClassMetatypeToObjectExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfClassMetatypeToObjectExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfCoerceExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfCoerceExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfCollectionUpcastConversionExpr(e, index, partialAccessor)
index =
min(int i |
result = getImmediateChildOfCollectionUpcastConversionExpr(e, i, partialAccessor)
|
i
)
or
result = getImmediateChildOfConditionalBridgeFromObjCExpr(e, index, partialAccessor)
index =
min(int i |
result = getImmediateChildOfConditionalBridgeFromObjCExpr(e, i, partialAccessor)
|
i
)
or
result = getImmediateChildOfCovariantFunctionConversionExpr(e, index, partialAccessor)
index =
min(int i |
result = getImmediateChildOfCovariantFunctionConversionExpr(e, i, partialAccessor)
|
i
)
or
result = getImmediateChildOfCovariantReturnConversionExpr(e, index, partialAccessor)
index =
min(int i |
result = getImmediateChildOfCovariantReturnConversionExpr(e, i, partialAccessor)
|
i
)
or
result = getImmediateChildOfDerivedToBaseExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfDerivedToBaseExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfDestructureTupleExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfDestructureTupleExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfDictionaryExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfDictionaryExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfDifferentiableFunctionExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfDifferentiableFunctionExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfDifferentiableFunctionExtractOriginalExpr(e, index, partialAccessor)
index =
min(int i |
result = getImmediateChildOfDifferentiableFunctionExtractOriginalExpr(e, i, partialAccessor)
|
i
)
or
result = getImmediateChildOfDotSelfExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfDotSelfExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfErasureExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfErasureExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfExistentialMetatypeToObjectExpr(e, index, partialAccessor)
index =
min(int i |
result = getImmediateChildOfExistentialMetatypeToObjectExpr(e, i, partialAccessor)
|
i
)
or
result = getImmediateChildOfExplicitClosureExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfExplicitClosureExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfForceTryExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfForceTryExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfForeignObjectConversionExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfForeignObjectConversionExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfFunctionConversionExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfFunctionConversionExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfInOutToPointerExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfInOutToPointerExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfInjectIntoOptionalExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfInjectIntoOptionalExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfInterpolatedStringLiteralExpr(e, index, partialAccessor)
index =
min(int i |
result = getImmediateChildOfInterpolatedStringLiteralExpr(e, i, partialAccessor)
|
i
)
or
result = getImmediateChildOfLinearFunctionExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfLinearFunctionExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfLinearFunctionExtractOriginalExpr(e, index, partialAccessor)
index =
min(int i |
result = getImmediateChildOfLinearFunctionExtractOriginalExpr(e, i, partialAccessor)
|
i
)
or
result = getImmediateChildOfLinearToDifferentiableFunctionExpr(e, index, partialAccessor)
index =
min(int i |
result = getImmediateChildOfLinearToDifferentiableFunctionExpr(e, i, partialAccessor)
|
i
)
or
result = getImmediateChildOfLoadExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfLoadExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfMemberRefExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfMemberRefExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfMetatypeConversionExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfMetatypeConversionExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfMethodLookupExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfMethodLookupExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfNilLiteralExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfNilLiteralExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfObjectLiteralExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfObjectLiteralExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfOptionalTryExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfOptionalTryExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfParenExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfParenExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfPointerToPointerExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfPointerToPointerExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfPostfixUnaryExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfPostfixUnaryExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfPrefixUnaryExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfPrefixUnaryExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfProtocolMetatypeToObjectExpr(e, index, partialAccessor)
index =
min(int i |
result = getImmediateChildOfProtocolMetatypeToObjectExpr(e, i, partialAccessor)
|
i
)
or
result = getImmediateChildOfRegexLiteralExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfRegexLiteralExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfStringToPointerExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfStringToPointerExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfSubscriptExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfSubscriptExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTryExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTryExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfUnderlyingToOpaqueExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfUnderlyingToOpaqueExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfUnevaluatedInstanceExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfUnevaluatedInstanceExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfUnreachableExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfUnreachableExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfUnresolvedMemberChainResultExpr(e, index, partialAccessor)
index =
min(int i |
result = getImmediateChildOfUnresolvedMemberChainResultExpr(e, i, partialAccessor)
|
i
)
or
result = getImmediateChildOfUnresolvedTypeConversionExpr(e, index, partialAccessor)
index =
min(int i |
result = getImmediateChildOfUnresolvedTypeConversionExpr(e, i, partialAccessor)
|
i
)
or
result = getImmediateChildOfUnsafeCastExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfUnsafeCastExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBooleanLiteralExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfBooleanLiteralExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfConditionalCheckedCastExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfConditionalCheckedCastExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfDotSyntaxCallExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfDotSyntaxCallExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfDynamicMemberRefExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfDynamicMemberRefExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfDynamicSubscriptExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfDynamicSubscriptExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfForcedCheckedCastExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfForcedCheckedCastExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfInitializerRefCallExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfInitializerRefCallExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfIsExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfIsExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfMagicIdentifierLiteralExpr(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfMagicIdentifierLiteralExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfStringLiteralExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfStringLiteralExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfFloatLiteralExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfFloatLiteralExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfIntegerLiteralExpr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfIntegerLiteralExpr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfAnyPattern(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfAnyPattern(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBindingPattern(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfBindingPattern(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBoolPattern(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfBoolPattern(e, i, partialAccessor) | i)
or
result = getImmediateChildOfEnumElementPattern(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfEnumElementPattern(e, i, partialAccessor) | i)
or
result = getImmediateChildOfExprPattern(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfExprPattern(e, i, partialAccessor) | i)
or
result = getImmediateChildOfIsPattern(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfIsPattern(e, i, partialAccessor) | i)
or
result = getImmediateChildOfNamedPattern(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfNamedPattern(e, i, partialAccessor) | i)
or
result = getImmediateChildOfOptionalSomePattern(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfOptionalSomePattern(e, i, partialAccessor) | i)
or
result = getImmediateChildOfParenPattern(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfParenPattern(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTuplePattern(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTuplePattern(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTypedPattern(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTypedPattern(e, i, partialAccessor) | i)
or
result = getImmediateChildOfCaseLabelItem(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfCaseLabelItem(e, i, partialAccessor) | i)
or
result = getImmediateChildOfConditionElement(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfConditionElement(e, i, partialAccessor) | i)
or
result = getImmediateChildOfStmtCondition(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfStmtCondition(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBraceStmt(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfBraceStmt(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBreakStmt(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfBreakStmt(e, i, partialAccessor) | i)
or
result = getImmediateChildOfCaseStmt(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfCaseStmt(e, i, partialAccessor) | i)
or
result = getImmediateChildOfContinueStmt(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfContinueStmt(e, i, partialAccessor) | i)
or
result = getImmediateChildOfDeferStmt(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfDeferStmt(e, i, partialAccessor) | i)
or
result = getImmediateChildOfDiscardStmt(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfDiscardStmt(e, i, partialAccessor) | i)
or
result = getImmediateChildOfFailStmt(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfFailStmt(e, i, partialAccessor) | i)
or
result = getImmediateChildOfFallthroughStmt(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfFallthroughStmt(e, i, partialAccessor) | i)
or
result = getImmediateChildOfPoundAssertStmt(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfPoundAssertStmt(e, i, partialAccessor) | i)
or
result = getImmediateChildOfReturnStmt(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfReturnStmt(e, i, partialAccessor) | i)
or
result = getImmediateChildOfThenStmt(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfThenStmt(e, i, partialAccessor) | i)
or
result = getImmediateChildOfThrowStmt(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfThrowStmt(e, i, partialAccessor) | i)
or
result = getImmediateChildOfYieldStmt(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfYieldStmt(e, i, partialAccessor) | i)
or
result = getImmediateChildOfDoCatchStmt(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfDoCatchStmt(e, i, partialAccessor) | i)
or
result = getImmediateChildOfDoStmt(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfDoStmt(e, i, partialAccessor) | i)
or
result = getImmediateChildOfForEachStmt(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfForEachStmt(e, i, partialAccessor) | i)
or
result = getImmediateChildOfRepeatWhileStmt(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfRepeatWhileStmt(e, i, partialAccessor) | i)
or
result = getImmediateChildOfSwitchStmt(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfSwitchStmt(e, i, partialAccessor) | i)
or
result = getImmediateChildOfGuardStmt(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfGuardStmt(e, i, partialAccessor) | i)
or
result = getImmediateChildOfIfStmt(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfIfStmt(e, i, partialAccessor) | i)
or
result = getImmediateChildOfWhileStmt(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfWhileStmt(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTypeRepr(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTypeRepr(e, i, partialAccessor) | i)
or
result = getImmediateChildOfDependentMemberType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfDependentMemberType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfDynamicSelfType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfDynamicSelfType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfErrorType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfErrorType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfExistentialType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfExistentialType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfInOutType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfInOutType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfIntegerType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfIntegerType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfLValueType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfLValueType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfModuleType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfModuleType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfPackElementType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfPackElementType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfPackExpansionType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfPackExpansionType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfPackType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfPackType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfParameterizedProtocolType(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfParameterizedProtocolType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfProtocolCompositionType(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfProtocolCompositionType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTupleType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTupleType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfUnresolvedType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfUnresolvedType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBuiltinBridgeObjectType(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfBuiltinBridgeObjectType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBuiltinDefaultActorStorageType(e, index, partialAccessor)
index =
min(int i |
result = getImmediateChildOfBuiltinDefaultActorStorageType(e, i, partialAccessor)
|
i
)
or
result = getImmediateChildOfBuiltinExecutorType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfBuiltinExecutorType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBuiltinFixedArrayType(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfBuiltinFixedArrayType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBuiltinFloatType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfBuiltinFloatType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBuiltinJobType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfBuiltinJobType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBuiltinNativeObjectType(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfBuiltinNativeObjectType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBuiltinRawPointerType(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfBuiltinRawPointerType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBuiltinRawUnsafeContinuationType(e, index, partialAccessor)
index =
min(int i |
result = getImmediateChildOfBuiltinRawUnsafeContinuationType(e, i, partialAccessor)
|
i
)
or
result = getImmediateChildOfBuiltinUnsafeValueBufferType(e, index, partialAccessor)
index =
min(int i |
result = getImmediateChildOfBuiltinUnsafeValueBufferType(e, i, partialAccessor)
|
i
)
or
result = getImmediateChildOfBuiltinVectorType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfBuiltinVectorType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfExistentialMetatypeType(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfExistentialMetatypeType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfFunctionType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfFunctionType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfGenericFunctionType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfGenericFunctionType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfGenericTypeParamType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfGenericTypeParamType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfMetatypeType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfMetatypeType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfParenType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfParenType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfTypeAliasType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfTypeAliasType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfUnboundGenericType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfUnboundGenericType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfUnmanagedStorageType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfUnmanagedStorageType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfUnownedStorageType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfUnownedStorageType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfWeakStorageType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfWeakStorageType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBuiltinIntegerLiteralType(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfBuiltinIntegerLiteralType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBuiltinIntegerType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfBuiltinIntegerType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfDictionaryType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfDictionaryType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfOpaqueTypeArchetypeType(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfOpaqueTypeArchetypeType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfPackArchetypeType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfPackArchetypeType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfPrimaryArchetypeType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfPrimaryArchetypeType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfArraySliceType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfArraySliceType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBoundGenericClassType(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfBoundGenericClassType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBoundGenericEnumType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfBoundGenericEnumType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfBoundGenericStructType(e, index, partialAccessor)
index =
min(int i | result = getImmediateChildOfBoundGenericStructType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfClassType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfClassType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfElementArchetypeType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfElementArchetypeType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfEnumType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfEnumType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfOpenedArchetypeType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfOpenedArchetypeType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfOptionalType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfOptionalType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfProtocolType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfProtocolType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfStructType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfStructType(e, i, partialAccessor) | i)
or
result = getImmediateChildOfVariadicSequenceType(e, index, partialAccessor)
index = min(int i | result = getImmediateChildOfVariadicSequenceType(e, i, partialAccessor) | i)
}
}