Address comments

This commit is contained in:
Arthur Baars
2024-09-06 11:47:08 +02:00
parent 679d81ab00
commit ce2fdb3463
31 changed files with 440 additions and 359 deletions

44
rust/.generated.list generated
View File

@@ -1,7 +1,8 @@
ql/lib/codeql/rust/elements/Array.qll c33de8fd2c0acbf221441dd67b061d3ab169f0bf548c0c957884455a215fce5c c54c716551746afd895da187e3d03acbe481bdf1ca4461065555641480801c2d
ql/lib/codeql/rust/elements/ArrayConstructor.qll aba72e72a26013fe0c665870bbdc20903ff287d890cbcabc0dc62be32ace8422 6c539b9008c27646c5708f92e8691f41d752676045953516117eb3bb23e3f88c
ql/lib/codeql/rust/elements/Async.qll 96cb9c26e6b8b2b28686aeb3b0aa442c59d48f8a14e9ad838df3c846a2daae64 c55d9db2402f7a04692ed61a187d581231327b675af8ca7a4bd6467195ce4263
ql/lib/codeql/rust/elements/AsyncConstructor.qll 27248231035b78fd8961003168a30b8b6e79102fe9d858bd9b94090a4d970317 23a8799e3ee39281c167a29dd835e220571af6419f907e3cee606863c51f333c
ql/lib/codeql/rust/elements/AstNode.qll 2069047c779514867c12d845dcdf889db6f27fa6a9e484966a3c28a77973b7d4 e214616c81418b0018c0d36896ac2ec7273634e3213bc8257d8b172f396c00ee
ql/lib/codeql/rust/elements/AsyncBlock.qll ac5899827719dae561540d1c460540bd3242b79ee98f0ea3f9391e98f7a6b680 a0d64b5896fcc2c8292b757645a0041c716ac0e9b85264729898347361061c8b
ql/lib/codeql/rust/elements/AsyncBlockConstructor.qll c094b929e6f3e7053973e80b26b13989e90d603da0cc073679c9e6594c3eceba 95e55c95007e392ebcc43a895bf26ff5983598f7ffb1e3fdee2858ce61b50ea0
ql/lib/codeql/rust/elements/Await.qll b143784cf3a536d67bcddc6145fca944e34b5262975d1f13fc8922dda8cac39d bf8b3b173708b0dfcab5c84407e17d488ac1e94e285f6ee8723a71cae81eeea3
ql/lib/codeql/rust/elements/AwaitConstructor.qll b34c0592c512ab38f7a7106b3416ba53dad650a801e1a3adb4afc1dadf56ed1e dfbf6ff965abe7791898e7fb026c997a22ac7af23fa84ab87b4f9f74b89c2a70
ql/lib/codeql/rust/elements/Become.qll 57a2a0a42f03ff8ebf29e3829762bf49cdbd01666a51ff83437124b281ecb31b a4ff816fb6d93151ab9cd6ec51739c1f869bb740d87b522dca1917f13fab1978
@@ -104,21 +105,22 @@ ql/lib/codeql/rust/elements/TupleStructPat.qll 50b7d89498dbe6737d97325037156c768
ql/lib/codeql/rust/elements/TupleStructPatConstructor.qll 15a15362572ac2dc98ed3257f195f20bb8dfe34a1fe203cf2a1a193ce16c406f 9e590b50cf865f6bc573b6fc17acea073f0d9389be241b01e820d9f3f8f14acb
ql/lib/codeql/rust/elements/TypeRef.qll 223844544eab3e07b6edda805c6344fa8b486aeea7bbe62e4b98e235ce2008d8 7517748b0e7a57c925168f5ce7a31ecc1b59f7521a2095578f599b8d9045a4e5
ql/lib/codeql/rust/elements/TypeRefConstructor.qll f8b2e5ef15517890a8b2d56643f471ae64cc74c420187049e33b182417e72e4f 683611e732b842756e301a77625b385bca0c4969971020c9e11220a1aa665a29
ql/lib/codeql/rust/elements/UnaryExpr.qll b996aedbb0cb7aa36ef403fd1b8a378d29f1d62c3cdaf89dbe2ec2c2baf6ff4b f24cd5740efbd75d3f79c0428a1401d089c0dd76af77ea0de45289150e3026d3
ql/lib/codeql/rust/elements/UnaryExprConstructor.qll cad00e01caaf5c5e56457ba7f33fae7e72900ef695312af56525128605a0cc63 205f7e12f691f937f473094a0f0bcca4b0c36e7e2c88d9d1928e849b8e455356
ql/lib/codeql/rust/elements/UnaryOp.qll d0a80dee319119a4fd6b655a10451c390f7e41e096cf79bb3757c120c28de679 1fc33adb745b50fb6472be969b8df073208d8d092b459e35a65a4e978e436145
ql/lib/codeql/rust/elements/UnaryOpConstructor.qll 63fac5b262777aaac01eb9a67a990db578faadfc248149822453f6ece0f1dff7 f37488ee4acfa19095ef16e73042d7f17e66b30d936c691d54ef3b2d39663432
ql/lib/codeql/rust/elements/Underscore.qll a988d966016984c82ca1a22b86be751d3ee3da117b9333126cebe969e6cdc74b 81da73806731d80bd723bfa1c3c6be6ef0a0a906f49d2a20c52363e5ba39fafe
ql/lib/codeql/rust/elements/UnderscoreConstructor.qll 044463d55ca7d4cc1193b79fdc3140e33f68a1e3973a3d9262da4c49879999ac e024c4b988d5441dd032bdb0b521fed1074542e3e402e2fadae10bc9cab40aac
ql/lib/codeql/rust/elements/Unsafe.qll 49407b17db3b442a1365cc89db21bfcdb6b86bfbd03f9e0cf12281b77b319cda 7961b94982b7b7ad6356c13c057b822c89efb3e8830cb264534f761a09313666
ql/lib/codeql/rust/elements/UnsafeConstructor.qll 5133f965cbf8fcfa3ae4d779f5c5a896e33939328d6613f0bcc359faa0c64097 c6ec48ba7cf32fc127845944a2692d7c2d2b34f3fd3284c5e78df5b313456d2f
ql/lib/codeql/rust/elements/UnsafeBlock.qll 5a91fb3e0d05fa1379c02cee502732c020c9f33698cfdbef7ea2456cba40d2af 52b15480e82de093de9dc5993635f1c7d0d5c8c8cca310da0f58dc90dab80547
ql/lib/codeql/rust/elements/UnsafeBlockConstructor.qll c8ce086a87323a5223a9c815ae645f03d87534d09b72354d32db82dd082afe75 4f3880ecaacf46c28c8672a911edaaa18712b6b3a16e3cc0c4cb53fedaff256d
ql/lib/codeql/rust/elements/WildPat.qll 9791bcd2b36516da82a81c10655fe6b4ef0f788d548cc99cb88578dd9c1278f0 03c192da4f92db637001854f904f5f0ea7406b74c02c1ce26cd375d9cfb26108
ql/lib/codeql/rust/elements/WildPatConstructor.qll 538cde83119510e0b3fc9728127cbf980d17f7f4a9371b4572de26329ab08341 66b96aee3862d5c314a2fbcc6930258f755189c4359394b432e8edb13a9d0eaf
ql/lib/codeql/rust/elements/Yeet.qll 07f967352be486b7e2b787c292c16195a7084699cbdf23e2214574afc455261a 593cf9528a531ad140e69b3ea3a885a7a2780abe3ea0d8ec1ef0a9b36b0c013d
ql/lib/codeql/rust/elements/YeetConstructor.qll 835afa5ff4b4102335525c41d67380e59f272f95b4b7b0196e0475eae4b9f738 6c51946d661aea16d91010e0639b4ea8f3d161bd56a029e955dc7f7bca025c00
ql/lib/codeql/rust/elements/Yield.qll 9a484b5b5c2c32ef61395213c376ce4b1ef7f699f08330d08faf071ea8919af1 e45fe09b794a2a05a1c125d112dfb36d9c7d538ff1953440d6c580cd8c987f8a
ql/lib/codeql/rust/elements/YieldConstructor.qll 16f393593cf9cf126f048c6f36eba7ca45e78c44577c7bda51c9a66bac95487e f49c9c3d4d17f64f44111bea2bb197cf8b11a0aa88b53b9a527c6aab4733c4b5
ql/lib/codeql/rust/elements.qll 4aca3b30770f4e9b358af1e08727dad8a9e1faf652814741238c54967d2f9574 4aca3b30770f4e9b358af1e08727dad8a9e1faf652814741238c54967d2f9574
ql/lib/codeql/rust/elements.qll 2f6912dc51cebbfb6e69064c05ce139bdaa9fcc3cabc0fceab390217b327c0c6 2f6912dc51cebbfb6e69064c05ce139bdaa9fcc3cabc0fceab390217b327c0c6
ql/lib/codeql/rust/generated/Array.qll 0858d0b9fa1c5c9fbc21069809d78cef7f39c909eee4f5dc395fd0f8bf4ac622 0858d0b9fa1c5c9fbc21069809d78cef7f39c909eee4f5dc395fd0f8bf4ac622
ql/lib/codeql/rust/generated/Async.qll 4e050ff6d9a61a821c4fc1220f783b86bcad9eb53bceb15cc947cc21e78ce9f8 4e050ff6d9a61a821c4fc1220f783b86bcad9eb53bceb15cc947cc21e78ce9f8
ql/lib/codeql/rust/generated/AstNode.qll 0598fac7859906f4103124270dfb2fbdb838387b1c45000bf50a4b62c797ec41 f47c84878c7c9676109e358073bddab92a1dbeb4d977d236ecc1eae44d81c894
ql/lib/codeql/rust/generated/AsyncBlock.qll 4fbb02d4afe512201d78849f52845f7533d7c0482cea84bbf0ef9952fafdfcfa 4fbb02d4afe512201d78849f52845f7533d7c0482cea84bbf0ef9952fafdfcfa
ql/lib/codeql/rust/generated/Await.qll f5d65ee72d03205b95b9f507a4da5706f5c66d0da8b4a8a5d67bfae5643a4766 382ad8a5e1098ec697370cdf5453404128abd9d56a1e578e0255aa29d33fcf74
ql/lib/codeql/rust/generated/Become.qll 7cfe61271eb91293014ebf16cd1029454705f4b569bba8afeec7d683f378efaf 9a31140d67ae8e77762aa2bd09ab018c88fe464a1b2205035e957d889abfe42a
ql/lib/codeql/rust/generated/BinaryOp.qll ec80f6cb6a0a03496814a629ecc8736f77c46e22a6c26b4e11fe1e650eb91441 67cd9c875556034a7afe78857c2d50d9ae1af084bee87e0d0c691c8baaaae72f
@@ -135,14 +137,14 @@ ql/lib/codeql/rust/generated/ConstBlockPat.qll d0818fe4cee066f1e6d3439c82122942a
ql/lib/codeql/rust/generated/Continue.qll 73a86f272288f0383b8cb3a8f72e954447a343715d8d82b2b58729077295905f e5d6cc9c7b0c47f01b8a5f076cc5790e837ade852b485ac8c323c540b7e7cd23
ql/lib/codeql/rust/generated/DbFile.qll 4dbf1931124291e0d6a958ae882f8aeef006642f72adc7ff86cffd3a4e9a970a 4dbf1931124291e0d6a958ae882f8aeef006642f72adc7ff86cffd3a4e9a970a
ql/lib/codeql/rust/generated/DbLocation.qll 735d9351b5eb46a3231b528600dddec3a4122c18c210d4d632a8d4ceaf7f02e9 735d9351b5eb46a3231b528600dddec3a4122c18c210d4d632a8d4ceaf7f02e9
ql/lib/codeql/rust/generated/Declaration.qll 4487ac3f5ffa5b92e8628bc04b51e818d4ea1c9a333375cf1b729428d36a4ee7 6481d5e2d99a548f857213a283da75d45db8b3adac949e90fd5d17ceb5e22b54
ql/lib/codeql/rust/generated/Declaration.qll bbf5ba3792797a829b0032c41fa99d22c26e4277d655099912cdbafb80f0c8cd c4666a71099b21ad5cd83ef6f991ba18f9bef03b3ffbcedfa10aec081d6501d5
ql/lib/codeql/rust/generated/Element.qll 21567fa7348dccdf69dd34e73cb6de7cc9c7e0f3f7bb419a1abd787f7dc851a1 21567fa7348dccdf69dd34e73cb6de7cc9c7e0f3f7bb419a1abd787f7dc851a1
ql/lib/codeql/rust/generated/Expr.qll 67ed928bc76950917f86e0099c8eb3a57cbd2fc1d2ba5f84a57b4f580e3e553c 3082181dec8f2dbe6d3b858bf8e48bd2d99868d4962be83802d01f7c67cdb9f3
ql/lib/codeql/rust/generated/Expr.qll 32cdd43d17e8b2fb7c73ec723eba89704d1e853e29d304db5eea3979fcdd2e0b 0b8382b0659afa1bd1d13d0cd492d7fbdc0fd7a5162fa658ca2973bc15ee6534
ql/lib/codeql/rust/generated/ExprStmt.qll 1aba8c482a307f27612317b4d895ac59389e23ff905b6061931fced12ff7c3d1 c4e42a8863cfe4e83eddcd82236da2dbb1fc7bbdf12cab63d39fd1df4b1cb013
ql/lib/codeql/rust/generated/Field.qll c3249b8dd1aed1978077875fbd6090327d431af8cf8888b432cacfa33b76f976 0977ff2fd039f4d6a82ce209d7a7d60a0747a1a3a29be69cf3f136f76429c917
ql/lib/codeql/rust/generated/File.qll 2eff5c882d044d2e360fe6382fb55e5a45f6ccb9df323cfa1fae41eae9d2a47f 87e7a906b3a1b4de056952e288ddd7f69fa7cb1bd9dc7dd3972868a9002ac1e4
ql/lib/codeql/rust/generated/Function.qll 8d5607035adebdb5f1a80ac2688b57ca751bfc010295e4982e6a432d402fc523 337d5aebc38e4413b8a87af87ea91219a51a46d1a04dd8f124b6431dba034a67
ql/lib/codeql/rust/generated/If.qll 617ac0b7cb00683423245bd16d8e9bcd3c606215fe64afaabab8a5288c6f31e3 7d056c81ef17304acfba52e5bfb2589e8f2231e8524c712d68a7f461a78c3d19
ql/lib/codeql/rust/generated/If.qll b8040f4bdc6ca2db2cf0435edd9aca432d1ba5f36170f5588a7746f0e4174c51 6033f72ff2d0d3b640b0ef8399d8ef39bc1eec33242a1567cd7dc5ccd2463797
ql/lib/codeql/rust/generated/IfLet.qll 0f51d1f708282a622d075e635698b2020b7d21e77abad6ea12516af13edb5d06 1b9f9c058c888f77a225025b984145a886928caaad26f20e869d9f8a0f5843b4
ql/lib/codeql/rust/generated/Index.qll f1b78db475006a0779a079f9600987932e638bcfaf35ce4e9b2b872798e35d50 7fa2b22497c3bd80161f7e3ef5477c82a0d4f961dce557ed3fd1a62d9f9328f7
ql/lib/codeql/rust/generated/InlineAsm.qll f21e507aca81649070c44141e6af121f1a8337850966011158accf8f2b26e6a2 f21e507aca81649070c44141e6af121f1a8337850966011158accf8f2b26e6a2
@@ -154,39 +156,39 @@ ql/lib/codeql/rust/generated/Locatable.qll 9e9685bba50ad2220701f3465e63af9331f7f
ql/lib/codeql/rust/generated/Location.qll bce4c72988ec6fedd1439c60a37c45aa6147c962904709ef9f12206937174be4 d57000571771a2d997c50d9a43ef1c2f075960f847effa0e80ea91fd4c6b4d6c
ql/lib/codeql/rust/generated/Loop.qll e310e7e885374a653a2c3e6b86783b4a5dd71db72cf5f208785c17ea3f90737e 99c52a112d56f8e44a987159122091f46ba9a22b71456e8ba109369ff58db931
ql/lib/codeql/rust/generated/Match.qll e0dd9a39cfcb5cd56efd89c3c009a62ff39c887511ba2962dfeed978830b5000 7378a8a30d7bde2a06a23e7037bddbd64d656ec047ba18142d22086cc7d7da32
ql/lib/codeql/rust/generated/MatchArm.qll c0aaeab8f7d405de821095686b8065daf4ad600da97658b087203716671bee93 670d2b879eae365204966b4e904f57c76098ce9b9f9d784e4b63a5bad9e9931e
ql/lib/codeql/rust/generated/MatchArm.qll 5ad0dc254b6d58ccd856e4235b68ca0226a898c33f1f6b6fe7b48266a01ca627 f519af39f45e820eb3a70cefb0e4dfb541c3cf17952c00c6dd7e59f854a629bd
ql/lib/codeql/rust/generated/MethodCall.qll 1d7afd5e8795b89f3cd20569fe7e0b7fd339aa178ed6ecb2a3a9cadd1a49eede 7a6396ce629a46db16de523fd39e2bb2c56837df80990ff1dd3bdfe242c20761
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/OrPat.qll f8fe5c7b83a08dabcc530484a696274930040ea13501ae20f1426faeec67bcf0 f3adb3148890531b698570a48740335983a5e81977ba4ac651778f940f184398
ql/lib/codeql/rust/generated/ParentChild.qll 231b3332f96ddd4ebe180c069267ca58d935f193f1437432ae3fc2e136f16800 6b7810b3e296a4dbf899c4d5da2c80dd66d8d7665bef8ec75a6f2dbc00917c3e
ql/lib/codeql/rust/generated/Pat.qll 0334fff3df2bd0ea6f25c150c79ac462b35095b14e6f5208f947b9759b2396fc f02694d64b29637eaa5c7ef04ec0d1fddc01c85d38f0df6f2fb82ebcdc458923
ql/lib/codeql/rust/generated/ParentChild.qll 0f030634cebcef8f5057032eac1507db56be4a63b3e6d5dc1bc2ca7a5efb47ae cfd2a4a19279118616d435cbfe4141d8cd2bc4bba62ac389f35c752d7c46924e
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 119ace38b931d203b0728441c813f662715b24a0abf0faff06e6fe52b9b24cf8 828ac11f4660cf126969472ff2a4224acb00869db169f259abe26bb23a825898
ql/lib/codeql/rust/generated/Raw.qll 9e527657ad4eaa36585a786e83a03adb93493b496bd241bef1cc6acefab37009 8974d8dcd0914c109e6792f448bb1d504ff0cee73ee883134dc5f64b2a643c8f
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
ql/lib/codeql/rust/generated/RefPat.qll 3525331e8ba25a8612324e860423a39ddb29e8eb50a9f2bf62e49bf182d64b6d 804efbd32869f92e5515d34852fed6416288f99b0aab95b5be5cb5bdd1eea806
ql/lib/codeql/rust/generated/Return.qll 9664cd51675a9a6ddfe7795b79f491c3834588e0bbc3b25863c621486f46a5f7 b38067c9bbcb0c4a4d2b59d76e81afcca7bc1b72caea91c1a79a7b7526390511
ql/lib/codeql/rust/generated/SlicePat.qll f013be99f2c287e1d97aac95e72010c1e0a95a5efef90fde10e22a828345cac5 3a9c56d4e13f3b6a8e677586912f5a9b1e090b543911c31be33947479b0e9533
ql/lib/codeql/rust/generated/Stmt.qll 6eb11dfb08004f762c3825d3433b6981b011ab906092d38764102bfde70a94ba 07d2fa92c4b5f14a08d80391ce74eacf89045097451498d0902800ba19328f65
ql/lib/codeql/rust/generated/Synth.qll 58bde7feae55a29e10d47a2acc0a76c531b754096bc84d43b57b6763000d210c a363d9a61182e011370ea03de2e22ca5991da5f0a963d21ef17dee8df72104cc
ql/lib/codeql/rust/generated/SynthConstructors.qll e6bc351d69b548ba047c02415d1919c448cebe2d55578499f64d5ac87fbc246a e6bc351d69b548ba047c02415d1919c448cebe2d55578499f64d5ac87fbc246a
ql/lib/codeql/rust/generated/Stmt.qll 55688c8f42f6e7fd1b871e572d75fac60d0543e38c4be4638abbb00187651d3d f978006a8453137f989249e849a7c935a090da3a9b0116145da80068760e12fd
ql/lib/codeql/rust/generated/Synth.qll b0227cc6042034c1f5ad6829b4b8d2574ef16cf1a5b4dd81bb172a0756fae4a2 209b97b56028449709f9e1477ed9f060c6ac3a51f0a72c84d2dc58c6c9cc0c82
ql/lib/codeql/rust/generated/SynthConstructors.qll c3393b74c66e2d9606e82581f393491152f97ebbc91d49f1688a62d071d6e28d c3393b74c66e2d9606e82581f393491152f97ebbc91d49f1688a62d071d6e28d
ql/lib/codeql/rust/generated/Tuple.qll 3fde94f0c23c6af6bcb58d0245a3cd0a8bbd6ef7999fbeed805baf2615e6226d c1aa7fc201aebb34dc6cd7760e817032b86fd16b8facac450c74deda860bc821
ql/lib/codeql/rust/generated/TuplePat.qll fdb2c66fe6291106fe125de6a91c4d74b2c715d276c2fee9751d0523b618d095 330098460ccac28479a2b522048d6f1191bf01b40b3eceef4adf722c01c8360b
ql/lib/codeql/rust/generated/TupleStructPat.qll 955e720b880bb9699ac402edc6774bb9aff4eb2fdf08d08b72f7db4ef4673b36 955e720b880bb9699ac402edc6774bb9aff4eb2fdf08d08b72f7db4ef4673b36
ql/lib/codeql/rust/generated/TypeRef.qll d9c43cb829076091f06aa23ff2151e1d832ea355d5fcfdff732796299b14811d d9c43cb829076091f06aa23ff2151e1d832ea355d5fcfdff732796299b14811d
ql/lib/codeql/rust/generated/UnaryExpr.qll c9756e03ea83bb17250528f896e29c05d105534637353cd383d0de2e2e52b764 98bfc8e1c675e975181edf43816971647176bc5d12f7d1cfb642f8f741fead07
ql/lib/codeql/rust/generated/TypeRef.qll 7cc468c2f473ee13c11a97c4360100376560e8fc42f25a136f1500fe31a31533 7cc468c2f473ee13c11a97c4360100376560e8fc42f25a136f1500fe31a31533
ql/lib/codeql/rust/generated/UnaryOp.qll fa587434c234c68606e3d0e32f6f07f89fa468dc97b582242f42c23c009e489a cef0fcfff7527435486b4ba642c5c5d5a17935b41b7388e70311646195bcf5fc
ql/lib/codeql/rust/generated/Underscore.qll d9980518479f771e164e4fc8d4c180f2a16691afbea65aa163939bae89e9005d d9980518479f771e164e4fc8d4c180f2a16691afbea65aa163939bae89e9005d
ql/lib/codeql/rust/generated/UnknownFile.qll ec9d1a3f15ecbf1743d4e39cb3b2f217aa9b54951c93302c2c4c238c3f0ce595 ec9d1a3f15ecbf1743d4e39cb3b2f217aa9b54951c93302c2c4c238c3f0ce595
ql/lib/codeql/rust/generated/UnknownLocation.qll a19e2838c52d702d268ae530f3dbd6fcd8bb28a237a52636a960f225454103cf a19e2838c52d702d268ae530f3dbd6fcd8bb28a237a52636a960f225454103cf
ql/lib/codeql/rust/generated/Unsafe.qll 3688228843b32ff905f1fdc462213bdfe3449d572388b85114d2e59fba099b4c 3688228843b32ff905f1fdc462213bdfe3449d572388b85114d2e59fba099b4c
ql/lib/codeql/rust/generated/UnsafeBlock.qll c15dcb7b1ea1b4b269bd7eba4cc798852d714319d16495ba660f4f34cfd70306 c15dcb7b1ea1b4b269bd7eba4cc798852d714319d16495ba660f4f34cfd70306
ql/lib/codeql/rust/generated/WildPat.qll 8a2cede00ac2941cb94e294ffa81ada9ae6e61d8d8a720ce4f288740345802f8 8a2cede00ac2941cb94e294ffa81ada9ae6e61d8d8a720ce4f288740345802f8
ql/lib/codeql/rust/generated/Yeet.qll 41b05d32a1b93cee770d6706cc044efe8ce57f11ae2f009c59666264cd1aaec1 8a6c8a1ae59e5a7e1b64abea85f6362c0460cbd5fcace1520b213ef5e08331ef
ql/lib/codeql/rust/generated/Yield.qll afefea932d770b61b633feeaa05973943c2bb45ea3cd4f960a0be1bbce33a405 c975fba823b05ad40b3c1bd908880e65511b59f9e6882fa207009194a45134a0

