Merge pull request #17502 from github/aibaars/rust-extract-ast

Rust: ast-based extractor
This commit is contained in:
Arthur Baars
2024-09-19 14:13:25 +02:00
committed by GitHub
1032 changed files with 33185 additions and 9852 deletions

26
Cargo.lock generated
View File

@@ -382,6 +382,7 @@ dependencies = [
"ra_ap_hir_def",
"ra_ap_ide_db",
"ra_ap_load-cargo",
"ra_ap_parser",
"ra_ap_paths",
"ra_ap_project_model",
"ra_ap_syntax",
@@ -680,6 +681,16 @@ version = "0.4.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ab85b9b05e3978cc9a9cf8fea7f01b494e1a09ed3037e16ba39edc7a29eb61a"
[[package]]
name = "generate-schema"
version = "0.1.0"
dependencies = [
"itertools 0.10.5",
"proc-macro2",
"quote",
"ungrammar",
]
[[package]]
name = "getrandom"
version = "0.2.15"
@@ -849,6 +860,15 @@ version = "1.70.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
[[package]]
name = "itertools"
version = "0.10.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
dependencies = [
"either",
]
[[package]]
name = "itertools"
version = "0.12.1"
@@ -2335,6 +2355,12 @@ dependencies = [
"version_check",
]
[[package]]
name = "ungrammar"
version = "1.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3e5df347f0bf3ec1d670aad6ca5c6a1859cd9ea61d2113125794654ccced68f"
[[package]]
name = "unicode-ident"
version = "1.0.13"

View File

@@ -7,6 +7,7 @@ members = [
"ruby/extractor",
"rust/extractor",
"rust/extractor/macros",
"rust/generate-schema",
]
[patch.crates-io]

View File

@@ -61,6 +61,7 @@ r.from_cargo(
"//ruby/extractor:Cargo.toml",
"//rust/extractor:Cargo.toml",
"//rust/extractor/macros:Cargo.toml",
"//rust/generate-schema:Cargo.toml",
"//shared/tree-sitter-extractor:Cargo.toml",
],
)

View File

@@ -18,6 +18,7 @@ ra_ap_paths = "0.0.232"
ra_ap_project_model = "0.0.232"
ra_ap_syntax = "0.0.232"
ra_ap_vfs = "0.0.232"
ra_ap_parser = "0.0.232"
serde = "1.0.209"
serde_with = "3.9.0"
stderrlog = "0.6.0"

View File

@@ -1,2 +1,2 @@
mod.rs 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7
top.rs ec9ec5e218af9a6b449b40f716e00bbe23c2777941d105b9ed68071aa2468ca2 ec9ec5e218af9a6b449b40f716e00bbe23c2777941d105b9ed68071aa2468ca2
top.rs 90a8dbfc1e4689d3310f40a3377ef0542f1886cd8c84782362d3047f0b27b3ff 90a8dbfc1e4689d3310f40a3377ef0542f1886cd8c84782362d3047f0b27b3ff

File diff suppressed because it is too large Load Diff

View File

