Rust: rerun codegen

This commit is contained in:
Paolo Tranquilli
2025-06-20 17:45:08 +02:00
parent 12aa93b578
commit efd318dc01
14 changed files with 118 additions and 16 deletions

View File

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

View File

@@ -9046,11 +9046,13 @@ pub struct Const {
pub id: trap::TrapId<Const>,
pub attrs: Vec<trap::Label<Attr>>,
pub body: Option<trap::Label<Expr>>,
pub generic_param_list: Option<trap::Label<GenericParamList>>,
pub is_const: bool,
pub is_default: bool,
pub name: Option<trap::Label<Name>>,
pub type_repr: Option<trap::Label<TypeRepr>>,
pub visibility: Option<trap::Label<Visibility>>,
pub where_clause: Option<trap::Label<WhereClause>>,
}
impl trap::TrapEntry for Const {
@@ -9066,6 +9068,9 @@ impl trap::TrapEntry for Const {
if let Some(v) = self.body {
out.add_tuple("const_bodies", vec![id.into(), v.into()]);
}
if let Some(v) = self.generic_param_list {
out.add_tuple("const_generic_param_lists", vec![id.into(), v.into()]);
}
if self.is_const {
out.add_tuple("const_is_const", vec![id.into()]);
}
@@ -9081,6 +9086,9 @@ impl trap::TrapEntry for Const {
if let Some(v) = self.visibility {
out.add_tuple("const_visibilities", vec![id.into(), v.into()]);
}
if let Some(v) = self.where_clause {
out.add_tuple("const_where_clauses", vec![id.into(), v.into()]);
}
}
}

View File

@@ -828,20 +828,26 @@ impl Translator<'_> {
} else {
node.body().and_then(|x| self.emit_expr(&x))
};
let generic_param_list = node
.generic_param_list()
.and_then(|x| self.emit_generic_param_list(&x));
let is_const = node.const_token().is_some();
let is_default = node.default_token().is_some();
let name = node.name().and_then(|x| self.emit_name(&x));
let type_repr = node.ty().and_then(|x| self.emit_type(&x));
let visibility = node.visibility().and_then(|x| self.emit_visibility(&x));
let where_clause = node.where_clause().and_then(|x| self.emit_where_clause(&x));
let label = self.trap.emit(generated::Const {
id: TrapId::Star,
attrs,
body,
generic_param_list,
is_const,
is_default,
name,
type_repr,
visibility,
where_clause,
});
self.emit_location(label, node);
post_emit!(Const, self, node, label);

View File

