Rust: add Comment to schema

This commit is contained in:
Arthur Baars
2024-09-30 14:29:11 +02:00
parent c3311e52a6
commit fd459be165
22 changed files with 415 additions and 8 deletions

View File

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

View File

@@ -2278,6 +2278,42 @@ impl From<trap::Label<StmtList>> for trap::Label<Locatable> {
}
}
#[derive(Debug)]
pub struct Token {
_unused: ()
}
impl trap::TrapClass for Token {
fn class_name() -> &'static str { "Token" }
}
impl From<trap::Label<Token>> for trap::Label<AstNode> {
fn from(value: trap::Label<Token>) -> Self {
// SAFETY: this is safe because in the dbscheme Token is a subclass of AstNode
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
impl From<trap::Label<Token>> for trap::Label<Element> {
fn from(value: trap::Label<Token>) -> Self {
// SAFETY: this is safe because in the dbscheme Token is a subclass of Element
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
impl From<trap::Label<Token>> for trap::Label<Locatable> {
fn from(value: trap::Label<Token>) -> Self {
// SAFETY: this is safe because in the dbscheme Token is a subclass of Locatable
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
#[derive(Debug)]
pub struct TokenTree {
pub id: trap::TrapId<TokenTree>,
@@ -3787,6 +3823,63 @@ impl From<trap::Label<ClosureExpr>> for trap::Label<Locatable> {
}
}
#[derive(Debug)]
pub struct Comment {
pub id: trap::TrapId<Comment>,
pub parent: trap::Label<AstNode>,
pub text: String,
}
impl trap::TrapEntry for Comment {
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("comments", vec![id.into(), self.parent.into(), self.text.into()]);
}
}
impl trap::TrapClass for Comment {
fn class_name() -> &'static str { "Comment" }
}
impl From<trap::Label<Comment>> for trap::Label<AstNode> {
fn from(value: trap::Label<Comment>) -> Self {
// SAFETY: this is safe because in the dbscheme Comment is a subclass of AstNode
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
impl From<trap::Label<Comment>> for trap::Label<Element> {
fn from(value: trap::Label<Comment>) -> Self {
// SAFETY: this is safe because in the dbscheme Comment is a subclass of Element
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
impl From<trap::Label<Comment>> for trap::Label<Locatable> {
fn from(value: trap::Label<Comment>) -> Self {
// SAFETY: this is safe because in the dbscheme Comment is a subclass of Locatable
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
impl From<trap::Label<Comment>> for trap::Label<Token> {
fn from(value: trap::Label<Comment>) -> Self {
// SAFETY: this is safe because in the dbscheme Comment is a subclass of Token
unsafe {
Self::from_untyped(value.as_untyped())
}
}
}
#[derive(Debug)]
pub struct ConstArg {
pub id: trap::TrapId<ConstArg>,

View File

@@ -18,6 +18,7 @@ lib/codeql/rust/elements/CallExpr.qll 6760ef2753fcaa9f02860bfeadfd1b1603d0d5b35f
lib/codeql/rust/elements/CastExpr.qll ba281bde130f43c486c4ad889539b77fba9e41afdf7980e50b6a8696a1ec7527 61257003d395896ec60729d0bc01da36697615bb725d07141255fbb5c44e50a0
lib/codeql/rust/elements/ClosureBinder.qll 977df800f97cc9b03fffb5e5e1fc6acd08a2938e04cb6ad91108784a15b0d510 f6fad4127226fe1dff2f16416d8a7fde5d8ab4a88f30e443ac5e5ff618de3e05
lib/codeql/rust/elements/ClosureExpr.qll 8f06357ae134e42c073eef994c83c04b8cf294fe33b286dbd75c0e705ce29d05 9d9e282d965fed723965376801d4afa49444d1d9be9b093d02e276729a2cf7ad
lib/codeql/rust/elements/Comment.qll fedad50575125e9a64a8a8776a8c1dbf1e76df990f01849d9f0955f9d74cb2a6 8eb1afad1e1007a4f0090fdac65d81726b23eda6517d067fd0185f70f17635ab
lib/codeql/rust/elements/Const.qll 2843a870e2abdf5b63fbea13f8a9ec4981b74369adec2ed3ce00a7d6f5a6fee3 c0bdb467cce63dcd3c65b21ef0836d8bf4e6c8d7d70049df8581fd35fdd03083
lib/codeql/rust/elements/ConstArg.qll f37b34417503bbd2f3ce09b3211d8fa71f6a954970c2738c73be6c55f204e58e 15ef5e189b67cfdfe4d16909e0b411ac8fdd4ef187c328bdede03a1a5e416b54
lib/codeql/rust/elements/ConstBlockPat.qll a25f42b84dbeb33e10955735ef53b8bb7e3258522d6d1a9068f19adaf1af89d9 eeb816d2b54db77a1e7bb70e90b68d040a0cd44e9d44455a223311c3615c5e6e
@@ -121,6 +122,7 @@ lib/codeql/rust/elements/Static.qll 1e25940c774538de9b1aea877e20e34b672d6a3ed3b5
lib/codeql/rust/elements/Stmt.qll 532b12973037301246daf7d8c0177f734202f43d9261c7a4ca6f5080eea8ca64 b838643c4f2b4623d2c816cddad0e68ca3e11f2879ab7beaece46f489ec4b1f3
lib/codeql/rust/elements/StmtList.qll 6f990782d5a5307d6d8a3256eb510aedfdaf7bd0e45f3dff35388842ab487b8c b412a27dea0c67307ab79104d45c5b4848c3191cc983e8b0d8dfa739a1b65d9c
lib/codeql/rust/elements/Struct.qll 96b7020c7670d5ea7effa6e390d3a163dba05ca5206cfdd1284f4a41e5664c6a 3fea0d13b8da0f210f3ad9004189efc3c56bcc90e67d6ef7817c6767f6aff273
lib/codeql/rust/elements/Token.qll e2de97c32e12c7ac9369f8dccabc22d89bfcbf7f6acd99f1aa7faa38eb4ac2b2 888d7e1743e802790e78bae694fedb4aba361b600fb9d9ecf022436f2138e13c
lib/codeql/rust/elements/TokenTree.qll 68e579812960d855a8a7a370ce55566a0df5adc62b7e6ba19d775fff961ea67b af2520f272e937c898c51693c1157a61caac9c25826918981803b12b5a9cb246
lib/codeql/rust/elements/Trait.qll 6522741fb9f1fce1fe570c078e8c8a064d3bd4520c95cd5bb2d1eb1bb8a24861 be8dbf5418fd05f2dc9d72379ae6b78cb2469b0c0f8092e176c5937a46788e79
lib/codeql/rust/elements/TraitAlias.qll cb2af66ca1da20122b800097dbaaa904e5b6e753571fcfd6821e779be273d742 da8666db52609a5d04b847dfcecf753644f813597d58a4aa1a7e2d35ede96ef8
@@ -190,6 +192,8 @@ lib/codeql/rust/elements/internal/ClosureBinderConstructor.qll 6e376ab9d40308e95
lib/codeql/rust/elements/internal/ClosureBinderImpl.qll 58c6b17d34d678802ce3484f556482f3f6e3c3ff9a4be0e845bc2077818ab6fb 467261e12cba46f324364f5366bdb0034bf3c922b08307d39441ea5181e3f5f8
lib/codeql/rust/elements/internal/ClosureExprConstructor.qll a348229d2b25c7ebd43b58461830b7915e92d31ae83436ec831e0c4873f6218a 70a1d2ac33db3ac4da5826b0e8628f2f29a8f9cdfd8e4fd0e488d90ce0031a38
lib/codeql/rust/elements/internal/ClosureExprImpl.qll 5ae3d211273b3effc3bff9f06bcef480f8264084e0509e69b8ff29bc29f47b05 ff562bc8d15ecb76ada3111c7c74dd990a0e80f41a32477f5f2f7db9e8f71102
lib/codeql/rust/elements/internal/CommentConstructor.qll 0b4a6a976d667bf7595500dfb91b9cfc87460a501837ba5382d9a8d8321d7736 7d02d8c94a319dc48e7978d5270e33fc5c308d443768ff96b618236d250123f1
lib/codeql/rust/elements/internal/CommentImpl.qll c1b7f2fca9cfb7e611b25486ca5f06c4996f4436b72ed3a76e27a6409af4ec01 36f7d7c6d2dadda4d3423afc4f23bdaf275978b6f3d9ca71bf145afc92858f9c
lib/codeql/rust/elements/internal/ConstArgConstructor.qll f63021dc1ca2276786da3a981d06c18d7a360b5e75c08bca5d1afece4f7c4a83 487a870cbf5ed6554d671a8e159edd9261d853eba2d28ce2bd459759f47f11f2
lib/codeql/rust/elements/internal/ConstArgImpl.qll 234fe6533c208a1731cdb423aa3a28909bd7e042dbc28bbedfd4f62e42b6f21e c576a49006f7a10483041fc07f2f0d089710ac61840be61a2e71140db709f9c6
lib/codeql/rust/elements/internal/ConstBlockPatConstructor.qll ddb4a0045635d477e87360ecafec0ba90ddcffc6e62996eb6e7edd5a5d65b860 442061d0497a615b3f008b990f5e3c4f045110f76500eff81a7f44ffd1319acf
@@ -380,6 +384,7 @@ lib/codeql/rust/elements/internal/StmtListConstructor.qll 435d59019e17a6279110a2
lib/codeql/rust/elements/internal/StmtListImpl.qll fc16097d08124bcc39c998b07023710e0152baed165fb134cac2ee27e22a9f7a a4eceb42720593d8d0ce031016465de0bb61d40f31b2cc2718626ef8348ac900
lib/codeql/rust/elements/internal/StructConstructor.qll 52921ea6e70421fd08884dc061d0c2dfbbb8dd83d98f1f3c70572cfe57b2a173 dcb3ea8e45ee875525c645fe5d08e6db9013b86bd351c77df4590d0c1439ab9f
lib/codeql/rust/elements/internal/StructImpl.qll 7e3b58c3038ad7a3315cae34a34f99380e36d33cf3fb4437de6f6dcfed2ad579 1cfcb3bb5381349a2a4074a9e53927f5c540f2b251b187ad28da300968dfc649
lib/codeql/rust/elements/internal/TokenImpl.qll 87629ffee74cacc6e8af5e96e18e62fb0fa4043d3ba1e7360daa880e628f8530 d54e213e39ae2b9bb92ab377dc72d72ba5bca88b72d29032507cdcbef201a215
lib/codeql/rust/elements/internal/TokenTreeConstructor.qll 0be1f838b04ff944560aa477cbe4ab1ad0b3f4ae982de84773faac5902fcae45 254b387adc2e1e3c355651ab958785d0b8babbc0030194234698a1219e9497b3
lib/codeql/rust/elements/internal/TokenTreeImpl.qll c61574f2b551db24640258117e0c8653196ba91392ce81da71a3a528ee07b1ad 489a1c8f550725e28871ae99c41d03b719c3099b8f73ae7422f497430f616267
lib/codeql/rust/elements/internal/TraitAliasConstructor.qll d2f159cac53b9d65ec8176b8c8ccb944541cd35c64f0d1ceabb32cd975c000bf 6564981793de762af2775cc729e25054ea788648509d151cbfdbdf99fc9ed364
@@ -462,6 +467,7 @@ lib/codeql/rust/elements/internal/generated/CallExpr.qll c2700dbd9c33dcc14de10dc
lib/codeql/rust/elements/internal/generated/CastExpr.qll d6fbf02e9e202254666082a9116634d0eb933177866ac4c0a57b5e9c4bb4b383 477f67773492e3b82695461d56327c9db05a7d1a67e8d192406265f2ce369670
lib/codeql/rust/elements/internal/generated/ClosureBinder.qll 94c0dcdd4cd87d115659d496c88a98354bc7d4ddc0fa27028003bf7688b99987 d59d713b426dbbdb775df9092d176eea031dac1f14e468810f2fc8591399cd19
lib/codeql/rust/elements/internal/generated/ClosureExpr.qll f9047451cb8b53f8b77e1c01f7ef485d5b5a92999e0591c6702062050052fa2f 2252be8b3022c587a8c6ad93b64d856263be7bfe2938c1d063e7cad845dd38e2
lib/codeql/rust/elements/internal/generated/Comment.qll cd1ef861e3803618f9f78a4ac00516d50ecfecdca1c1d14304dc5327cbe07a3b 8b67345aeb15beb5895212228761ea3496297846c93fd2127b417406ae87c201
lib/codeql/rust/elements/internal/generated/Const.qll 0dbea9732880a4583166714d077276ec2b5665fa9772ea4284ee7b3f3d567923 38efc474b76f0b13695e9d9b39d016200c251fd9db48d4a1ab27dcb38946ca72
lib/codeql/rust/elements/internal/generated/ConstArg.qll e2451cac6ee464f5b64883d60d534996fcff061a520517ac792116238a11e185 1dd6d4b073b0970448a52bbe2468cd160dfe108971dbf9ae9305900bd22ef146
lib/codeql/rust/elements/internal/generated/ConstBlockPat.qll e90cf24d7f995595111f2b48bd3775d064bc968c24074c122141aa0f058dcb83 a44f6e14da8cc760a0aae947c20ec47fff488da1e9a8dfab58b7dbc42c296fec
@@ -531,7 +537,7 @@ lib/codeql/rust/elements/internal/generated/ParamList.qll c808c9d84dd7800573832b
lib/codeql/rust/elements/internal/generated/ParenExpr.qll bc0731505bfe88516205ec360582a4222d2681d11342c93e15258590ddee82f2 d4bd6e0c80cf1d63746c88d4bcb3a01d4c75732e5da09e3ebd9437ced227fb60
lib/codeql/rust/elements/internal/generated/ParenPat.qll ce24b8f8ecbf0f204af200317405724063887257460c80cf250c39b2fdf37185 e7c87d37e1a0ca7ea03840017e1aa9ddb7f927f1f3b6396c0305b46aeee33db6
lib/codeql/rust/elements/internal/generated/ParenType.qll 9cc954d73f8330dcac7b475f97748b63af5c8766dee9d2f2872c0a7e4c903537 c07534c8a9c683c4a9b11d490095647e420de0a0bfc23273eaf6f31b00244273
lib/codeql/rust/elements/internal/generated/ParentChild.qll 62153298532ad8787b0c02df71c1ac4076db75d519ed1bf726f2d71dd5d7ad68 c57903db3133f8e251991cdf9c9c53398ca5e0536ccde5158b959487c05f7856
lib/codeql/rust/elements/internal/generated/ParentChild.qll ad728d69b3ef9555d71db2274b04a5ba99b4f815120c55032c57d077e0c954ca 64c6406626a14ed3052d3996cc47fc91e435175bd982440d948416cf878400fd
lib/codeql/rust/elements/internal/generated/Pat.qll 3605ac062be2f294ee73336e9669027b8b655f4ad55660e1eab35266275154ee 7f9400db2884d336dd1d21df2a8093759c2a110be9bf6482ce8e80ae0fd74ed4
lib/codeql/rust/elements/internal/generated/Path.qll 299abce24762a5ab023f3cf1ab9718b83047e171aed42a8092e7a155914b1657 db1a23d18640c548f08c9f94823838b5e019ac85877c7b15df2d1493d1846572
lib/codeql/rust/elements/internal/generated/PathExpr.qll 17cdb0a7393258a207450f08e37178fc9d35d167f064ba6015be94246f3dc933 a75fdd280aff6d87e083a92030e041c2eb52b57cf7151d4a6989fcd31d6a64bf
@@ -543,7 +549,7 @@ lib/codeql/rust/elements/internal/generated/PtrType.qll 5f12b6ad29b4e5ce51c205e2
lib/codeql/rust/elements/internal/generated/PureSynthConstructors.qll dc03515d678ba052c2ff2dd9f0883e0bce54cac740ba9a15e5173f292c1b6971 dc03515d678ba052c2ff2dd9f0883e0bce54cac740ba9a15e5173f292c1b6971
lib/codeql/rust/elements/internal/generated/RangeExpr.qll 23cca03bf43535f33b22a38894f70d669787be4e4f5b8fe5c8f7b964d30e9027 18624cef6c6b679eeace2a98737e472432e0ead354cca02192b4d45330f047c9
lib/codeql/rust/elements/internal/generated/RangePat.qll efd93730de217cf50dcba5875595263a5eadf9f7e4e1272401342a094d158614 229b251b3d118932e31e78ac4dfb75f48b766f240f20d436062785606d44467b
lib/codeql/rust/elements/internal/generated/Raw.qll 8361be3a8ed615b08c49bff624b84f1c7ee26c01265494e9969d22abc83101f3 c16a5bb379cc38faabcc4525820729a7a837ab5c427da41bff228d1ecd181247
lib/codeql/rust/elements/internal/generated/Raw.qll 783c3d04b798c0a5281baf88aa3ada406492e6e6b8ff41dac658d52c88f95c46 e69891409fc89f0a3a199feb6f1a734bfdd862239a5f6794de0ee811e69fab04
lib/codeql/rust/elements/internal/generated/RecordExpr.qll eb6cb662e463f9260efae1a6ce874fa781172063b916ef1963f861e9942d308d 1a21cbccc8f3799ff13281e822818ebfb21d81591720a427cac3625512cb9d40
lib/codeql/rust/elements/internal/generated/RecordExprField.qll 7e9f8663d3b74ebbc9603b10c9912f082febba6bd73d344b100bbd3edf837802 fbe6b578e7fd5d5a6f21bbb8c388957ab7210a6a249ec71510a50fb35b319ea1
lib/codeql/rust/elements/internal/generated/RecordExprFieldList.qll 179a97211fe7aa6265085d4d54115cdbc0e1cd7c9b2135591e8f36d6432f13d3 dd44bbbc1e83a1ed3a587afb729d7debf7aeb7b63245de181726af13090e50c0
@@ -568,8 +574,9 @@ lib/codeql/rust/elements/internal/generated/Static.qll cae5313e08e4af44c46b25802
lib/codeql/rust/elements/internal/generated/Stmt.qll 8473ff532dd5cc9d7decaddcd174b94d610f6ca0aec8e473cc051dad9f3db917 6ef7d2b5237c2dbdcacbf7d8b39109d4dc100229f2b28b5c9e3e4fbf673ba72b
lib/codeql/rust/elements/internal/generated/StmtList.qll a667193e32341e17400867c6e359878c4e645ef9f5f4d97676afc0283a33a026 a320ed678ee359302e2fc1b70a9476705cd616fcfa44a499d32f0c7715627f73
lib/codeql/rust/elements/internal/generated/Struct.qll 4d57f0db12dc7ad3e31e750a24172ef1505406b4dab16386af0674bd18bf8f4b 1a73c83df926b996f629316f74c61ea775be04532ab61b56af904223354f033e
lib/codeql/rust/elements/internal/generated/Synth.qll 2512c0baff641fb9a7eb61c329f02fade7cff8a5c80559658c73425f22d82197 51a376dac98e56a2f15548487055823e7f728f0de955932ccf43488833279bb5
lib/codeql/rust/elements/internal/generated/SynthConstructors.qll 649e5d313e51e78802c8bc67bfba1aea59bef9a83fc1b17bb558c3cf4aee089a 649e5d313e51e78802c8bc67bfba1aea59bef9a83fc1b17bb558c3cf4aee089a
lib/codeql/rust/elements/internal/generated/Synth.qll 99fa143232f2cfb1ef3f6ed6a51afa634c336361105e37719ce11ca6c74de8ee b3b77e1bdea36022b3be7cef000e7113059eb8b2b1afec26ae1d62e84259143b
lib/codeql/rust/elements/internal/generated/SynthConstructors.qll 518b68ccf6d0791bc0c141486261108bb1723e37743fc7f8e4167a1d61660531 518b68ccf6d0791bc0c141486261108bb1723e37743fc7f8e4167a1d61660531
lib/codeql/rust/elements/internal/generated/Token.qll 77a91a25ca5669703cf3a4353b591cef4d72caa6b0b9db07bb9e005d69c848d1 2fdffc4882ed3a6ca9ac6d1fb5f1ac5a471ca703e2ffdc642885fa558d6e373b
lib/codeql/rust/elements/internal/generated/TokenTree.qll 8577c2b097c1be2f0f7daa5acfcf146f78674a424d99563e08a84dd3e6d91b46 d2f30764e84dbfc0a6a5d3d8a5f935cd432413688cb32da9c94e420fbc10665c
lib/codeql/rust/elements/internal/generated/Trait.qll 32bdbb4dc9f03488195a90320a947013135cd2fae1b9d62b4f71ed9a4e39a967 5dab0fbec64698bf3cdae04879d3d1665cf82386b7b030ed69e6b20776ffa9fc
lib/codeql/rust/elements/internal/generated/TraitAlias.qll 0a3b568100baaca129a12140b0742a1c8e507ef5b2f2c191ff7452c882ba4064 c32e74569f885c683f8d3977682fcbc8b7699b00d5e538cc6b08acdfffa56bc8
@@ -602,7 +609,7 @@ lib/codeql/rust/elements/internal/generated/WhileExpr.qll fec8a9211b82a80601bf73
lib/codeql/rust/elements/internal/generated/WildcardPat.qll d74b70b57a0a66bfae017a329352a5b27a6b9e73dd5521d627f680e810c6c59e 4b913b548ba27ff3c82fcd32cf996ff329cb57d176d3bebd0fcef394486ea499
lib/codeql/rust/elements/internal/generated/YeetExpr.qll cac328200872a35337b4bcb15c851afb4743f82c080f9738d295571eb01d7392 94af734eea08129b587fed849b643e7572800e8330c0b57d727d41abda47930b
lib/codeql/rust/elements/internal/generated/YieldExpr.qll 37e5f0c1e373a22bbc53d8b7f2c0e1f476e5be5080b8437c5e964f4e83fad79a 4a9a68643401637bf48e5c2b2f74a6bf0ddcb4ff76f6bffb61d436b685621e85
lib/codeql/rust/elements.qll 881084ba8191ae735ffc905d7d05aadb82739aa0887282a226f513f25c790e88 881084ba8191ae735ffc905d7d05aadb82739aa0887282a226f513f25c790e88
lib/codeql/rust/elements.qll 926e6e5f994ef7fcd04854c4d69004d7bfd81950e132c9d3d501b4b2420db222 926e6e5f994ef7fcd04854c4d69004d7bfd81950e132c9d3d501b4b2420db222
test/extractor-tests/generated/Abi/Abi.ql 7f6e7dc4af86eca3ebdc79b10373988cd0871bd78b51997d3cffd969105e5fdd 2f936b6ca005c6157c755121584410c03e4a3949c23bee302fbe05ee10ce118f
test/extractor-tests/generated/Abi/Abi_getAbiString.ql a496762fcec5a0887b87023bbf93e9b650f02e20113e25c44d6e4281ae8f5335 14109c7ce11ba25e3cd6e7f1b3fcb4cb00622f2a4eac91bfe43145c5f366bc52
test/extractor-tests/generated/ArgList/ArgList.ql e412927756e72165d0e7c5c9bd3fca89d08197bbf760db8fb7683c64bb2229bc 043dba8506946fbb87753e22c387987d7eded6ddb963aa067f9e60ef9024d684
@@ -667,6 +674,7 @@ test/extractor-tests/generated/ClosureExpr/ClosureExpr_getBody.ql 22a973a61274e8
test/extractor-tests/generated/ClosureExpr/ClosureExpr_getClosureBinder.ql cbfcf89b8efb5cb9b7bfbea26b5a78b3d4c7994cbf03d5ca60b61ee1b5cb4be5 621431277732ef79c585cb0b7199c49b14c597ee6b594a70d9e6966a09d40a9f
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 db81591df5a8822a578f9445b8444f6ac391efc43c61aab429edb76ab9c0303d 5f7ae3622c03eb151fa5326db785f0ff3fe6f52033fc071d758eac18ea1b5722
test/extractor-tests/generated/Const/Const_getAttr.ql bd6296dab00065db39663db8d09fe62146838875206ff9d8595d06d6439f5043 34cb55ca6d1f44e27d82a8b624f16f9408bae2485c85da94cc76327eed168577
test/extractor-tests/generated/Const/Const_getBody.ql f50f79b7f42bb1043b79ec96f999fa4740c8014e6969a25812d5d023d7a5a5d8 90e5060ba9757f1021429ed4ec4913bc78747f3fc415456ef7e7fc284b8a0026

8
rust/ql/.gitattributes generated vendored
View File

@@ -20,6 +20,7 @@
/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/Comment.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
@@ -123,6 +124,7 @@
/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/Token.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
@@ -192,6 +194,8 @@
/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/CommentConstructor.qll linguist-generated
/lib/codeql/rust/elements/internal/CommentImpl.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
@@ -382,6 +386,7 @@
/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/TokenImpl.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
@@ -464,6 +469,7 @@
/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/Comment.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
@@ -572,6 +578,7 @@
/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/Token.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
@@ -669,6 +676,7 @@
/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getClosureBinder.ql linguist-generated
/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getParamList.ql linguist-generated
/test/extractor-tests/generated/ClosureExpr/ClosureExpr_getRetType.ql linguist-generated
/test/extractor-tests/generated/Comment/Comment.ql linguist-generated
/test/extractor-tests/generated/Const/Const.ql linguist-generated
/test/extractor-tests/generated/Const/Const_getAttr.ql linguist-generated
/test/extractor-tests/generated/Const/Const_getBody.ql linguist-generated

View File

@@ -23,6 +23,7 @@ import codeql.rust.elements.CallExpr
import codeql.rust.elements.CastExpr
import codeql.rust.elements.ClosureBinder
import codeql.rust.elements.ClosureExpr
import codeql.rust.elements.Comment
import codeql.rust.elements.Const
import codeql.rust.elements.ConstArg
import codeql.rust.elements.ConstBlockPat
@@ -126,6 +127,7 @@ import codeql.rust.elements.Static
import codeql.rust.elements.Stmt
import codeql.rust.elements.StmtList
import codeql.rust.elements.Struct
import codeql.rust.elements.Token
import codeql.rust.elements.TokenTree
import codeql.rust.elements.Trait
import codeql.rust.elements.TraitAlias

View File

@@ -0,0 +1,17 @@
// generated by codegen, do not edit
/**
* This module provides the public class `Comment`.
*/
private import internal.CommentImpl
import codeql.rust.elements.AstNode
import codeql.rust.elements.Token
/**
* A comment. For example:
* ```rust
* // this is a comment
* /// This is a doc comment
* ```
*/
final class Comment = Impl::Comment;

View File

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

View File

@@ -0,0 +1,14 @@
// generated by codegen, remove this comment if you wish to edit this file
/**
* This module defines the hook used internally to tweak the characteristic predicate of
* `Comment` synthesized instances.
* INTERNAL: Do not use.
*/
private import codeql.rust.elements.internal.generated.Raw
/**
* The characteristic predicate of `Comment` synthesized instances.
* INTERNAL: Do not use.
*/
predicate constructComment(Raw::Comment id) { any() }

View File

@@ -0,0 +1,23 @@
// generated by codegen, remove this comment if you wish to edit this file
/**
* This module provides a hand-modifiable wrapper around the generated class `Comment`.
*
* INTERNAL: Do not use.
*/
private import codeql.rust.elements.internal.generated.Comment
/**
* INTERNAL: This module contains the customizable definition of `Comment` and should not
* be referenced directly.
*/
module Impl {
/**
* A comment. For example:
* ```rust
* // this is a comment
* /// This is a doc comment
* ```
*/
class Comment extends Generated::Comment { }
}

View File

@@ -0,0 +1,19 @@
// generated by codegen, remove this comment if you wish to edit this file
/**
* This module provides a hand-modifiable wrapper around the generated class `Token`.
*
* INTERNAL: Do not use.
*/
private import codeql.rust.elements.internal.generated.Token
/**
* INTERNAL: This module contains the customizable definition of `Token` and should not
* be referenced directly.
*/
module Impl {
/**
* The base class for all tokens.
*/
class Token extends Generated::Token { }
}

View File

@@ -0,0 +1,42 @@
// generated by codegen, do not edit
/**
* This module provides the generated definition of `Comment`.
* INTERNAL: Do not import directly.
*/
private import codeql.rust.elements.internal.generated.Synth
private import codeql.rust.elements.internal.generated.Raw
import codeql.rust.elements.AstNode
import codeql.rust.elements.internal.TokenImpl::Impl as TokenImpl
/**
* INTERNAL: This module contains the fully generated definition of `Comment` and should not
* be referenced directly.
*/
module Generated {
/**
* A comment. For example:
* ```rust
* // this is a comment
* /// This is a doc comment
* ```
* INTERNAL: Do not reference the `Generated::Comment` class directly.
* Use the subclass `Comment`, where the following predicates are available.
*/
class Comment extends Synth::TComment, TokenImpl::Token {
override string getAPrimaryQlClass() { result = "Comment" }
/**
* Gets the parent of this comment.
*/
AstNode getParent() {
result =
Synth::convertAstNodeFromRaw(Synth::convertCommentToRaw(this).(Raw::Comment).getParent())
}
/**
* Gets the text of this comment.
*/
string getText() { result = Synth::convertCommentToRaw(this).(Raw::Comment).getText() }
}
}

View File

@@ -884,6 +884,19 @@ private module Impl {
)
}
private Element getImmediateChildOfToken(Token e, int index, string partialPredicateCall) {
exists(int b, int bAstNode, int n |
b = 0 and
bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and
n = bAstNode and
(
none()
or
result = getImmediateChildOfAstNode(e, index - b, partialPredicateCall)
)
)
}
private Element getImmediateChildOfTokenTree(TokenTree e, int index, string partialPredicateCall) {
exists(int b, int bAstNode, int n |
b = 0 and
@@ -1449,6 +1462,19 @@ private module Impl {
)
}
private Element getImmediateChildOfComment(Comment e, int index, string partialPredicateCall) {
exists(int b, int bToken, int n |
b = 0 and
bToken = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfToken(e, i, _)) | i) and
n = bToken and
(
none()
or
result = getImmediateChildOfToken(e, index - b, partialPredicateCall)
)
)
}
private Element getImmediateChildOfConstArg(ConstArg e, int index, string partialPredicateCall) {
exists(int b, int bGenericArg, int n, int nExpr |
b = 0 and
@@ -3499,6 +3525,8 @@ private module Impl {
or
result = getImmediateChildOfClosureExpr(e, index, partialAccessor)
or
result = getImmediateChildOfComment(e, index, partialAccessor)
or
result = getImmediateChildOfConstArg(e, index, partialAccessor)
or
result = getImmediateChildOfConstBlockPat(e, index, partialAccessor)

View File

@@ -841,6 +841,12 @@ module Raw {
Expr getTailExpr() { stmt_list_tail_exprs(this, result) }
}
/**
* INTERNAL: Do not use.
* The base class for all tokens.
*/
class Token extends @token, AstNode { }
/**
* INTERNAL: Do not use.
* A TokenTree. For example:
@@ -1486,6 +1492,28 @@ module Raw {
RetType getRetType() { closure_expr_ret_types(this, result) }
}
/**
* INTERNAL: Do not use.
* A comment. For example:
* ```rust
* // this is a comment
* /// This is a doc comment
* ```
*/
class Comment extends @comment, Token {
override string toString() { result = "Comment" }
/**
* Gets the parent of this comment.
*/
AstNode getParent() { comments(this, result, _) }
/**
* Gets the text of this comment.
*/
string getText() { comments(this, _, result) }
}
/**
* INTERNAL: Do not use.
* A ConstArg. For example:

View File

@@ -86,6 +86,10 @@ module Synth {
* INTERNAL: Do not use.
*/
TClosureExpr(Raw::ClosureExpr id) { constructClosureExpr(id) } or
/**
* INTERNAL: Do not use.
*/
TComment(Raw::Comment id) { constructComment(id) } or
/**
* INTERNAL: Do not use.
*/
@@ -595,8 +599,9 @@ module Synth {
TParam or TParamList or TPat or TPath or TPathSegment or TRecordExprField or
TRecordExprFieldList or TRecordField or TRecordPatField or TRecordPatFieldList or TRename or
TRetType or TReturnTypeSyntax or TSelfParam or TSourceFile or TStmt or TStmtList or
TTokenTree or TTupleField or TTypeBound or TTypeBoundList or TTypeRef or TUseTree or
TUseTreeList or TVariant or TVariantList or TVisibility or TWhereClause or TWherePred;
TToken or TTokenTree or TTupleField or TTypeBound or TTypeBoundList or TTypeRef or
TUseTree or TUseTreeList or TVariant or TVariantList or TVisibility or TWhereClause or
TWherePred;
/**
* INTERNAL: Do not use.
@@ -655,6 +660,11 @@ module Synth {
*/
class TStmt = TExprStmt or TItem or TLetStmt;
/**
* INTERNAL: Do not use.
*/
class TToken = TComment;
/**
* INTERNAL: Do not use.
*/
@@ -776,6 +786,12 @@ module Synth {
*/
TClosureExpr convertClosureExprFromRaw(Raw::Element e) { result = TClosureExpr(e) }
/**
* INTERNAL: Do not use.
* Converts a raw element to a synthesized `TComment`, if possible.
*/
TComment convertCommentFromRaw(Raw::Element e) { result = TComment(e) }
/**
* INTERNAL: Do not use.
* Converts a raw element to a synthesized `TConst`, if possible.
@@ -1621,6 +1637,8 @@ module Synth {
or
result = convertStmtListFromRaw(e)
or
result = convertTokenFromRaw(e)
or
result = convertTokenTreeFromRaw(e)
or
result = convertTupleFieldFromRaw(e)
@@ -1880,6 +1898,12 @@ module Synth {
result = convertLetStmtFromRaw(e)
}
/**
* INTERNAL: Do not use.
* Converts a raw DB element to a synthesized `TToken`, if possible.
*/
TToken convertTokenFromRaw(Raw::Element e) { result = convertCommentFromRaw(e) }
/**
* INTERNAL: Do not use.
* Converts a raw DB element to a synthesized `TTypeRef`, if possible.
@@ -2032,6 +2056,12 @@ module Synth {
*/
Raw::Element convertClosureExprToRaw(TClosureExpr e) { e = TClosureExpr(result) }
/**
* INTERNAL: Do not use.
* Converts a synthesized `TComment` to a raw DB element, if possible.
*/
Raw::Element convertCommentToRaw(TComment e) { e = TComment(result) }
/**
* INTERNAL: Do not use.
* Converts a synthesized `TConst` to a raw DB element, if possible.
@@ -2877,6 +2907,8 @@ module Synth {
or
result = convertStmtListToRaw(e)
or
result = convertTokenToRaw(e)
or
result = convertTokenTreeToRaw(e)
or
result = convertTupleFieldToRaw(e)
@@ -3136,6 +3168,12 @@ module Synth {
result = convertLetStmtToRaw(e)
}
/**
* INTERNAL: Do not use.
* Converts a synthesized `TToken` to a raw DB element, if possible.
*/
Raw::Element convertTokenToRaw(TToken e) { result = convertCommentToRaw(e) }
/**
* INTERNAL: Do not use.
* Converts a synthesized `TTypeRef` to a raw DB element, if possible.

View File

@@ -21,6 +21,7 @@ import codeql.rust.elements.internal.CallExprConstructor
import codeql.rust.elements.internal.CastExprConstructor
import codeql.rust.elements.internal.ClosureBinderConstructor
import codeql.rust.elements.internal.ClosureExprConstructor
import codeql.rust.elements.internal.CommentConstructor
import codeql.rust.elements.internal.ConstConstructor
import codeql.rust.elements.internal.ConstArgConstructor
import codeql.rust.elements.internal.ConstBlockPatConstructor

View File

@@ -0,0 +1,22 @@
// generated by codegen, do not edit
/**
* This module provides the generated definition of `Token`.
* INTERNAL: Do not import directly.
*/
private import codeql.rust.elements.internal.generated.Synth
private import codeql.rust.elements.internal.generated.Raw
import codeql.rust.elements.internal.AstNodeImpl::Impl as AstNodeImpl
/**
* INTERNAL: This module contains the fully generated definition of `Token` and should not
* be referenced directly.
*/
module Generated {
/**
* The base class for all tokens.
* INTERNAL: Do not reference the `Generated::Token` class directly.
* Use the subclass `Token`, where the following predicates are available.
*/
class Token extends Synth::TToken, AstNodeImpl::AstNode { }
}

View File

@@ -176,6 +176,7 @@ locatable_locations(
| @source_file
| @stmt
| @stmt_list
| @token
| @token_tree
| @tuple_field
| @type_bound
@@ -869,6 +870,10 @@ stmt_list_tail_exprs(
int tail_expr: @expr ref
);
@token =
@comment
;
token_trees(
unique int id: @token_tree
);
@@ -1377,6 +1382,12 @@ closure_expr_ret_types(
int ret_type: @ret_type ref
);
comments(
unique int id: @comment,
int parent: @ast_node ref,
string text: string ref
);
const_args(
unique int id: @const_arg
);

View File

@@ -16,6 +16,7 @@ CallExpr/gen_call_expr.rs 013a7c878996aefb25b94b68eebc4f0b1bb74ccd09e91c49198081
CastExpr/gen_cast_expr.rs abd59cc7b92578b56098ac0045cf7de4b15c645cce79e3bdad8d3b6f4657360d abd59cc7b92578b56098ac0045cf7de4b15c645cce79e3bdad8d3b6f4657360d
ClosureBinder/gen_closure_binder.rs 78d3219bdfc58a22f333e3c82468fc23001e92b1d5acb085de7f48d7d1722244 78d3219bdfc58a22f333e3c82468fc23001e92b1d5acb085de7f48d7d1722244
ClosureExpr/gen_closure_expr.rs 15bd9abdb8aaffabb8bb335f8ebd0571eb5f29115e1dc8d11837aa988702cd80 15bd9abdb8aaffabb8bb335f8ebd0571eb5f29115e1dc8d11837aa988702cd80
Comment/gen_comment.rs 1e1f9f43161a79c096c2056e8b7f5346385ab7addcdec68c2d53b383dd3debe6 1e1f9f43161a79c096c2056e8b7f5346385ab7addcdec68c2d53b383dd3debe6
Const/gen_const.rs fea9d399fe4036c55b94b419ecb1cbb3131248ae338c20d383080dd1ca30f274 fea9d399fe4036c55b94b419ecb1cbb3131248ae338c20d383080dd1ca30f274
ConstArg/gen_const_arg.rs feab3cdbbc469a287884ff7605e9a7541f904e9e5bd1f14a8e0f741fa970dd7c feab3cdbbc469a287884ff7605e9a7541f904e9e5bd1f14a8e0f741fa970dd7c
ConstBlockPat/gen_const_block_pat.rs 7e3057cd24d22e752354369cf7e08e9536642812c0947b36aa5d8290a45476fd 7e3057cd24d22e752354369cf7e08e9536642812c0947b36aa5d8290a45476fd

View File

@@ -18,6 +18,7 @@
/CastExpr/gen_cast_expr.rs linguist-generated
/ClosureBinder/gen_closure_binder.rs linguist-generated
/ClosureExpr/gen_closure_expr.rs linguist-generated
/Comment/gen_comment.rs linguist-generated
/Const/gen_const.rs linguist-generated
/ConstArg/gen_const_arg.rs linguist-generated
/ConstBlockPat/gen_const_block_pat.rs linguist-generated

View File

@@ -0,0 +1,11 @@
// generated by codegen, do not edit
import codeql.rust.elements
import TestUtils
from Comment x, AstNode getParent, string getText
where
toBeTested(x) and
not x.isUnknown() and
getParent = x.getParent() and
getText = x.getText()
select x, "getParent:", getParent, "getText:", getText

View File

@@ -0,0 +1,7 @@
// generated by codegen, do not edit
fn test_comment() -> () {
// A comment. For example:
// this is a comment
/// This is a doc comment
}

View File

@@ -3,6 +3,7 @@ from misc.codegen.lib.schemadefs import *
include("../shared/tree-sitter-extractor/src/generator/prefix.dbscheme")
include("prefix.dbscheme")
@qltest.skip
class Element:
pass
@@ -18,6 +19,26 @@ class AstNode(Locatable):
pass
@qltest.skip
class Token(AstNode):
"""
The base class for all tokens.
"""
pass
class Comment(Token):
"""
A comment. For example:
```rust
// this is a comment
/// This is a doc comment
```
"""
parent: AstNode
text: string
@qltest.skip
class Unextracted(Element):
"""