20
rust/.gitattributes generated vendored
View File

@@ -2,8 +2,9 @@
/.gitattributes linguist-generated
/ql/lib/codeql/rust/elements/Array.qll linguist-generated
/ql/lib/codeql/rust/elements/ArrayConstructor.qll linguist-generated
/ql/lib/codeql/rust/elements/Async.qll linguist-generated
/ql/lib/codeql/rust/elements/AsyncConstructor.qll linguist-generated
/ql/lib/codeql/rust/elements/AstNode.qll linguist-generated
/ql/lib/codeql/rust/elements/AsyncBlock.qll linguist-generated
/ql/lib/codeql/rust/elements/AsyncBlockConstructor.qll linguist-generated
/ql/lib/codeql/rust/elements/Await.qll linguist-generated
/ql/lib/codeql/rust/elements/AwaitConstructor.qll linguist-generated
/ql/lib/codeql/rust/elements/Become.qll linguist-generated
@@ -106,12 +107,12 @@
/ql/lib/codeql/rust/elements/TupleStructPatConstructor.qll linguist-generated
/ql/lib/codeql/rust/elements/TypeRef.qll linguist-generated
/ql/lib/codeql/rust/elements/TypeRefConstructor.qll linguist-generated
/ql/lib/codeql/rust/elements/UnaryExpr.qll linguist-generated
/ql/lib/codeql/rust/elements/UnaryExprConstructor.qll linguist-generated
/ql/lib/codeql/rust/elements/UnaryOp.qll linguist-generated
/ql/lib/codeql/rust/elements/UnaryOpConstructor.qll linguist-generated
/ql/lib/codeql/rust/elements/Underscore.qll linguist-generated
/ql/lib/codeql/rust/elements/UnderscoreConstructor.qll linguist-generated
/ql/lib/codeql/rust/elements/Unsafe.qll linguist-generated
/ql/lib/codeql/rust/elements/UnsafeConstructor.qll linguist-generated
/ql/lib/codeql/rust/elements/UnsafeBlock.qll linguist-generated
/ql/lib/codeql/rust/elements/UnsafeBlockConstructor.qll linguist-generated
/ql/lib/codeql/rust/elements/WildPat.qll linguist-generated
/ql/lib/codeql/rust/elements/WildPatConstructor.qll linguist-generated
/ql/lib/codeql/rust/elements/Yeet.qll linguist-generated
@@ -120,7 +121,8 @@
/ql/lib/codeql/rust/elements/YieldConstructor.qll linguist-generated
/ql/lib/codeql/rust/elements.qll linguist-generated
/ql/lib/codeql/rust/generated/Array.qll linguist-generated
/ql/lib/codeql/rust/generated/Async.qll linguist-generated
/ql/lib/codeql/rust/generated/AstNode.qll linguist-generated
/ql/lib/codeql/rust/generated/AsyncBlock.qll linguist-generated
/ql/lib/codeql/rust/generated/Await.qll linguist-generated
/ql/lib/codeql/rust/generated/Become.qll linguist-generated
/ql/lib/codeql/rust/generated/BinaryOp.qll linguist-generated
@@ -184,11 +186,11 @@
/ql/lib/codeql/rust/generated/TuplePat.qll linguist-generated
/ql/lib/codeql/rust/generated/TupleStructPat.qll linguist-generated
/ql/lib/codeql/rust/generated/TypeRef.qll linguist-generated
/ql/lib/codeql/rust/generated/UnaryExpr.qll linguist-generated
/ql/lib/codeql/rust/generated/UnaryOp.qll linguist-generated
/ql/lib/codeql/rust/generated/Underscore.qll linguist-generated
/ql/lib/codeql/rust/generated/UnknownFile.qll linguist-generated
/ql/lib/codeql/rust/generated/UnknownLocation.qll linguist-generated
/ql/lib/codeql/rust/generated/Unsafe.qll linguist-generated
/ql/lib/codeql/rust/generated/UnsafeBlock.qll linguist-generated
/ql/lib/codeql/rust/generated/WildPat.qll linguist-generated
/ql/lib/codeql/rust/generated/Yeet.qll linguist-generated
/ql/lib/codeql/rust/generated/Yield.qll linguist-generated

