mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
Add fields for OffsetOf
This commit is contained in:
6
rust/.generated.list
generated
6
rust/.generated.list
generated
@@ -167,16 +167,16 @@ ql/lib/codeql/rust/generated/MethodCall.qll 1d7afd5e8795b89f3cd20569fe7e0b7fd339
|
||||
ql/lib/codeql/rust/generated/MissingExpr.qll 90b164567620c88b8e258fa229633365400abeafa4f4b0fcd1c856efc2f9b206 90b164567620c88b8e258fa229633365400abeafa4f4b0fcd1c856efc2f9b206
|
||||
ql/lib/codeql/rust/generated/MissingPat.qll 0d8034cee20bacf07ebb9337c797f53a25686a149f163f801916cd6ec5484710 0d8034cee20bacf07ebb9337c797f53a25686a149f163f801916cd6ec5484710
|
||||
ql/lib/codeql/rust/generated/Module.qll 2a931a4f2cdb2fee00ed83af045ea63d36b7dbd708e58c30445b5610feaae333 cd62add5c31a509f965aa294f44a1607ec7c62e3a9e3fe9ee063b3c814f4eb62
|
||||
ql/lib/codeql/rust/generated/OffsetOf.qll 8b3778c32d2e7c85491e7a85c9c6337de822e946655b9af69a4281838787f291 8b3778c32d2e7c85491e7a85c9c6337de822e946655b9af69a4281838787f291
|
||||
ql/lib/codeql/rust/generated/OffsetOf.qll c5c7218a0dfa6636a4b3e4218969638cc267db94a966b19fbced0ba6f85dbd0e 6c8fac4cd343073ee0ed48498deb7faa65a876776d9ca0a98e51350fead5c8ac
|
||||
ql/lib/codeql/rust/generated/OrPat.qll f8fe5c7b83a08dabcc530484a696274930040ea13501ae20f1426faeec67bcf0 f3adb3148890531b698570a48740335983a5e81977ba4ac651778f940f184398
|
||||
ql/lib/codeql/rust/generated/ParentChild.qll 0a110516379dd64cb1275fb639a47e0268b95cad795a76dfb3eb4a6b5bfc7bcc b9395225775cb390d959f617e61a42b39a1a2a201656bdc26315e27f743e8736
|
||||
ql/lib/codeql/rust/generated/ParentChild.qll 345b5b9fa164fce5886cd06e0739881b28da64870e3b544f8b59556aed85e63d b9395225775cb390d959f617e61a42b39a1a2a201656bdc26315e27f743e8736
|
||||
ql/lib/codeql/rust/generated/Pat.qll fe1c72856442dbab5655eff93f86c2cbce8d69d9fa1f99a0f9203061ea1112a4 d85d86e8b6c48df733589d186f610b1cd9086629180701e017774bddc62402c7
|
||||
ql/lib/codeql/rust/generated/Path.qll ca8878cd96c31ad9238a1d52487e094863d5abba825d189e0ea6f8d674194b75 ca8878cd96c31ad9238a1d52487e094863d5abba825d189e0ea6f8d674194b75
|
||||
ql/lib/codeql/rust/generated/PathPat.qll 5869c513e1d0cb689589e2c72f3feda18b0f246d9b03304d8c0f9237f0300524 5869c513e1d0cb689589e2c72f3feda18b0f246d9b03304d8c0f9237f0300524
|
||||
ql/lib/codeql/rust/generated/PureSynthConstructors.qll 5eb1fc4f6a04172c34ae31e4931e4bf1f8b72fbe414c5f644731a45372d13573 5eb1fc4f6a04172c34ae31e4931e4bf1f8b72fbe414c5f644731a45372d13573
|
||||
ql/lib/codeql/rust/generated/Range.qll 6278d78c7fba390f51b107892262f9c679c8a31695861a64268e9b74c9575e46 2cb49b0d5d4281c10bdd7ddf187f144cd8490cd792218e977c4108ba98883e06
|
||||
ql/lib/codeql/rust/generated/RangePat.qll 6ec95f6cb9c4bd93b38990bb1e3b89b526624305ac6ee7b94e6fb0a2f3db28fc 0e193f3816a7587d5103dba421bc2bf22b869522353d4e3f43d49a792eac6cf4
|
||||
ql/lib/codeql/rust/generated/Raw.qll d1b5db6d3325700e2d5071e5295d1a5b239f0ab157320009ecd9add1313de26e e70f9125f2712932797848acb1073ea454ccbd66626ce22303773c569f103673
|
||||
ql/lib/codeql/rust/generated/Raw.qll 2836b68a614049752714f4929eb5e978383c5dc8bbe9d2fa67c7f0fbfca95eda 0237eedfa08d195d411e1e98f4bfa0fd9bebcf7765c49ca50c47a4d3fad1271f
|
||||
ql/lib/codeql/rust/generated/RecordLit.qll ae3c644237abab89e0443dfcf584906a9714792be755ce3f9fcdae5958024243 ae3c644237abab89e0443dfcf584906a9714792be755ce3f9fcdae5958024243
|
||||
ql/lib/codeql/rust/generated/RecordPat.qll 8c206be87b5738c6107db72cbe4d97a67e55060e92c0a3148fad84092d70f5e7 8c206be87b5738c6107db72cbe4d97a67e55060e92c0a3148fad84092d70f5e7
|
||||
ql/lib/codeql/rust/generated/Ref.qll d26cc357f65fb51a5c07863406f732debe3dc02542b415b281ec582efa08a362 9d62dd9a99e158abc7b42c4e011a5dd0db4dfbce25ab6fe5c600354c18a236bd
|
||||
|
||||
@@ -814,6 +814,8 @@ impl TrapEntry for Module {
|
||||
pub struct OffsetOf {
|
||||
pub id: TrapId,
|
||||
pub location: Option<trap::Label>,
|
||||
pub container: trap::Label,
|
||||
pub fields: Vec<String>,
|
||||
}
|
||||
|
||||
impl TrapEntry for OffsetOf {
|
||||
@@ -822,10 +824,13 @@ impl TrapEntry for OffsetOf {
|
||||
}
|
||||
|
||||
fn emit(self, id: trap::Label, out: &mut trap::Writer) {
|
||||
out.add_tuple("offset_ofs", vec![trap::Arg::Label(id)]);
|
||||
out.add_tuple("offset_ofs", vec![trap::Arg::Label(id), self.container.into()]);
|
||||
if let Some(v) = self.location {
|
||||
out.add_tuple("locatable_locations", vec![trap::Arg::Label(id), v.into()]);
|
||||
}
|
||||
for (i, &v) in self.fields.iter().enumerate() {
|
||||
out.add_tuple("offset_of_fields", vec![trap::Arg::Label(id), i.into(), v.into()]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
28
rust/ql/lib/codeql/rust/generated/OffsetOf.qll
generated
28
rust/ql/lib/codeql/rust/generated/OffsetOf.qll
generated
@@ -7,6 +7,7 @@
|
||||
private import codeql.rust.generated.Synth
|
||||
private import codeql.rust.generated.Raw
|
||||
import codeql.rust.elements.Expr
|
||||
import codeql.rust.elements.TypeRef
|
||||
|
||||
/**
|
||||
* INTERNAL: This module contains the fully generated definition of `OffsetOf` and should not
|
||||
@@ -19,5 +20,32 @@ module Generated {
|
||||
*/
|
||||
class OffsetOf extends Synth::TOffsetOf, Expr {
|
||||
override string getAPrimaryQlClass() { result = "OffsetOf" }
|
||||
|
||||
/**
|
||||
* Gets the container of this offset of.
|
||||
*/
|
||||
TypeRef getContainer() {
|
||||
result =
|
||||
Synth::convertTypeRefFromRaw(Synth::convertOffsetOfToRaw(this)
|
||||
.(Raw::OffsetOf)
|
||||
.getContainer())
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the `index`th field of this offset of (0-based).
|
||||
*/
|
||||
string getField(int index) {
|
||||
result = Synth::convertOffsetOfToRaw(this).(Raw::OffsetOf).getField(index)
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets any of the fields of this offset of.
|
||||
*/
|
||||
final string getAField() { result = this.getField(_) }
|
||||
|
||||
/**
|
||||
* Gets the number of fields of this offset of.
|
||||
*/
|
||||
final int getNumberOfFields() { result = count(int i | exists(this.getField(i))) }
|
||||
}
|
||||
}
|
||||
|
||||
10
rust/ql/lib/codeql/rust/generated/Raw.qll
generated
10
rust/ql/lib/codeql/rust/generated/Raw.qll
generated
@@ -632,6 +632,16 @@ module Raw {
|
||||
*/
|
||||
class OffsetOf extends @offset_of, Expr {
|
||||
override string toString() { result = "OffsetOf" }
|
||||
|
||||
/**
|
||||
* Gets the container of this offset of.
|
||||
*/
|
||||
TypeRef getContainer() { offset_ofs(this, result) }
|
||||
|
||||
/**
|
||||
* Gets the `index`th field of this offset of (0-based).
|
||||
*/
|
||||
string getField(int index) { offset_of_fields(this, index, result) }
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -456,7 +456,15 @@ module_declarations(
|
||||
);
|
||||
|
||||
offset_ofs(
|
||||
unique int id: @offset_of
|
||||
unique int id: @offset_of,
|
||||
int container: @type_ref ref
|
||||
);
|
||||
|
||||
#keyset[id, index]
|
||||
offset_of_fields(
|
||||
int id: @offset_of ref,
|
||||
int index: int ref,
|
||||
string field: string ref
|
||||
);
|
||||
|
||||
or_pats(
|
||||
|
||||
@@ -437,7 +437,9 @@ class Underscore(Expr):
|
||||
|
||||
|
||||
class OffsetOf(Expr):
|
||||
pass
|
||||
container: TypeRef
|
||||
fields: list[string]
|
||||
|
||||
# InlineAsm(InlineAsm),
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user