mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
Rust: run codegen again
This commit is contained in:
2
rust/extractor/src/generated/.generated.list
generated
2
rust/extractor/src/generated/.generated.list
generated
@@ -1,2 +1,2 @@
|
||||
mod.rs 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7
|
||||
top.rs 409eb2e5fb18cb360a7d255fc2d7926a78bcd2d3c9f8dcdfce0419cea49d1489 409eb2e5fb18cb360a7d255fc2d7926a78bcd2d3c9f8dcdfce0419cea49d1489
|
||||
top.rs 0fc473b83d7cd550396b5c147829487fa7264121b6823fd371b78f55e48935b0 0fc473b83d7cd550396b5c147829487fa7264121b6823fd371b78f55e48935b0
|
||||
|
||||
161
rust/extractor/src/generated/top.rs
generated
161
rust/extractor/src/generated/top.rs
generated
@@ -3615,73 +3615,6 @@ impl From<trap::Label<AsmConst>> for trap::Label<Element> {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct AsmExpr {
|
||||
pub id: trap::TrapId<AsmExpr>,
|
||||
pub asm_pieces: Vec<trap::Label<AsmPiece>>,
|
||||
pub attrs: Vec<trap::Label<Attr>>,
|
||||
pub template: Vec<trap::Label<Expr>>,
|
||||
}
|
||||
|
||||
impl trap::TrapEntry for AsmExpr {
|
||||
fn extract_id(&mut self) -> trap::TrapId<Self> {
|
||||
std::mem::replace(&mut self.id, trap::TrapId::Star)
|
||||
}
|
||||
|
||||
fn emit(self, id: trap::Label<Self>, out: &mut trap::Writer) {
|
||||
out.add_tuple("asm_exprs", vec![id.into()]);
|
||||
for (i, v) in self.asm_pieces.into_iter().enumerate() {
|
||||
out.add_tuple("asm_expr_asm_pieces", vec![id.into(), i.into(), v.into()]);
|
||||
}
|
||||
for (i, v) in self.attrs.into_iter().enumerate() {
|
||||
out.add_tuple("asm_expr_attrs", vec![id.into(), i.into(), v.into()]);
|
||||
}
|
||||
for (i, v) in self.template.into_iter().enumerate() {
|
||||
out.add_tuple("asm_expr_templates", vec![id.into(), i.into(), v.into()]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl trap::TrapClass for AsmExpr {
|
||||
fn class_name() -> &'static str { "AsmExpr" }
|
||||
}
|
||||
|
||||
impl From<trap::Label<AsmExpr>> for trap::Label<Expr> {
|
||||
fn from(value: trap::Label<AsmExpr>) -> Self {
|
||||
// SAFETY: this is safe because in the dbscheme AsmExpr is a subclass of Expr
|
||||
unsafe {
|
||||
Self::from_untyped(value.as_untyped())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<trap::Label<AsmExpr>> for trap::Label<AstNode> {
|
||||
fn from(value: trap::Label<AsmExpr>) -> Self {
|
||||
// SAFETY: this is safe because in the dbscheme AsmExpr is a subclass of AstNode
|
||||
unsafe {
|
||||
Self::from_untyped(value.as_untyped())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<trap::Label<AsmExpr>> for trap::Label<Locatable> {
|
||||
fn from(value: trap::Label<AsmExpr>) -> Self {
|
||||
// SAFETY: this is safe because in the dbscheme AsmExpr is a subclass of Locatable
|
||||
unsafe {
|
||||
Self::from_untyped(value.as_untyped())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<trap::Label<AsmExpr>> for trap::Label<Element> {
|
||||
fn from(value: trap::Label<AsmExpr>) -> Self {
|
||||
// SAFETY: this is safe because in the dbscheme AsmExpr is a subclass of Element
|
||||
unsafe {
|
||||
Self::from_untyped(value.as_untyped())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct AsmLabel {
|
||||
pub id: trap::TrapId<AsmLabel>,
|
||||
@@ -8831,6 +8764,100 @@ impl From<trap::Label<Adt>> for trap::Label<Addressable> {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct AsmExpr {
|
||||
pub id: trap::TrapId<AsmExpr>,
|
||||
pub asm_pieces: Vec<trap::Label<AsmPiece>>,
|
||||
pub attrs: Vec<trap::Label<Attr>>,
|
||||
pub template: Vec<trap::Label<Expr>>,
|
||||
}
|
||||
|
||||
impl trap::TrapEntry for AsmExpr {
|
||||
fn extract_id(&mut self) -> trap::TrapId<Self> {
|
||||
std::mem::replace(&mut self.id, trap::TrapId::Star)
|
||||
}
|
||||
|
||||
fn emit(self, id: trap::Label<Self>, out: &mut trap::Writer) {
|
||||
out.add_tuple("asm_exprs", vec![id.into()]);
|
||||
for (i, v) in self.asm_pieces.into_iter().enumerate() {
|
||||
out.add_tuple("asm_expr_asm_pieces", vec![id.into(), i.into(), v.into()]);
|
||||
}
|
||||
for (i, v) in self.attrs.into_iter().enumerate() {
|
||||
out.add_tuple("asm_expr_attrs", vec![id.into(), i.into(), v.into()]);
|
||||
}
|
||||
for (i, v) in self.template.into_iter().enumerate() {
|
||||
out.add_tuple("asm_expr_templates", vec![id.into(), i.into(), v.into()]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl trap::TrapClass for AsmExpr {
|
||||
fn class_name() -> &'static str { "AsmExpr" }
|
||||
}
|
||||
|
||||
impl From<trap::Label<AsmExpr>> for trap::Label<Expr> {
|
||||
fn from(value: trap::Label<AsmExpr>) -> Self {
|
||||
// SAFETY: this is safe because in the dbscheme AsmExpr is a subclass of Expr
|
||||
unsafe {
|
||||
Self::from_untyped(value.as_untyped())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<trap::Label<AsmExpr>> for trap::Label<AstNode> {
|
||||
fn from(value: trap::Label<AsmExpr>) -> Self {
|
||||
// SAFETY: this is safe because in the dbscheme AsmExpr is a subclass of AstNode
|
||||
unsafe {
|
||||
Self::from_untyped(value.as_untyped())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<trap::Label<AsmExpr>> for trap::Label<Locatable> {
|
||||
fn from(value: trap::Label<AsmExpr>) -> Self {
|
||||
// SAFETY: this is safe because in the dbscheme AsmExpr is a subclass of Locatable
|
||||
unsafe {
|
||||
Self::from_untyped(value.as_untyped())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<trap::Label<AsmExpr>> for trap::Label<Element> {
|
||||
fn from(value: trap::Label<AsmExpr>) -> Self {
|
||||
// SAFETY: this is safe because in the dbscheme AsmExpr is a subclass of Element
|
||||
unsafe {
|
||||
Self::from_untyped(value.as_untyped())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<trap::Label<AsmExpr>> for trap::Label<Item> {
|
||||
fn from(value: trap::Label<AsmExpr>) -> Self {
|
||||
// SAFETY: this is safe because in the dbscheme AsmExpr is a subclass of Item
|
||||
unsafe {
|
||||
Self::from_untyped(value.as_untyped())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<trap::Label<AsmExpr>> for trap::Label<Stmt> {
|
||||
fn from(value: trap::Label<AsmExpr>) -> Self {
|
||||
// SAFETY: this is safe because in the dbscheme AsmExpr is a subclass of Stmt
|
||||
unsafe {
|
||||
Self::from_untyped(value.as_untyped())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<trap::Label<AsmExpr>> for trap::Label<Addressable> {
|
||||
fn from(value: trap::Label<AsmExpr>) -> Self {
|
||||
// SAFETY: this is safe because in the dbscheme AsmExpr is a subclass of Addressable
|
||||
unsafe {
|
||||
Self::from_untyped(value.as_untyped())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct AssocItem {
|
||||
_unused: ()
|
||||
|
||||
1
rust/extractor/src/translate/generated.rs
generated
1
rust/extractor/src/translate/generated.rs
generated
@@ -212,6 +212,7 @@ impl Translator<'_> {
|
||||
return Some(label);
|
||||
}
|
||||
let label = match node {
|
||||
ast::Item::AsmExpr(inner) => self.emit_asm_expr(inner).map(Into::into),
|
||||
ast::Item::Const(inner) => self.emit_const(inner).map(Into::into),
|
||||
ast::Item::Enum(inner) => self.emit_enum(inner).map(Into::into),
|
||||
ast::Item::ExternBlock(inner) => self.emit_extern_block(inner).map(Into::into),
|
||||
|
||||
12
rust/ql/.generated.list
generated
12
rust/ql/.generated.list
generated
@@ -10,7 +10,7 @@ lib/codeql/rust/elements/ArrayTypeRepr.qll a3e61c99567893aa26c610165696e54d11c16
|
||||
lib/codeql/rust/elements/AsmClobberAbi.qll eb5628916f41ab47e333b4528fba3fb80caecd2805fb20ba4f5c8d59c9677f14 636fce6b3a7f04141d0d3a53734d08a188a45bcc04f755bb66746d4f0a13fa72
|
||||
lib/codeql/rust/elements/AsmConst.qll f408468624dd0c80c6dcf62d17e65a94cd477a5a760be1b5fdd07c8189a3b4ea e4159073b3ee6d247e8962ce925da55ea39ee2cd1649f8b785a92aea17dbf144
|
||||
lib/codeql/rust/elements/AsmDirSpec.qll 0c439c031c9f60596373aee8ae2ee70068582548ae365a3c7c19c8b5e2b030d2 0127b08b99bd8725cb6273c1a930aef4434897f23611cfc4ec2dd1b7c9d7e3d0
|
||||
lib/codeql/rust/elements/AsmExpr.qll 33a9a873ba05235dd80103ed22555eee220a4c0cb86605d0f76bcda316605449 c8a99b7bd55aac41e56d05cd5a52692f1d835ed3e1a1bd029bb41d8e2b81b240
|
||||
lib/codeql/rust/elements/AsmExpr.qll 0a477c401583a778ea6736070eaf8959f9312135e863e45fafb6c160da2e8f1b 0447b2438c694f9e9bd2629abb66281724d27b17e534fa8e9a19b2ea30af18d2
|
||||
lib/codeql/rust/elements/AsmLabel.qll 5fa3401c49329ddc845bd95d5f498a455202f685e962dfec9bc91550577da800 f54fe1dcd3c76f36e6abc7b56dc5d6f5b1c30d0fb434db21dd8a1ce731fc6abf
|
||||
lib/codeql/rust/elements/AsmOperand.qll 3987a289233fe09f41f20b27939655cc72fa46847969a55cca6d6393f906969a 8810ff2a64f29d1441a449f5fd74bdc1107782172c7a21baaeb48a40930b7d5a
|
||||
lib/codeql/rust/elements/AsmOperandExpr.qll 72d4455cf742dc977b0a33ea21539422aaf2263f36c6f4420ddcb360ac606a0a 03bd01e81b291c915deb20ce33d5bdf73a709fbc007ab7570490e9a8e7c8604c
|
||||
@@ -469,7 +469,7 @@ lib/codeql/rust/elements/internal/generated/ArrayTypeRepr.qll d1db33bc2c13e5bc6f
|
||||
lib/codeql/rust/elements/internal/generated/AsmClobberAbi.qll 579cabafcf0387a9270112ffa53c0b542c1bfbbebfe5c916ac2e6a9b2453539a 8048f5d8759425c55dc46d8fe502687edc29209e290094e9bcd24ff943c8d801
|
||||
lib/codeql/rust/elements/internal/generated/AsmConst.qll 26c96fc41f2b517b7756fd602c8b0cd4849c7090013fb3f8a5e290e5eabe80cc f0f1bf3e8ae7e20e1c2ab638428190c58ee242a7d15c480ed9c5f789ce42c9cb
|
||||
lib/codeql/rust/elements/internal/generated/AsmDirSpec.qll 4064e9c98aeebfebf29d013f6280f44548996d6f185b19bf96b1b23384c976b9 2bb0b99d20c0fdd6d54d4a1947a02372b6e4b197fb887ad058290ae97f015953
|
||||
lib/codeql/rust/elements/internal/generated/AsmExpr.qll 35df35b391d8bf7ccc53b5ffb1b700984bf423cafc89003cb6e3abd92791a127 0fff4199625c179ab4117cfa9762390a259ea0cba902713efc0f5eb200746b99
|
||||
lib/codeql/rust/elements/internal/generated/AsmExpr.qll afabf734bf93040451cb22d22f71ab9b2abb176bd6e0d862f5cc67d687f84e4c 7e35b3bc93b5e6f6b7259f3261234421eb5778a47192bc0f5e54d062d3bc8dde
|
||||
lib/codeql/rust/elements/internal/generated/AsmLabel.qll 3e97e64f0682709f05464218e0182f64537e08079b0f276738c83eae92c22d25 3ce70364762bc8c0eeb13940406a0613a815a0ae68b24f7e3a1a649a6fe05c89
|
||||
lib/codeql/rust/elements/internal/generated/AsmOperand.qll a18ddb65ba0de6b61fb73e6a39398a127ccd4180b12fea43398e1e8f3e829ecd 22d2162566bcf18e8bb39eac9c1de0ae563013767ef5efebff6d844cb4038cae
|
||||
lib/codeql/rust/elements/internal/generated/AsmOperandExpr.qll 6ec1db45e8523331d516263476bbda1006251ce137c2cd324d9b6c6fabf358df b6278d4e605fb5422ab1e563649da793bacf28cd587328f9cc36ca57799510d0
|
||||
@@ -578,7 +578,7 @@ lib/codeql/rust/elements/internal/generated/ParamList.qll eaa0cd4402d3665013d47e
|
||||
lib/codeql/rust/elements/internal/generated/ParenExpr.qll 812d2ff65079277f39f15c084657a955a960a7c1c0e96dd60472a58d56b945eb eb8c607f43e1fcbb41f37a10de203a1db806690e10ff4f04d48ed874189cb0eb
|
||||
lib/codeql/rust/elements/internal/generated/ParenPat.qll 24f9dc7fce75827d6fddb856cd48f80168143151b27295c0bab6db5a06567a09 ebadbc6f5498e9ed754b39893ce0763840409a0721036a25b56e1ead7dcc09aa
|
||||
lib/codeql/rust/elements/internal/generated/ParenTypeRepr.qll 03f5c5b96a37adeb845352d7fcea3e098da9050e534972d14ac0f70d60a2d776 ed3d6e5d02086523087adebce4e89e35461eb95f2a66d1d4100fe23fc691b126
|
||||
lib/codeql/rust/elements/internal/generated/ParentChild.qll 3657258593982c34cb5934cf51fe21a0749af3161890b43c20f2b327d89ecf77 83509d01d5735e297057327be7fbb837a4633604cf6641ba34bb4825798187da
|
||||
lib/codeql/rust/elements/internal/generated/ParentChild.qll c7958f4e110f4afb810b06946309bf766305cc4d92c92695ae8f06b3f321ddcd 8150b0550b639cffc7c989c32fc3951fad32ec82ad838f359527a473bdb95a3f
|
||||
lib/codeql/rust/elements/internal/generated/ParenthesizedArgList.qll d901fdc8142a5b8847cc98fc2afcfd16428b8ace4fbffb457e761b5fd3901a77 5dbb0aea5a13f937da666ccb042494af8f11e776ade1459d16b70a4dd193f9fb
|
||||
lib/codeql/rust/elements/internal/generated/Pat.qll 3605ac062be2f294ee73336e9669027b8b655f4ad55660e1eab35266275154ee 7f9400db2884d336dd1d21df2a8093759c2a110be9bf6482ce8e80ae0fd74ed4
|
||||
lib/codeql/rust/elements/internal/generated/Path.qll 9b12afb46fc5a9ad3a811b05472621bbecccb900c47504feb7f29d96b28421ca bcacbffc36fb3e0c9b26523b5963af0ffa9fd6b19f00a2a31bdb2316071546bd
|
||||
@@ -593,7 +593,7 @@ lib/codeql/rust/elements/internal/generated/PtrTypeRepr.qll 8d0ea4f6c7f8203340bf
|
||||
lib/codeql/rust/elements/internal/generated/PureSynthConstructors.qll e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f
|
||||
lib/codeql/rust/elements/internal/generated/RangeExpr.qll 23cca03bf43535f33b22a38894f70d669787be4e4f5b8fe5c8f7b964d30e9027 18624cef6c6b679eeace2a98737e472432e0ead354cca02192b4d45330f047c9
|
||||
lib/codeql/rust/elements/internal/generated/RangePat.qll 80826a6a6868a803aa2372e31c52a03e1811a3f1f2abdb469f91ca0bfdd9ecb6 34ee1e208c1690cba505dff2c588837c0cd91e185e2a87d1fe673191962276a9
|
||||
lib/codeql/rust/elements/internal/generated/Raw.qll f5b37458fb9c16829da761323deab22b440c3cb5bf915e07ee3eb2315251020e 0198c8d6ac310f107e4685f6dc0bd2eb58800af41ab4ac4c15c42d8d575f4b0a
|
||||
lib/codeql/rust/elements/internal/generated/Raw.qll 7448186873413f4aa7762c990c1c699e3a379280f0260bc76524386aefe567f1 07acbe3eabaa87147757989e8616046fff218669677e7d3d6465fbda639519e1
|
||||
lib/codeql/rust/elements/internal/generated/RefExpr.qll 7d995884e3dc1c25fc719f5d7253179344d63650e217e9ff6530285fe7a57f64 f2c3c12551deea4964b66553fb9b6423ee16fec53bd63db4796191aa60dc6c66
|
||||
lib/codeql/rust/elements/internal/generated/RefPat.qll 456ede39837463ee22a630ec7ab6c8630d3664a8ea206fcc6e4f199e92fa564c 5622062765f32930465ba6b170e986706f159f6070f48adee3c20e24e8df4e05
|
||||
lib/codeql/rust/elements/internal/generated/RefTypeRepr.qll 5b0663a6d234572fb3e467e276d019415caa95ef006438cc59b7af4e1783161e 0e27c8a8f0e323c0e4d6db01fca821bf07c0864d293cdf96fa891b10820c1e4b
|
||||
@@ -619,7 +619,7 @@ lib/codeql/rust/elements/internal/generated/StructFieldList.qll 5da528a51a6a5db9
|
||||
lib/codeql/rust/elements/internal/generated/StructPat.qll c76fa005c2fd0448a8803233e1e8818c4123301eb66ac5cf69d0b9eaafc61e98 6e0dffccdce24bca20e87d5ba0f0995c9a1ae8983283e71e7dbfcf6fffc67a58
|
||||
lib/codeql/rust/elements/internal/generated/StructPatField.qll 5b5c7302dbc4a902ca8e69ff31875c867e295a16a626ba3cef29cd0aa248f179 4e192a0df79947f5cb0d47fdbbba7986137a6a40a1be92ae119873e2fad67edf
|
||||
lib/codeql/rust/elements/internal/generated/StructPatFieldList.qll 1a95a1bd9f64fb18e9571657cf2d02a8b13c747048a1f0f74baf31b91f0392ad fc274e414ff4ed54386046505920de92755ad0b4d39a7523cdffa4830bd53b37
|
||||
lib/codeql/rust/elements/internal/generated/Synth.qll 4390996606c436cb34201d7dba9821a0d775d1707e54fbbe24cbf788d1d1d948 8e8077a387c69f7f5e3bdb2754654625c233283eb39eab33a72bde536f139a16
|
||||
lib/codeql/rust/elements/internal/generated/Synth.qll 39bd329c2efef8691106070107356da0c336d10cb395aa2129ceb6108db27357 5369b56fe14c1961b38af4288b512dfaf09fc4264efced468af5fc6da403ac04
|
||||
lib/codeql/rust/elements/internal/generated/SynthConstructors.qll bcc7f617b775ac0c7f04b1cc333ed7cc0bd91f1fabc8baa03c824d1df03f6076 bcc7f617b775ac0c7f04b1cc333ed7cc0bd91f1fabc8baa03c824d1df03f6076
|
||||
lib/codeql/rust/elements/internal/generated/Token.qll 77a91a25ca5669703cf3a4353b591cef4d72caa6b0b9db07bb9e005d69c848d1 2fdffc4882ed3a6ca9ac6d1fb5f1ac5a471ca703e2ffdc642885fa558d6e373b
|
||||
lib/codeql/rust/elements/internal/generated/TokenTree.qll 1a3c4f5f30659738641abdd28cb793dab3cfde484196b59656fc0a2767e53511 de2ebb210c7759ef7a6f7ee9f805e1cac879221287281775fc80ba34a5492edf
|
||||
@@ -665,7 +665,7 @@ test/extractor-tests/generated/ArrayTypeRepr/ArrayTypeRepr.ql b262300235ab5bf4fe
|
||||
test/extractor-tests/generated/AsmClobberAbi/AsmClobberAbi.ql adfcfcdc6ac2a9a4849ea592e37da4221b6279cf2ea1112d32b6c89fda33e85e 7438490536e27b7173dec731f6925531a0e3fa839639c97a53905ba72d7efbe5
|
||||
test/extractor-tests/generated/AsmConst/AsmConst.ql 82f322fc8a01f4ccc86b3ecca86a9515313120764c6a3ac00b968e4441625422 62831f204c5c2d0f155152c661f9b5d4a4b685df6e40693106fbef0379378981
|
||||
test/extractor-tests/generated/AsmDirSpec/AsmDirSpec.ql 518a739c91481f67b27bfd1989d9dcbada12de54901eb6d598c896cd72f1f5fe 4567661eecf475fb05e13749b9250bcec51056b6db5a6ae7df24b7ba5cfb88c2
|
||||
test/extractor-tests/generated/AsmExpr/AsmExpr.ql c6c0128b252a13d5acea9a07b3854625aa51ebcce9dd93c11b423c9929d441fb 7618977e43f202af5b7d21b67531c4795bb791abe3cb03ba4077913c430b31d5
|
||||
test/extractor-tests/generated/AsmExpr/AsmExpr.ql 2ecffe80979c6b49ec84466c913ef6424e0b1f61cf8a8d6f68ac24744a08eb0e 0bd5ee2a93d75c4daa1698613b5d5a462341d53b99e3da8af81ad51fa15a7f7e
|
||||
test/extractor-tests/generated/AsmLabel/AsmLabel.ql 130bf49dc1f5ae79e3588415b9a4c25dfdcbcac1884db9b2fb802a68e33180e5 c087e47d8953d312488fcc0b1bcbfca02521e3683e2063eaf380d76399bca037
|
||||
test/extractor-tests/generated/AsmOperandExpr/AsmOperandExpr.ql e866fd4715e78511352bb286c1120cbd52c4d960664d57dd99f0380eb1db7109 081d6a6267a3e251a123099b4c1e7d3c5a3b56e0efe9db7c7db24db1c08b7e0d
|
||||
test/extractor-tests/generated/AsmOperandNamed/AsmOperandNamed.ql fb1eb1f275ad251ba2e0876cf1d097bb33f20d06b0e50f8c01f7c11c71057688 e308567ffd18671cf172853a5c594f0f211d492c7e2fb58be412703d1b342b41
|
||||
|
||||
1
rust/ql/lib/codeql/rust/elements/AsmExpr.qll
generated
1
rust/ql/lib/codeql/rust/elements/AsmExpr.qll
generated
@@ -7,6 +7,7 @@ private import internal.AsmExprImpl
|
||||
import codeql.rust.elements.AsmPiece
|
||||
import codeql.rust.elements.Attr
|
||||
import codeql.rust.elements.Expr
|
||||
import codeql.rust.elements.Item
|
||||
|
||||
/**
|
||||
* An inline assembly expression. For example:
|
||||
|
||||
@@ -10,6 +10,7 @@ import codeql.rust.elements.AsmPiece
|
||||
import codeql.rust.elements.Attr
|
||||
import codeql.rust.elements.Expr
|
||||
import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl
|
||||
import codeql.rust.elements.internal.ItemImpl::Impl as ItemImpl
|
||||
|
||||
/**
|
||||
* INTERNAL: This module contains the fully generated definition of `AsmExpr` and should not
|
||||
@@ -27,7 +28,7 @@ module Generated {
|
||||
* INTERNAL: Do not reference the `Generated::AsmExpr` class directly.
|
||||
* Use the subclass `AsmExpr`, where the following predicates are available.
|
||||
*/
|
||||
class AsmExpr extends Synth::TAsmExpr, ExprImpl::Expr {
|
||||
class AsmExpr extends Synth::TAsmExpr, ExprImpl::Expr, ItemImpl::Item {
|
||||
override string getAPrimaryQlClass() { result = "AsmExpr" }
|
||||
|
||||
/**
|
||||
|
||||
@@ -863,27 +863,6 @@ private module Impl {
|
||||
)
|
||||
}
|
||||
|
||||
private Element getImmediateChildOfAsmExpr(AsmExpr e, int index, string partialPredicateCall) {
|
||||
exists(int n, int nAsmPiece, int nAttr, int nTemplate |
|
||||
n = 0 and
|
||||
nAsmPiece = n + 1 + max(int i | i = -1 or exists(e.getAsmPiece(i)) | i) and
|
||||
nAttr = nAsmPiece + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and
|
||||
nTemplate = nAttr + 1 + max(int i | i = -1 or exists(e.getTemplate(i)) | i) and
|
||||
(
|
||||
none()
|
||||
or
|
||||
result = e.getAsmPiece(index - n) and
|
||||
partialPredicateCall = "AsmPiece(" + (index - n).toString() + ")"
|
||||
or
|
||||
result = e.getAttr(index - nAsmPiece) and
|
||||
partialPredicateCall = "Attr(" + (index - nAsmPiece).toString() + ")"
|
||||
or
|
||||
result = e.getTemplate(index - nAttr) and
|
||||
partialPredicateCall = "Template(" + (index - nAttr).toString() + ")"
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
private Element getImmediateChildOfAsmLabel(AsmLabel e, int index, string partialPredicateCall) {
|
||||
exists(int n, int nBlockExpr |
|
||||
n = 0 and
|
||||
@@ -2147,6 +2126,32 @@ private module Impl {
|
||||
)
|
||||
}
|
||||
|
||||
private Element getImmediateChildOfAsmExpr(AsmExpr e, int index, string partialPredicateCall) {
|
||||
exists(int n, int nAttributeMacroExpansion, int nAsmPiece, int nAttr, int nTemplate |
|
||||
n = 0 and
|
||||
nAttributeMacroExpansion = n + 1 and
|
||||
nAsmPiece = nAttributeMacroExpansion + 1 + max(int i | i = -1 or exists(e.getAsmPiece(i)) | i) and
|
||||
nAttr = nAsmPiece + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and
|
||||
nTemplate = nAttr + 1 + max(int i | i = -1 or exists(e.getTemplate(i)) | i) and
|
||||
(
|
||||
none()
|
||||
or
|
||||
index = n and
|
||||
result = e.getAttributeMacroExpansion() and
|
||||
partialPredicateCall = "AttributeMacroExpansion()"
|
||||
or
|
||||
result = e.getAsmPiece(index - nAttributeMacroExpansion) and
|
||||
partialPredicateCall = "AsmPiece(" + (index - nAttributeMacroExpansion).toString() + ")"
|
||||
or
|
||||
result = e.getAttr(index - nAsmPiece) and
|
||||
partialPredicateCall = "Attr(" + (index - nAsmPiece).toString() + ")"
|
||||
or
|
||||
result = e.getTemplate(index - nAttr) and
|
||||
partialPredicateCall = "Template(" + (index - nAttr).toString() + ")"
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
private Element getImmediateChildOfBlockExpr(BlockExpr e, int index, string partialPredicateCall) {
|
||||
exists(int n, int nLabel, int nAttr, int nStmtList |
|
||||
n = 0 and
|
||||
@@ -3153,8 +3158,6 @@ private module Impl {
|
||||
or
|
||||
result = getImmediateChildOfAsmConst(e, index, partialAccessor)
|
||||
or
|
||||
result = getImmediateChildOfAsmExpr(e, index, partialAccessor)
|
||||
or
|
||||
result = getImmediateChildOfAsmLabel(e, index, partialAccessor)
|
||||
or
|
||||
result = getImmediateChildOfAsmOperandNamed(e, index, partialAccessor)
|
||||
@@ -3309,6 +3312,8 @@ private module Impl {
|
||||
or
|
||||
result = getImmediateChildOfArrayRepeatExpr(e, index, partialAccessor)
|
||||
or
|
||||
result = getImmediateChildOfAsmExpr(e, index, partialAccessor)
|
||||
or
|
||||
result = getImmediateChildOfBlockExpr(e, index, partialAccessor)
|
||||
or
|
||||
result = getImmediateChildOfCallExpr(e, index, partialAccessor)
|
||||
|
||||
@@ -1521,35 +1521,6 @@ module Raw {
|
||||
predicate isConst() { asm_const_is_const(this) }
|
||||
}
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
* An inline assembly expression. For example:
|
||||
* ```rust
|
||||
* unsafe {
|
||||
* #[inline(always)]
|
||||
* builtin # asm("cmp {0}, {1}", in(reg) a, in(reg) b);
|
||||
* }
|
||||
* ```
|
||||
*/
|
||||
class AsmExpr extends @asm_expr, Expr {
|
||||
override string toString() { result = "AsmExpr" }
|
||||
|
||||
/**
|
||||
* Gets the `index`th asm piece of this asm expression (0-based).
|
||||
*/
|
||||
AsmPiece getAsmPiece(int index) { asm_expr_asm_pieces(this, index, result) }
|
||||
|
||||
/**
|
||||
* Gets the `index`th attr of this asm expression (0-based).
|
||||
*/
|
||||
Attr getAttr(int index) { asm_expr_attrs(this, index, result) }
|
||||
|
||||
/**
|
||||
* Gets the `index`th template of this asm expression (0-based).
|
||||
*/
|
||||
Expr getTemplate(int index) { asm_expr_templates(this, index, result) }
|
||||
}
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
* A label in an inline assembly block.
|
||||
@@ -3592,6 +3563,35 @@ module Raw {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
* An inline assembly expression. For example:
|
||||
* ```rust
|
||||
* unsafe {
|
||||
* #[inline(always)]
|
||||
* builtin # asm("cmp {0}, {1}", in(reg) a, in(reg) b);
|
||||
* }
|
||||
* ```
|
||||
*/
|
||||
class AsmExpr extends @asm_expr, Expr, Item {
|
||||
override string toString() { result = "AsmExpr" }
|
||||
|
||||
/**
|
||||
* Gets the `index`th asm piece of this asm expression (0-based).
|
||||
*/
|
||||
AsmPiece getAsmPiece(int index) { asm_expr_asm_pieces(this, index, result) }
|
||||
|
||||
/**
|
||||
* Gets the `index`th attr of this asm expression (0-based).
|
||||
*/
|
||||
Attr getAttr(int index) { asm_expr_attrs(this, index, result) }
|
||||
|
||||
/**
|
||||
* Gets the `index`th template of this asm expression (0-based).
|
||||
*/
|
||||
Expr getTemplate(int index) { asm_expr_templates(this, index, result) }
|
||||
}
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
* An associated item in a `Trait` or `Impl`.
|
||||
|
||||
@@ -774,8 +774,8 @@ module Synth {
|
||||
* INTERNAL: Do not use.
|
||||
*/
|
||||
class TItem =
|
||||
TAdt or TAssocItem or TExternBlock or TExternCrate or TExternItem or TImpl or TMacroDef or
|
||||
TMacroRules or TModule or TTrait or TTraitAlias or TUse;
|
||||
TAdt or TAsmExpr or TAssocItem or TExternBlock or TExternCrate or TExternItem or TImpl or
|
||||
TMacroDef or TMacroRules or TModule or TTrait or TTraitAlias or TUse;
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
@@ -2219,6 +2219,8 @@ module Synth {
|
||||
TItem convertItemFromRaw(Raw::Element e) {
|
||||
result = convertAdtFromRaw(e)
|
||||
or
|
||||
result = convertAsmExprFromRaw(e)
|
||||
or
|
||||
result = convertAssocItemFromRaw(e)
|
||||
or
|
||||
result = convertExternBlockFromRaw(e)
|
||||
@@ -3803,6 +3805,8 @@ module Synth {
|
||||
Raw::Element convertItemToRaw(TItem e) {
|
||||
result = convertAdtToRaw(e)
|
||||
or
|
||||
result = convertAsmExprToRaw(e)
|
||||
or
|
||||
result = convertAssocItemToRaw(e)
|
||||
or
|
||||
result = convertExternBlockToRaw(e)
|
||||
|
||||
@@ -1272,31 +1272,6 @@ asm_const_is_const(
|
||||
int id: @asm_const ref
|
||||
);
|
||||
|
||||
asm_exprs(
|
||||
unique int id: @asm_expr
|
||||
);
|
||||
|
||||
#keyset[id, index]
|
||||
asm_expr_asm_pieces(
|
||||
int id: @asm_expr ref,
|
||||
int index: int ref,
|
||||
int asm_piece: @asm_piece ref
|
||||
);
|
||||
|
||||
#keyset[id, index]
|
||||
asm_expr_attrs(
|
||||
int id: @asm_expr ref,
|
||||
int index: int ref,
|
||||
int attr: @attr ref
|
||||
);
|
||||
|
||||
#keyset[id, index]
|
||||
asm_expr_templates(
|
||||
int id: @asm_expr ref,
|
||||
int index: int ref,
|
||||
int template: @expr ref
|
||||
);
|
||||
|
||||
asm_labels(
|
||||
unique int id: @asm_label
|
||||
);
|
||||
@@ -1905,6 +1880,7 @@ infer_type_reprs(
|
||||
|
||||
@item =
|
||||
@adt
|
||||
| @asm_expr
|
||||
| @assoc_item
|
||||
| @extern_block
|
||||
| @extern_crate
|
||||
@@ -2709,6 +2685,31 @@ adt_derive_macro_expansions(
|
||||
int derive_macro_expansion: @macro_items ref
|
||||
);
|
||||
|
||||
asm_exprs(
|
||||
unique int id: @asm_expr
|
||||
);
|
||||
|
||||
#keyset[id, index]
|
||||
asm_expr_asm_pieces(
|
||||
int id: @asm_expr ref,
|
||||
int index: int ref,
|
||||
int asm_piece: @asm_piece ref
|
||||
);
|
||||
|
||||
#keyset[id, index]
|
||||
asm_expr_attrs(
|
||||
int id: @asm_expr ref,
|
||||
int index: int ref,
|
||||
int attr: @attr ref
|
||||
);
|
||||
|
||||
#keyset[id, index]
|
||||
asm_expr_templates(
|
||||
int id: @asm_expr ref,
|
||||
int index: int ref,
|
||||
int template: @expr ref
|
||||
);
|
||||
|
||||
@assoc_item =
|
||||
@const
|
||||
| @function
|
||||
|
||||
@@ -4,6 +4,20 @@ import TestUtils
|
||||
|
||||
query predicate instances(AsmExpr x) { toBeTested(x) and not x.isUnknown() }
|
||||
|
||||
query predicate getExtendedCanonicalPath(AsmExpr x, string getExtendedCanonicalPath) {
|
||||
toBeTested(x) and not x.isUnknown() and getExtendedCanonicalPath = x.getExtendedCanonicalPath()
|
||||
}
|
||||
|
||||
query predicate getCrateOrigin(AsmExpr x, string getCrateOrigin) {
|
||||
toBeTested(x) and not x.isUnknown() and getCrateOrigin = x.getCrateOrigin()
|
||||
}
|
||||
|
||||
query predicate getAttributeMacroExpansion(AsmExpr x, MacroItems getAttributeMacroExpansion) {
|
||||
toBeTested(x) and
|
||||
not x.isUnknown() and
|
||||
getAttributeMacroExpansion = x.getAttributeMacroExpansion()
|
||||
}
|
||||
|
||||
query predicate getAsmPiece(AsmExpr x, int index, AsmPiece getAsmPiece) {
|
||||
toBeTested(x) and not x.isUnknown() and getAsmPiece = x.getAsmPiece(index)
|
||||
}
|
||||
|
||||
2
rust/schema/ast.py
generated
2
rust/schema/ast.py
generated
@@ -69,7 +69,7 @@ class AsmConst(AsmOperand, ):
|
||||
class AsmDirSpec(AstNode, ):
|
||||
pass
|
||||
|
||||
class AsmExpr(Expr, ):
|
||||
class AsmExpr(Expr, Item, ):
|
||||
asm_pieces: list["AsmPiece"] | child
|
||||
attrs: list["Attr"] | child
|
||||
template: list["Expr"] | child
|
||||
|
||||
Reference in New Issue
Block a user