View File

@@ -478,8 +478,8 @@ pub struct If {
pub id: TrapId,
pub location: Option<trap::Label>,
pub condition: trap::Label,
pub then_branch: trap::Label,
pub else_branch: Option<trap::Label>,
pub then: trap::Label,
pub else_: Option<trap::Label>,
}
impl TrapEntry for If {
@@ -488,12 +488,12 @@ impl TrapEntry for If {
}
fn emit(self, id: trap::Label, out: &mut trap::Writer) {
out.add_tuple("ifs", vec![trap::Arg::Label(id), self.condition.into(), self.then_branch.into()]);
out.add_tuple("ifs", vec![trap::Arg::Label(id), self.condition.into(), self.then.into()]);
if let Some(v) = self.location {
out.add_tuple("locatable_locations", vec![trap::Arg::Label(id), v.into()]);
}
if let Some(v) = self.else_branch {
out.add_tuple("if_else_branches", vec![trap::Arg::Label(id), v.into()]);
if let Some(v) = self.else_ {
out.add_tuple("if_elses", vec![trap::Arg::Label(id), v.into()]);
}
}
}
@@ -1135,20 +1135,20 @@ impl TrapEntry for TupleStructPat {
}
#[derive(Debug)]
pub struct UnaryExpr {
pub struct UnaryOp {
pub id: TrapId,
pub location: Option<trap::Label>,
pub expr: trap::Label,
pub op: String,
}
impl TrapEntry for UnaryExpr {
impl TrapEntry for UnaryOp {
fn extract_id(&mut self) -> TrapId {
std::mem::replace(&mut self.id, TrapId::Star)
}
fn emit(self, id: trap::Label, out: &mut trap::Writer) {
out.add_tuple("unary_exprs", vec![trap::Arg::Label(id), self.expr.into(), self.op.into()]);
out.add_tuple("unary_ops", vec![trap::Arg::Label(id), self.expr.into(), self.op.into()]);
if let Some(v) = self.location {
out.add_tuple("locatable_locations", vec![trap::Arg::Label(id), v.into()]);
}
@@ -1240,7 +1240,7 @@ impl TrapEntry for Yield {
}
#[derive(Debug)]
pub struct Async {
pub struct AsyncBlock {
pub id: TrapId,
pub location: Option<trap::Label>,
pub statements: Vec<trap::Label>,
@@ -1248,13 +1248,13 @@ pub struct Async {
pub label: Option<String>,
}
impl TrapEntry for Async {
impl TrapEntry for AsyncBlock {
fn extract_id(&mut self) -> TrapId {
std::mem::replace(&mut self.id, TrapId::Star)
}
fn emit(self, id: trap::Label, out: &mut trap::Writer) {
out.add_tuple("asyncs", vec![trap::Arg::Label(id)]);
out.add_tuple("async_blocks", vec![trap::Arg::Label(id)]);
if let Some(v) = self.location {
out.add_tuple("locatable_locations", vec![trap::Arg::Label(id), v.into()]);
}
@@ -1271,7 +1271,7 @@ impl TrapEntry for Async {
}
#[derive(Debug)]
pub struct Unsafe {
pub struct UnsafeBlock {
pub id: TrapId,
pub location: Option<trap::Label>,
pub statements: Vec<trap::Label>,
@@ -1279,13 +1279,13 @@ pub struct Unsafe {
pub label: Option<String>,
}
impl TrapEntry for Unsafe {
impl TrapEntry for UnsafeBlock {
fn extract_id(&mut self) -> TrapId {
std::mem::replace(&mut self.id, TrapId::Star)
}
fn emit(self, id: trap::Label, out: &mut trap::Writer) {
out.add_tuple("unsaves", vec![trap::Arg::Label(id)]);
out.add_tuple("unsafe_blocks", vec![trap::Arg::Label(id)]);
if let Some(v) = self.location {
out.add_tuple("locatable_locations", vec![trap::Arg::Label(id), v.into()]);
}

View File

@@ -4,7 +4,8 @@
*/
import codeql.rust.elements.Array
import codeql.rust.elements.Async
import codeql.rust.elements.AstNode
import codeql.rust.elements.AsyncBlock
import codeql.rust.elements.Await
import codeql.rust.elements.Become
import codeql.rust.elements.BinaryOp
@@ -63,11 +64,11 @@ import codeql.rust.elements.Tuple
import codeql.rust.elements.TuplePat
import codeql.rust.elements.TupleStructPat
import codeql.rust.elements.TypeRef
import codeql.rust.elements.UnaryExpr
import codeql.rust.elements.UnaryOp
import codeql.rust.elements.Underscore
import codeql.rust.elements.UnknownFile
import codeql.rust.elements.UnknownLocation
import codeql.rust.elements.Unsafe
import codeql.rust.elements.UnsafeBlock
import codeql.rust.elements.WildPat
import codeql.rust.elements.Yeet
import codeql.rust.elements.Yield

View File

@@ -1,8 +1,8 @@
// generated by codegen, remove this comment if you wish to edit this file
/**
* This module provides a hand-modifiable wrapper around the generated class `Async`.
* This module provides a hand-modifiable wrapper around the generated class `AstNode`.
*/
private import codeql.rust.generated.Async
private import codeql.rust.generated.AstNode
class Async extends Generated::Async { }
class AstNode extends Generated::AstNode { }

View File

@@ -1,8 +1,8 @@
// generated by codegen, remove this comment if you wish to edit this file
/**
* This module provides a hand-modifiable wrapper around the generated class `UnaryExpr`.
* This module provides a hand-modifiable wrapper around the generated class `AsyncBlock`.
*/
private import codeql.rust.generated.UnaryExpr
private import codeql.rust.generated.AsyncBlock
class UnaryExpr extends Generated::UnaryExpr { }
class AsyncBlock extends Generated::AsyncBlock { }

View File

@@ -1,14 +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
* `Async` synthesized instances.
* `AsyncBlock` synthesized instances.
* INTERNAL: Do not use.
*/
private import codeql.rust.generated.Raw
/**
* The characteristic predicate of `Async` synthesized instances.
* The characteristic predicate of `AsyncBlock` synthesized instances.
* INTERNAL: Do not use.
*/
predicate constructAsync(Raw::Async id) { any() }
predicate constructAsyncBlock(Raw::AsyncBlock id) { any() }

View File

@@ -1,8 +1,8 @@
// generated by codegen, remove this comment if you wish to edit this file
/**
* This module provides a hand-modifiable wrapper around the generated class `Unsafe`.
* This module provides a hand-modifiable wrapper around the generated class `UnaryOp`.
*/
private import codeql.rust.generated.Unsafe
private import codeql.rust.generated.UnaryOp
class Unsafe extends Generated::Unsafe { }
class UnaryOp extends Generated::UnaryOp { }

View File

@@ -1,14 +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
* `Unsafe` synthesized instances.
* `UnaryOp` synthesized instances.
* INTERNAL: Do not use.
*/
private import codeql.rust.generated.Raw
/**
* The characteristic predicate of `Unsafe` synthesized instances.
* The characteristic predicate of `UnaryOp` synthesized instances.
* INTERNAL: Do not use.
*/
predicate constructUnsafe(Raw::Unsafe id) { any() }
predicate constructUnaryOp(Raw::UnaryOp id) { any() }

View File

@@ -0,0 +1,8 @@
// generated by codegen, remove this comment if you wish to edit this file
/**
* This module provides a hand-modifiable wrapper around the generated class `UnsafeBlock`.
*/
private import codeql.rust.generated.UnsafeBlock
class UnsafeBlock extends Generated::UnsafeBlock { }

View File

@@ -1,14 +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
* `UnaryExpr` synthesized instances.
* `UnsafeBlock` synthesized instances.
* INTERNAL: Do not use.
*/
private import codeql.rust.generated.Raw
/**
* The characteristic predicate of `UnaryExpr` synthesized instances.
* The characteristic predicate of `UnsafeBlock` synthesized instances.
* INTERNAL: Do not use.
*/
predicate constructUnaryExpr(Raw::UnaryExpr id) { any() }
predicate constructUnsafeBlock(Raw::UnsafeBlock id) { any() }

View File

@@ -0,0 +1,21 @@
// generated by codegen
/**
* This module provides the generated definition of `AstNode`.
* INTERNAL: Do not import directly.
*/
private import codeql.rust.generated.Synth
private import codeql.rust.generated.Raw
import codeql.rust.elements.Locatable
/**
* INTERNAL: This module contains the fully generated definition of `AstNode` and should not
* be referenced directly.
*/
module Generated {
/**
* INTERNAL: Do not reference the `Generated::AstNode` class directly.
* Use the subclass `AstNode`, where the following predicates are available.
*/
class AstNode extends Synth::TAstNode, Locatable { }
}

View File

@@ -1,23 +0,0 @@
// generated by codegen
/**
* This module provides the generated definition of `Async`.
* INTERNAL: Do not import directly.
*/
private import codeql.rust.generated.Synth
private import codeql.rust.generated.Raw
import codeql.rust.elements.Block
/**
* INTERNAL: This module contains the fully generated definition of `Async` and should not
* be referenced directly.
*/
module Generated {
/**
* INTERNAL: Do not reference the `Generated::Async` class directly.
* Use the subclass `Async`, where the following predicates are available.
*/
class Async extends Synth::TAsync, Block {
override string getAPrimaryQlClass() { result = "Async" }
}
}

View File

@@ -0,0 +1,23 @@
// generated by codegen
/**
* This module provides the generated definition of `AsyncBlock`.
* INTERNAL: Do not import directly.
*/
private import codeql.rust.generated.Synth
private import codeql.rust.generated.Raw
import codeql.rust.elements.Block
/**
* INTERNAL: This module contains the fully generated definition of `AsyncBlock` and should not
* be referenced directly.
*/
module Generated {
/**
* INTERNAL: Do not reference the `Generated::AsyncBlock` class directly.
* Use the subclass `AsyncBlock`, where the following predicates are available.
*/
class AsyncBlock extends Synth::TAsyncBlock, Block {
override string getAPrimaryQlClass() { result = "AsyncBlock" }
}
}

View File

@@ -6,7 +6,7 @@
private import codeql.rust.generated.Synth
private import codeql.rust.generated.Raw
import codeql.rust.elements.Locatable
import codeql.rust.elements.AstNode
/**
* INTERNAL: This module contains the fully generated definition of `Declaration` and should not
@@ -17,5 +17,5 @@ module Generated {
* INTERNAL: Do not reference the `Generated::Declaration` class directly.
* Use the subclass `Declaration`, where the following predicates are available.
*/
class Declaration extends Synth::TDeclaration, Locatable { }
class Declaration extends Synth::TDeclaration, AstNode { }
}

View File

@@ -6,7 +6,7 @@
private import codeql.rust.generated.Synth
private import codeql.rust.generated.Raw
import codeql.rust.elements.Locatable
import codeql.rust.elements.AstNode
/**
* INTERNAL: This module contains the fully generated definition of `Expr` and should not
@@ -17,5 +17,5 @@ module Generated {
* INTERNAL: Do not reference the `Generated::Expr` class directly.
* Use the subclass `Expr`, where the following predicates are available.
*/
class Expr extends Synth::TExpr, Locatable { }
class Expr extends Synth::TExpr, AstNode { }
}

View File

@@ -28,22 +28,22 @@ module Generated {
}
/**
* Gets the then branch of this if.
* Gets the then of this if.
*/
Expr getThenBranch() {
result = Synth::convertExprFromRaw(Synth::convertIfToRaw(this).(Raw::If).getThenBranch())
Expr getThen() {
result = Synth::convertExprFromRaw(Synth::convertIfToRaw(this).(Raw::If).getThen())
}
/**
* Gets the else branch of this if, if it exists.
* Gets the else of this if, if it exists.
*/
Expr getElseBranch() {
result = Synth::convertExprFromRaw(Synth::convertIfToRaw(this).(Raw::If).getElseBranch())
Expr getElse() {
result = Synth::convertExprFromRaw(Synth::convertIfToRaw(this).(Raw::If).getElse())
}
/**
* Holds if `getElseBranch()` exists.
* Holds if `getElse()` exists.
*/
final predicate hasElseBranch() { exists(this.getElseBranch()) }
final predicate hasElse() { exists(this.getElse()) }
}
}

View File

@@ -6,8 +6,8 @@
private import codeql.rust.generated.Synth
private import codeql.rust.generated.Raw
import codeql.rust.elements.AstNode
import codeql.rust.elements.Expr
import codeql.rust.elements.Locatable
import codeql.rust.elements.Pat
/**
@@ -19,7 +19,7 @@ module Generated {
* INTERNAL: Do not reference the `Generated::MatchArm` class directly.
* Use the subclass `MatchArm`, where the following predicates are available.
*/
class MatchArm extends Synth::TMatchArm, Locatable {
class MatchArm extends Synth::TMatchArm, AstNode {
override string getAPrimaryQlClass() { result = "MatchArm" }
/**

View File

@@ -49,6 +49,19 @@ private module Impl {
)
}
private Element getImmediateChildOfAstNode(AstNode e, int index, string partialPredicateCall) {
exists(int b, int bLocatable, int n |
b = 0 and
bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and
n = bLocatable and
(
none()
or
result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall)
)
)
}
private Element getImmediateChildOfDbFile(DbFile e, int index, string partialPredicateCall) {
exists(int b, int bFile, int n |
b = 0 and
@@ -75,86 +88,6 @@ private module Impl {
)
}
private Element getImmediateChildOfDeclaration(
Declaration e, int index, string partialPredicateCall
) {
exists(int b, int bLocatable, int n |
b = 0 and
bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and
n = bLocatable and
(
none()
or
result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall)
)
)
}
private Element getImmediateChildOfExpr(Expr e, int index, string partialPredicateCall) {
exists(int b, int bLocatable, int n |
b = 0 and
bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and
n = bLocatable and
(
none()
or
result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall)
)
)
}
private Element getImmediateChildOfMatchArm(MatchArm e, int index, string partialPredicateCall) {
exists(int b, int bLocatable, int n |
b = 0 and
bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and
n = bLocatable and
(
none()
or
result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall)
)
)
}
private Element getImmediateChildOfPat(Pat e, int index, string partialPredicateCall) {
exists(int b, int bLocatable, int n |
b = 0 and
bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and
n = bLocatable and
(
none()
or
result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall)
)
)
}
private Element getImmediateChildOfStmt(Stmt e, int index, string partialPredicateCall) {
exists(int b, int bLocatable, int n |
b = 0 and
bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and
n = bLocatable and
(
none()
or
result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall)
)
)
}
private Element getImmediateChildOfTypeRef(TypeRef e, int index, string partialPredicateCall) {
exists(int b, int bLocatable, int n |
b = 0 and
bLocatable = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfLocatable(e, i, _)) | i) and
n = bLocatable and
(
none()
or
result = getImmediateChildOfLocatable(e, index - b, partialPredicateCall)
)
)
}
private Element getImmediateChildOfUnknownFile(
UnknownFile e, int index, string partialPredicateCall
) {
@@ -185,6 +118,86 @@ private module Impl {
)
}
private Element getImmediateChildOfDeclaration(
Declaration 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 getImmediateChildOfExpr(Expr 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 getImmediateChildOfMatchArm(MatchArm 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 getImmediateChildOfPat(Pat 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 getImmediateChildOfStmt(Stmt 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 getImmediateChildOfTypeRef(TypeRef 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 getImmediateChildOfArray(Array e, int index, string partialPredicateCall) {
exists(int b, int bExpr, int n |
b = 0 and
@@ -808,7 +821,7 @@ private module Impl {
)
}
private Element getImmediateChildOfUnaryExpr(UnaryExpr e, int index, string partialPredicateCall) {
private Element getImmediateChildOfUnaryOp(UnaryOp e, int index, string partialPredicateCall) {
exists(int b, int bExpr, int n |
b = 0 and
bExpr = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfExpr(e, i, _)) | i) and
@@ -873,7 +886,7 @@ private module Impl {
)
}
private Element getImmediateChildOfAsync(Async e, int index, string partialPredicateCall) {
private Element getImmediateChildOfAsyncBlock(AsyncBlock e, int index, string partialPredicateCall) {
exists(int b, int bBlock, int n |
b = 0 and
bBlock = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBlock(e, i, _)) | i) and
@@ -886,7 +899,9 @@ private module Impl {
)
}
private Element getImmediateChildOfUnsafe(Unsafe e, int index, string partialPredicateCall) {
private Element getImmediateChildOfUnsafeBlock(
UnsafeBlock e, int index, string partialPredicateCall
) {
exists(int b, int bBlock, int n |
b = 0 and
bBlock = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfBlock(e, i, _)) | i) and
@@ -909,14 +924,14 @@ private module Impl {
or
result = getImmediateChildOfDbLocation(e, index, partialAccessor)
or
result = getImmediateChildOfMatchArm(e, index, partialAccessor)
or
result = getImmediateChildOfTypeRef(e, index, partialAccessor)
or
result = getImmediateChildOfUnknownFile(e, index, partialAccessor)
or
result = getImmediateChildOfUnknownLocation(e, index, partialAccessor)
or
result = getImmediateChildOfMatchArm(e, index, partialAccessor)
or
result = getImmediateChildOfTypeRef(e, index, partialAccessor)
or
result = getImmediateChildOfArray(e, index, partialAccessor)
or
result = getImmediateChildOfAwait(e, index, partialAccessor)
@@ -1009,7 +1024,7 @@ private module Impl {
or
result = getImmediateChildOfTupleStructPat(e, index, partialAccessor)
or
result = getImmediateChildOfUnaryExpr(e, index, partialAccessor)
result = getImmediateChildOfUnaryOp(e, index, partialAccessor)
or
result = getImmediateChildOfUnderscore(e, index, partialAccessor)
or
@@ -1019,9 +1034,9 @@ private module Impl {
or
result = getImmediateChildOfYield(e, index, partialAccessor)
or
result = getImmediateChildOfAsync(e, index, partialAccessor)
result = getImmediateChildOfAsyncBlock(e, index, partialAccessor)
or
result = getImmediateChildOfUnsafe(e, index, partialAccessor)
result = getImmediateChildOfUnsafeBlock(e, index, partialAccessor)
}
}

View File

@@ -6,7 +6,7 @@
private import codeql.rust.generated.Synth
private import codeql.rust.generated.Raw
import codeql.rust.elements.Locatable
import codeql.rust.elements.AstNode
/**
* INTERNAL: This module contains the fully generated definition of `Pat` and should not
@@ -17,5 +17,5 @@ module Generated {
* INTERNAL: Do not reference the `Generated::Pat` class directly.
* Use the subclass `Pat`, where the following predicates are available.
*/
class Pat extends Synth::TPat, Locatable { }
class Pat extends Synth::TPat, AstNode { }
}

View File

@@ -60,6 +60,11 @@ module Raw {
int getEndColumn() { locations(this, _, _, _, _, result) }
}
/**
* INTERNAL: Do not use.
*/
class AstNode extends @ast_node, Locatable { }
/**
* INTERNAL: Do not use.
*/
@@ -77,17 +82,17 @@ module Raw {
/**
* INTERNAL: Do not use.
*/
class Declaration extends @declaration, Locatable { }
class Declaration extends @declaration, AstNode { }
/**
* INTERNAL: Do not use.
*/
class Expr extends @expr, Locatable { }
class Expr extends @expr, AstNode { }
/**
* INTERNAL: Do not use.
*/
class MatchArm extends @match_arm, Locatable {
class MatchArm extends @match_arm, AstNode {
override string toString() { result = "MatchArm" }
/**
@@ -109,17 +114,17 @@ module Raw {
/**
* INTERNAL: Do not use.
*/
class Pat extends @pat, Locatable { }
class Pat extends @pat, AstNode { }
/**
* INTERNAL: Do not use.
*/
class Stmt extends @stmt, Locatable { }
class Stmt extends @stmt, AstNode { }
/**
* INTERNAL: Do not use.
*/
class TypeRef extends @type_ref, Locatable {
class TypeRef extends @type_ref, AstNode {
override string toString() { result = "TypeRef" }
}
@@ -419,14 +424,14 @@ module Raw {
Expr getCondition() { ifs(this, result, _) }
/**
* Gets the then branch of this if.
* Gets the then of this if.
*/
Expr getThenBranch() { ifs(this, _, result) }
Expr getThen() { ifs(this, _, result) }
/**
* Gets the else branch of this if, if it exists.
* Gets the else of this if, if it exists.
*/
Expr getElseBranch() { if_else_branches(this, result) }
Expr getElse() { if_elses(this, result) }
}
/**
@@ -803,18 +808,18 @@ module Raw {
/**
* INTERNAL: Do not use.
*/
class UnaryExpr extends @unary_expr, Expr {
override string toString() { result = "UnaryExpr" }
class UnaryOp extends @unary_op, Expr {
override string toString() { result = "UnaryOp" }
/**
* Gets the expression of this unary expression.
* Gets the expression of this unary op.
*/
Expr getExpr() { unary_exprs(this, result, _) }
Expr getExpr() { unary_ops(this, result, _) }
/**
* Gets the op of this unary expression.
* Gets the op of this unary op.
*/
string getOp() { unary_exprs(this, _, result) }
string getOp() { unary_ops(this, _, result) }
}
/**
@@ -858,14 +863,14 @@ module Raw {
/**
* INTERNAL: Do not use.
*/
class Async extends @async, Block {
override string toString() { result = "Async" }
class AsyncBlock extends @async_block, Block {
override string toString() { result = "AsyncBlock" }
}
/**
* INTERNAL: Do not use.
*/
class Unsafe extends @unsafe, Block {
override string toString() { result = "Unsafe" }
class UnsafeBlock extends @unsafe_block, Block {
override string toString() { result = "UnsafeBlock" }
}
}

View File

@@ -6,7 +6,7 @@
private import codeql.rust.generated.Synth
private import codeql.rust.generated.Raw
import codeql.rust.elements.Locatable
import codeql.rust.elements.AstNode
/**
* INTERNAL: This module contains the fully generated definition of `Stmt` and should not
@@ -17,5 +17,5 @@ module Generated {
* INTERNAL: Do not reference the `Generated::Stmt` class directly.
* Use the subclass `Stmt`, where the following predicates are available.
*/
class Stmt extends Synth::TStmt, Locatable { }
class Stmt extends Synth::TStmt, AstNode { }
}

View File

@@ -22,7 +22,7 @@ module Synth {
/**
* INTERNAL: Do not use.
*/
TAsync(Raw::Async id) { constructAsync(id) } or
TAsyncBlock(Raw::AsyncBlock id) { constructAsyncBlock(id) } or
/**
* INTERNAL: Do not use.
*/
@@ -222,7 +222,7 @@ module Synth {
/**
* INTERNAL: Do not use.
*/
TUnaryExpr(Raw::UnaryExpr id) { constructUnaryExpr(id) } or
TUnaryOp(Raw::UnaryOp id) { constructUnaryOp(id) } or
/**
* INTERNAL: Do not use.
*/
@@ -238,7 +238,7 @@ module Synth {
/**
* INTERNAL: Do not use.
*/
TUnsafe(Raw::Unsafe id) { constructUnsafe(id) } or
TUnsafeBlock(Raw::UnsafeBlock id) { constructUnsafeBlock(id) } or
/**
* INTERNAL: Do not use.
*/
@@ -255,7 +255,12 @@ module Synth {
/**
* INTERNAL: Do not use.
*/
class TBlock = TAsync or TUnsafe;
class TAstNode = TDeclaration or TExpr or TMatchArm or TPat or TStmt or TTypeRef;
/**
* INTERNAL: Do not use.
*/
class TBlock = TAsyncBlock or TUnsafeBlock;
/**
* INTERNAL: Do not use.
@@ -269,7 +274,7 @@ module Synth {
TArray or TAwait or TBecome or TBinaryOp or TBlock or TBox or TBreak or TCall or TCast or
TClosure or TConst or TContinue or TField or TIf or TIndex or TInlineAsm or TLet or
TLiteral or TLoop or TMatch or TMethodCall or TMissingExpr or TOffsetOf or TPath or
TRange or TRecordLit or TRef or TReturn or TTuple or TUnaryExpr or TUnderscore or TYeet or
TRange or TRecordLit or TRef or TReturn or TTuple or TUnaryOp or TUnderscore or TYeet or
TYield;
/**
@@ -280,7 +285,7 @@ module Synth {
/**
* INTERNAL: Do not use.
*/
class TLocatable = TDeclaration or TExpr or TMatchArm or TPat or TStmt or TTypeRef;
class TLocatable = TAstNode;
/**
* INTERNAL: Do not use.
@@ -308,10 +313,10 @@ module Synth {
/**
* INTERNAL: Do not use.
* Converts a raw element to a synthesized `TAsync`, if possible.
* Converts a raw element to a synthesized `TAsyncBlock`, if possible.
*/
cached
TAsync convertAsyncFromRaw(Raw::Element e) { result = TAsync(e) }
TAsyncBlock convertAsyncBlockFromRaw(Raw::Element e) { result = TAsyncBlock(e) }
/**
* INTERNAL: Do not use.
@@ -658,10 +663,10 @@ module Synth {
/**
* INTERNAL: Do not use.
* Converts a raw element to a synthesized `TUnaryExpr`, if possible.
* Converts a raw element to a synthesized `TUnaryOp`, if possible.
*/
cached
TUnaryExpr convertUnaryExprFromRaw(Raw::Element e) { result = TUnaryExpr(e) }
TUnaryOp convertUnaryOpFromRaw(Raw::Element e) { result = TUnaryOp(e) }
/**
* INTERNAL: Do not use.
@@ -686,10 +691,10 @@ module Synth {
/**
* INTERNAL: Do not use.
* Converts a raw element to a synthesized `TUnsafe`, if possible.
* Converts a raw element to a synthesized `TUnsafeBlock`, if possible.
*/
cached
TUnsafe convertUnsafeFromRaw(Raw::Element e) { result = TUnsafe(e) }
TUnsafeBlock convertUnsafeBlockFromRaw(Raw::Element e) { result = TUnsafeBlock(e) }
/**
* INTERNAL: Do not use.
@@ -712,15 +717,34 @@ module Synth {
cached
TYield convertYieldFromRaw(Raw::Element e) { result = TYield(e) }
/**
* INTERNAL: Do not use.
* Converts a raw DB element to a synthesized `TAstNode`, if possible.
*/
cached
TAstNode convertAstNodeFromRaw(Raw::Element e) {
result = convertDeclarationFromRaw(e)
or
result = convertExprFromRaw(e)
or
result = convertMatchArmFromRaw(e)
or
result = convertPatFromRaw(e)
or
result = convertStmtFromRaw(e)
or
result = convertTypeRefFromRaw(e)
}
/**
* INTERNAL: Do not use.
* Converts a raw DB element to a synthesized `TBlock`, if possible.
*/
cached
TBlock convertBlockFromRaw(Raw::Element e) {
result = convertAsyncFromRaw(e)
result = convertAsyncBlockFromRaw(e)
or
result = convertUnsafeFromRaw(e)
result = convertUnsafeBlockFromRaw(e)
}
/**
@@ -811,7 +835,7 @@ module Synth {
or
result = convertTupleFromRaw(e)
or
result = convertUnaryExprFromRaw(e)
result = convertUnaryOpFromRaw(e)
or
result = convertUnderscoreFromRaw(e)
or
@@ -836,19 +860,7 @@ module Synth {
* Converts a raw DB element to a synthesized `TLocatable`, if possible.
*/
cached
TLocatable convertLocatableFromRaw(Raw::Element e) {
result = convertDeclarationFromRaw(e)
or
result = convertExprFromRaw(e)
or
result = convertMatchArmFromRaw(e)
or
result = convertPatFromRaw(e)
or
result = convertStmtFromRaw(e)
or
result = convertTypeRefFromRaw(e)
}
TLocatable convertLocatableFromRaw(Raw::Element e) { result = convertAstNodeFromRaw(e) }
/**
* INTERNAL: Do not use.
@@ -918,10 +930,10 @@ module Synth {
/**
* INTERNAL: Do not use.
* Converts a synthesized `TAsync` to a raw DB element, if possible.
* Converts a synthesized `TAsyncBlock` to a raw DB element, if possible.
*/
cached
Raw::Element convertAsyncToRaw(TAsync e) { e = TAsync(result) }
Raw::Element convertAsyncBlockToRaw(TAsyncBlock e) { e = TAsyncBlock(result) }
/**
* INTERNAL: Do not use.
@@ -1268,10 +1280,10 @@ module Synth {
/**
* INTERNAL: Do not use.
* Converts a synthesized `TUnaryExpr` to a raw DB element, if possible.
* Converts a synthesized `TUnaryOp` to a raw DB element, if possible.
*/
cached
Raw::Element convertUnaryExprToRaw(TUnaryExpr e) { e = TUnaryExpr(result) }
Raw::Element convertUnaryOpToRaw(TUnaryOp e) { e = TUnaryOp(result) }
/**
* INTERNAL: Do not use.
@@ -1296,10 +1308,10 @@ module Synth {
/**
* INTERNAL: Do not use.
* Converts a synthesized `TUnsafe` to a raw DB element, if possible.
* Converts a synthesized `TUnsafeBlock` to a raw DB element, if possible.
*/
cached
Raw::Element convertUnsafeToRaw(TUnsafe e) { e = TUnsafe(result) }
Raw::Element convertUnsafeBlockToRaw(TUnsafeBlock e) { e = TUnsafeBlock(result) }
/**
* INTERNAL: Do not use.
@@ -1322,15 +1334,34 @@ module Synth {
cached
Raw::Element convertYieldToRaw(TYield e) { e = TYield(result) }
/**
* INTERNAL: Do not use.
* Converts a synthesized `TAstNode` to a raw DB element, if possible.
*/
cached
Raw::Element convertAstNodeToRaw(TAstNode e) {
result = convertDeclarationToRaw(e)
or
result = convertExprToRaw(e)
or
result = convertMatchArmToRaw(e)
or
result = convertPatToRaw(e)
or
result = convertStmtToRaw(e)
or
result = convertTypeRefToRaw(e)
}
/**
* INTERNAL: Do not use.
* Converts a synthesized `TBlock` to a raw DB element, if possible.
*/
cached
Raw::Element convertBlockToRaw(TBlock e) {
result = convertAsyncToRaw(e)
result = convertAsyncBlockToRaw(e)
or
result = convertUnsafeToRaw(e)
result = convertUnsafeBlockToRaw(e)
}
/**
@@ -1421,7 +1452,7 @@ module Synth {
or
result = convertTupleToRaw(e)
or
result = convertUnaryExprToRaw(e)
result = convertUnaryOpToRaw(e)
or
result = convertUnderscoreToRaw(e)
or
@@ -1446,19 +1477,7 @@ module Synth {
* Converts a synthesized `TLocatable` to a raw DB element, if possible.
*/
cached
Raw::Element convertLocatableToRaw(TLocatable e) {
result = convertDeclarationToRaw(e)
or
result = convertExprToRaw(e)
or
result = convertMatchArmToRaw(e)
or
result = convertPatToRaw(e)
or
result = convertStmtToRaw(e)
or
result = convertTypeRefToRaw(e)
}
Raw::Element convertLocatableToRaw(TLocatable e) { result = convertAstNodeToRaw(e) }
/**
* INTERNAL: Do not use.

View File

@@ -4,7 +4,7 @@
*/
import codeql.rust.elements.ArrayConstructor
import codeql.rust.elements.AsyncConstructor
import codeql.rust.elements.AsyncBlockConstructor
import codeql.rust.elements.AwaitConstructor
import codeql.rust.elements.BecomeConstructor
import codeql.rust.elements.BinaryOpConstructor
@@ -54,9 +54,9 @@ import codeql.rust.elements.TupleConstructor
import codeql.rust.elements.TuplePatConstructor
import codeql.rust.elements.TupleStructPatConstructor
import codeql.rust.elements.TypeRefConstructor
import codeql.rust.elements.UnaryExprConstructor
import codeql.rust.elements.UnaryOpConstructor
import codeql.rust.elements.UnderscoreConstructor
import codeql.rust.elements.UnsafeConstructor
import codeql.rust.elements.UnsafeBlockConstructor
import codeql.rust.elements.WildPatConstructor
import codeql.rust.elements.YeetConstructor
import codeql.rust.elements.YieldConstructor

View File

@@ -6,7 +6,7 @@
private import codeql.rust.generated.Synth
private import codeql.rust.generated.Raw
import codeql.rust.elements.Locatable
import codeql.rust.elements.AstNode
/**
* INTERNAL: This module contains the fully generated definition of `TypeRef` and should not
@@ -17,7 +17,7 @@ module Generated {
* INTERNAL: Do not reference the `Generated::TypeRef` class directly.
* Use the subclass `TypeRef`, where the following predicates are available.
*/
class TypeRef extends Synth::TTypeRef, Locatable {
class TypeRef extends Synth::TTypeRef, AstNode {
override string getAPrimaryQlClass() { result = "TypeRef" }
}
}

View File

@@ -1,36 +0,0 @@
// generated by codegen
/**
* This module provides the generated definition of `UnaryExpr`.
* INTERNAL: Do not import directly.
*/
private import codeql.rust.generated.Synth
private import codeql.rust.generated.Raw
import codeql.rust.elements.Expr
/**
* INTERNAL: This module contains the fully generated definition of `UnaryExpr` and should not
* be referenced directly.
*/
module Generated {
/**
* INTERNAL: Do not reference the `Generated::UnaryExpr` class directly.
* Use the subclass `UnaryExpr`, where the following predicates are available.
*/
class UnaryExpr extends Synth::TUnaryExpr, Expr {
override string getAPrimaryQlClass() { result = "UnaryExpr" }
/**
* Gets the expression of this unary expression.
*/
Expr getExpr() {
result =
Synth::convertExprFromRaw(Synth::convertUnaryExprToRaw(this).(Raw::UnaryExpr).getExpr())
}
/**
* Gets the op of this unary expression.
*/
string getOp() { result = Synth::convertUnaryExprToRaw(this).(Raw::UnaryExpr).getOp() }
}
}

View File

@@ -0,0 +1,35 @@
// generated by codegen
/**
* This module provides the generated definition of `UnaryOp`.
* INTERNAL: Do not import directly.
*/
private import codeql.rust.generated.Synth
private import codeql.rust.generated.Raw
import codeql.rust.elements.Expr
/**
* INTERNAL: This module contains the fully generated definition of `UnaryOp` and should not
* be referenced directly.
*/
module Generated {
/**
* INTERNAL: Do not reference the `Generated::UnaryOp` class directly.
* Use the subclass `UnaryOp`, where the following predicates are available.
*/
class UnaryOp extends Synth::TUnaryOp, Expr {
override string getAPrimaryQlClass() { result = "UnaryOp" }
/**
* Gets the expression of this unary op.
*/
Expr getExpr() {
result = Synth::convertExprFromRaw(Synth::convertUnaryOpToRaw(this).(Raw::UnaryOp).getExpr())
}
/**
* Gets the op of this unary op.
*/
string getOp() { result = Synth::convertUnaryOpToRaw(this).(Raw::UnaryOp).getOp() }
}
}

View File

@@ -1,23 +0,0 @@
// generated by codegen
/**
* This module provides the generated definition of `Unsafe`.
* INTERNAL: Do not import directly.
*/
private import codeql.rust.generated.Synth
private import codeql.rust.generated.Raw
import codeql.rust.elements.Block
/**
* INTERNAL: This module contains the fully generated definition of `Unsafe` and should not
* be referenced directly.
*/
module Generated {
/**
* INTERNAL: Do not reference the `Generated::Unsafe` class directly.
* Use the subclass `Unsafe`, where the following predicates are available.
*/
class Unsafe extends Synth::TUnsafe, Block {
override string getAPrimaryQlClass() { result = "Unsafe" }
}
}

View File

@@ -0,0 +1,23 @@
// generated by codegen
/**
* This module provides the generated definition of `UnsafeBlock`.
* INTERNAL: Do not import directly.
*/
private import codeql.rust.generated.Synth
private import codeql.rust.generated.Raw
import codeql.rust.elements.Block
/**
* INTERNAL: This module contains the fully generated definition of `UnsafeBlock` and should not
* be referenced directly.
*/
module Generated {
/**
* INTERNAL: Do not reference the `Generated::UnsafeBlock` class directly.
* Use the subclass `UnsafeBlock`, where the following predicates are available.
*/
class UnsafeBlock extends Synth::TUnsafeBlock, Block {
override string getAPrimaryQlClass() { result = "UnsafeBlock" }
}
}

View File

@@ -28,12 +28,7 @@ files(
);
@locatable =
@declaration
| @expr
| @match_arm
| @pat
| @stmt
| @type_ref
@ast_node
;
#keyset[id]
@@ -56,6 +51,15 @@ locations(
int end_column: int ref
);
@ast_node =
@declaration
| @expr
| @match_arm
| @pat
| @stmt
| @type_ref
;
db_files(
unique int id: @db_file
);
@@ -99,7 +103,7 @@ db_locations(
| @ref
| @return
| @tuple
| @unary_expr
| @unary_op
| @underscore
| @yeet
| @yield
@@ -182,8 +186,8 @@ bind_pat_subpats(
);
@block =
@async
| @unsafe
@async_block
| @unsafe_block
;
#keyset[id, index]
@@ -328,13 +332,13 @@ functions(
ifs(
unique int id: @if,
int condition: @expr ref,
int then_branch: @expr ref
int then: @expr ref
);
#keyset[id]
if_else_branches(
if_elses(
int id: @if ref,
int else_branch: @expr ref
int else: @expr ref
);
if_lets(
@@ -600,8 +604,8 @@ tuple_struct_pats(
unique int id: @tuple_struct_pat
);
unary_exprs(
unique int id: @unary_expr,
unary_ops(
unique int id: @unary_op,
int expr: @expr ref,
string op: string ref
);
@@ -634,10 +638,10 @@ yield_exprs(
int expr: @expr ref
);
asyncs(
unique int id: @async
async_blocks(
unique int id: @async_block
);
unsaves(
unique int id: @unsafe
unsafe_blocks(
unique int id: @unsafe_block
);

View File

@@ -57,7 +57,12 @@ class Locatable(Element):
location: optional[Location]
class Declaration(Locatable):
@qltest.skip
class AstNode(Locatable):
pass
class Declaration(AstNode):
pass
@@ -67,22 +72,22 @@ class Module(Declaration):
@qltest.collapse_hierarchy
class Expr(Locatable):
class Expr(AstNode):
pass
@qltest.collapse_hierarchy
class Pat(Locatable):
class Pat(AstNode):
pass
@qltest.collapse_hierarchy
class Stmt(Locatable):
class Stmt(AstNode):
pass
@qltest.collapse_hierarchy
class TypeRef(Locatable):
class TypeRef(AstNode):
# TODO
pass
@@ -112,8 +117,8 @@ class Path(Expr):
class If(Expr):
condition: Expr
then_branch: Expr
else_branch: optional[Expr]
then: Expr
else_: optional[Expr]
# Let {
# pat: PatId,
@@ -145,7 +150,7 @@ class Block(Expr):
# },
class Async(Block):
class AsyncBlock(Block):
pass
# Const(ConstBlockId),
@@ -162,7 +167,7 @@ class Const(Expr):
# },
class Unsafe(Block):
class UnsafeBlock(Block):
pass
# Loop {
@@ -210,7 +215,7 @@ class MethodCall(Expr):
@qltest.skip
class MatchArm(Locatable):
class MatchArm(AstNode):
pat: Pat
guard: optional[Expr]
expr: Expr
@@ -335,7 +340,7 @@ class Box(Expr):
# },
class UnaryExpr(Expr):
class UnaryOp(Expr):
expr: Expr
op: string