mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
Rust: Include as expression in CFG nodes
This commit is contained in:
8
rust/ql/.generated.list
generated
8
rust/ql/.generated.list
generated
@@ -1,4 +1,4 @@
|
||||
lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll b0e9c10a3fdd62e355dcc74f9d5198e6f4d597cd957efd4dd7a3418115055c5c 14fc7e1beb4751897639c5c3a64d5eb234ff0dc753d2db0b8d4c1845a55959f0
|
||||
lib/codeql/rust/controlflow/internal/generated/CfgNodes.qll 63fcdcbe20f3c44ab5c53c5aeb109b179026a743dafb369790eb151b1cb7d3d1 9f43a3279a815153cd529638245e0a2022c6df0a7510f08198eb397bea30c049
|
||||
lib/codeql/rust/elements/Abi.qll 4c973d28b6d628f5959d1f1cc793704572fd0acaae9a97dfce82ff9d73f73476 250f68350180af080f904cd34cb2af481c5c688dc93edf7365fd0ae99855e893
|
||||
lib/codeql/rust/elements/Addressable.qll 13011bfd2e1556694c3d440cc34af8527da4df49ad92b62f2939d3699ff2cea5 ddb25935f7553a1a384b1abe2e4b4fa90ab50b952dadec32fd867afcb054f4be
|
||||
lib/codeql/rust/elements/ArgList.qll 661f5100f5d3ef8351452d9058b663a2a5c720eea8cf11bedd628969741486a2 28e424aac01a90fb58cd6f9f83c7e4cf379eea39e636bc0ba07efc818be71c71
|
||||
@@ -21,7 +21,7 @@ lib/codeql/rust/elements/BreakExpr.qll 7ca3807a20e9a9a988d1fd7abebf240325ed422fc
|
||||
lib/codeql/rust/elements/CallExpr.qll f336500ca7a611b164d48b90e80edb0c0d3816792b0ececce659ac1ff1ffeb3e f99a9c55466418ef53860c44d9f2d6161af4b492178ddd9e5870dff742b70ae5
|
||||
lib/codeql/rust/elements/CallExprBase.qll 2846202b5208b541977500286951d96487bf555838c6c16cdd006a71e383745a c789d412bf099c624329379e0c7d94fa0d23ae2edea7a25a2ea0f3c0042ccf62
|
||||
lib/codeql/rust/elements/Callable.qll e1ed21a7e6bd2426f6ccd0e46cee506d8ebf90a6fdc4dca0979157da439853aa 02f6c09710116ce82157aec9a5ec706983c38e4d85cc631327baf8d409b018c6
|
||||
lib/codeql/rust/elements/CastExpr.qll cd8333612f94b47b19ea45cd0f78d62855b30e1a86d7f3052a7bec503bc8f575 198089248d838155081586f81403320ca88375bf178f8d831b0860693bb85386
|
||||
lib/codeql/rust/elements/CastExpr.qll 2fe1f36ba31fa29de309baf0a665cfcae67b61c73345e8f9bbd41e8c235fec45 c5b4c1e9dc24eb2357799defcb2df25989075e3a80e8663b74204a1c1b70e29a
|
||||
lib/codeql/rust/elements/ClosureBinder.qll 977df800f97cc9b03fffb5e5e1fc6acd08a2938e04cb6ad91108784a15b0d510 f6fad4127226fe1dff2f16416d8a7fde5d8ab4a88f30e443ac5e5ff618de3e05
|
||||
lib/codeql/rust/elements/ClosureExpr.qll 67e2a106e9154c90367b129987e574d2a9ecf5b297536627e43706675d35eaed d6a381132ddd589c5a7ce174f50f9620041ddf690e15a65ebfb05ff7e7c02de7
|
||||
lib/codeql/rust/elements/Comment.qll fedad50575125e9a64a8a8776a8c1dbf1e76df990f01849d9f0955f9d74cb2a6 8eb1afad1e1007a4f0090fdac65d81726b23eda6517d067fd0185f70f17635ab
|
||||
@@ -437,7 +437,7 @@ lib/codeql/rust/elements/internal/generated/BreakExpr.qll 0f428a8b2f4209b134c2ff
|
||||
lib/codeql/rust/elements/internal/generated/CallExpr.qll f1b8dae487077cc9d1dccf8c3cd61fd17afe860585f17ce8b860be4859be7ca4 6034fc03778e38802cdf3a6e460364b74e92912622581b31e6179951022bbbd6
|
||||
lib/codeql/rust/elements/internal/generated/CallExprBase.qll cce796e36847249f416629bacf3ea146313084de3374587412e66c10d2917b83 c219aa2174321c161a4a742ca0605521687ca9a5ca32db453a5c62db6f7784cc
|
||||
lib/codeql/rust/elements/internal/generated/Callable.qll b0502b5263b7bcd18e740f284f992c0e600e37d68556e3e0ba54a2ac42b94934 bda3e1eea11cacf5a9b932cd72efc2de6105103e8c575880fcd0cd89daadf068
|
||||
lib/codeql/rust/elements/internal/generated/CastExpr.qll 427bfd937cd3e737c65aa121aab2a7dc166f82aaacb9a7c41a3d211d4c1dcfb0 642c8c27d4a8752744dadce45814d4e289ce02b67eb2bc2e63ff4c2e5f7825f5
|
||||
lib/codeql/rust/elements/internal/generated/CastExpr.qll ddc20054b0b339ad4d40298f3461490d25d00af87c876da5ffbc6a11c0832295 f4247307afcd74d80e926f29f8c57e78c50800984483e6b6003a44681e4a71f3
|
||||
lib/codeql/rust/elements/internal/generated/ClosureBinder.qll 94c0dcdd4cd87d115659d496c88a98354bc7d4ddc0fa27028003bf7688b99987 d59d713b426dbbdb775df9092d176eea031dac1f14e468810f2fc8591399cd19
|
||||
lib/codeql/rust/elements/internal/generated/ClosureExpr.qll 34149bf82f107591e65738221e1407ec1dc9cc0dfb10ae7f761116fda45162de fd2fbc9a87fc0773c940db64013cf784d5e4137515cc1020e2076da329f5a952
|
||||
lib/codeql/rust/elements/internal/generated/Comment.qll cd1ef861e3803618f9f78a4ac00516d50ecfecdca1c1d14304dc5327cbe07a3b 8b67345aeb15beb5895212228761ea3496297846c93fd2127b417406ae87c201
|
||||
@@ -531,7 +531,7 @@ lib/codeql/rust/elements/internal/generated/PtrTypeRepr.qll 51d1e9e683fc79dddbff
|
||||
lib/codeql/rust/elements/internal/generated/PureSynthConstructors.qll e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f
|
||||
lib/codeql/rust/elements/internal/generated/RangeExpr.qll 23cca03bf43535f33b22a38894f70d669787be4e4f5b8fe5c8f7b964d30e9027 18624cef6c6b679eeace2a98737e472432e0ead354cca02192b4d45330f047c9
|
||||
lib/codeql/rust/elements/internal/generated/RangePat.qll 80826a6a6868a803aa2372e31c52a03e1811a3f1f2abdb469f91ca0bfdd9ecb6 34ee1e208c1690cba505dff2c588837c0cd91e185e2a87d1fe673191962276a9
|
||||
lib/codeql/rust/elements/internal/generated/Raw.qll f52ff91f985848ca0e251efee1e246ae80fdca13f530df301f7090a5b18bcf13 136a84549b183d222fb6063d34d4b714b7dd42f6eb3f756894285bf405c24a22
|
||||
lib/codeql/rust/elements/internal/generated/Raw.qll 7ffb00a545dfe16556b60a92f118c1175544f07ece90b7f46db2c119a2481753 e6fd9bb3da185bcfbb55f477f0ef31f689df7d66b76bcf93e29e020a67f07f42
|
||||
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
|
||||
|
||||
@@ -703,6 +703,66 @@ module MakeCfgNodes<LocationSig Loc, InputSig<Loc> Input> {
|
||||
int getNumberOfAttrs() { result = count(int i | exists(this.getAttr(i))) }
|
||||
}
|
||||
|
||||
final private class ParentCastExpr extends ParentAstNode, CastExpr {
|
||||
override predicate relevantChild(AstNode child) {
|
||||
none()
|
||||
or
|
||||
child = this.getExpr()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A type cast expression. For example:
|
||||
* ```rust
|
||||
* value as u64;
|
||||
* ```
|
||||
*/
|
||||
final class CastExprCfgNode extends CfgNodeFinal, ExprCfgNode {
|
||||
private CastExpr node;
|
||||
|
||||
CastExprCfgNode() { node = this.getAstNode() }
|
||||
|
||||
/** Gets the underlying `CastExpr`. */
|
||||
CastExpr getCastExpr() { result = node }
|
||||
|
||||
/**
|
||||
* Gets the `index`th attr of this cast expression (0-based).
|
||||
*/
|
||||
Attr getAttr(int index) { result = node.getAttr(index) }
|
||||
|
||||
/**
|
||||
* Gets any of the attrs of this cast expression.
|
||||
*/
|
||||
Attr getAnAttr() { result = this.getAttr(_) }
|
||||
|
||||
/**
|
||||
* Gets the number of attrs of this cast expression.
|
||||
*/
|
||||
int getNumberOfAttrs() { result = count(int i | exists(this.getAttr(i))) }
|
||||
|
||||
/**
|
||||
* Gets the expression of this cast expression, if it exists.
|
||||
*/
|
||||
ExprCfgNode getExpr() {
|
||||
any(ChildMapping mapping).hasCfgChild(node, node.getExpr(), this, result)
|
||||
}
|
||||
|
||||
/**
|
||||
* Holds if `getExpr()` exists.
|
||||
*/
|
||||
predicate hasExpr() { exists(this.getExpr()) }
|
||||
|
||||
/**
|
||||
* Gets the type representation of this cast expression, if it exists.
|
||||
*/
|
||||
TypeRepr getTypeRepr() { result = node.getTypeRepr() }
|
||||
|
||||
/**
|
||||
* Holds if `getTypeRepr()` exists.
|
||||
*/
|
||||
predicate hasTypeRepr() { exists(this.getTypeRepr()) }
|
||||
}
|
||||
|
||||
final private class ParentConstBlockPat extends ParentAstNode, ConstBlockPat {
|
||||
override predicate relevantChild(AstNode child) {
|
||||
none()
|
||||
@@ -3305,6 +3365,18 @@ module MakeCfgNodes<LocationSig Loc, InputSig<Loc> Input> {
|
||||
cfgNode
|
||||
)
|
||||
or
|
||||
pred = "getExpr" and
|
||||
parent =
|
||||
any(Nodes::CastExprCfgNode cfgNode, CastExpr astNode |
|
||||
astNode = cfgNode.getCastExpr() and
|
||||
child = getDesugared(astNode.getExpr()) and
|
||||
i = -1 and
|
||||
hasCfgNode(child) and
|
||||
not child = cfgNode.getExpr().getAstNode()
|
||||
|
|
||||
cfgNode
|
||||
)
|
||||
or
|
||||
pred = "getBlockExpr" and
|
||||
parent =
|
||||
any(Nodes::ConstBlockPatCfgNode cfgNode, ConstBlockPat astNode |
|
||||
|
||||
2
rust/ql/lib/codeql/rust/elements/CastExpr.qll
generated
2
rust/ql/lib/codeql/rust/elements/CastExpr.qll
generated
@@ -9,7 +9,7 @@ import codeql.rust.elements.Expr
|
||||
import codeql.rust.elements.TypeRepr
|
||||
|
||||
/**
|
||||
* A cast expression. For example:
|
||||
* A type cast expression. For example:
|
||||
* ```rust
|
||||
* value as u64;
|
||||
* ```
|
||||
|
||||
@@ -13,7 +13,7 @@ private import codeql.rust.elements.internal.generated.CastExpr
|
||||
module Impl {
|
||||
// the following QLdoc is generated: if you need to edit it, do it in the schema file
|
||||
/**
|
||||
* A cast expression. For example:
|
||||
* A type cast expression. For example:
|
||||
* ```rust
|
||||
* value as u64;
|
||||
* ```
|
||||
|
||||
@@ -17,7 +17,7 @@ import codeql.rust.elements.TypeRepr
|
||||
*/
|
||||
module Generated {
|
||||
/**
|
||||
* A cast expression. For example:
|
||||
* A type cast expression. For example:
|
||||
* ```rust
|
||||
* value as u64;
|
||||
* ```
|
||||
|
||||
@@ -1387,7 +1387,7 @@ module Raw {
|
||||
|
||||
/**
|
||||
* INTERNAL: Do not use.
|
||||
* A cast expression. For example:
|
||||
* A type cast expression. For example:
|
||||
* ```rust
|
||||
* value as u64;
|
||||
* ```
|
||||
|
||||
@@ -13,7 +13,7 @@ BlockExpr/gen_block_expr.rs 17b06c726e304e0efcfde8e71afd9c657860312be55436689423
|
||||
BoxPat/gen_box_pat.rs 1493e24b732370b577ade38c47db17fa157df19f5390606a67a6040e49b501c0 1493e24b732370b577ade38c47db17fa157df19f5390606a67a6040e49b501c0
|
||||
BreakExpr/gen_break_expr.rs aacdf9df7fc51d19742b9e813835c0bd0913017e8d62765960e06b27d58b9031 aacdf9df7fc51d19742b9e813835c0bd0913017e8d62765960e06b27d58b9031
|
||||
CallExpr/gen_call_expr.rs 013a7c878996aefb25b94b68eebc4f0b1bb74ccd09e91c491980817a383e2401 013a7c878996aefb25b94b68eebc4f0b1bb74ccd09e91c491980817a383e2401
|
||||
CastExpr/gen_cast_expr.rs abd59cc7b92578b56098ac0045cf7de4b15c645cce79e3bdad8d3b6f4657360d abd59cc7b92578b56098ac0045cf7de4b15c645cce79e3bdad8d3b6f4657360d
|
||||
CastExpr/gen_cast_expr.rs c3892211fbae4fed7cb1f25ff1679fd79d2878bf0bf2bd4b7982af23d00129f5 c3892211fbae4fed7cb1f25ff1679fd79d2878bf0bf2bd4b7982af23d00129f5
|
||||
ClosureBinder/gen_closure_binder.rs 78d3219bdfc58a22f333e3c82468fc23001e92b1d5acb085de7f48d7d1722244 78d3219bdfc58a22f333e3c82468fc23001e92b1d5acb085de7f48d7d1722244
|
||||
ClosureExpr/gen_closure_expr.rs 15bd9abdb8aaffabb8bb335f8ebd0571eb5f29115e1dc8d11837aa988702cd80 15bd9abdb8aaffabb8bb335f8ebd0571eb5f29115e1dc8d11837aa988702cd80
|
||||
Comment/gen_comment.rs 1e1f9f43161a79c096c2056e8b7f5346385ab7addcdec68c2d53b383dd3debe6 1e1f9f43161a79c096c2056e8b7f5346385ab7addcdec68c2d53b383dd3debe6
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// generated by codegen, do not edit
|
||||
|
||||
fn test_cast_expr() -> () {
|
||||
// A cast expression. For example:
|
||||
// A type cast expression. For example:
|
||||
value as u64;
|
||||
}
|
||||
|
||||
@@ -448,10 +448,10 @@ class _:
|
||||
"""
|
||||
|
||||
|
||||
@annotate(CastExpr)
|
||||
@annotate(CastExpr, cfg = True)
|
||||
class _:
|
||||
"""
|
||||
A cast expression. For example:
|
||||
A type cast expression. For example:
|
||||
```rust
|
||||
value as u64;
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user