@@ -1,37 +1,11 @@
use crate::trap::TrapId;
use anyhow::Context;
use itertools::Itertools;
use log::info;
use ra_ap_hir::db::DefDatabase;
use ra_ap_hir::Crate;
use ra_ap_load_cargo::{load_workspace_at, LoadCargoConfig, ProcMacroServerChoice};
use ra_ap_project_model::CargoConfig;
use ra_ap_project_model::RustLibSource;
use ra_ap_vfs::AbsPathBuf;
use std::path::PathBuf;
use ra_ap_ide_db::line_index::LineIndex;
mod archive;
mod config;
pub mod generated;
mod translate;
pub mod trap;
fn find_project_manifests(
files: &[PathBuf],
) -> anyhow::Result<Vec<ra_ap_project_model::ProjectManifest>> {
let current = std::env::current_dir()?;
let abs_files: Vec<_> = files
.iter()
.map(|path| AbsPathBuf::assert_utf8(current.join(path)))
.collect();
let ret = ra_ap_project_model::ProjectManifest::discover_all(&abs_files);
info!(
"found manifests: {}",
ret.iter().map(|m| format!("{m}")).join(", ")
);
Ok(ret)
}
fn main() -> anyhow::Result<()> {
let cfg = config::Config::extract().context("failed to load configuration")?;
stderrlog::new()
@@ -43,52 +17,20 @@ fn main() -> anyhow::Result<()> {
let archiver = archive::Archiver {
root: cfg.source_archive_dir,
};
let config = CargoConfig {
sysroot: Some(RustLibSource::Discover),
target_dir: ra_ap_paths::Utf8PathBuf::from_path_buf(cfg.scratch_dir)
.map(|x| x.join("target"))
.ok(),
..Default::default()
};
let progress = |t| (log::info!("progress: {}", t));
let load_config = LoadCargoConfig {
load_out_dirs_from_check: true,
with_proc_macro_server: ProcMacroServerChoice::Sysroot,
prefill_caches: false,
};
let projects = find_project_manifests(&cfg.inputs).context("loading inputs")?;
for project in projects {
let (db, vfs, _macro_server) = load_workspace_at(
project.manifest_path().as_ref(),
&config,
&load_config,
&progress,
)?;
let crates = <dyn DefDatabase>::crate_graph(&db);
for crate_id in crates.iter() {
let krate = Crate::from(crate_id);
if !cfg.extract_dependencies && !krate.origin(&db).is_local() {
continue;
}
let name = krate.display_name(&db);
let crate_name = name
.as_ref()
.map(|n| n.canonical_name().as_str())
.unwrap_or("");
let trap = traps.create(
"crates",
&PathBuf::from(format!(
"/{}_{}",
crate_name,
crate_id.into_raw().into_u32()
)),
);
translate::CrateTranslator::new(&db, trap, &krate, &vfs, &archiver)
.emit_crate()
.context("writing trap file")?;
}
for file in cfg.inputs {
let file = std::path::absolute(&file).unwrap_or(file);
let file = std::fs::canonicalize(&file).unwrap_or(file);
archiver.archive(&file);
let input = std::fs::read(&file)?;
let input = String::from_utf8(input)?;
let line_index = LineIndex::new(&input);
let display_path = file.to_string_lossy();
let mut trap = traps.create("source", &file);
let label = trap.emit_file(&file);
translate::SourceFileTranslator::new(trap, label, line_index)
.extract(&display_path, &input)
.context("writing trap file")?;
}
Ok(())
}

File diff suppressed because it is too large Load Diff

2
rust/generate-schema/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
/target
/.idea

View File

@@ -0,0 +1,14 @@
load("//misc/bazel:rust.bzl", "codeql_rust_binary")
codeql_rust_binary(
name = "generate-schema",
srcs = glob(["src/**/*.rs"]),
aliases = aliases(),
proc_macro_deps = all_crate_deps(
proc_macro = True,
),
visibility = ["//rust:__subpackages__"],
deps = all_crate_deps(
normal = True,
),
)

16
rust/generate-schema/Cargo.lock generated Normal file
View File

@@ -0,0 +1,16 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "generate-schema"
version = "0.1.0"
dependencies = [
"ungrammar",
]
[[package]]
name = "ungrammar"
version = "1.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3e5df347f0bf3ec1d670aad6ca5c6a1859cd9ea61d2113125794654ccced68f"

View File

@@ -0,0 +1,11 @@
[package]
name = "generate-schema"
version = "0.1.0"
edition = "2021"
[dependencies]
ungrammar = "1.16.1"
proc-macro2 = "1.0.33"
quote = "1.0.12"
itertools = "0.10.1"

View File

@@ -0,0 +1,718 @@
// Rust Un-Grammar.
//
// This grammar specifies the structure of Rust's concrete syntax tree.
// It does not specify parsing rules (ambiguities, precedence, etc are out of scope).
// Tokens are processed -- contextual keywords are recognised, compound operators glued.
//
// Legend:
//
// // -- comment
// Name = -- non-terminal definition
// 'ident' -- keyword or punct token (terminal)
// '#ident' -- generic token (terminal)
// '@ident' -- literal token (terminal)
// A B -- sequence
// A | B -- alternation
// A* -- zero or more repetition
// A? -- zero or one repetition
// (A) -- same as A
// label:A -- suggested name for field of AST node
//*************************//
// Paths //
//*************************//
Name =
'#ident' | 'self'
NameRef =
'#ident' | '@int_number' | 'self' | 'super' | 'crate' | 'Self'
Lifetime =
'#lifetime_ident'
Path =
(qualifier:Path '::')? segment:PathSegment
PathSegment =
'::'? NameRef
| NameRef GenericArgList?
| NameRef ParamList RetType?
| NameRef ReturnTypeSyntax
| '<' Type ('as' PathType)? '>'
ReturnTypeSyntax =
'(' '..' ')'
//*************************//
// Generics //
//*************************//
GenericArgList =
'::'? '<' (GenericArg (',' GenericArg)* ','?)? '>'
GenericArg =
TypeArg
| AssocTypeArg
| LifetimeArg
| ConstArg
TypeArg =
Type
AssocTypeArg =
NameRef
(GenericArgList | ParamList RetType? | ReturnTypeSyntax)?
(':' TypeBoundList | ('=' Type | ConstArg))
LifetimeArg =
Lifetime
ConstArg =
Expr
GenericParamList =
'<' (GenericParam (',' GenericParam)* ','?)? '>'
GenericParam =
ConstParam
| LifetimeParam
| TypeParam
TypeParam =
Attr* Name (':' TypeBoundList?)?
('=' default_type:Type)?
ConstParam =
Attr* 'const' Name ':' Type
('=' default_val:ConstArg)?
LifetimeParam =
Attr* Lifetime (':' TypeBoundList?)?
WhereClause =
'where' predicates:(WherePred (',' WherePred)* ','?)
WherePred =
('for' GenericParamList)? (Lifetime | Type) ':' TypeBoundList?
//*************************//
// Macro //
//*************************//
MacroCall =
Attr* Path '!' TokenTree ';'?
TokenTree =
'(' ')'
| '{' '}'
| '[' ']'
MacroItems =
Item*
MacroStmts =
statements:Stmt*
Expr?
Attr =
'#' '!'? '[' Meta ']'
Meta =
'unsafe' '(' Path ('=' Expr | TokenTree)? ')'
| Path ('=' Expr | TokenTree)?
//*************************//
// Items //
//*************************//
SourceFile =
'#shebang'?
Attr*
Item*
Item =
Const
| Enum
| ExternBlock
| ExternCrate
| Fn
| Impl
| MacroCall
| MacroRules
| MacroDef
| Module
| Static
| Struct
| Trait
| TraitAlias
| TypeAlias
| Union
| Use
MacroRules =
Attr* Visibility?
'macro_rules' '!' Name
TokenTree
MacroDef =
Attr* Visibility?
'macro' Name args:TokenTree?
body:TokenTree
Module =
Attr* Visibility?
'mod' Name
(ItemList | ';')
ItemList =
'{' Attr* Item* '}'
ExternCrate =
Attr* Visibility?
'extern' 'crate' NameRef Rename? ';'
Rename =
'as' (Name | '_')
Use =
Attr* Visibility?
'use' UseTree ';'
UseTree =
(Path? '::')? ('*' | UseTreeList)
| Path Rename?
UseTreeList =
'{' (UseTree (',' UseTree)* ','?)? '}'
Fn =
Attr* Visibility?
'default'? 'const'? 'async'? 'gen'? 'unsafe'? Abi?
'fn' Name GenericParamList? ParamList RetType? WhereClause?
(body:BlockExpr | ';')
Abi =
'extern' '@string'?
ParamList =
'('(
SelfParam
| (SelfParam ',')? (Param (',' Param)* ','?)?
)')'
| '|' (Param (',' Param)* ','?)? '|'
SelfParam =
Attr* (
('&' Lifetime?)? 'mut'? Name
| 'mut'? Name ':' Type
)
Param =
Attr* (
Pat (':' Type)?
| Type
| '...'
)
RetType =
'->' Type
TypeAlias =
Attr* Visibility?
'default'?
'type' Name GenericParamList? (':' TypeBoundList?)? WhereClause?
('=' Type)? ';'
Struct =
Attr* Visibility?
'struct' Name GenericParamList? (
WhereClause? (RecordFieldList | ';')
| TupleFieldList WhereClause? ';'
)
RecordFieldList =
'{' fields:(RecordField (',' RecordField)* ','?)? '}'
RecordField =
Attr* Visibility?
Name ':' Type
TupleFieldList =
'(' fields:(TupleField (',' TupleField)* ','?)? ')'
TupleField =
Attr* Visibility?
Type
FieldList =
RecordFieldList
| TupleFieldList
Enum =
Attr* Visibility?
'enum' Name GenericParamList? WhereClause?
VariantList
VariantList =
'{' (Variant (',' Variant)* ','?)? '}'
Variant =
Attr* Visibility?
Name FieldList? ('=' Expr)?
Union =
Attr* Visibility?
'union' Name GenericParamList? WhereClause?
RecordFieldList
// A Data Type.
//
// Not used directly in the grammar, but handy to have anyway.
Adt =
Enum
| Struct
| Union
Const =
Attr* Visibility?
'default'?
'const' (Name | '_') ':' Type
('=' body:Expr)? ';'
Static =
Attr* Visibility?
'static' 'mut'? Name ':' Type
('=' body:Expr)? ';'
Trait =
Attr* Visibility?
'unsafe'? 'auto'?
'trait' Name GenericParamList?
(':' TypeBoundList?)? WhereClause? AssocItemList
TraitAlias =
Attr* Visibility?
'trait' Name GenericParamList? '=' TypeBoundList? WhereClause? ';'
AssocItemList =
'{' Attr* AssocItem* '}'
AssocItem =
Const
| Fn
| MacroCall
| TypeAlias
Impl =
Attr* Visibility?
'default'? 'unsafe'?
'impl' GenericParamList? ('const'? '!'? trait:Type 'for')? self_ty:Type WhereClause?
AssocItemList
ExternBlock =
Attr* 'unsafe'? Abi ExternItemList
ExternItemList =
'{' Attr* ExternItem* '}'
ExternItem =
Fn
| MacroCall
| Static
| TypeAlias
Visibility =
'pub' ('(' 'in'? Path ')')?
//****************************//
// Statements and Expressions //
//****************************//
Stmt =
';'
| ExprStmt
| Item
| LetStmt
LetStmt =
Attr* 'let' Pat (':' Type)?
'=' initializer:Expr
LetElse?
';'
LetElse =
'else' BlockExpr
ExprStmt =
Expr ';'?
Expr =
ArrayExpr
| AsmExpr
| AwaitExpr
| BinExpr
| BlockExpr
| BreakExpr
| CallExpr
| CastExpr
| ClosureExpr
| ContinueExpr
| FieldExpr
| ForExpr
| FormatArgsExpr
| IfExpr
| IndexExpr
| Literal
| LoopExpr
| MacroExpr
| MatchExpr
| MethodCallExpr
| OffsetOfExpr
| ParenExpr
| PathExpr
| PrefixExpr
| RangeExpr
| RecordExpr
| RefExpr
| ReturnExpr
| BecomeExpr
| TryExpr
| TupleExpr
| WhileExpr
| YieldExpr
| YeetExpr
| LetExpr
| UnderscoreExpr
OffsetOfExpr =
Attr* 'builtin' '#' 'offset_of' '(' Type ',' fields:(NameRef ('.' NameRef)* ) ')'
AsmExpr =
Attr* 'builtin' '#' 'asm' '(' Expr ')'
FormatArgsExpr =
Attr* 'builtin' '#' 'format_args' '('
template:Expr
(',' args:(FormatArgsArg (',' FormatArgsArg)* ','?)? )?
')'
FormatArgsArg =
(Name '=')? Expr
MacroExpr =
MacroCall
Literal =
Attr* value:(
'@int_number' | '@float_number'
| '@string' | '@raw_string'
| '@byte_string' | '@raw_byte_string'
| '@c_string' | '@raw_c_string'
| '@char' | '@byte'
| 'true' | 'false'
)
PathExpr =
Attr* Path
StmtList =
'{'
Attr*
statements:Stmt*
tail_expr:Expr?
'}'
RefExpr =
Attr* '&' (('raw' 'const'?)| ('raw'? 'mut') ) Expr
TryExpr =
Attr* Expr '?'
BlockExpr =
Attr* Label? ('try' | 'unsafe' | ('async' 'move'?) | ('gen' 'move'?) | 'const') StmtList
PrefixExpr =
Attr* op:('-' | '!' | '*') Expr
BinExpr =
Attr*
lhs:Expr
op:(
'||' | '&&'
| '==' | '!=' | '<=' | '>=' | '<' | '>'
| '+' | '*' | '-' | '/' | '%' | '<<' | '>>' | '^' | '|' | '&'
| '=' | '+=' | '/=' | '*=' | '%=' | '>>=' | '<<=' | '-=' | '|=' | '&=' | '^='
)
rhs:Expr
CastExpr =
Attr* Expr 'as' Type
ParenExpr =
Attr* '(' Attr* Expr ')'
ArrayExpr =
Attr* '[' Attr* (
(Expr (',' Expr)* ','?)?
| Expr ';' Expr
) ']'
IndexExpr =
Attr* base:Expr '[' index:Expr ']'
TupleExpr =
Attr* '(' Attr* fields:(Expr (',' Expr)* ','?)? ')'
RecordExpr =
Path RecordExprFieldList
RecordExprFieldList =
'{'
Attr*
fields:(RecordExprField (',' RecordExprField)* ','?)?
('..' spread:Expr?)?
'}'
RecordExprField =
Attr* (NameRef ':')? Expr
CallExpr =
Attr* Expr ArgList
ArgList =
'(' args:(Expr (',' Expr)* ','?)? ')'
MethodCallExpr =
Attr* receiver:Expr '.' NameRef GenericArgList? ArgList
FieldExpr =
Attr* Expr '.' NameRef
ClosureExpr =
Attr* ClosureBinder? 'const'? 'static'? 'async'? 'gen'? 'move'? ParamList RetType?
body:Expr
ClosureBinder =
'for' GenericParamList
IfExpr =
Attr* 'if' condition:Expr then_branch:BlockExpr
('else' else_branch:(IfExpr | BlockExpr))?
LoopExpr =
Attr* Label? 'loop'
loop_body:BlockExpr
ForExpr =
Attr* Label? 'for' Pat 'in' iterable:Expr
loop_body:BlockExpr
WhileExpr =
Attr* Label? 'while' condition:Expr
loop_body:BlockExpr
Label =
Lifetime ':'
BreakExpr =
Attr* 'break' Lifetime? Expr?
ContinueExpr =
Attr* 'continue' Lifetime?
RangeExpr =
Attr* start:Expr? op:('..' | '..=') end:Expr?
MatchExpr =
Attr* 'match' Expr MatchArmList
MatchArmList =
'{'
Attr*
arms:MatchArm*
'}'
MatchArm =
Attr* Pat guard:MatchGuard? '=>' Expr ','?
MatchGuard =
'if' condition:Expr
ReturnExpr =
Attr* 'return' Expr?
BecomeExpr =
Attr* 'become' Expr
YieldExpr =
Attr* 'yield' Expr?
YeetExpr =
Attr* 'do' 'yeet' Expr?
LetExpr =
Attr* 'let' Pat '=' Expr
UnderscoreExpr =
Attr* '_'
AwaitExpr =
Attr* Expr '.' 'await'
//*************************//
// Types //
//*************************//
Type =
ArrayType
| DynTraitType
| FnPtrType
| ForType
| ImplTraitType
| InferType
| MacroType
| NeverType
| ParenType
| PathType
| PtrType
| RefType
| SliceType
| TupleType
ParenType =
'(' Type ')'
NeverType =
'!'
MacroType =
MacroCall
PathType =
Path
TupleType =
'(' fields:(Type (',' Type)* ','?)? ')'
PtrType =
'*' ('const' | 'mut') Type
RefType =
'&' Lifetime? 'mut'? Type
ArrayType =
'[' Type ';' ConstArg ']'
SliceType =
'[' Type ']'
InferType =
'_'
FnPtrType =
'const'? 'async'? 'unsafe'? Abi? 'fn' ParamList RetType?
ForType =
'for' GenericParamList Type
ImplTraitType =
'impl' TypeBoundList
DynTraitType =
'dyn'? TypeBoundList
TypeBoundList =
bounds:(TypeBound ('+' TypeBound)* '+'?)
TypeBound =
Lifetime
| ('~' 'const' | 'const')? 'async'? '?'? Type
| 'use' GenericParamList
//************************//
// Patterns //
//************************//
Pat =
IdentPat
| BoxPat
| RestPat
| LiteralPat
| MacroPat
| OrPat
| ParenPat
| PathPat
| WildcardPat
| RangePat
| RecordPat
| RefPat
| SlicePat
| TuplePat
| TupleStructPat
| ConstBlockPat
LiteralPat =
'-'? Literal
IdentPat =
Attr* 'ref'? 'mut'? Name ('@' Pat)?
WildcardPat =
'_'
RangePat =
// 1..
start:Pat op:('..' | '..=')
// 1..2
| start:Pat op:('..' | '..=') end:Pat
// ..2
| op:('..' | '..=') end:Pat
RefPat =
'&' 'mut'? Pat
RecordPat =
Path RecordPatFieldList
RecordPatFieldList =
'{'
fields:(RecordPatField (',' RecordPatField)* ','?)?
RestPat?
'}'
RecordPatField =
Attr* (NameRef ':')? Pat
TupleStructPat =
Path '(' fields:(Pat (',' Pat)* ','?)? ')'
TuplePat =
'(' fields:(Pat (',' Pat)* ','?)? ')'
ParenPat =
'(' Pat ')'
SlicePat =
'[' (Pat (',' Pat)* ','?)? ']'
PathPat =
Path
OrPat =
(Pat ('|' Pat)* '|'?)
BoxPat =
'box' Pat
RestPat =
Attr* '..'
MacroPat =
MacroCall
ConstBlockPat =
'const' BlockExpr

View File

@@ -0,0 +1,16 @@
pub mod grammar;
pub fn reformat(x: String) -> String {
x
}
pub fn add_preamble(_x: crate::flags::CodegenType, y: String) -> String {
y
}
pub fn ensure_file_contents(
_x: crate::flags::CodegenType,
path: &std::path::Path,
contents: &String,
_check: bool,
) {
std::fs::write(path, contents).expect("Unable to write file");
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,244 @@
//! Defines input for code generation process.
use quote::ToTokens;
use crate::codegen::grammar::to_upper_snake_case;
#[derive(Copy, Clone, Debug)]
pub(crate) struct KindsSrc {
pub(crate) punct: &'static [(&'static str, &'static str)],
pub(crate) keywords: &'static [&'static str],
pub(crate) contextual_keywords: &'static [&'static str],
pub(crate) literals: &'static [&'static str],
pub(crate) tokens: &'static [&'static str],
pub(crate) nodes: &'static [&'static str],
pub(crate) edition_dependent_keywords: &'static [(&'static str, Edition)],
}
#[allow(dead_code)]
#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]
pub(super) enum Edition {
Edition2015,
Edition2018,
Edition2021,
Edition2024,
}
impl ToTokens for Edition {
fn to_tokens(&self, tokens: &mut proc_macro2::TokenStream) {
match self {
Edition::Edition2015 => {
tokens.extend(quote::quote! { Edition::Edition2015 });
}
Edition::Edition2018 => {
tokens.extend(quote::quote! { Edition::Edition2018 });
}
Edition::Edition2021 => {
tokens.extend(quote::quote! { Edition::Edition2021 });
}
Edition::Edition2024 => {
tokens.extend(quote::quote! { Edition::Edition2024 });
}
}
}
}
/// The punctuations of the language.
const PUNCT: &[(&str, &str)] = &[
// KEEP THE DOLLAR AT THE TOP ITS SPECIAL
("$", "DOLLAR"),
(";", "SEMICOLON"),
(",", "COMMA"),
("(", "L_PAREN"),
(")", "R_PAREN"),
("{", "L_CURLY"),
("}", "R_CURLY"),
("[", "L_BRACK"),
("]", "R_BRACK"),
("<", "L_ANGLE"),
(">", "R_ANGLE"),
("@", "AT"),
("#", "POUND"),
("~", "TILDE"),
("?", "QUESTION"),
("&", "AMP"),
("|", "PIPE"),
("+", "PLUS"),
("*", "STAR"),
("/", "SLASH"),
("^", "CARET"),
("%", "PERCENT"),
("_", "UNDERSCORE"),
(".", "DOT"),
("..", "DOT2"),
("...", "DOT3"),
("..=", "DOT2EQ"),
(":", "COLON"),
("::", "COLON2"),
("=", "EQ"),
("==", "EQ2"),
("=>", "FAT_ARROW"),
("!", "BANG"),
("!=", "NEQ"),
("-", "MINUS"),
("->", "THIN_ARROW"),
("<=", "LTEQ"),
(">=", "GTEQ"),
("+=", "PLUSEQ"),
("-=", "MINUSEQ"),
("|=", "PIPEEQ"),
("&=", "AMPEQ"),
("^=", "CARETEQ"),
("/=", "SLASHEQ"),
("*=", "STAREQ"),
("%=", "PERCENTEQ"),
("&&", "AMP2"),
("||", "PIPE2"),
("<<", "SHL"),
(">>", "SHR"),
("<<=", "SHLEQ"),
(">>=", "SHREQ"),
];
const TOKENS: &[&str] = &["ERROR", "WHITESPACE", "NEWLINE", "COMMENT"];
// &["ERROR", "IDENT", "WHITESPACE", "LIFETIME_IDENT", "COMMENT", "SHEBANG"],;
const EOF: &str = "EOF";
const RESERVED: &[&str] = &[
"abstract", "become", "box", "do", "final", "macro", "override", "priv", "typeof", "unsized",
"virtual", "yield",
];
// keywords that are keywords only in specific parse contexts
#[doc(alias = "WEAK_KEYWORDS")]
const CONTEXTUAL_KEYWORDS: &[&str] =
&["macro_rules", "union", "default", "raw", "dyn", "auto", "yeet"];
// keywords we use for special macro expansions
const CONTEXTUAL_BUILTIN_KEYWORDS: &[&str] = &["builtin", "offset_of", "format_args", "asm"];
// keywords that are keywords depending on the edition
const EDITION_DEPENDENT_KEYWORDS: &[(&str, Edition)] = &[
("try", Edition::Edition2018),
("dyn", Edition::Edition2018),
("async", Edition::Edition2018),
("await", Edition::Edition2018),
("gen", Edition::Edition2024),
];
pub(crate) fn generate_kind_src(
nodes: &[AstNodeSrc],
enums: &[AstEnumSrc],
grammar: &ungrammar::Grammar,
) -> KindsSrc {
let mut contextual_keywords: Vec<&_> =
CONTEXTUAL_KEYWORDS.iter().chain(CONTEXTUAL_BUILTIN_KEYWORDS).copied().collect();
let mut keywords: Vec<&_> = Vec::new();
let mut tokens: Vec<&_> = TOKENS.to_vec();
let mut literals: Vec<&_> = Vec::new();
let mut used_puncts = vec![false; PUNCT.len()];
// Mark $ as used
used_puncts[0] = true;
grammar.tokens().for_each(|token| {
let name = &*grammar[token].name;
if name == EOF {
return;
}
match name.split_at(1) {
("@", lit) if !lit.is_empty() => {
literals.push(String::leak(to_upper_snake_case(lit)));
}
("#", token) if !token.is_empty() => {
tokens.push(String::leak(to_upper_snake_case(token)));
}
_ if contextual_keywords.contains(&name) => {}
_ if name.chars().all(char::is_alphabetic) => {
keywords.push(String::leak(name.to_owned()));
}
_ => {
let idx = PUNCT
.iter()
.position(|(punct, _)| punct == &name)
.unwrap_or_else(|| panic!("Grammar references unknown punctuation {name:?}"));
used_puncts[idx] = true;
}
}
});
PUNCT.iter().zip(used_puncts).filter(|(_, used)| !used).for_each(|((punct, _), _)| {
panic!("Punctuation {punct:?} is not used in grammar");
});
keywords.extend(RESERVED.iter().copied());
keywords.sort();
keywords.dedup();
contextual_keywords.sort();
contextual_keywords.dedup();
let mut edition_dependent_keywords: Vec<(&_, _)> = EDITION_DEPENDENT_KEYWORDS.to_vec();
edition_dependent_keywords.sort();
edition_dependent_keywords.dedup();
keywords.retain(|&it| !contextual_keywords.contains(&it));
keywords.retain(|&it| !edition_dependent_keywords.iter().any(|&(kw, _)| kw == it));
// we leak things here for simplicity, that way we don't have to deal with lifetimes
// The execution is a one shot job so thats fine
let nodes = nodes
.iter()
.map(|it| &it.name)
.chain(enums.iter().map(|it| &it.name))
.map(|it| to_upper_snake_case(it))
.map(String::leak)
.map(|it| &*it)
.collect();
let nodes = Vec::leak(nodes);
nodes.sort();
let keywords = Vec::leak(keywords);
let contextual_keywords = Vec::leak(contextual_keywords);
let edition_dependent_keywords = Vec::leak(edition_dependent_keywords);
let literals = Vec::leak(literals);
literals.sort();
let tokens = Vec::leak(tokens);
tokens.sort();
KindsSrc {
punct: PUNCT,
nodes,
keywords,
contextual_keywords,
edition_dependent_keywords,
literals,
tokens,
}
}
#[derive(Default, Debug)]
pub(crate) struct AstSrc {
pub(crate) tokens: Vec<String>,
pub(crate) nodes: Vec<AstNodeSrc>,
pub(crate) enums: Vec<AstEnumSrc>,
}
#[derive(Debug)]
pub(crate) struct AstNodeSrc {
pub(crate) doc: Vec<String>,
pub(crate) name: String,
pub(crate) traits: Vec<String>,
pub(crate) fields: Vec<Field>,
}
#[derive(Debug, Eq, PartialEq)]
pub(crate) enum Field {
Token(String),
Node { name: String, ty: String, cardinality: Cardinality },
}
#[derive(Debug, Eq, PartialEq)]
pub(crate) enum Cardinality {
Optional,
Many,
}
#[derive(Debug)]
pub(crate) struct AstEnumSrc {
pub(crate) doc: Vec<String>,
pub(crate) name: String,
pub(crate) traits: Vec<String>,
pub(crate) variants: Vec<String>,
}