@@ -38,7 +38,7 @@ lib/codeql/rust/elements/CastExpr.qll 2fe1f36ba31fa29de309baf0a665cfcae67b61c733
lib/codeql/rust/elements/ClosureBinder.qll 02c8e83bf07deaf7bf0233b76623ec7f1837be8b77fe7e1c23544edc7d85e3c4 2b114d9a6dede694324aebe3dac80a802d139cfacd39beb0f12b5b0a46ee6390
lib/codeql/rust/elements/ClosureExpr.qll 67e2a106e9154c90367b129987e574d2a9ecf5b297536627e43706675d35eaed d6a381132ddd589c5a7ce174f50f9620041ddf690e15a65ebfb05ff7e7c02de7
lib/codeql/rust/elements/Comment.qll fedad50575125e9a64a8a8776a8c1dbf1e76df990f01849d9f0955f9d74cb2a6 8eb1afad1e1007a4f0090fdac65d81726b23eda6517d067fd0185f70f17635ab
lib/codeql/rust/elements/Const.qll 8b9c66b59d9469a78b2c696b6e37d915a25f9dd215c0b79b113dc7d34adca9e3 7b8213bf21403a1f8b78ea6a20b716f312b26fee5526111602482a2e985e8ac5
lib/codeql/rust/elements/Const.qll fd2959d036f47fabcbde9a21c3e173b105168f4944c3cea7c3e8ba4c1f5d6052 c3bde2a8ce4425bd2e20a8a9f96ecf049747935b99a10d35b29ba942e8e44e63
lib/codeql/rust/elements/ConstArg.qll 01865b3be4790c627a062c59ea608462931abcb2f94a132cf265318664fd1251 a2c6bbf63dbfa999e511b6941143a51c9392477d8ccd25e081f85475936ff558
lib/codeql/rust/elements/ConstBlockPat.qll a25f42b84dbeb33e10955735ef53b8bb7e3258522d6d1a9068f19adaf1af89d9 eeb816d2b54db77a1e7bb70e90b68d040a0cd44e9d44455a223311c3615c5e6e
lib/codeql/rust/elements/ConstParam.qll 87776586f7ff562ff3c71373f45cf70486f9a832613a0aaac943311c451cc057 67a31616688106d5130951f2162e5229bff0fde08ff647943663cac427d7048b
@@ -497,7 +497,7 @@ lib/codeql/rust/elements/internal/generated/CastExpr.qll ddc20054b0b339ad4d40298
lib/codeql/rust/elements/internal/generated/ClosureBinder.qll ab199df96f525a083a0762fd654cd098802033c79700a593bb204a9a0c69ec01 86b33543e0886715830cfcdaca43b555a242a4f12a4caa18b88732d5afb584bd
lib/codeql/rust/elements/internal/generated/ClosureExpr.qll 34149bf82f107591e65738221e1407ec1dc9cc0dfb10ae7f761116fda45162de fd2fbc9a87fc0773c940db64013cf784d5e4137515cc1020e2076da329f5a952
lib/codeql/rust/elements/internal/generated/Comment.qll cd1ef861e3803618f9f78a4ac00516d50ecfecdca1c1d14304dc5327cbe07a3b 8b67345aeb15beb5895212228761ea3496297846c93fd2127b417406ae87c201
lib/codeql/rust/elements/internal/generated/Const.qll 6300d7150d03f6bc2f0b29bb7d4a7bc1381c377644b0c61860733be685bac646 f5299a799a33fa28ca5b6d198f43a80696556144236df39124784211a1ad8285
lib/codeql/rust/elements/internal/generated/Const.qll e923b540d1dc26cc59766ecd938b8e18f3c73097a73eeaeed3513c8fca7ac3a8 2261a0c46f4252124c40600e7fb2e5743f0e66d58cedc5768fe57393191a9504
lib/codeql/rust/elements/internal/generated/ConstArg.qll c52bf746f2dc89b8d71b8419736707bfcbb09cca424c3ba76e888e2add415bf6 89309a9df4fde23cfd3d8492908ccec4d90cc8457d35c507ef81371a369941b4
lib/codeql/rust/elements/internal/generated/ConstBlockPat.qll 7526d83ee9565d74776f42db58b1a2efff6fb324cfc7137f51f2206fee815d79 0ab3c22908ff790e7092e576a5df3837db33c32a7922a513a0f5e495729c1ac5
lib/codeql/rust/elements/internal/generated/ConstParam.qll 2e24198f636e4932c79f28c324f395ae5f61f713795ed4543e920913898e2815 5abe6d3df395c679c28a7720479bad455c53bc5ade9133f1ff113ea54dc66c11
@@ -577,7 +577,7 @@ lib/codeql/rust/elements/internal/generated/ParamList.qll eaa0cd4402d3665013d47e
lib/codeql/rust/elements/internal/generated/ParenExpr.qll 812d2ff65079277f39f15c084657a955a960a7c1c0e96dd60472a58d56b945eb eb8c607f43e1fcbb41f37a10de203a1db806690e10ff4f04d48ed874189cb0eb
lib/codeql/rust/elements/internal/generated/ParenPat.qll 24f9dc7fce75827d6fddb856cd48f80168143151b27295c0bab6db5a06567a09 ebadbc6f5498e9ed754b39893ce0763840409a0721036a25b56e1ead7dcc09aa
lib/codeql/rust/elements/internal/generated/ParenTypeRepr.qll 03f5c5b96a37adeb845352d7fcea3e098da9050e534972d14ac0f70d60a2d776 ed3d6e5d02086523087adebce4e89e35461eb95f2a66d1d4100fe23fc691b126
lib/codeql/rust/elements/internal/generated/ParentChild.qll 5278b74de04d54708f078fd813d83ae5f934fa12d420b188c1334e3a7c3b8324 61cf70eb649f241e2fcd5e0ba34df63f3a14f07032811b9ae151721783a0fd20
lib/codeql/rust/elements/internal/generated/ParentChild.qll 5ebb01358afcbee39cfed2a01a31b1f6d427f70e59e296a458dbe57460bf40b7 fa9ed16272ace82d08ddb8aac7ea3305a868b0f63cf60df6f2125a7dc9f4f870
lib/codeql/rust/elements/internal/generated/ParenthesizedArgList.qll d901fdc8142a5b8847cc98fc2afcfd16428b8ace4fbffb457e761b5fd3901a77 5dbb0aea5a13f937da666ccb042494af8f11e776ade1459d16b70a4dd193f9fb
lib/codeql/rust/elements/internal/generated/Pat.qll 3605ac062be2f294ee73336e9669027b8b655f4ad55660e1eab35266275154ee 7f9400db2884d336dd1d21df2a8093759c2a110be9bf6482ce8e80ae0fd74ed4
lib/codeql/rust/elements/internal/generated/Path.qll 9b12afb46fc5a9ad3a811b05472621bbecccb900c47504feb7f29d96b28421ca bcacbffc36fb3e0c9b26523b5963af0ffa9fd6b19f00a2a31bdb2316071546bd
@@ -592,7 +592,7 @@ lib/codeql/rust/elements/internal/generated/PtrTypeRepr.qll 8d0ea4f6c7f8203340bf
lib/codeql/rust/elements/internal/generated/PureSynthConstructors.qll e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f
lib/codeql/rust/elements/internal/generated/RangeExpr.qll 23cca03bf43535f33b22a38894f70d669787be4e4f5b8fe5c8f7b964d30e9027 18624cef6c6b679eeace2a98737e472432e0ead354cca02192b4d45330f047c9
lib/codeql/rust/elements/internal/generated/RangePat.qll 80826a6a6868a803aa2372e31c52a03e1811a3f1f2abdb469f91ca0bfdd9ecb6 34ee1e208c1690cba505dff2c588837c0cd91e185e2a87d1fe673191962276a9
lib/codeql/rust/elements/internal/generated/Raw.qll b6e439cc24f8c02fe73301cd2bc16d59dfd28e2a8a201388d8318c43937309e2 62139c3df2f6c4dca1c897b1384233ff0151b7e5fb1c41a178c5e8e41b5e7f05
lib/codeql/rust/elements/internal/generated/Raw.qll 92c1f49f719ebee9fddb5cd5dded28f768127ffc1e8bb487ece8887bc6608ae6 4c1ad14de73a9998416f121304ef5b58c8e917a980b3f2d795e1d6475f470b0c
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
@@ -748,15 +748,17 @@ test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParam.ql c87b61e80dd62
test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParamList.ql 68ce501516094512dd5bfed42a785474583a91312f704087cba801b02ba7b834 eacbf89d63159e7decfd84c2a1dc5c067dfce56a8157fbb52bc133e9702d266d
test/extractor-tests/generated/ClosureExpr/ClosureExpr_getRetType.ql c95bc7306b2d77aa05a6501b6321e6f1e7a48b7ad422ba082635ab20014288ae fe72d44c9819b42fff49b9092a9fb2bfafde6d3b9e4967547fb5298822f30bc3
test/extractor-tests/generated/Comment/Comment.ql 5428b8417a737f88f0d55d87de45c4693d81f03686f03da11dc5369e163d977b 8948c1860cde198d49cff7c74741f554a9e89f8af97bb94de80f3c62e1e29244
test/extractor-tests/generated/Const/Const.ql 7f9c9ce5b04391ff8f0d419a62972292b1d9811a978cceb129ef5a0f68a02fab c6c1dfa688248310cadd2d6d71d1a70a2b48f5b29ea2078f4dd51db59a0021c0
test/extractor-tests/generated/Const/Const.ql 8cae77fe63a0a64b2ff2f5e642711aa79ad29fb8705d877e195852ed148af67d 6178c888516d9d24aca14a8fdf1e94043e2a7f85332700c13f368b1e22f2bccb
test/extractor-tests/generated/Const/Const_getAttr.ql bd6296dab00065db39663db8d09fe62146838875206ff9d8595d06d6439f5043 34cb55ca6d1f44e27d82a8b624f16f9408bae2485c85da94cc76327eed168577
test/extractor-tests/generated/Const/Const_getAttributeMacroExpansion.ql 82e86399d5cd72621dc8d9cd9f310d3dc7f2ecf208149dab0d202047ccbbd2f8 33df8c5b5044f49ec244e183c61c3b81fabd987f590ba6da4e18e08231343dc8
test/extractor-tests/generated/Const/Const_getBody.ql f50f79b7f42bb1043b79ec96f999fa4740c8014e6969a25812d5d023d7a5a5d8 90e5060ba9757f1021429ed4ec4913bc78747f3fc415456ef7e7fc284b8a0026
test/extractor-tests/generated/Const/Const_getCrateOrigin.ql f042bf15f9bde6c62d129601806c79951a2a131b6388e8df24b1dc5d17fe89f7 7c6decb624f087fda178f87f6609510907d2ed3877b0f36e605e2422b4b13f57
test/extractor-tests/generated/Const/Const_getExtendedCanonicalPath.ql 3300b902e1d1f9928cfe918203b87043e13460cfa5348a8c93712d2e26d61ced 71e7b80d3290f17b1c235adaca2c48ae90eb8b2cb24d4c9e6dc66559daf3824c
test/extractor-tests/generated/Const/Const_getGenericParamList.ql 8bef3c83401a0a203d1e19a4dc652d2285870760cc2032a1b5745fae9fc3f29b 95b2f730daf19eb87b17a3f602ea3a71a1056c8f2a2328d7b46189cc82b29e4c
test/extractor-tests/generated/Const/Const_getName.ql b876a1964bbb857fbe8852fb05f589fba947a494f343e8c96a1171e791aa2b5e 83655b1fbc67a4a1704439726c1138bb6784553e35b6ac16250b807e6cd0f40c
test/extractor-tests/generated/Const/Const_getTypeRepr.ql 87c5deaa31014c40a035deaf149d76b3aca15c4560c93dd6f4b1ee5f76714baa f3e6b31e4877849792778d4535bd0389f3afd482a6a02f9ceb7e792e46fca83e
test/extractor-tests/generated/Const/Const_getVisibility.ql de6b2e9d887316e279b45fab7887980ca7d93fd32c2259f3a06de2b6e2957c12 2f135cdbbb84b43d282131edb7eb4df6caba61bf7421881a49d4679f0f44f661
test/extractor-tests/generated/Const/Const_getWhereClause.ql 9458b25fd2567c92d1230afb844d81f1f9a9a7b4d164cbdf8b86455ef0d02251 8792f1a5cccaf77f6b1673dd5acd067acfb79f9a8a34a0769e0eb69ab89c9f16
test/extractor-tests/generated/ConstArg/ConstArg.ql f1422b216eb45819ff41f0c19e0f88aa184ddd3fa2984ba22ec46df398147fc3 d2e4f367848c2bc4f6aef51c1dd8180035c39919430082c83f18a3f324228df3
test/extractor-tests/generated/ConstArg/ConstArg_getExpr.ql 317fd83ad51acc3ff3dfab71ebb1385b67d49404c1d7b3804a8ca3c099b84e99 91ecf5ebbfc1aab286dce708680f0be97417f9755676db7479fa6836e50be845
test/extractor-tests/generated/ConstBlockPat/ConstBlockPat.ql ee17b4deba9c503130e3ce565102bc8e181770efcb1309be9c822f0a7ba6fc17 638ed17b5c009e71b31f580c4060ba763bd4208c3984b6c032183ab46a4dd43d

