Fix type of Closure::arg_types

This commit is contained in:
Arthur Baars
2024-09-06 17:59:24 +02:00
parent a33c7703cd
commit bc6da117d2
5 changed files with 14 additions and 12 deletions

4
rust/.generated.list generated
View File

@@ -136,7 +136,7 @@ ql/lib/codeql/rust/generated/BoxPat.qll b69ba2bc341a1bf4c613279e45fb97a530619d41
ql/lib/codeql/rust/generated/Break.qll 36f28582b12840a529514fcf0aac84ceaa452eca4442b347dd7b199659833ec7 ff03dc895c3c2baca41b17d358863cf9bd9209dc306d95c22f03db0716f664c7
ql/lib/codeql/rust/generated/Call.qll b2dc0c89cc8ca855cf38b82b5bcbbf0fb5cce2b5dafbb3eb253accea89818908 13441bcc3f0f68595cea49c4af14165335e67ceb83d2546ab4c45a5d054c2923
ql/lib/codeql/rust/generated/Cast.qll bfd3e61c0a7458adbed7d63bd5351ebdfcb11d42769fc2d34bafa6523f6e94ba e46d9a648e23a5e15e5c02d5d9666d827ef4732b7ac6b2edfc00d56cc239c845
ql/lib/codeql/rust/generated/Closure.qll e6f93c79fe2a9a5f842b30d443d4abb64a72bf400102d2e2287e0a1885bfd0df 4659dfc3b325c44c82013c5e198144ad93dba9c1ee43a0efaa4b83262b7db7f4
ql/lib/codeql/rust/generated/Closure.qll 903b34f075623f952ebdafc105dc2efefd1816feed8df3b735919be8a7a7a5c7 bbb9ffddcc01e28223d1630a5052661ff00dda25f9f226cf8991773cf1862f84
ql/lib/codeql/rust/generated/Const.qll a1c6725f1b7b2482dfd996d44ec695c63230c1c28ee00d9bf694dd3f01831323 a1c6725f1b7b2482dfd996d44ec695c63230c1c28ee00d9bf694dd3f01831323
ql/lib/codeql/rust/generated/ConstBlockPat.qll d0818fe4cee066f1e6d3439c82122942ae62941e69da686b7d5c399e820c395c 2fae5a2f0457bb7106d52ac7457afb597d7ac9658b8dcff8e76294f5fe34019a
ql/lib/codeql/rust/generated/Continue.qll 2aa6a5c99a66a852ee15322f931eeaeb2020732267a33e44adbc5218a77aa994 faf0c36fb1773233dd3c8f43bfb84037a36ef96d0f5b97b01865faf4ff79891e
@@ -176,7 +176,7 @@ ql/lib/codeql/rust/generated/PathPat.qll 5869c513e1d0cb689589e2c72f3feda18b0f246
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 907592ecfe4cce2814f3e24b81de9885fd01e8147d9857fb23614677bcf32808 08271096b8af2d9e55265a2a66acc0fafff4e013c9661ef27b3ac322c75a01e9
ql/lib/codeql/rust/generated/Raw.qll a8ccb9c9a9e2ffcf4f4cf09e54111036f9e5e705dd002f68afcc4de519be56f7 0080046e0a8c1506cf91616de28b8093e9b13f35c0fa11d48fb4913c035c2f85
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

View File

@@ -334,7 +334,7 @@ pub struct Closure {
pub id: TrapId,
pub location: Option<trap::Label>,
pub args: Vec<trap::Label>,
pub arg_types: Vec<trap::Label>,
pub arg_types: Vec<Option<trap::Label>>,
pub ret_type: Option<trap::Label>,
pub body: trap::Label,
pub is_move: bool,
@@ -354,7 +354,9 @@ impl TrapEntry for Closure {
out.add_tuple("closure_args", vec![trap::Arg::Label(id), i.into(), v.into()]);
}
for (i, &v) in self.arg_types.iter().enumerate() {
out.add_tuple("closure_arg_types", vec![trap::Arg::Label(id), i.into(), v.into()]);
if let Some(vv) = v {
out.add_tuple("closure_arg_types", vec![trap::Arg::Label(id), i.into(), v.into()]);
}
}
if let Some(v) = self.ret_type {
out.add_tuple("closure_ret_types", vec![trap::Arg::Label(id), v.into()]);

View File

@@ -41,7 +41,7 @@ module Generated {
final int getNumberOfArgs() { result = count(int i | exists(this.getArg(i))) }
/**
* Gets the `index`th argument type of this closure (0-based).
* Gets the `index`th argument type of this closure (0-based), if it exists.
*/
TypeRef getArgType(int index) {
result =
@@ -50,16 +50,16 @@ module Generated {
.getArgType(index))
}
/**
* Holds if `getArgType(index)` exists.
*/
final predicate hasArgType(int index) { exists(this.getArgType(index)) }
/**
* Gets any of the argument types of this closure.
*/
final TypeRef getAnArgType() { result = this.getArgType(_) }
/**
* Gets the number of argument types of this closure.
*/
final int getNumberOfArgTypes() { result = count(int i | exists(this.getArgType(i))) }
/**
* Gets the ret type of this closure, if it exists.
*/

View File

@@ -317,7 +317,7 @@ module Raw {
Pat getArg(int index) { closure_args(this, index, result) }
/**
* Gets the `index`th argument type of this closure (0-based).
* Gets the `index`th argument type of this closure (0-based), if it exists.
*/
TypeRef getArgType(int index) { closure_arg_types(this, index, result) }

View File

@@ -402,7 +402,7 @@ class Index(Expr):
class Closure(Expr):
args: list[Pat]
arg_types: list[TypeRef]
arg_types: list[optional[TypeRef]]
ret_type: optional[TypeRef]
body: Expr
# TODO