View File

@@ -0,0 +1,11 @@
use std::fmt::Display;
pub enum CodegenType {
Grammar,
}
impl Display for CodegenType {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "Grammar")
}
}

View File

@@ -0,0 +1,503 @@
use std::{fs, path::PathBuf};
pub mod codegen;
mod flags;
use codegen::grammar::ast_src::{AstNodeSrc, AstSrc};
use std::collections::{BTreeMap, BTreeSet};
use std::env;
use ungrammar::Grammar;
fn project_root() -> PathBuf {
let dir =
env::var("CARGO_MANIFEST_DIR").unwrap_or_else(|_| env!("CARGO_MANIFEST_DIR").to_owned());
PathBuf::from(dir).parent().unwrap().to_owned()
}
fn class_name(type_name: &String) -> String {
match type_name.as_str() {
"BinExpr" => "BinaryExpr".to_owned(),
"ElseBranch" => "Expr".to_owned(),
"Fn" => "Function".to_owned(),
"Literal" => "LiteralExpr".to_owned(),
"Type" => "TypeRef".to_owned(),
_ => type_name.to_owned(),
}
}
fn property_name(type_name: &String, field_name: &String) -> String {
match (type_name.as_str(), field_name.as_str()) {
("Path", "segment") => "part".to_owned(),
(_, "then_branch") => "then".to_owned(),
(_, "else_branch") => "else_".to_owned(),
_ => field_name.to_owned(),
}
}
fn to_lower_snake_case(s: &str) -> String {
let mut buf = String::with_capacity(s.len());
let mut prev = false;
for c in s.chars() {
if c.is_ascii_uppercase() && prev {
buf.push('_')
}
prev = true;
buf.push(c.to_ascii_lowercase());
}
buf
}
fn print_schema(grammar: &AstSrc, super_types: BTreeMap<String, BTreeSet<String>>) {
for node in &grammar.enums {
let super_classses = if let Some(cls) = super_types.get(&node.name) {
let super_classes: Vec<String> = cls.iter().map(|x| class_name(x)).collect();
super_classes.join(",")
} else {
"AstNode".to_owned()
};
println!("class {}({}):", class_name(&node.name), super_classses);
println!(" pass");
println!("");
}
for node in &grammar.nodes {
let super_classses = if let Some(cls) = super_types.get(&node.name) {
let super_classes: Vec<String> = cls.iter().map(|x| class_name(x)).collect();
super_classes.join(",")
} else {
"AstNode".to_owned()
};
println!("class {}({}):", class_name(&node.name), super_classses);
let mut empty = true;
for field in get_fields(node) {
if field.tp == "SyntaxToken" {
continue;
}
empty = false;
if field.tp == "string" {
println!(
" {}: optional[string]",
property_name(&node.name, &field.name),
);
} else {
let list = field.is_many;
let (o, c) = if list {
("list[", "]")
} else {
("optional[", "]")
};
println!(
" {}: {}\"{}\"{} | child",
property_name(&node.name, &field.name),
o,
class_name(&field.tp),
c
);
};
}
if empty {
println!(" pass");
}
println!("");
}
}
struct FieldInfo {
name: String,
tp: String,
is_many: bool,
}
fn get_fields(node: &AstNodeSrc) -> Vec<FieldInfo> {
let mut result = Vec::new();
match node.name.as_str() {
"Name" | "NameRef" | "Lifetime" => {
result.push(FieldInfo {
name: "text".to_string(),
tp: "string".to_string(),
is_many: false,
});
}
"Abi" => {
result.push(FieldInfo {
name: "abi_string".to_string(),
tp: "string".to_string(),
is_many: false,
});
}
"Literal" => {
result.push(FieldInfo {
name: "text_value".to_string(),
tp: "string".to_string(),
is_many: false,
});
}
"PrefixExpr" => {
result.push(FieldInfo {
name: "operator_name".to_string(),
tp: "string".to_string(),
is_many: false,
});
}
"BinExpr" => {
result.push(FieldInfo {
name: "lhs".to_string(),
tp: "Expr".to_string(),
is_many: false,
});
result.push(FieldInfo {
name: "rhs".to_string(),
tp: "Expr".to_string(),
is_many: false,
});
result.push(FieldInfo {
name: "operator_name".to_string(),
tp: "string".to_string(),
is_many: false,
});
}
"IfExpr" => {
result.push(FieldInfo {
name: "then_branch".to_string(),
tp: "BlockExpr".to_string(),
is_many: false,
});
result.push(FieldInfo {
name: "else_branch".to_string(),
tp: "ElseBranch".to_string(),
is_many: false,
});
result.push(FieldInfo {
name: "condition".to_string(),
tp: "Expr".to_string(),
is_many: false,
});
}
"RangeExpr" => {
result.push(FieldInfo {
name: "start".to_string(),
tp: "Expr".to_string(),
is_many: false,
});
result.push(FieldInfo {
name: "end".to_string(),
tp: "Expr".to_string(),
is_many: false,
});
result.push(FieldInfo {
name: "operator_name".to_string(),
tp: "string".to_string(),
is_many: false,
});
}
"RangePat" => {
result.push(FieldInfo {
name: "start".to_string(),
tp: "Pat".to_string(),
is_many: false,
});
result.push(FieldInfo {
name: "end".to_string(),
tp: "Pat".to_string(),
is_many: false,
});
result.push(FieldInfo {
name: "operator_name".to_string(),
tp: "string".to_string(),
is_many: false,
});
}
"IndexExpr" => {
result.push(FieldInfo {
name: "index".to_string(),
tp: "Expr".to_string(),
is_many: false,
});
result.push(FieldInfo {
name: "base".to_string(),
tp: "Expr".to_string(),
is_many: false,
});
}
"Impl" => {
result.push(FieldInfo {
name: "trait_".to_string(),
tp: "Type".to_string(),
is_many: false,
});
result.push(FieldInfo {
name: "self_ty".to_string(),
tp: "Type".to_string(),
is_many: false,
});
}
"ForExpr" => {
result.push(FieldInfo {
name: "iterable".to_string(),
tp: "Expr".to_string(),
is_many: false,
});
}
"WhileExpr" => {
result.push(FieldInfo {
name: "condition".to_string(),
tp: "Expr".to_string(),
is_many: false,
});
}
"MatchGuard" => {
result.push(FieldInfo {
name: "condition".to_string(),
tp: "Expr".to_string(),
is_many: false,
});
}
"MacroDef" => {
result.push(FieldInfo {
name: "args".to_string(),
tp: "TokenTree".to_string(),
is_many: false,
});
result.push(FieldInfo {
name: "body".to_string(),
tp: "TokenTree".to_string(),
is_many: false,
});
}
"FormatArgsExpr" => {
result.push(FieldInfo {
name: "args".to_string(),
tp: "FormatArgsArg".to_string(),
is_many: true,
});
}
"ArgList" => {
result.push(FieldInfo {
name: "args".to_string(),
tp: "Expr".to_string(),
is_many: true,
});
}
"Fn" => {
result.push(FieldInfo {
name: "body".to_string(),
tp: "BlockExpr".to_string(),
is_many: false,
});
}
"Const" => {
result.push(FieldInfo {
name: "body".to_string(),
tp: "Expr".to_string(),
is_many: false,
});
}
"Static" => {
result.push(FieldInfo {
name: "body".to_string(),
tp: "Expr".to_string(),
is_many: false,
});
}
"ClosureExpr" => {
result.push(FieldInfo {
name: "body".to_string(),
tp: "Expr".to_string(),
is_many: false,
});
}
_ => {}
}
for field in &node.fields {
// The ArrayExpr type also has an 'exprs' field
if node.name == "ArrayExpr" && field.method_name() == "expr" {
continue;
}
result.push(FieldInfo {
name: field.method_name(),
tp: field.ty().to_string(),
is_many: field.is_many(),
});
}
for trait_ in &node.traits {
match trait_.as_str() {
"HasAttrs" => result.push(FieldInfo {
name: "attrs".to_owned(),
tp: "Attr".to_owned(),
is_many: true,
}),
"HasName" => result.push(FieldInfo {
name: "name".to_owned(),
tp: "Name".to_owned(),
is_many: false,
}),
"HasVisibility" => result.push(FieldInfo {
name: "visibility".to_owned(),
tp: "Visibility".to_owned(),
is_many: false,
}),
"HasGenericParams" => {
result.push(FieldInfo {
name: "generic_param_list".to_owned(),
tp: "GenericParamList".to_owned(),
is_many: false,
});
result.push(FieldInfo {
name: "where_clause".to_owned(),
tp: "WhereClause".to_owned(),
is_many: false,
})
}
"HasGenericArgs" => result.push(FieldInfo {
name: "generic_arg_list".to_owned(),
tp: "GenericArgList".to_owned(),
is_many: false,
}),
"HasTypeBounds" => result.push(FieldInfo {
name: "type_bound_list".to_owned(),
tp: "TypeBoundList".to_owned(),
is_many: false,
}),
"HasModuleItem" => result.push(FieldInfo {
name: "items".to_owned(),
tp: "Item".to_owned(),
is_many: true,
}),
"HasLoopBody" => {
result.push(FieldInfo {
name: "label".to_owned(),
tp: "Label".to_owned(),
is_many: false,
});
result.push(FieldInfo {
name: "loop_body".to_owned(),
tp: "BlockExpr".to_owned(),
is_many: false,
})
}
"HasArgList" => result.push(FieldInfo {
name: "arg_list".to_owned(),
tp: "ArgList".to_owned(),
is_many: false,
}),
"HasDocComments" => {}
_ => panic!("Unknown trait {}", trait_),
};
}
result.sort_by(|x, y| x.name.cmp(&y.name));
result
}
fn print_extractor(grammar: &AstSrc) {
for node in &grammar.enums {
let type_name = &node.name;
let class_name = class_name(&node.name);
println!(
" fn emit_{}(&mut self, node: ast::{}) -> Label<generated::{}> {{",
to_lower_snake_case(type_name),
type_name,
class_name
);
println!(" match node {{");
for variant in &node.variants {
println!(
" ast::{}::{}(inner) => self.emit_{}(inner).into(),",
type_name,
variant,
to_lower_snake_case(variant)
);
}
println!(" }}");
println!(" }}\n");
}
for node in &grammar.nodes {
let type_name = &node.name;
let class_name = class_name(&node.name);
println!(
" fn emit_{}(&mut self, node: ast::{}) -> Label<generated::{}> {{",
to_lower_snake_case(type_name),
type_name,
class_name
);
for field in get_fields(&node) {
if &field.tp == "SyntaxToken" {
continue;
}
let type_name = &field.tp;
let struct_field_name = &field.name;
let class_field_name = property_name(&node.name, &field.name);
if field.tp == "string" {
println!(" let {} = node.try_get_text();", class_field_name,);
} else if field.is_many {
println!(
" let {} = node.{}().map(|x| self.emit_{}(x)).collect();",
class_field_name,
struct_field_name,
to_lower_snake_case(type_name)
);
} else {
println!(
" let {} = node.{}().map(|x| self.emit_{}(x));",
class_field_name,
struct_field_name,
to_lower_snake_case(type_name)
);
}
}
println!(
" let label = self.trap.emit(generated::{} {{",
class_name
);
println!(" id: TrapId::Star,");
for field in get_fields(&node) {
if field.tp == "SyntaxToken" {
continue;
}
let class_field_name: String = property_name(&node.name, &field.name);
println!(" {},", class_field_name);
}
println!(" }});");
println!(" self.emit_location(label, node);");
println!(" label");
println!(" }}\n");
}
}
fn main() {
let grammar: Grammar = fs::read_to_string(project_root().join("generate-schema/rust.ungram"))
.unwrap()
.parse()
.unwrap();
let mut grammar = codegen::grammar::lower(&grammar);
grammar
.nodes
.retain(|x| x.name != "MacroStmts" && x.name != "MacroItems");
grammar.enums.retain(|x| x.name != "Adt");
let mut super_types: BTreeMap<String, BTreeSet<String>> = BTreeMap::new();
for node in &grammar.enums {
for variant in &node.variants {
let set = super_types
.entry(variant.to_owned())
.or_insert_with(|| BTreeSet::new());
set.insert(node.name.to_owned());
}
}
// sort things while ensuring super clases are defined before they are used
grammar.enums.sort_by(|x, y| {
let super_class_x = super_types.get(&x.name).into_iter().flatten().max();
let super_class_y = super_types.get(&y.name).into_iter().flatten().max();
super_class_x.cmp(&super_class_y).then(x.name.cmp(&y.name))
});
//print_schema(&grammar, super_types);
print_extractor(&grammar);
}

View File

@@ -1,4 +1,5 @@
src/directory_module/mod.rs
src/directory_module/nested_module.rs
src/directory_module/not_loaded.rs
src/file_module.rs
src/main.rs