2
rust/ql/.gitattributes generated vendored
View File

@@ -756,9 +756,11 @@
/test/extractor-tests/generated/Const/Const_getBody.ql linguist-generated
/test/extractor-tests/generated/Const/Const_getCrateOrigin.ql linguist-generated
/test/extractor-tests/generated/Const/Const_getExtendedCanonicalPath.ql linguist-generated
/test/extractor-tests/generated/Const/Const_getGenericParamList.ql linguist-generated
/test/extractor-tests/generated/Const/Const_getName.ql linguist-generated
/test/extractor-tests/generated/Const/Const_getTypeRepr.ql linguist-generated
/test/extractor-tests/generated/Const/Const_getVisibility.ql linguist-generated
/test/extractor-tests/generated/Const/Const_getWhereClause.ql linguist-generated
/test/extractor-tests/generated/ConstArg/ConstArg.ql linguist-generated
/test/extractor-tests/generated/ConstArg/ConstArg_getExpr.ql linguist-generated
/test/extractor-tests/generated/ConstBlockPat/ConstBlockPat.ql linguist-generated

View File

@@ -7,10 +7,12 @@ private import internal.ConstImpl
import codeql.rust.elements.AssocItem
import codeql.rust.elements.Attr
import codeql.rust.elements.Expr
import codeql.rust.elements.GenericParamList
import codeql.rust.elements.Item
import codeql.rust.elements.Name
import codeql.rust.elements.TypeRepr
import codeql.rust.elements.Visibility
import codeql.rust.elements.WhereClause
/**
* A constant item declaration.

View File

@@ -9,10 +9,12 @@ private import codeql.rust.elements.internal.generated.Raw
import codeql.rust.elements.internal.AssocItemImpl::Impl as AssocItemImpl
import codeql.rust.elements.Attr
import codeql.rust.elements.Expr
import codeql.rust.elements.GenericParamList
import codeql.rust.elements.internal.ItemImpl::Impl as ItemImpl
import codeql.rust.elements.Name
import codeql.rust.elements.TypeRepr
import codeql.rust.elements.Visibility
import codeql.rust.elements.WhereClause
/**
* INTERNAL: This module contains the fully generated definition of `Const` and should not
@@ -61,6 +63,21 @@ module Generated {
*/
final predicate hasBody() { exists(this.getBody()) }
/**
* Gets the generic parameter list of this const, if it exists.
*/
GenericParamList getGenericParamList() {
result =
Synth::convertGenericParamListFromRaw(Synth::convertConstToRaw(this)
.(Raw::Const)
.getGenericParamList())
}
/**
* Holds if `getGenericParamList()` exists.
*/
final predicate hasGenericParamList() { exists(this.getGenericParamList()) }
/**
* Holds if this const is const.
*/
@@ -109,6 +126,21 @@ module Generated {
*/
final predicate hasVisibility() { exists(this.getVisibility()) }
/**
* Gets the where clause of this const, if it exists.
*/
WhereClause getWhereClause() {
result =
Synth::convertWhereClauseFromRaw(Synth::convertConstToRaw(this)
.(Raw::Const)
.getWhereClause())
}
/**
* Holds if `getWhereClause()` exists.
*/
final predicate hasWhereClause() { exists(this.getWhereClause()) }
/**
* Holds if this constant has an implementation.
*

View File

@@ -3242,8 +3242,8 @@ private module Impl {
private Element getImmediateChildOfConst(Const e, int index, string partialPredicateCall) {
exists(
int b, int bAssocItem, int bItem, int n, int nAttr, int nBody, int nName, int nTypeRepr,
int nVisibility
int b, int bAssocItem, int bItem, int n, int nAttr, int nBody, int nGenericParamList,
int nName, int nTypeRepr, int nVisibility, int nWhereClause
|
b = 0 and
bAssocItem = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAssocItem(e, i, _)) | i) and
@@ -3251,9 +3251,11 @@ private module Impl {
n = bItem and
nAttr = n + 1 + max(int i | i = -1 or exists(e.getAttr(i)) | i) and
nBody = nAttr + 1 and
nName = nBody + 1 and
nGenericParamList = nBody + 1 and
nName = nGenericParamList + 1 and
nTypeRepr = nName + 1 and
nVisibility = nTypeRepr + 1 and
nWhereClause = nVisibility + 1 and
(
none()
or
@@ -3266,11 +3268,19 @@ private module Impl {
or
index = nAttr and result = e.getBody() and partialPredicateCall = "Body()"
or
index = nBody and result = e.getName() and partialPredicateCall = "Name()"
index = nBody and
result = e.getGenericParamList() and
partialPredicateCall = "GenericParamList()"
or
index = nGenericParamList and result = e.getName() and partialPredicateCall = "Name()"
or
index = nName and result = e.getTypeRepr() and partialPredicateCall = "TypeRepr()"
or
index = nTypeRepr and result = e.getVisibility() and partialPredicateCall = "Visibility()"
or
index = nVisibility and
result = e.getWhereClause() and
partialPredicateCall = "WhereClause()"
)
)
}

View File

@@ -3710,6 +3710,11 @@ module Raw {
*/
Expr getBody() { const_bodies(this, result) }
/**
* Gets the generic parameter list of this const, if it exists.
*/
GenericParamList getGenericParamList() { const_generic_param_lists(this, result) }
/**
* Holds if this const is const.
*/
@@ -3735,6 +3740,11 @@ module Raw {
*/
Visibility getVisibility() { const_visibilities(this, result) }
/**
* Gets the where clause of this const, if it exists.
*/
WhereClause getWhereClause() { const_where_clauses(this, result) }
/**
* Holds if this constant has an implementation.
*

View File

@@ -2788,6 +2788,12 @@ const_bodies(
int body: @expr ref
);
#keyset[id]
const_generic_param_lists(
int id: @const ref,
int generic_param_list: @generic_param_list ref
);
#keyset[id]
const_is_const(
int id: @const ref
@@ -2816,6 +2822,12 @@ const_visibilities(
int visibility: @visibility ref
);
#keyset[id]
const_where_clauses(
int id: @const ref,
int where_clause: @where_clause ref
);
#keyset[id]
const_has_implementation(
int id: @const ref

View File

@@ -4,9 +4,9 @@ import TestUtils
from
Const x, string hasExtendedCanonicalPath, string hasCrateOrigin,
string hasAttributeMacroExpansion, int getNumberOfAttrs, string hasBody, string isConst,
string isDefault, string hasName, string hasTypeRepr, string hasVisibility,
string hasImplementation
string hasAttributeMacroExpansion, int getNumberOfAttrs, string hasBody,
string hasGenericParamList, string isConst, string isDefault, string hasName, string hasTypeRepr,
string hasVisibility, string hasWhereClause, string hasImplementation
where
toBeTested(x) and
not x.isUnknown() and
@@ -23,14 +23,16 @@ where
) and
getNumberOfAttrs = x.getNumberOfAttrs() and
(if x.hasBody() then hasBody = "yes" else hasBody = "no") and
(if x.hasGenericParamList() then hasGenericParamList = "yes" else hasGenericParamList = "no") and
(if x.isConst() then isConst = "yes" else isConst = "no") and
(if x.isDefault() then isDefault = "yes" else isDefault = "no") and
(if x.hasName() then hasName = "yes" else hasName = "no") and
(if x.hasTypeRepr() then hasTypeRepr = "yes" else hasTypeRepr = "no") and
(if x.hasVisibility() then hasVisibility = "yes" else hasVisibility = "no") and
(if x.hasWhereClause() then hasWhereClause = "yes" else hasWhereClause = "no") and
if x.hasImplementation() then hasImplementation = "yes" else hasImplementation = "no"
select x, "hasExtendedCanonicalPath:", hasExtendedCanonicalPath, "hasCrateOrigin:", hasCrateOrigin,
"hasAttributeMacroExpansion:", hasAttributeMacroExpansion, "getNumberOfAttrs:", getNumberOfAttrs,
"hasBody:", hasBody, "isConst:", isConst, "isDefault:", isDefault, "hasName:", hasName,
"hasTypeRepr:", hasTypeRepr, "hasVisibility:", hasVisibility, "hasImplementation:",
hasImplementation
"hasBody:", hasBody, "hasGenericParamList:", hasGenericParamList, "isConst:", isConst,
"isDefault:", isDefault, "hasName:", hasName, "hasTypeRepr:", hasTypeRepr, "hasVisibility:",
hasVisibility, "hasWhereClause:", hasWhereClause, "hasImplementation:", hasImplementation

View File

@@ -0,0 +1,7 @@
// generated by codegen, do not edit
import codeql.rust.elements
import TestUtils
from Const x
where toBeTested(x) and not x.isUnknown()
select x, x.getGenericParamList()

View File

@@ -0,0 +1,7 @@
// generated by codegen, do not edit
import codeql.rust.elements
import TestUtils
from Const x
where toBeTested(x) and not x.isUnknown()
select x, x.getWhereClause()

2
rust/schema/ast.py generated
View File

@@ -180,11 +180,13 @@ class ClosureExpr(Expr, ):
class Const(AssocItem, Item, ):
attrs: list["Attr"] | child
body: optional["Expr"] | child
generic_param_list: optional["GenericParamList"] | child
is_const: predicate
is_default: predicate
name: optional["Name"] | child
type_repr: optional["TypeRepr"] | child
visibility: optional["Visibility"] | child
where_clause: optional["WhereClause"] | child
class ConstArg(GenericArg, ):
expr: optional["Expr"] | child