1016
rust/ql/.generated.list generated

File diff suppressed because it is too large Load Diff

662
rust/ql/.gitattributes generated vendored
View File

@@ -1,97 +1,186 @@
/.generated.list linguist-generated
/.gitattributes linguist-generated
/lib/codeql/rust/elements/Abi.qll linguist-generated
/lib/codeql/rust/elements/ArgList.qll linguist-generated
/lib/codeql/rust/elements/ArrayExpr.qll linguist-generated
/lib/codeql/rust/elements/ArrayType.qll linguist-generated
/lib/codeql/rust/elements/AsmExpr.qll linguist-generated
/lib/codeql/rust/elements/AssocItem.qll linguist-generated
/lib/codeql/rust/elements/AssocItemList.qll linguist-generated
/lib/codeql/rust/elements/AssocTypeArg.qll linguist-generated
/lib/codeql/rust/elements/AstNode.qll linguist-generated
/lib/codeql/rust/elements/AsyncBlockExpr.qll linguist-generated
/lib/codeql/rust/elements/Attr.qll linguist-generated
/lib/codeql/rust/elements/AwaitExpr.qll linguist-generated
/lib/codeql/rust/elements/BecomeExpr.qll linguist-generated
/lib/codeql/rust/elements/BinaryExpr.qll linguist-generated
/lib/codeql/rust/elements/BlockExpr.qll linguist-generated
/lib/codeql/rust/elements/BlockExprBase.qll linguist-generated
/lib/codeql/rust/elements/BoxExpr.qll linguist-generated
/lib/codeql/rust/elements/BoxPat.qll linguist-generated
/lib/codeql/rust/elements/BreakExpr.qll linguist-generated
/lib/codeql/rust/elements/CallExpr.qll linguist-generated
/lib/codeql/rust/elements/CastExpr.qll linguist-generated
/lib/codeql/rust/elements/ClosureBinder.qll linguist-generated
/lib/codeql/rust/elements/ClosureExpr.qll linguist-generated
/lib/codeql/rust/elements/Const.qll linguist-generated
/lib/codeql/rust/elements/ConstArg.qll linguist-generated
/lib/codeql/rust/elements/ConstBlockPat.qll linguist-generated
/lib/codeql/rust/elements/ConstExpr.qll linguist-generated
/lib/codeql/rust/elements/ConstParam.qll linguist-generated
/lib/codeql/rust/elements/ContinueExpr.qll linguist-generated
/lib/codeql/rust/elements/Declaration.qll linguist-generated
/lib/codeql/rust/elements/DynTraitType.qll linguist-generated
/lib/codeql/rust/elements/Element.qll linguist-generated
/lib/codeql/rust/elements/ElementListExpr.qll linguist-generated
/lib/codeql/rust/elements/Enum.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
/lib/codeql/rust/elements/ExternCrate.qll linguist-generated
/lib/codeql/rust/elements/ExternItem.qll linguist-generated
/lib/codeql/rust/elements/ExternItemList.qll linguist-generated
/lib/codeql/rust/elements/FieldExpr.qll linguist-generated
/lib/codeql/rust/elements/FieldList.qll linguist-generated
/lib/codeql/rust/elements/FnPtrType.qll linguist-generated
/lib/codeql/rust/elements/ForExpr.qll linguist-generated
/lib/codeql/rust/elements/ForType.qll linguist-generated
/lib/codeql/rust/elements/FormatArgsArg.qll linguist-generated
/lib/codeql/rust/elements/FormatArgsExpr.qll linguist-generated
/lib/codeql/rust/elements/Function.qll linguist-generated
/lib/codeql/rust/elements/GenericArg.qll linguist-generated
/lib/codeql/rust/elements/GenericArgList.qll linguist-generated
/lib/codeql/rust/elements/GenericParam.qll linguist-generated
/lib/codeql/rust/elements/GenericParamList.qll linguist-generated
/lib/codeql/rust/elements/IdentPat.qll linguist-generated
/lib/codeql/rust/elements/IfExpr.qll linguist-generated
/lib/codeql/rust/elements/Impl.qll linguist-generated
/lib/codeql/rust/elements/ImplTraitType.qll linguist-generated
/lib/codeql/rust/elements/IndexExpr.qll linguist-generated
/lib/codeql/rust/elements/ItemStmt.qll linguist-generated
/lib/codeql/rust/elements/InferType.qll linguist-generated
/lib/codeql/rust/elements/Item.qll linguist-generated
/lib/codeql/rust/elements/ItemList.qll linguist-generated
/lib/codeql/rust/elements/Label.qll linguist-generated
/lib/codeql/rust/elements/LetElse.qll linguist-generated
/lib/codeql/rust/elements/LetExpr.qll linguist-generated
/lib/codeql/rust/elements/LetStmt.qll linguist-generated
/lib/codeql/rust/elements/Lifetime.qll linguist-generated
/lib/codeql/rust/elements/LifetimeArg.qll linguist-generated
/lib/codeql/rust/elements/LifetimeParam.qll linguist-generated
/lib/codeql/rust/elements/LiteralExpr.qll linguist-generated
/lib/codeql/rust/elements/LiteralPat.qll linguist-generated
/lib/codeql/rust/elements/Locatable.qll linguist-generated
/lib/codeql/rust/elements/LoopExpr.qll linguist-generated
/lib/codeql/rust/elements/MacroCall.qll linguist-generated
/lib/codeql/rust/elements/MacroDef.qll linguist-generated
/lib/codeql/rust/elements/MacroExpr.qll linguist-generated
/lib/codeql/rust/elements/MacroPat.qll linguist-generated
/lib/codeql/rust/elements/MacroRules.qll linguist-generated
/lib/codeql/rust/elements/MacroType.qll linguist-generated
/lib/codeql/rust/elements/MatchArm.qll linguist-generated
/lib/codeql/rust/elements/MatchArmList.qll linguist-generated
/lib/codeql/rust/elements/MatchExpr.qll linguist-generated
/lib/codeql/rust/elements/MatchGuard.qll linguist-generated
/lib/codeql/rust/elements/Meta.qll linguist-generated
/lib/codeql/rust/elements/MethodCallExpr.qll linguist-generated
/lib/codeql/rust/elements/Missing.qll linguist-generated
/lib/codeql/rust/elements/MissingExpr.qll linguist-generated
/lib/codeql/rust/elements/MissingPat.qll linguist-generated
/lib/codeql/rust/elements/Module.qll linguist-generated
/lib/codeql/rust/elements/Name.qll linguist-generated
/lib/codeql/rust/elements/NameRef.qll linguist-generated
/lib/codeql/rust/elements/NeverType.qll linguist-generated
/lib/codeql/rust/elements/OffsetOfExpr.qll linguist-generated
/lib/codeql/rust/elements/OrPat.qll linguist-generated
/lib/codeql/rust/elements/Param.qll linguist-generated
/lib/codeql/rust/elements/ParamList.qll linguist-generated
/lib/codeql/rust/elements/ParenExpr.qll linguist-generated
/lib/codeql/rust/elements/ParenPat.qll linguist-generated
/lib/codeql/rust/elements/ParenType.qll linguist-generated
/lib/codeql/rust/elements/Pat.qll linguist-generated
/lib/codeql/rust/elements/Path.qll linguist-generated
/lib/codeql/rust/elements/PathExpr.qll linguist-generated
/lib/codeql/rust/elements/PathPat.qll linguist-generated
/lib/codeql/rust/elements/PathSegment.qll linguist-generated
/lib/codeql/rust/elements/PathType.qll linguist-generated
/lib/codeql/rust/elements/PrefixExpr.qll linguist-generated
/lib/codeql/rust/elements/PtrType.qll linguist-generated
/lib/codeql/rust/elements/RangeExpr.qll linguist-generated
/lib/codeql/rust/elements/RangePat.qll linguist-generated
/lib/codeql/rust/elements/RecordExpr.qll linguist-generated
/lib/codeql/rust/elements/RecordExprField.qll linguist-generated
/lib/codeql/rust/elements/RecordExprFieldList.qll linguist-generated
/lib/codeql/rust/elements/RecordField.qll linguist-generated
/lib/codeql/rust/elements/RecordFieldList.qll linguist-generated
/lib/codeql/rust/elements/RecordPat.qll linguist-generated
/lib/codeql/rust/elements/RecordPatField.qll linguist-generated
/lib/codeql/rust/elements/RecordPatFieldList.qll linguist-generated
/lib/codeql/rust/elements/RefExpr.qll linguist-generated
/lib/codeql/rust/elements/RefPat.qll linguist-generated
/lib/codeql/rust/elements/RepeatExpr.qll linguist-generated
/lib/codeql/rust/elements/RefType.qll linguist-generated
/lib/codeql/rust/elements/Rename.qll linguist-generated
/lib/codeql/rust/elements/RestPat.qll linguist-generated
/lib/codeql/rust/elements/RetType.qll linguist-generated
/lib/codeql/rust/elements/ReturnExpr.qll linguist-generated
/lib/codeql/rust/elements/ReturnTypeSyntax.qll linguist-generated
/lib/codeql/rust/elements/SelfParam.qll linguist-generated
/lib/codeql/rust/elements/SlicePat.qll linguist-generated
/lib/codeql/rust/elements/SliceType.qll linguist-generated
/lib/codeql/rust/elements/SourceFile.qll linguist-generated
/lib/codeql/rust/elements/Static.qll linguist-generated
/lib/codeql/rust/elements/Stmt.qll linguist-generated
/lib/codeql/rust/elements/StmtList.qll linguist-generated
/lib/codeql/rust/elements/Struct.qll linguist-generated
/lib/codeql/rust/elements/TokenTree.qll linguist-generated
/lib/codeql/rust/elements/Trait.qll linguist-generated
/lib/codeql/rust/elements/TraitAlias.qll linguist-generated
/lib/codeql/rust/elements/TryExpr.qll linguist-generated
/lib/codeql/rust/elements/TupleExpr.qll linguist-generated
/lib/codeql/rust/elements/TupleField.qll linguist-generated
/lib/codeql/rust/elements/TupleFieldList.qll linguist-generated
/lib/codeql/rust/elements/TuplePat.qll linguist-generated
/lib/codeql/rust/elements/TupleStructPat.qll linguist-generated
/lib/codeql/rust/elements/TupleType.qll linguist-generated
/lib/codeql/rust/elements/TypeAlias.qll linguist-generated
/lib/codeql/rust/elements/TypeArg.qll linguist-generated
/lib/codeql/rust/elements/TypeBound.qll linguist-generated
/lib/codeql/rust/elements/TypeBoundList.qll linguist-generated
/lib/codeql/rust/elements/TypeParam.qll linguist-generated
/lib/codeql/rust/elements/TypeRef.qll linguist-generated
/lib/codeql/rust/elements/UnderscoreExpr.qll linguist-generated
/lib/codeql/rust/elements/Unextracted.qll linguist-generated
/lib/codeql/rust/elements/Unimplemented.qll linguist-generated
/lib/codeql/rust/elements/UnimplementedDeclaration.qll linguist-generated
/lib/codeql/rust/elements/UnsafeBlockExpr.qll linguist-generated
/lib/codeql/rust/elements/Union.qll linguist-generated
/lib/codeql/rust/elements/Use.qll linguist-generated
/lib/codeql/rust/elements/UseTree.qll linguist-generated
/lib/codeql/rust/elements/UseTreeList.qll linguist-generated
/lib/codeql/rust/elements/Variant.qll linguist-generated
/lib/codeql/rust/elements/VariantList.qll linguist-generated
/lib/codeql/rust/elements/Visibility.qll linguist-generated
/lib/codeql/rust/elements/WhereClause.qll linguist-generated
/lib/codeql/rust/elements/WherePred.qll linguist-generated
/lib/codeql/rust/elements/WhileExpr.qll linguist-generated
/lib/codeql/rust/elements/WildcardPat.qll linguist-generated
/lib/codeql/rust/elements/YeetExpr.qll linguist-generated
/lib/codeql/rust/elements/YieldExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/AbiConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/AbiImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ArgListConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ArgListImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ArrayExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ArrayExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ArrayTypeConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ArrayTypeImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/AsmExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/AsmExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/AssocItemImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/AssocItemListConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/AssocItemListImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/AssocTypeArgConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/AssocTypeArgImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/AstNodeImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/AsyncBlockExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/AsyncBlockExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/AttrConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/AttrImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/AwaitExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/AwaitExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/BecomeExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/BecomeExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/BinaryExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/BinaryExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/BlockExprBaseImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/BlockExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/BlockExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/BoxExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/BoxExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/BoxPatConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/BoxPatImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/BreakExprConstructor.qll linguist-generated
@@ -100,62 +189,137 @@
/lib/codeql/rust/elements/internal/CallExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/CastExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/CastExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ClosureBinderConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ClosureBinderImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ClosureExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ClosureExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ConstArgConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ConstArgImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ConstBlockPatConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ConstBlockPatImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ConstExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ConstExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ConstConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ConstImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ConstParamConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ConstParamImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ContinueExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ContinueExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/DeclarationImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ElementListExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ElementListExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/DynTraitTypeConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/DynTraitTypeImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/EnumConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/EnumImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ExprStmtConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ExprStmtImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ExternBlockConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ExternBlockImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ExternCrateConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ExternCrateImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ExternItemImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ExternItemListConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ExternItemListImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/FieldExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/FieldExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/FieldListImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/FnPtrTypeConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/FnPtrTypeImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ForExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ForExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ForTypeConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ForTypeImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/FormatArgsArgConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/FormatArgsArgImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/FormatArgsExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/FormatArgsExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/FunctionConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/GenericArgImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/GenericArgListConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/GenericArgListImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/GenericParamImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/GenericParamListConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/GenericParamListImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/IdentPatConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/IdentPatImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/IfExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/IfExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ImplConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ImplImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ImplTraitTypeConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ImplTraitTypeImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/IndexExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/IndexExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ItemStmtConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ItemStmtImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/InferTypeConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/InferTypeImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ItemImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ItemListConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ItemListImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/LabelConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/LabelImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/LetElseConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/LetElseImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/LetExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/LetExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/LetStmtConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/LetStmtImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/LifetimeArgConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/LifetimeArgImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/LifetimeConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/LifetimeImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/LifetimeParamConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/LifetimeParamImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/LiteralExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/LiteralExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/LiteralPatConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/LiteralPatImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/LoopExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/LoopExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/MacroCallConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/MacroCallImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/MacroDefConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/MacroDefImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/MacroExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/MacroExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/MacroPatConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/MacroPatImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/MacroRulesConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/MacroRulesImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/MacroTypeConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/MacroTypeImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/MatchArmConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/MatchArmImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/MatchArmListConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/MatchArmListImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/MatchExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/MatchExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/MatchGuardConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/MatchGuardImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/MetaConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/MetaImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/MethodCallExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/MethodCallExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/MissingExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/MissingExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/MissingConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/MissingImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/MissingPatConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/MissingPatImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ModuleConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ModuleImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/NameConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/NameImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/NameRefConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/NameRefImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/NeverTypeConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/NeverTypeImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/OffsetOfExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/OffsetOfExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/OrPatConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/OrPatImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ParamConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ParamImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ParamListConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ParamListImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ParenExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ParenExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ParenPatConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ParenPatImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ParenTypeConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ParenTypeImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/PatImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/PathConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/PathExprConstructor.qll linguist-generated
@@ -163,8 +327,14 @@
/lib/codeql/rust/elements/internal/PathImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/PathPatConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/PathPatImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/PathSegmentConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/PathSegmentImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/PathTypeConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/PathTypeImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/PrefixExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/PrefixExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/PtrTypeConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/PtrTypeImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/RangeExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/RangeExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/RangePatConstructor.qll linguist-generated
@@ -172,233 +342,409 @@
/lib/codeql/rust/elements/internal/RecordExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/RecordExprFieldConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/RecordExprFieldImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/RecordExprFieldListConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/RecordExprFieldListImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/RecordExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/RecordFieldConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/RecordFieldImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/RecordFieldListConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/RecordFieldListImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/RecordPatConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/RecordPatFieldConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/RecordPatFieldImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/RecordPatFieldListConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/RecordPatFieldListImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/RecordPatImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/RefExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/RefExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/RefPatConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/RefPatImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/RepeatExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/RepeatExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/RefTypeConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/RefTypeImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/RenameConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/RenameImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/RestPatConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/RestPatImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/RetTypeConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/RetTypeImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ReturnExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ReturnExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/ReturnTypeSyntaxConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/ReturnTypeSyntaxImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/SelfParamConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/SelfParamImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/SlicePatConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/SlicePatImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/SliceTypeConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/SliceTypeImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/SourceFileConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/SourceFileImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/StaticConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/StaticImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/StmtImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/StmtListConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/StmtListImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/StructConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/StructImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/TokenTreeConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/TokenTreeImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/TraitAliasConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/TraitAliasImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/TraitConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/TraitImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/TryExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/TryExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/TupleExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/TupleExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/TupleFieldConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/TupleFieldImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/TupleFieldListConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/TupleFieldListImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/TuplePatConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/TuplePatImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/TupleStructPatConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/TupleStructPatImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/TypeRefConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/TupleTypeConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/TupleTypeImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/TypeAliasConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/TypeAliasImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/TypeArgConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/TypeArgImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/TypeBoundConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/TypeBoundImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/TypeBoundListConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/TypeBoundListImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/TypeParamConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/TypeParamImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/TypeRefImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/UnderscoreExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/UnderscoreExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/UnextractedImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/UnimplementedDeclarationConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/UnimplementedDeclarationImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/UnimplementedConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/UnimplementedImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/UnsafeBlockExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/UnsafeBlockExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/UnionConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/UnionImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/UseConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/UseImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/UseTreeConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/UseTreeImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/UseTreeListConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/UseTreeListImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/VariantConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/VariantImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/VariantListConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/VariantListImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/VisibilityConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/VisibilityImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/WhereClauseConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/WhereClauseImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/WherePredConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/WherePredImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/WhileExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/WhileExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/WildcardPatConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/WildcardPatImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/YeetExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/YeetExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/YieldExprConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/YieldExprImpl.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Abi.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ArgList.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ArrayExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ArrayType.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/AsmExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/AssocItem.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/AssocItemList.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/AssocTypeArg.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/AstNode.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/AsyncBlockExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Attr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/AwaitExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/BecomeExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/BinaryExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/BlockExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/BlockExprBase.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/BoxExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/BoxPat.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/BreakExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/CallExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/CastExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ClosureBinder.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ClosureExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Const.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ConstArg.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ConstBlockPat.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ConstExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ConstParam.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ContinueExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Declaration.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/DynTraitType.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Element.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ElementListExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Enum.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
/lib/codeql/rust/elements/internal/generated/ExternCrate.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ExternItem.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ExternItemList.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/FieldExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/FieldList.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/FnPtrType.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ForExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ForType.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/FormatArgsArg.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/FormatArgsExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Function.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/GenericArg.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/GenericArgList.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/GenericParam.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/GenericParamList.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/IdentPat.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/IfExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Impl.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ImplTraitType.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/IndexExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ItemStmt.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/InferType.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Item.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ItemList.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Label.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/LetElse.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/LetExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/LetStmt.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Lifetime.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/LifetimeArg.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/LifetimeParam.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/LiteralExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/LiteralPat.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Locatable.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/LoopExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/MacroCall.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/MacroDef.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/MacroExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/MacroPat.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/MacroRules.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/MacroType.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/MatchArm.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/MatchArmList.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/MatchExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/MatchGuard.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Meta.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/MethodCallExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Missing.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/MissingExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/MissingPat.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Module.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Name.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/NameRef.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/NeverType.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/OffsetOfExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/OrPat.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Param.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ParamList.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ParenExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ParenPat.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ParenType.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ParentChild.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Pat.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Path.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/PathExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/PathPat.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/PathSegment.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/PathType.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/PrefixExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/PtrType.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/PureSynthConstructors.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/RangeExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/RangePat.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Raw.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/RecordExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/RecordExprField.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/RecordExprFieldList.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/RecordField.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/RecordFieldList.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/RecordPat.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/RecordPatField.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/RecordPatFieldList.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/RefExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/RefPat.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/RepeatExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/RefType.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Rename.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/RestPat.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/RetType.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ReturnExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/ReturnTypeSyntax.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/SelfParam.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/SlicePat.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/SliceType.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/SourceFile.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Static.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Stmt.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/StmtList.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Struct.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Synth.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/SynthConstructors.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/TokenTree.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Trait.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/TraitAlias.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/TryExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/TupleExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/TupleField.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/TupleFieldList.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/TuplePat.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/TupleStructPat.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/TupleType.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/TypeAlias.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/TypeArg.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/TypeBound.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/TypeBoundList.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/TypeParam.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/TypeRef.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/UnderscoreExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Unextracted.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Unimplemented.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/UnimplementedDeclaration.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/UnsafeBlockExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Union.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Use.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/UseTree.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/UseTreeList.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Variant.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/VariantList.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/Visibility.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/WhereClause.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/WherePred.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/WhileExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/WildcardPat.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/YeetExpr.qll linguist-generated
/lib/codeql/rust/elements/internal/generated/YieldExpr.qll linguist-generated
/lib/codeql/rust/elements.qll linguist-generated
/test/extractor-tests/generated/AsmExpr/AsmExpr.ql linguist-generated
/test/extractor-tests/generated/AsyncBlockExpr/AsyncBlockExpr.ql linguist-generated
/test/extractor-tests/generated/AsyncBlockExpr/AsyncBlockExpr_getStatement.ql linguist-generated
/test/extractor-tests/generated/AsyncBlockExpr/AsyncBlockExpr_getTail.ql linguist-generated
/test/extractor-tests/generated/AwaitExpr/AwaitExpr.ql linguist-generated
/test/extractor-tests/generated/BecomeExpr/BecomeExpr.ql linguist-generated
/test/extractor-tests/generated/BinaryExpr/BinaryExpr.ql linguist-generated
/test/extractor-tests/generated/BinaryExpr/BinaryExpr_getOp.ql linguist-generated
/test/extractor-tests/generated/BlockExpr/BlockExpr.ql linguist-generated
/test/extractor-tests/generated/BlockExpr/BlockExpr_getLabel.ql linguist-generated
/test/extractor-tests/generated/BlockExpr/BlockExpr_getStatement.ql linguist-generated
/test/extractor-tests/generated/BlockExpr/BlockExpr_getTail.ql linguist-generated
/test/extractor-tests/generated/BoxExpr/BoxExpr.ql linguist-generated
/test/extractor-tests/generated/BoxPat/BoxPat.ql linguist-generated
/test/extractor-tests/generated/BreakExpr/BreakExpr.ql linguist-generated
/test/extractor-tests/generated/BreakExpr/BreakExpr_getExpr.ql linguist-generated
/test/extractor-tests/generated/BreakExpr/BreakExpr_getLabel.ql linguist-generated
/test/extractor-tests/generated/CallExpr/CallExpr.ql linguist-generated
/test/extractor-tests/generated/CallExpr/CallExpr_getArg.ql linguist-generated
/test/extractor-tests/generated/CastExpr/CastExpr.ql linguist-generated
/test/extractor-tests/generated/ClosureExpr/ClosureExpr.ql linguist-generated
/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getArg.ql linguist-generated
/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getArgType.ql linguist-generated
/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getRetType.ql linguist-generated
/test/extractor-tests/generated/ConstBlockPat/ConstBlockPat.ql linguist-generated
/test/extractor-tests/generated/ConstExpr/ConstExpr.ql linguist-generated
/test/extractor-tests/generated/ContinueExpr/ContinueExpr.ql linguist-generated
/test/extractor-tests/generated/ContinueExpr/ContinueExpr_getLabel.ql linguist-generated
/test/extractor-tests/generated/ElementListExpr/ElementListExpr.ql linguist-generated
/test/extractor-tests/generated/ElementListExpr/ElementListExpr_getElement.ql linguist-generated
/test/extractor-tests/generated/ExprStmt/ExprStmt.ql linguist-generated
/test/extractor-tests/generated/FieldExpr/FieldExpr.ql linguist-generated
/test/extractor-tests/generated/Function/Function.ql linguist-generated
/test/extractor-tests/generated/GenericArgList/GenericArgList.ql linguist-generated
/test/extractor-tests/generated/IdentPat/IdentPat.ql linguist-generated
/test/extractor-tests/generated/IdentPat/IdentPat_getSubpat.ql linguist-generated
/test/extractor-tests/generated/IfExpr/IfExpr.ql linguist-generated
/test/extractor-tests/generated/IfExpr/IfExpr_getElse.ql linguist-generated
/test/extractor-tests/generated/IndexExpr/IndexExpr.ql linguist-generated
/test/extractor-tests/generated/Label/Label.ql linguist-generated
/test/extractor-tests/generated/LetExpr/LetExpr.ql linguist-generated
/test/extractor-tests/generated/LetStmt/LetStmt.ql linguist-generated
/test/extractor-tests/generated/LetStmt/LetStmt_getElse.ql linguist-generated
/test/extractor-tests/generated/LetStmt/LetStmt_getInitializer.ql linguist-generated
/test/extractor-tests/generated/LetStmt/LetStmt_getType.ql linguist-generated
/test/extractor-tests/generated/LiteralExpr/LiteralExpr.ql linguist-generated
/test/extractor-tests/generated/LiteralPat/LiteralPat.ql linguist-generated
/test/extractor-tests/generated/LoopExpr/LoopExpr.ql linguist-generated
/test/extractor-tests/generated/LoopExpr/LoopExpr_getLabel.ql linguist-generated
/test/extractor-tests/generated/MatchArm/MatchArm.ql linguist-generated
/test/extractor-tests/generated/MatchArm/MatchArm_getGuard.ql linguist-generated
/test/extractor-tests/generated/MatchExpr/MatchExpr.ql linguist-generated
/test/extractor-tests/generated/MatchExpr/MatchExpr_getBranch.ql linguist-generated
/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr.ql linguist-generated
/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getArg.ql linguist-generated
/test/extractor-tests/generated/MethodCallExpr/MethodCallExpr_getGenericArgs.ql linguist-generated
/test/extractor-tests/generated/MissingExpr/MissingExpr.ql linguist-generated
/test/extractor-tests/generated/MissingPat/MissingPat.ql linguist-generated
/test/extractor-tests/generated/Module/Module.ql linguist-generated
/test/extractor-tests/generated/Module/Module_getDeclaration.ql linguist-generated
/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr.ql linguist-generated
/test/extractor-tests/generated/OffsetOfExpr/OffsetOfExpr_getField.ql linguist-generated
/test/extractor-tests/generated/OrPat/OrPat.ql linguist-generated
/test/extractor-tests/generated/OrPat/OrPat_getArg.ql linguist-generated
/test/extractor-tests/generated/Path/Path.ql linguist-generated
/test/extractor-tests/generated/PathExpr/PathExpr.ql linguist-generated
/test/extractor-tests/generated/PathPat/PathPat.ql linguist-generated
/test/extractor-tests/generated/PrefixExpr/PrefixExpr.ql linguist-generated
/test/extractor-tests/generated/RangeExpr/RangeExpr.ql linguist-generated
/test/extractor-tests/generated/RangeExpr/RangeExpr_getLhs.ql linguist-generated
/test/extractor-tests/generated/RangeExpr/RangeExpr_getRhs.ql linguist-generated
/test/extractor-tests/generated/RangePat/RangePat.ql linguist-generated
/test/extractor-tests/generated/RangePat/RangePat_getEnd.ql linguist-generated
/test/extractor-tests/generated/RangePat/RangePat_getStart.ql linguist-generated
/test/extractor-tests/generated/RecordExpr/RecordExpr.ql linguist-generated
/test/extractor-tests/generated/RecordExpr/RecordExpr_getFld.ql linguist-generated
/test/extractor-tests/generated/RecordExpr/RecordExpr_getPath.ql linguist-generated
/test/extractor-tests/generated/RecordExpr/RecordExpr_getSpread.ql linguist-generated
/test/extractor-tests/generated/RecordExprField/RecordExprField.ql linguist-generated
/test/extractor-tests/generated/RecordPat/RecordPat.ql linguist-generated
/test/extractor-tests/generated/RecordPat/RecordPat_getFld.ql linguist-generated
/test/extractor-tests/generated/RecordPat/RecordPat_getPath.ql linguist-generated
/test/extractor-tests/generated/RecordPatField/RecordPatField.ql linguist-generated
/test/extractor-tests/generated/RefExpr/RefExpr.ql linguist-generated
/test/extractor-tests/generated/RefPat/RefPat.ql linguist-generated
/test/extractor-tests/generated/RepeatExpr/RepeatExpr.ql linguist-generated
/test/extractor-tests/generated/ReturnExpr/ReturnExpr.ql linguist-generated
/test/extractor-tests/generated/ReturnExpr/ReturnExpr_getExpr.ql linguist-generated
/test/extractor-tests/generated/SlicePat/SlicePat.ql linguist-generated
/test/extractor-tests/generated/SlicePat/SlicePat_getPrefix.ql linguist-generated
/test/extractor-tests/generated/SlicePat/SlicePat_getSlice.ql linguist-generated
/test/extractor-tests/generated/SlicePat/SlicePat_getSuffix.ql linguist-generated
/test/extractor-tests/generated/TupleExpr/TupleExpr.ql linguist-generated
/test/extractor-tests/generated/TupleExpr/TupleExpr_getExpr.ql linguist-generated
/test/extractor-tests/generated/TuplePat/TuplePat.ql linguist-generated
/test/extractor-tests/generated/TuplePat/TuplePat_getArg.ql linguist-generated
/test/extractor-tests/generated/TuplePat/TuplePat_getEllipsisIndex.ql linguist-generated
/test/extractor-tests/generated/TupleStructPat/TupleStructPat.ql linguist-generated
/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getArg.ql linguist-generated
/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getEllipsisIndex.ql linguist-generated
/test/extractor-tests/generated/TupleStructPat/TupleStructPat_getPath.ql linguist-generated
/test/extractor-tests/generated/TypeRef/TypeRef.ql linguist-generated
/test/extractor-tests/generated/UnderscoreExpr/UnderscoreExpr.ql linguist-generated
/test/extractor-tests/generated/UnsafeBlockExpr/UnsafeBlockExpr.ql linguist-generated
/test/extractor-tests/generated/UnsafeBlockExpr/UnsafeBlockExpr_getStatement.ql linguist-generated
/test/extractor-tests/generated/UnsafeBlockExpr/UnsafeBlockExpr_getTail.ql linguist-generated
/test/extractor-tests/generated/WildcardPat/WildcardPat.ql linguist-generated
/test/extractor-tests/generated/YeetExpr/YeetExpr.ql linguist-generated
/test/extractor-tests/generated/YeetExpr/YeetExpr_getExpr.ql linguist-generated
/test/extractor-tests/generated/YieldExpr/YieldExpr.ql linguist-generated
/test/extractor-tests/generated/YieldExpr/YieldExpr_getExpr.ql linguist-generated
/test/extractor-tests/generated/Abi/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/ArgList/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/ArrayExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/ArrayType/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/AsmExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/AssocItemList/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/AssocTypeArg/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/Attr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/AwaitExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/BecomeExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/BinaryExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/BlockExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/BoxPat/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/BreakExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/CallExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/CastExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/ClosureBinder/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/ClosureExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/Const/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/ConstArg/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/ConstBlockPat/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/ConstParam/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/ContinueExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/DynTraitType/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/Enum/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/ExprStmt/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/ExternBlock/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/ExternCrate/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/ExternItemList/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/FieldExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/FnPtrType/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/ForExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/ForType/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/FormatArgsArg/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/FormatArgsExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/Function/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/GenericArgList/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/GenericParamList/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/IdentPat/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/IfExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/Impl/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/ImplTraitType/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/IndexExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/InferType/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/ItemList/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/Label/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/LetElse/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/LetExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/LetStmt/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/Lifetime/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/LifetimeArg/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/LifetimeParam/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/LiteralExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/LiteralPat/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/LoopExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/MacroCall/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/MacroDef/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/MacroExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/MacroPat/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/MacroRules/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/MacroType/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/MatchArm/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/MatchArmList/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/MatchExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/MatchGuard/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/Meta/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/MethodCallExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/Module/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/Name/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/NameRef/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/NeverType/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/OffsetOfExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/OrPat/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/Param/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/ParamList/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/ParenExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/ParenPat/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/ParenType/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/Path/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/PathExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/PathPat/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/PathSegment/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/PathType/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/PrefixExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/PtrType/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/RangeExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/RangePat/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/RecordExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/RecordExprField/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/RecordExprFieldList/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/RecordField/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/RecordFieldList/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/RecordPat/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/RecordPatField/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/RecordPatFieldList/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/RefExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/RefPat/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/RefType/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/Rename/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/RestPat/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/RetType/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/ReturnExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/ReturnTypeSyntax/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/SelfParam/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/SlicePat/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/SliceType/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/SourceFile/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/Static/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/StmtList/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/Struct/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/TokenTree/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/Trait/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/TraitAlias/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/TryExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/TupleExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/TupleField/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/TupleFieldList/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/TuplePat/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/TupleStructPat/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/TupleType/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/TypeAlias/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/TypeArg/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/TypeBound/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/TypeBoundList/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/TypeParam/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/UnderscoreExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/Union/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/Use/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/UseTree/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/UseTreeList/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/Variant/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/VariantList/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/Visibility/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/WhereClause/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/WherePred/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/WhileExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/WildcardPat/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/YeetExpr/MISSING_SOURCE.txt linguist-generated
/test/extractor-tests/generated/YieldExpr/MISSING_SOURCE.txt linguist-generated

View File

@@ -2,6 +2,8 @@
private import codeql.Locations
private import codeql.util.FileSystem
private import codeql.rust.elements.SourceFile
private import codeql.rust.elements.AstNode
private module Input implements InputSig {
abstract class ContainerBase extends @container {
@@ -41,8 +43,10 @@ class File extends Container, Impl::File {
int getNumberOfLinesOfCode() {
result =
count(int line |
exists(Location loc |
loc.getFile() = this and
exists(AstNode node, Location loc |
not node instanceof SourceFile and loc = node.getLocation()
|
node.getFile() = this and
line = [loc.getStartLine(), loc.getEndLine()] and
not loc instanceof EmptyLocation
)

View File

@@ -69,16 +69,16 @@ class FunctionTree extends StandardPostOrderTree instanceof Function {
class BlockExprTree extends StandardPostOrderTree instanceof BlockExpr {
override ControlFlowTree getChildNode(int i) {
result = super.getStatement(i)
result = super.getStmtList().getStatement(i)
or
not exists(super.getStatement(i)) and
(exists(super.getStatement(i - 1)) or i = 0) and
result = super.getTail()
not exists(super.getStmtList().getStatement(i)) and
(exists(super.getStmtList().getStatement(i - 1)) or i = 0) and
result = super.getStmtList().getTailExpr()
}
}
class CallExprTree extends StandardPostOrderTree instanceof CallExpr {
override ControlFlowTree getChildNode(int i) { result = super.getArg(i) }
override ControlFlowTree getChildNode(int i) { result = super.getArgList().getArg(i) }
}
class BinaryOpExprTree extends StandardPostOrderTree instanceof BinaryExpr {
@@ -124,6 +124,3 @@ class LetExprTree extends StandardPostOrderTree instanceof LetExpr {
class LiteralExprTree extends LeafTree instanceof LiteralExpr { }
class PathExprTree extends LeafTree instanceof PathExpr { }
// A leaf tree for unimplemented nodes in the AST.
class UnimplementedTree extends LeafTree instanceof Unimplemented { }

View File

@@ -3,78 +3,158 @@
* This module exports all modules providing `Element` subclasses.
*/
import codeql.rust.elements.Abi
import codeql.rust.elements.ArgList
import codeql.rust.elements.ArrayExpr
import codeql.rust.elements.ArrayType
import codeql.rust.elements.AsmExpr
import codeql.rust.elements.AssocItem
import codeql.rust.elements.AssocItemList
import codeql.rust.elements.AssocTypeArg
import codeql.rust.elements.AstNode
import codeql.rust.elements.AsyncBlockExpr
import codeql.rust.elements.Attr
import codeql.rust.elements.AwaitExpr
import codeql.rust.elements.BecomeExpr
import codeql.rust.elements.BinaryExpr
import codeql.rust.elements.BlockExpr
import codeql.rust.elements.BlockExprBase
import codeql.rust.elements.BoxExpr
import codeql.rust.elements.BoxPat
import codeql.rust.elements.BreakExpr
import codeql.rust.elements.CallExpr
import codeql.rust.elements.CastExpr
import codeql.rust.elements.ClosureBinder
import codeql.rust.elements.ClosureExpr
import codeql.rust.elements.Const
import codeql.rust.elements.ConstArg
import codeql.rust.elements.ConstBlockPat
import codeql.rust.elements.ConstExpr
import codeql.rust.elements.ConstParam
import codeql.rust.elements.ContinueExpr
import codeql.rust.elements.Declaration
import codeql.rust.elements.DynTraitType
import codeql.rust.elements.Element
import codeql.rust.elements.ElementListExpr
import codeql.rust.elements.Enum
import codeql.rust.elements.Expr
import codeql.rust.elements.ExprStmt
import codeql.rust.elements.ExternBlock
import codeql.rust.elements.ExternCrate
import codeql.rust.elements.ExternItem
import codeql.rust.elements.ExternItemList
import codeql.rust.elements.FieldExpr
import codeql.rust.elements.FieldList
import codeql.rust.elements.FnPtrType
import codeql.rust.elements.ForExpr
import codeql.rust.elements.ForType
import codeql.rust.elements.FormatArgsArg
import codeql.rust.elements.FormatArgsExpr
import codeql.rust.elements.Function
import codeql.rust.elements.GenericArg
import codeql.rust.elements.GenericArgList
import codeql.rust.elements.GenericParam
import codeql.rust.elements.GenericParamList
import codeql.rust.elements.IdentPat
import codeql.rust.elements.IfExpr
import codeql.rust.elements.Impl
import codeql.rust.elements.ImplTraitType
import codeql.rust.elements.IndexExpr
import codeql.rust.elements.ItemStmt
import codeql.rust.elements.InferType
import codeql.rust.elements.Item
import codeql.rust.elements.ItemList
import codeql.rust.elements.Label
import codeql.rust.elements.LetElse
import codeql.rust.elements.LetExpr
import codeql.rust.elements.LetStmt
import codeql.rust.elements.Lifetime
import codeql.rust.elements.LifetimeArg
import codeql.rust.elements.LifetimeParam
import codeql.rust.elements.LiteralExpr
import codeql.rust.elements.LiteralPat
import codeql.rust.elements.Locatable
import codeql.rust.elements.LoopExpr
import codeql.rust.elements.MacroCall
import codeql.rust.elements.MacroDef
import codeql.rust.elements.MacroExpr
import codeql.rust.elements.MacroPat
import codeql.rust.elements.MacroRules
import codeql.rust.elements.MacroType
import codeql.rust.elements.MatchArm
import codeql.rust.elements.MatchArmList
import codeql.rust.elements.MatchExpr
import codeql.rust.elements.MatchGuard
import codeql.rust.elements.Meta
import codeql.rust.elements.MethodCallExpr
import codeql.rust.elements.Missing
import codeql.rust.elements.MissingExpr
import codeql.rust.elements.MissingPat
import codeql.rust.elements.Module
import codeql.rust.elements.Name
import codeql.rust.elements.NameRef
import codeql.rust.elements.NeverType
import codeql.rust.elements.OffsetOfExpr
import codeql.rust.elements.OrPat
import codeql.rust.elements.Param
import codeql.rust.elements.ParamList
import codeql.rust.elements.ParenExpr
import codeql.rust.elements.ParenPat
import codeql.rust.elements.ParenType
import codeql.rust.elements.Pat
import codeql.rust.elements.Path
import codeql.rust.elements.PathExpr
import codeql.rust.elements.PathPat
import codeql.rust.elements.PathSegment
import codeql.rust.elements.PathType
import codeql.rust.elements.PrefixExpr
import codeql.rust.elements.PtrType
import codeql.rust.elements.RangeExpr
import codeql.rust.elements.RangePat
import codeql.rust.elements.RecordExpr
import codeql.rust.elements.RecordExprField
import codeql.rust.elements.RecordExprFieldList
import codeql.rust.elements.RecordField
import codeql.rust.elements.RecordFieldList
import codeql.rust.elements.RecordPat
import codeql.rust.elements.RecordPatField
import codeql.rust.elements.RecordPatFieldList
import codeql.rust.elements.RefExpr
import codeql.rust.elements.RefPat
import codeql.rust.elements.RepeatExpr
import codeql.rust.elements.RefType
import codeql.rust.elements.Rename
import codeql.rust.elements.RestPat
import codeql.rust.elements.RetType
import codeql.rust.elements.ReturnExpr
import codeql.rust.elements.ReturnTypeSyntax
import codeql.rust.elements.SelfParam
import codeql.rust.elements.SlicePat
import codeql.rust.elements.SliceType
import codeql.rust.elements.SourceFile
import codeql.rust.elements.Static
import codeql.rust.elements.Stmt
import codeql.rust.elements.StmtList
import codeql.rust.elements.Struct
import codeql.rust.elements.TokenTree
import codeql.rust.elements.Trait
import codeql.rust.elements.TraitAlias
import codeql.rust.elements.TryExpr
import codeql.rust.elements.TupleExpr
import codeql.rust.elements.TupleField
import codeql.rust.elements.TupleFieldList
import codeql.rust.elements.TuplePat
import codeql.rust.elements.TupleStructPat
import codeql.rust.elements.TupleType
import codeql.rust.elements.TypeAlias
import codeql.rust.elements.TypeArg
import codeql.rust.elements.TypeBound
import codeql.rust.elements.TypeBoundList
import codeql.rust.elements.TypeParam
import codeql.rust.elements.TypeRef
import codeql.rust.elements.UnderscoreExpr
import codeql.rust.elements.Unextracted
import codeql.rust.elements.Unimplemented
import codeql.rust.elements.UnimplementedDeclaration
import codeql.rust.elements.UnsafeBlockExpr
import codeql.rust.elements.Union
import codeql.rust.elements.Use
import codeql.rust.elements.UseTree
import codeql.rust.elements.UseTreeList
import codeql.rust.elements.Variant
import codeql.rust.elements.VariantList
import codeql.rust.elements.Visibility
import codeql.rust.elements.WhereClause
import codeql.rust.elements.WherePred
import codeql.rust.elements.WhileExpr
import codeql.rust.elements.WildcardPat
import codeql.rust.elements.YeetExpr
import codeql.rust.elements.YieldExpr

View File

@@ -0,0 +1,9 @@
// generated by codegen, do not edit
/**
* This module provides the public class `Abi`.
*/
private import internal.AbiImpl
import codeql.rust.elements.AstNode
final class Abi = Impl::Abi;

View File

@@ -0,0 +1,10 @@
// generated by codegen, do not edit
/**
* This module provides the public class `ArgList`.
*/
private import internal.ArgListImpl
import codeql.rust.elements.AstNode
import codeql.rust.elements.Expr
final class ArgList = Impl::ArgList;

View File

@@ -4,13 +4,7 @@
*/
private import internal.ArrayExprImpl
import codeql.rust.elements.Attr
import codeql.rust.elements.Expr
/**
* An array expression. For example:
* ```rust
* [1, 2, 3];
* [1; 10];
* ```
*/
final class ArrayExpr = Impl::ArrayExpr;

View File

@@ -0,0 +1,10 @@
// generated by codegen, do not edit
/**
* This module provides the public class `ArrayType`.
*/
private import internal.ArrayTypeImpl
import codeql.rust.elements.ConstArg
import codeql.rust.elements.TypeRef
final class ArrayType = Impl::ArrayType;

View File

@@ -4,14 +4,7 @@
*/
private import internal.AsmExprImpl
import codeql.rust.elements.Attr
import codeql.rust.elements.Expr
/**
* An inline assembly expression. For example:
* ```rust
* unsafe {
* builtin # asm(_);
* }
* ```
*/
final class AsmExpr = Impl::AsmExpr;

View File

@@ -0,0 +1,9 @@
// generated by codegen, do not edit
/**
* This module provides the public class `AssocItem`.
*/
private import internal.AssocItemImpl
import codeql.rust.elements.AstNode
final class AssocItem = Impl::AssocItem;

View File

@@ -0,0 +1,11 @@
// generated by codegen, do not edit
/**
* This module provides the public class `AssocItemList`.
*/
private import internal.AssocItemListImpl
import codeql.rust.elements.AssocItem
import codeql.rust.elements.AstNode
import codeql.rust.elements.Attr
final class AssocItemList = Impl::AssocItemList;

View File

@@ -0,0 +1,17 @@
// generated by codegen, do not edit
/**
* This module provides the public class `AssocTypeArg`.
*/
private import internal.AssocTypeArgImpl
import codeql.rust.elements.ConstArg
import codeql.rust.elements.GenericArg
import codeql.rust.elements.GenericArgList
import codeql.rust.elements.NameRef
import codeql.rust.elements.ParamList
import codeql.rust.elements.RetType
import codeql.rust.elements.ReturnTypeSyntax
import codeql.rust.elements.TypeBoundList
import codeql.rust.elements.TypeRef
final class AssocTypeArg = Impl::AssocTypeArg;

View File

@@ -1,18 +0,0 @@
// generated by codegen, do not edit
/**
* This module provides the public class `AsyncBlockExpr`.
*/
private import internal.AsyncBlockExprImpl
import codeql.rust.elements.BlockExprBase
/**
* An async block expression. For example:
* ```rust
* async {
* let x = 42;
* x
* }.await
* ```
*/
final class AsyncBlockExpr = Impl::AsyncBlockExpr;

View File

@@ -0,0 +1,10 @@
// generated by codegen, do not edit
/**
* This module provides the public class `Attr`.
*/
private import internal.AttrImpl
import codeql.rust.elements.AstNode
import codeql.rust.elements.Meta
final class Attr = Impl::Attr;

View File

@@ -4,15 +4,7 @@
*/
private import internal.AwaitExprImpl
import codeql.rust.elements.Attr
import codeql.rust.elements.Expr
/**
* An `await` expression. For example:
* ```rust
* async {
* let x = foo().await;
* x
* }
* ```
*/
final class AwaitExpr = Impl::AwaitExpr;

View File

@@ -4,18 +4,7 @@
*/
private import internal.BecomeExprImpl
import codeql.rust.elements.Attr
import codeql.rust.elements.Expr
/**
* A `become` expression. For example:
* ```rust
* fn fact_a(n: i32, a: i32) -> i32 {
* if n == 0 {
* a
* } else {
* become fact_a(n - 1, n * a)
* }
* }
* ```
*/
final class BecomeExpr = Impl::BecomeExpr;

View File

@@ -4,16 +4,7 @@
*/
private import internal.BinaryExprImpl
import codeql.rust.elements.Attr
import codeql.rust.elements.Expr
/**
* A binary operation expression. For example:
* ```rust
* x + y;
* x && y;
* x <= y;
* x = y;
* x += y;
* ```
*/
final class BinaryExpr = Impl::BinaryExpr;

View File

@@ -4,21 +4,9 @@
*/
private import internal.BlockExprImpl
import codeql.rust.elements.BlockExprBase
import codeql.rust.elements.Attr
import codeql.rust.elements.Expr
import codeql.rust.elements.Label
import codeql.rust.elements.StmtList
/**
* A block expression. For example:
* ```rust
* {
* let x = 42;
* }
* ```
* ```rust
* 'label: {
* let x = 42;
* x
* }
* ```
*/
final class BlockExpr = Impl::BlockExpr;

View File

@@ -1,10 +0,0 @@
// generated by codegen, do not edit
/**
* This module provides the public class `BlockExprBase`.
*/
private import internal.BlockExprBaseImpl
import codeql.rust.elements.Expr
import codeql.rust.elements.Stmt
final class BlockExprBase = Impl::BlockExprBase;

View File

@@ -1,15 +0,0 @@
// generated by codegen, do not edit
/**
* This module provides the public class `BoxExpr`.
*/
private import internal.BoxExprImpl
import codeql.rust.elements.Expr
/**
* A box expression. For example:
* ```rust
* let x = #[rustc_box] Box::new(42);
* ```
*/
final class BoxExpr = Impl::BoxExpr;

View File

@@ -6,13 +6,4 @@
private import internal.BoxPatImpl
import codeql.rust.elements.Pat
/**
* A box pattern. For example:
* ```rust
* match x {
* box Option::Some(y) => y,
* box Option::None => 0,
* };
* ```
*/
final class BoxPat = Impl::BoxPat;

View File

@@ -4,24 +4,8 @@
*/
private import internal.BreakExprImpl
import codeql.rust.elements.Attr
import codeql.rust.elements.Expr
import codeql.rust.elements.Label
import codeql.rust.elements.Lifetime
/**
* A break expression. For example:
* ```rust
* loop {
* if not_ready() {
* break;
* }
* }
* ```
* ```rust
* let x = 'label: loop {
* if done() {
* break 'label 42;
* }
* };
* ```
*/
final class BreakExpr = Impl::BreakExpr;

View File

@@ -4,15 +4,8 @@
*/
private import internal.CallExprImpl
import codeql.rust.elements.ArgList
import codeql.rust.elements.Attr
import codeql.rust.elements.Expr
/**
* A function call expression. For example:
* ```rust
* foo(42);
* foo::<u32, u64>(42);
* foo[0](42);
* foo(1) = 4;
* ```
*/
final class CallExpr = Impl::CallExpr;

View File

@@ -4,13 +4,8 @@
*/
private import internal.CastExprImpl
import codeql.rust.elements.Attr
import codeql.rust.elements.Expr
import codeql.rust.elements.TypeRef
/**
* A cast expression. For example:
* ```rust
* value as u64;
* ```
*/
final class CastExpr = Impl::CastExpr;

View File

@@ -0,0 +1,10 @@
// generated by codegen, do not edit
/**
* This module provides the public class `ClosureBinder`.
*/
private import internal.ClosureBinderImpl
import codeql.rust.elements.AstNode
import codeql.rust.elements.GenericParamList
final class ClosureBinder = Impl::ClosureBinder;

View File

@@ -4,20 +4,10 @@
*/
private import internal.ClosureExprImpl
import codeql.rust.elements.Attr
import codeql.rust.elements.ClosureBinder
import codeql.rust.elements.Expr
import codeql.rust.elements.Pat
import codeql.rust.elements.TypeRef
import codeql.rust.elements.ParamList
import codeql.rust.elements.RetType
/**
* A closure expression. For example:
* ```rust
* |x| x + 1;
* move |x: i32| -> i32 { x + 1 };
* async |x: i32, y| x + y;
* #[coroutine]
* |x| yield x;
* #[coroutine]
* static |x| yield x;
* ```
*/
final class ClosureExpr = Impl::ClosureExpr;

View File

@@ -0,0 +1,15 @@
// generated by codegen, do not edit
/**
* This module provides the public class `Const`.
*/
private import internal.ConstImpl
import codeql.rust.elements.AssocItem
import codeql.rust.elements.Attr
import codeql.rust.elements.Expr
import codeql.rust.elements.Item
import codeql.rust.elements.Name
import codeql.rust.elements.TypeRef
import codeql.rust.elements.Visibility
final class Const = Impl::Const;

View File

@@ -0,0 +1,10 @@
// generated by codegen, do not edit
/**
* This module provides the public class `ConstArg`.
*/
private import internal.ConstArgImpl
import codeql.rust.elements.Expr
import codeql.rust.elements.GenericArg
final class ConstArg = Impl::ConstArg;

View File

@@ -4,16 +4,7 @@
*/
private import internal.ConstBlockPatImpl
import codeql.rust.elements.Expr
import codeql.rust.elements.BlockExpr
import codeql.rust.elements.Pat
/**
* A const block pattern. For example:
* ```rust
* match x {
* const { 1 + 2 + 3 } => "ok",
* _ => "fail",
* };
* ```
*/
final class ConstBlockPat = Impl::ConstBlockPat;

View File

@@ -1,17 +0,0 @@
// generated by codegen, do not edit
/**
* This module provides the public class `ConstExpr`.
*/
private import internal.ConstExprImpl
import codeql.rust.elements.Expr
/**
* A `const` block expression. For example:
* ```rust
* if const { SRC::IS_ZST || DEST::IS_ZST || mem::align_of::<SRC>() != mem::align_of::<DEST>() } {
* return false;
* }
* ```
*/
final class ConstExpr = Impl::ConstExpr;

View File

@@ -0,0 +1,13 @@
// generated by codegen, do not edit
/**
* This module provides the public class `ConstParam`.
*/
private import internal.ConstParamImpl
import codeql.rust.elements.Attr
import codeql.rust.elements.ConstArg
import codeql.rust.elements.GenericParam
import codeql.rust.elements.Name
import codeql.rust.elements.TypeRef
final class ConstParam = Impl::ConstParam;

View File

@@ -4,24 +4,8 @@
*/
private import internal.ContinueExprImpl
import codeql.rust.elements.Attr
import codeql.rust.elements.Expr
import codeql.rust.elements.Label
import codeql.rust.elements.Lifetime
/**
* A continue expression. For example:
* ```rust
* loop {
* if not_ready() {
* continue;
* }
* }
* ```
* ```rust
* 'label: loop {
* if not_ready() {
* continue 'label;
* }
* }
* ```
*/
final class ContinueExpr = Impl::ContinueExpr;

View File

@@ -1,12 +0,0 @@
// generated by codegen, do not edit
/**
* This module provides the public class `Declaration`.
*/
private import internal.DeclarationImpl
import codeql.rust.elements.AstNode
/**
* The base class for declarations.
*/
final class Declaration = Impl::Declaration;

View File

@@ -0,0 +1,10 @@
// generated by codegen, do not edit
/**
* This module provides the public class `DynTraitType`.
*/
private import internal.DynTraitTypeImpl
import codeql.rust.elements.TypeBoundList
import codeql.rust.elements.TypeRef
final class DynTraitType = Impl::DynTraitType;

View File

@@ -1,17 +0,0 @@
// generated by codegen, do not edit
/**
* This module provides the public class `ElementListExpr`.
*/
private import internal.ElementListExprImpl
import codeql.rust.elements.ArrayExpr
import codeql.rust.elements.Expr
/**
* An element list expression. For example:
* ```rust
* [1, 2, 3, 4, 5];
* [1, 2, 3, 4, 5][0] = 6;
* ```
*/
final class ElementListExpr = Impl::ElementListExpr;

View File

@@ -0,0 +1,15 @@
// generated by codegen, do not edit
/**
* This module provides the public class `Enum`.
*/
private import internal.EnumImpl
import codeql.rust.elements.Attr
import codeql.rust.elements.GenericParamList
import codeql.rust.elements.Item
import codeql.rust.elements.Name
import codeql.rust.elements.VariantList
import codeql.rust.elements.Visibility
import codeql.rust.elements.WhereClause
final class Enum = Impl::Enum;

View File

@@ -6,7 +6,4 @@
private import internal.ExprImpl
import codeql.rust.elements.AstNode
/**
* The base class for expressions.
*/
final class Expr = Impl::Expr;

View File

@@ -7,12 +7,4 @@ private import internal.ExprStmtImpl
import codeql.rust.elements.Expr
import codeql.rust.elements.Stmt
/**
* An expression statement. For example:
* ```rust
* start();
* finish()
* use std::env;
* ```
*/
final class ExprStmt = Impl::ExprStmt;

View File

@@ -0,0 +1,12 @@
// generated by codegen, do not edit
/**
* This module provides the public class `ExternBlock`.
*/
private import internal.ExternBlockImpl
import codeql.rust.elements.Abi
import codeql.rust.elements.Attr
import codeql.rust.elements.ExternItemList
import codeql.rust.elements.Item
final class ExternBlock = Impl::ExternBlock;

View File

@@ -0,0 +1,13 @@
// generated by codegen, do not edit
/**
* This module provides the public class `ExternCrate`.
*/
private import internal.ExternCrateImpl
import codeql.rust.elements.Attr
import codeql.rust.elements.Item
import codeql.rust.elements.NameRef
import codeql.rust.elements.Rename
import codeql.rust.elements.Visibility
final class ExternCrate = Impl::ExternCrate;

View File

@@ -0,0 +1,9 @@
// generated by codegen, do not edit
/**
* This module provides the public class `ExternItem`.
*/
private import internal.ExternItemImpl
import codeql.rust.elements.AstNode
final class ExternItem = Impl::ExternItem;

View File

@@ -0,0 +1,11 @@
// generated by codegen, do not edit
/**
* This module provides the public class `ExternItemList`.
*/
private import internal.ExternItemListImpl
import codeql.rust.elements.AstNode
import codeql.rust.elements.Attr
import codeql.rust.elements.ExternItem
final class ExternItemList = Impl::ExternItemList;

View File

@@ -4,12 +4,8 @@
*/
private import internal.FieldExprImpl
import codeql.rust.elements.Attr
import codeql.rust.elements.Expr
import codeql.rust.elements.NameRef
/**
* A field access expression. For example:
* ```rust
* x.foo
* ```
*/
final class FieldExpr = Impl::FieldExpr;

View File

@@ -0,0 +1,9 @@
// generated by codegen, do not edit
/**
* This module provides the public class `FieldList`.
*/
private import internal.FieldListImpl
import codeql.rust.elements.AstNode
final class FieldList = Impl::FieldList;

View File

@@ -0,0 +1,12 @@
// generated by codegen, do not edit
/**
* This module provides the public class `FnPtrType`.
*/
private import internal.FnPtrTypeImpl
import codeql.rust.elements.Abi
import codeql.rust.elements.ParamList
import codeql.rust.elements.RetType
import codeql.rust.elements.TypeRef
final class FnPtrType = Impl::FnPtrType;

View File

@@ -0,0 +1,13 @@
// generated by codegen, do not edit
/**
* This module provides the public class `ForExpr`.
*/
private import internal.ForExprImpl
import codeql.rust.elements.Attr
import codeql.rust.elements.BlockExpr
import codeql.rust.elements.Expr
import codeql.rust.elements.Label
import codeql.rust.elements.Pat
final class ForExpr = Impl::ForExpr;

View File

@@ -0,0 +1,10 @@
// generated by codegen, do not edit
/**
* This module provides the public class `ForType`.
*/
private import internal.ForTypeImpl
import codeql.rust.elements.GenericParamList
import codeql.rust.elements.TypeRef
final class ForType = Impl::ForType;

View File

@@ -0,0 +1,11 @@
// generated by codegen, do not edit
/**
* This module provides the public class `FormatArgsArg`.
*/
private import internal.FormatArgsArgImpl
import codeql.rust.elements.AstNode
import codeql.rust.elements.Expr
import codeql.rust.elements.Name
final class FormatArgsArg = Impl::FormatArgsArg;

View File

@@ -0,0 +1,11 @@
// generated by codegen, do not edit
/**
* This module provides the public class `FormatArgsExpr`.
*/
private import internal.FormatArgsExprImpl
import codeql.rust.elements.Attr
import codeql.rust.elements.Expr
import codeql.rust.elements.FormatArgsArg
final class FormatArgsExpr = Impl::FormatArgsExpr;

View File

@@ -4,19 +4,17 @@
*/
private import internal.FunctionImpl
import codeql.rust.elements.Declaration
import codeql.rust.elements.Expr
import codeql.rust.elements.Abi
import codeql.rust.elements.AssocItem
import codeql.rust.elements.Attr
import codeql.rust.elements.BlockExpr
import codeql.rust.elements.ExternItem
import codeql.rust.elements.GenericParamList
import codeql.rust.elements.Item
import codeql.rust.elements.Name
import codeql.rust.elements.ParamList
import codeql.rust.elements.RetType
import codeql.rust.elements.Visibility
import codeql.rust.elements.WhereClause
/**
* A function declaration. For example
* ```rust
* fn foo(x: u32) -> u64 {(x + 1).into()}
* ```
* A function declaration within a trait might not have a body:
* ```rust
* trait Trait {
* fn bar();
* }
* ```
*/
final class Function = Impl::Function;

View File

@@ -0,0 +1,9 @@
// generated by codegen, do not edit
/**
* This module provides the public class `GenericArg`.
*/
private import internal.GenericArgImpl
import codeql.rust.elements.AstNode
final class GenericArg = Impl::GenericArg;

View File

@@ -5,12 +5,6 @@
private import internal.GenericArgListImpl
import codeql.rust.elements.AstNode
import codeql.rust.elements.Unimplemented
import codeql.rust.elements.GenericArg
/**
* The base class for generic arguments.
* ```rust
* x.foo::<u32, u64>(42);
* ```
*/
final class GenericArgList = Impl::GenericArgList;

View File

@@ -0,0 +1,9 @@
// generated by codegen, do not edit
/**
* This module provides the public class `GenericParam`.
*/
private import internal.GenericParamImpl
import codeql.rust.elements.AstNode
final class GenericParam = Impl::GenericParam;

View File

@@ -0,0 +1,10 @@
// generated by codegen, do not edit
/**
* This module provides the public class `GenericParamList`.
*/
private import internal.GenericParamListImpl
import codeql.rust.elements.AstNode
import codeql.rust.elements.GenericParam
final class GenericParamList = Impl::GenericParamList;

View File

@@ -4,21 +4,8 @@
*/
private import internal.IdentPatImpl
import codeql.rust.elements.Attr
import codeql.rust.elements.Name
import codeql.rust.elements.Pat
/**
* A binding pattern. For example:
* ```rust
* match x {
* Option::Some(y) => y,
* Option::None => 0,
* };
* ```
* ```rust
* match x {
* y@Option::Some(_) => y,
* Option::None => 0,
* };
* ```
*/
final class IdentPat = Impl::IdentPat;

View File

@@ -4,21 +4,8 @@
*/
private import internal.IfExprImpl
import codeql.rust.elements.Attr
import codeql.rust.elements.BlockExpr
import codeql.rust.elements.Expr
/**
* An `if` expression. For example:
* ```rust
* if x == 42 {
* println!("that's the answer");
* }
* ```
* ```rust
* let y = if x > 0 {
* 1
* } else {
* 0
* }
* ```
*/
final class IfExpr = Impl::IfExpr;

View File

@@ -0,0 +1,15 @@
// generated by codegen, do not edit
/**
* This module provides the public class `Impl`.
*/
private import internal.ImplImpl
import codeql.rust.elements.AssocItemList
import codeql.rust.elements.Attr
import codeql.rust.elements.GenericParamList
import codeql.rust.elements.Item
import codeql.rust.elements.TypeRef
import codeql.rust.elements.Visibility
import codeql.rust.elements.WhereClause
final class Impl = Impl::Impl;

View File

@@ -0,0 +1,10 @@
// generated by codegen, do not edit
/**
* This module provides the public class `ImplTraitType`.
*/
private import internal.ImplTraitTypeImpl
import codeql.rust.elements.TypeBoundList
import codeql.rust.elements.TypeRef
final class ImplTraitType = Impl::ImplTraitType;

View File

@@ -4,13 +4,7 @@
*/
private import internal.IndexExprImpl
import codeql.rust.elements.Attr
import codeql.rust.elements.Expr
/**
* An index expression. For example:
* ```rust
* list[42];
* list[42] = 1;
* ```
*/
final class IndexExpr = Impl::IndexExpr;

View File

@@ -0,0 +1,9 @@
// generated by codegen, do not edit
/**
* This module provides the public class `InferType`.
*/
private import internal.InferTypeImpl
import codeql.rust.elements.TypeRef
final class InferType = Impl::InferType;

View File

@@ -0,0 +1,9 @@
// generated by codegen, do not edit
/**
* This module provides the public class `Item`.
*/
private import internal.ItemImpl
import codeql.rust.elements.Stmt
final class Item = Impl::Item;

View File

@@ -0,0 +1,11 @@
// generated by codegen, do not edit
/**
* This module provides the public class `ItemList`.
*/
private import internal.ItemListImpl
import codeql.rust.elements.AstNode
import codeql.rust.elements.Attr
import codeql.rust.elements.Item
final class ItemList = Impl::ItemList;

View File

@@ -1,18 +0,0 @@
// generated by codegen, do not edit
/**
* This module provides the public class `ItemStmt`.
*/
private import internal.ItemStmtImpl
import codeql.rust.elements.Stmt
/**
* An item statement. For example:
* ```rust
* fn print_hello() {
* println!("Hello, world!");
* }
* print_hello();
* ```
*/
final class ItemStmt = Impl::ItemStmt;

View File

@@ -5,14 +5,6 @@
private import internal.LabelImpl
import codeql.rust.elements.AstNode
import codeql.rust.elements.Lifetime
/**
* A label. For example:
* ```rust
* 'label: loop {
* println!("Hello, world (once)!");
* break 'label;
* };
* ```
*/
final class Label = Impl::Label;

View File

@@ -0,0 +1,10 @@
// generated by codegen, do not edit
/**
* This module provides the public class `LetElse`.
*/
private import internal.LetElseImpl
import codeql.rust.elements.AstNode
import codeql.rust.elements.BlockExpr
final class LetElse = Impl::LetElse;

View File

@@ -4,15 +4,8 @@
*/
private import internal.LetExprImpl
import codeql.rust.elements.Attr
import codeql.rust.elements.Expr
import codeql.rust.elements.Pat
/**
* A `let` expression. For example:
* ```rust
* if let Some(x) = maybe_some {
* println!("{}", x);
* }
* ```
*/
final class LetExpr = Impl::LetExpr;

View File

@@ -4,22 +4,11 @@
*/
private import internal.LetStmtImpl
import codeql.rust.elements.Attr
import codeql.rust.elements.Expr
import codeql.rust.elements.LetElse
import codeql.rust.elements.Pat
import codeql.rust.elements.Stmt
import codeql.rust.elements.TypeRef
/**
* A let statement. For example:
* ```rust
* let x = 42;
* let x: i32 = 42;
* let x: i32;
* let x;
* let (x, y) = (1, 2);
* let Some(x) = std::env::var("FOO") else {
* return;
* };
* ```
*/
final class LetStmt = Impl::LetStmt;

View File

@@ -0,0 +1,9 @@
// generated by codegen, do not edit
/**
* This module provides the public class `Lifetime`.
*/
private import internal.LifetimeImpl
import codeql.rust.elements.AstNode
final class Lifetime = Impl::Lifetime;

View File

@@ -0,0 +1,10 @@
// generated by codegen, do not edit
/**
* This module provides the public class `LifetimeArg`.
*/
private import internal.LifetimeArgImpl
import codeql.rust.elements.GenericArg
import codeql.rust.elements.Lifetime
final class LifetimeArg = Impl::LifetimeArg;

View File

@@ -0,0 +1,12 @@
// generated by codegen, do not edit
/**
* This module provides the public class `LifetimeParam`.
*/
private import internal.LifetimeParamImpl
import codeql.rust.elements.Attr
import codeql.rust.elements.GenericParam
import codeql.rust.elements.Lifetime
import codeql.rust.elements.TypeBoundList
final class LifetimeParam = Impl::LifetimeParam;

View File

@@ -4,19 +4,7 @@
*/
private import internal.LiteralExprImpl
import codeql.rust.elements.Attr
import codeql.rust.elements.Expr
/**
* A literal expression. For example:
* ```rust
* 42;
* 42.0;
* "Hello, world!";
* b"Hello, world!";
* 'x';
* b'x';
* r"Hello, world!";
* true;
* ```
*/
final class LiteralExpr = Impl::LiteralExpr;

View File

@@ -4,16 +4,7 @@
*/
private import internal.LiteralPatImpl
import codeql.rust.elements.Expr
import codeql.rust.elements.LiteralExpr
import codeql.rust.elements.Pat
/**
* A literal pattern. For example:
* ```rust
* match x {
* 42 => "ok",
* _ => "fail",
* }
* ```
*/
final class LiteralPat = Impl::LiteralPat;

View File

@@ -4,31 +4,9 @@
*/
private import internal.LoopExprImpl
import codeql.rust.elements.Attr
import codeql.rust.elements.BlockExpr
import codeql.rust.elements.Expr
import codeql.rust.elements.Label
/**
* A loop expression. For example:
* ```rust
* loop {
* println!("Hello, world (again)!");
* };
* ```
* ```rust
* 'label: loop {
* println!("Hello, world (once)!");
* break 'label;
* };
* ```
* ```rust
* let mut x = 0;
* loop {
* if x < 10 {
* x += 1;
* } else {
* break;
* }
* };
* ```
*/
final class LoopExpr = Impl::LoopExpr;

View File

@@ -0,0 +1,14 @@
// generated by codegen, do not edit
/**
* This module provides the public class `MacroCall`.
*/
private import internal.MacroCallImpl
import codeql.rust.elements.AssocItem
import codeql.rust.elements.Attr
import codeql.rust.elements.ExternItem
import codeql.rust.elements.Item
import codeql.rust.elements.Path
import codeql.rust.elements.TokenTree
final class MacroCall = Impl::MacroCall;

View File

@@ -0,0 +1,13 @@
// generated by codegen, do not edit
/**
* This module provides the public class `MacroDef`.
*/
private import internal.MacroDefImpl
import codeql.rust.elements.Attr
import codeql.rust.elements.Item
import codeql.rust.elements.Name
import codeql.rust.elements.TokenTree
import codeql.rust.elements.Visibility
final class MacroDef = Impl::MacroDef;

View File

@@ -0,0 +1,10 @@
// generated by codegen, do not edit
/**
* This module provides the public class `MacroExpr`.
*/
private import internal.MacroExprImpl
import codeql.rust.elements.Expr
import codeql.rust.elements.MacroCall
final class MacroExpr = Impl::MacroExpr;

View File

@@ -0,0 +1,10 @@
// generated by codegen, do not edit
/**
* This module provides the public class `MacroPat`.
*/
private import internal.MacroPatImpl
import codeql.rust.elements.MacroCall
import codeql.rust.elements.Pat
final class MacroPat = Impl::MacroPat;

View File

@@ -0,0 +1,13 @@
// generated by codegen, do not edit
/**
* This module provides the public class `MacroRules`.
*/
private import internal.MacroRulesImpl
import codeql.rust.elements.Attr
import codeql.rust.elements.Item
import codeql.rust.elements.Name
import codeql.rust.elements.TokenTree
import codeql.rust.elements.Visibility
final class MacroRules = Impl::MacroRules;

View File

@@ -0,0 +1,10 @@
// generated by codegen, do not edit
/**
* This module provides the public class `MacroType`.
*/
private import internal.MacroTypeImpl
import codeql.rust.elements.MacroCall
import codeql.rust.elements.TypeRef
final class MacroType = Impl::MacroType;

Some files were not shown because too many files have changed in this diff Show More