diff --git a/rust/ast-generator/src/main.rs b/rust/ast-generator/src/main.rs index 33c901cea8c..85df0ad214b 100644 --- a/rust/ast-generator/src/main.rs +++ b/rust/ast-generator/src/main.rs @@ -36,7 +36,6 @@ fn property_name(type_name: &str, field_name: &str) -> String { ("CallExpr", "expr") => "function", ("LetExpr", "expr") => "scrutinee", ("MatchExpr", "expr") => "scrutinee", - ("Path", "segment") => "part", (_, "then_branch") => "then", (_, "else_branch") => "else_", ("ArrayType", "ty") => "element_type_repr", diff --git a/rust/extractor/src/crate_graph.rs b/rust/extractor/src/crate_graph.rs index 75c0113a45d..c1d7e54c3c5 100644 --- a/rust/extractor/src/crate_graph.rs +++ b/rust/extractor/src/crate_graph.rs @@ -953,7 +953,7 @@ fn make_qualified_path( id: trap::TrapId::Star, text: Some(name), })); - let part = Some(trap.emit(generated::PathSegment { + let segment = Some(trap.emit(generated::PathSegment { id: trap::TrapId::Star, generic_arg_list: None, name_ref, @@ -964,7 +964,7 @@ fn make_qualified_path( trap.emit(generated::Path { id: trap::TrapId::Star, qualifier, - part, + segment, }) } path.into_iter() diff --git a/rust/extractor/src/generated/.generated.list b/rust/extractor/src/generated/.generated.list index f4582cf85f4..a28f641d89e 100644 --- a/rust/extractor/src/generated/.generated.list +++ b/rust/extractor/src/generated/.generated.list @@ -1,2 +1,2 @@ mod.rs 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7 -top.rs 22ca74a6a44e2984afdaffbc536d847296a79312d201b81948a32fe56064c8bf 22ca74a6a44e2984afdaffbc536d847296a79312d201b81948a32fe56064c8bf +top.rs 4e8e5b1e16bb2f4b157b987c86c7b5cdb1d48a4586eafd08a92dcb989c94820e 4e8e5b1e16bb2f4b157b987c86c7b5cdb1d48a4586eafd08a92dcb989c94820e diff --git a/rust/extractor/src/generated/top.rs b/rust/extractor/src/generated/top.rs index 4386de18016..c607dddfe3e 100644 --- a/rust/extractor/src/generated/top.rs +++ b/rust/extractor/src/generated/top.rs @@ -2027,7 +2027,7 @@ impl From> for trap::Label { pub struct Path { pub id: trap::TrapId, pub qualifier: Option>, - pub part: Option>, + pub segment: Option>, } impl trap::TrapEntry for Path { @@ -2040,8 +2040,8 @@ impl trap::TrapEntry for Path { if let Some(v) = self.qualifier { out.add_tuple("path_qualifiers", vec![id.into(), v.into()]); } - if let Some(v) = self.part { - out.add_tuple("path_parts", vec![id.into(), v.into()]); + if let Some(v) = self.segment { + out.add_tuple("path_segments_", vec![id.into(), v.into()]); } } } diff --git a/rust/extractor/src/translate/generated.rs b/rust/extractor/src/translate/generated.rs index 9479f793961..25ae576d64c 100644 --- a/rust/extractor/src/translate/generated.rs +++ b/rust/extractor/src/translate/generated.rs @@ -1659,11 +1659,11 @@ impl Translator<'_> { pub(crate) fn emit_path(&mut self, node: ast::Path) -> Option> { let qualifier = node.qualifier().and_then(|x| self.emit_path(x)); - let part = node.segment().and_then(|x| self.emit_path_segment(x)); + let segment = node.segment().and_then(|x| self.emit_path_segment(x)); let label = self.trap.emit(generated::Path { id: TrapId::Star, qualifier, - part, + segment, }); self.emit_location(label, &node); emit_detached!(Path, self, node, label); diff --git a/rust/ql/.generated.list b/rust/ql/.generated.list index 61fcb951cad..2781b9f7047 100644 --- a/rust/ql/.generated.list +++ b/rust/ql/.generated.list @@ -580,10 +580,10 @@ 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 4f168ef5d5bb87a903251cc31b2e44a759b099ec69c90af31783fbb15778c940 0e34f94a45a13396fd57d94c245dc64d1adde2ab0e22b56946f7e94c04e297fc lib/codeql/rust/elements/internal/generated/ParenTypeRepr.qll 40ab5c592e7699c621787793743e33988de71ff42ca27599f5ab3ddb70e3f7d8 12c0a6eed2202ee3e892f61da3b3ce77ac3190854cdf3097e8d2be98aa3cb91d -lib/codeql/rust/elements/internal/generated/ParentChild.qll 0e80d85aa8ddb203edca90c9b68f88340231ab5415933f622bad18f639ff6190 9ebbfdf48f0a3c06658b53a9fd987530b34c9c40ae2c3d6ef6ebdf2721fdbf83 +lib/codeql/rust/elements/internal/generated/ParentChild.qll 7ccb90039b06af54b13cbe4f7294c0201fbee4fd4b173396a5cad43f40f0e706 0d45f0be4cbcb54774281e163efc09b28d3135086dc01197d49eb7e314217eea lib/codeql/rust/elements/internal/generated/ParenthesizedArgList.qll c5fa328ea60d3a3333d7c7bb3480969c1873166c7ac8ebb9d0afad7a8099d1a8 2dbbb6200d96f7db7dea4a55bdeab8d67b14d39a43e0bd54ada019f7e466f163 lib/codeql/rust/elements/internal/generated/Pat.qll 3605ac062be2f294ee73336e9669027b8b655f4ad55660e1eab35266275154ee 7f9400db2884d336dd1d21df2a8093759c2a110be9bf6482ce8e80ae0fd74ed4 -lib/codeql/rust/elements/internal/generated/Path.qll 8e47e91aff3f8c60f1ee8cb3887b8e4936c38e4665d052f2c92a939a969aac29 2c28beb89cabd7c7c91a5bc65c874f414cb96bbefde37b25811b61089a8a0053 +lib/codeql/rust/elements/internal/generated/Path.qll 9b12afb46fc5a9ad3a811b05472621bbecccb900c47504feb7f29d96b28421ca bcacbffc36fb3e0c9b26523b5963af0ffa9fd6b19f00a2a31bdb2316071546bd lib/codeql/rust/elements/internal/generated/PathAstNode.qll e6d4d5bffd3c623baaaee46bc183eb31ce88795535f164f6a9b9b4d98bbd6101 168db515404933479ba6b150c72e012d28592cbc32366aefcb1bf9599dbcd183 lib/codeql/rust/elements/internal/generated/PathExpr.qll 34ebad4d062ce8b7e517f2ab09d52745fb8455203f4a936df7284ad296638387 ba66781cdbdeb89c27a4bfb2be0f27f85fb34978d699b4e343446fb0d7ad2aa6 lib/codeql/rust/elements/internal/generated/PathExprBase.qll d8218e201b8557fa6d9ca2c30b764e5ad9a04a2e4fb695cc7219bbd7636a6ac2 4ef178426d7095a156f4f8c459b4d16f63abc64336cb50a6cf883a5f7ee09113 @@ -595,7 +595,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 2e299cb4fc9e506d910827e3a3ab743570a02d963c9001b33c6c06f9aa92200d a19748787c02a18abffaaa4c7b9c23a9bbc56020fb36698bf82da72c09fa57db +lib/codeql/rust/elements/internal/generated/Raw.qll c806d86ab8d8a56ea6ff1b7f9e4838ce424d19b9b7c23dc7f50312a8caad74d3 f2c141c0ff44d6de84a59448ebc30524a694e054a93afaf9d32179b8404026fd lib/codeql/rust/elements/internal/generated/RecordFieldList.qll 4a23b0d75a90671197246dbbb4e62706c180074abb8ebe60a96df11c47a917a2 09be127977651a24010b090d9681714d83ebd461098f9cf0e0d1973cafb1c782 lib/codeql/rust/elements/internal/generated/RefExpr.qll 7d995884e3dc1c25fc719f5d7253179344d63650e217e9ff6530285fe7a57f64 f2c3c12551deea4964b66553fb9b6423ee16fec53bd63db4796191aa60dc6c66 lib/codeql/rust/elements/internal/generated/RefPat.qll 456ede39837463ee22a630ec7ab6c8630d3664a8ea206fcc6e4f199e92fa564c 5622062765f32930465ba6b170e986706f159f6070f48adee3c20e24e8df4e05 @@ -986,7 +986,7 @@ test/extractor-tests/generated/ParenPat/ParenPat_getPat.ql 96f3db0ec4e71fd870619 test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr.ql a96bb8b51d8c0c466afc1c076834fa16edf7e67fffe2f641799850dee43099a2 0e6c375e621b7a7756d39e8edd78b671e53d1aac757ac54a26747fe5259c5394 test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr_getTypeRepr.ql 64fe4ea708bc489ba64ed845f63cfbcd57c1179c57d95be309db37eac2f5eb71 0f4cbbfdf39d89830b5249cabf26d834fc2310b8a9579c19383c90cb4333afb7 test/extractor-tests/generated/ParenthesizedArgList/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 -test/extractor-tests/generated/Path/Path.ql 2bdcd99b3b5ffc83ac47d8cc27a4561d616bcf06844f0c452c699cd10ee640ca 5a7d7ffb8b0c04d6a8cbb2a953761df8561b796c4372bef1bd55c359b2f19911 +test/extractor-tests/generated/Path/Path.ql 2b02325ab1739bf41bc5f50d56b1e9cc72fca4093b03f2bda193699121e64448 c4d44402696ce10175ad8286dbd78277fbb81e7e1b886c0c27d5b88a7509052e test/extractor-tests/generated/Path/PathExpr.ql 5039fe730998a561f51813a0716e18c7c1d36b6da89936e4cfbdb4ef0e895560 cd3ddf8ab93cd573381807f59cded7fb3206f1dbdff582490be6f23bed2d6f29 test/extractor-tests/generated/Path/PathExpr_getAttr.ql 2ccac48cd91d86670c1d2742de20344135d424e6f0e3dafcc059555046f92d92 9b7b5f5f9e3674fad9b3a5bcd3cabc0dff32a95640da0fce6f4d0eb931f1757d test/extractor-tests/generated/Path/PathExpr_getPath.ql e7894071313a74166bdd31d7cd974037fcd5a7f0e92d5eec42833266196eb858 46a06e8a1207e7a0fa175cd4b61068e5fd6c43b5575b88986409f0ac2be64c51 @@ -1006,8 +1006,8 @@ test/extractor-tests/generated/Path/PathSegment_getTraitTypeRepr.ql d7ea6ee3f6b7 test/extractor-tests/generated/Path/PathSegment_getTypeRepr.ql d9d8ff43a55671616bd5b98ff2c03690ec2661817d19a61edcc4b37d23e312d0 b4dc0ae4d7f03c98c23312b358d214565b34c7a028ba8983826c6bf5c1177eeb test/extractor-tests/generated/Path/PathTypeRepr.ql c2e069acc5111088a7287d98b4bd4bf44bd79c5a786b275f7448ebafc3613500 6e016750e5fef92a98bc5cc60bfd40d85fbb5eb2d251b4d69ffe600813f81df0 test/extractor-tests/generated/Path/PathTypeRepr_getPath.ql 49e96ea2aa482e3b80cb0e2d944055f8298f7fc55b36cea7468586c94bacf686 29b3c2140ac1bc6e0e6160140e292e2b84e13145c1553480e2a582cd7f7bd3fd -test/extractor-tests/generated/Path/Path_getPart.ql 8aa45a0b58203ef1177166efbe1c2851faf4b4c9a453c83137f0c9298badcdbf b82d490d9b3a8237487cd5da8b3b6fc4aa477977b332a5c6539b3cd4e6d5b45b test/extractor-tests/generated/Path/Path_getQualifier.ql 9af95e22cdf3a65da6a41d93136aef4523db5ce81d38f6ed4bc613f1c68784d0 3102d9241a417a92c97a53ac56a7a8683463f1adc7a593cda1382c0d25b3f261 +test/extractor-tests/generated/Path/Path_getSegment.ql 475f344ee24a14468745d50922fdfd63f5d817f14cc041a184c2f8ec144a01dd 4f663c5c2b1e0cb8b9a8a0b2d8b5d81f12a3bf333c71ecbb43d9258f7dfe4ec7 test/extractor-tests/generated/PrefixExpr/PrefixExpr.ql 44fb7174365c6deecdc22c720d84617c6e060c05d49c41c90433451588f8aa6f 871fab471c82fede3c36edc003f9decee5bb7844c016951d28be78d0c91487e5 test/extractor-tests/generated/PrefixExpr/PrefixExpr_getAttr.ql fdad6ad5199435ded1e4a9ea6b246e76b904cd73a36aaa4780e84eef91741c5b 75d63940046e62c1efa1151b0cac45b5ec0bab5e39aec2e11d43f6c385e37984 test/extractor-tests/generated/PrefixExpr/PrefixExpr_getExpr.ql 2d1d97f6277794871fbb032ea87ac30b1aa902a74cd874720156162057ea202e b1b9880fce07d66df7ec87f12189c37adf9f233a1d0b38a1b09808d052a95642 diff --git a/rust/ql/.gitattributes b/rust/ql/.gitattributes index 42e4c13f2f4..991390574ae 100644 --- a/rust/ql/.gitattributes +++ b/rust/ql/.gitattributes @@ -1008,8 +1008,8 @@ /test/extractor-tests/generated/Path/PathSegment_getTypeRepr.ql linguist-generated /test/extractor-tests/generated/Path/PathTypeRepr.ql linguist-generated /test/extractor-tests/generated/Path/PathTypeRepr_getPath.ql linguist-generated -/test/extractor-tests/generated/Path/Path_getPart.ql linguist-generated /test/extractor-tests/generated/Path/Path_getQualifier.ql linguist-generated +/test/extractor-tests/generated/Path/Path_getSegment.ql linguist-generated /test/extractor-tests/generated/PrefixExpr/PrefixExpr.ql linguist-generated /test/extractor-tests/generated/PrefixExpr/PrefixExpr_getAttr.ql linguist-generated /test/extractor-tests/generated/PrefixExpr/PrefixExpr_getExpr.ql linguist-generated diff --git a/rust/ql/lib/codeql/rust/elements/internal/PathImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/PathImpl.qll index 285b423331d..0ff11175b2c 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/PathImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/PathImpl.qll @@ -32,14 +32,14 @@ module Impl { result = "...::" or index = 1 and - result = this.getPart().toAbbreviatedString() + result = this.getSegment().toAbbreviatedString() } /** * Gets the text of this path, if it exists. */ pragma[nomagic] - string getText() { result = this.getPart().getNameRef().getText() } + string getText() { result = this.getSegment().getNameRef().getText() } } /** A simple identifier path. */ @@ -49,7 +49,7 @@ module Impl { IdentPath() { not this.hasQualifier() and exists(PathSegment ps | - ps = this.getPart() and + ps = this.getSegment() and not ps.hasGenericArgList() and not ps.hasParenthesizedArgList() and not ps.hasTypeRepr() and diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll index b8ae3bb3b87..b6175f7491a 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/ParentChild.qll @@ -809,12 +809,12 @@ private module Impl { } private Element getImmediateChildOfPath(Path e, int index, string partialPredicateCall) { - exists(int b, int bAstNode, int n, int nQualifier, int nPart | + exists(int b, int bAstNode, int n, int nQualifier, int nSegment | b = 0 and bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and n = bAstNode and nQualifier = n + 1 and - nPart = nQualifier + 1 and + nSegment = nQualifier + 1 and ( none() or @@ -822,7 +822,7 @@ private module Impl { or index = n and result = e.getQualifier() and partialPredicateCall = "Qualifier()" or - index = nQualifier and result = e.getPart() and partialPredicateCall = "Part()" + index = nQualifier and result = e.getSegment() and partialPredicateCall = "Segment()" ) ) } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Path.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Path.qll index 5cb827c3357..60248dc9d30 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Path.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Path.qll @@ -42,15 +42,16 @@ module Generated { final predicate hasQualifier() { exists(this.getQualifier()) } /** - * Gets the part of this path, if it exists. + * Gets the last segment of this path, if it exists. */ - PathSegment getPart() { - result = Synth::convertPathSegmentFromRaw(Synth::convertPathToRaw(this).(Raw::Path).getPart()) + PathSegment getSegment() { + result = + Synth::convertPathSegmentFromRaw(Synth::convertPathToRaw(this).(Raw::Path).getSegment()) } /** - * Holds if `getPart()` exists. + * Holds if `getSegment()` exists. */ - final predicate hasPart() { exists(this.getPart()) } + final predicate hasSegment() { exists(this.getSegment()) } } } diff --git a/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll b/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll index c7a1472362e..78f067bc668 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/generated/Raw.qll @@ -718,9 +718,9 @@ module Raw { Path getQualifier() { path_qualifiers(this, result) } /** - * Gets the part of this path, if it exists. + * Gets the last segment of this path, if it exists. */ - PathSegment getPart() { path_parts(this, result) } + PathSegment getSegment() { path_segments_(this, result) } } /** diff --git a/rust/ql/lib/codeql/rust/frameworks/rustcrypto/RustCrypto.qll b/rust/ql/lib/codeql/rust/frameworks/rustcrypto/RustCrypto.qll index 18ece8b2408..c043cbf6033 100644 --- a/rust/ql/lib/codeql/rust/frameworks/rustcrypto/RustCrypto.qll +++ b/rust/ql/lib/codeql/rust/frameworks/rustcrypto/RustCrypto.qll @@ -31,14 +31,14 @@ class StreamCipherInit extends Cryptography::CryptographicOperation::Range { rawAlgorithmName = p.getPath() .getQualifier() - .getPart() + .getSegment() .getGenericArgList() .getGenericArg(0) .(TypeArg) .getTypeRepr() .(PathTypeRepr) .getPath() - .getPart() + .getSegment() .getNameRef() .getText() ) and diff --git a/rust/ql/lib/codeql/rust/internal/PathResolution.qll b/rust/ql/lib/codeql/rust/internal/PathResolution.qll index b49db6d40e3..42cc04e7422 100644 --- a/rust/ql/lib/codeql/rust/internal/PathResolution.qll +++ b/rust/ql/lib/codeql/rust/internal/PathResolution.qll @@ -312,7 +312,7 @@ class ImplItemNode extends ImplOrTraitItemNode instanceof Impl { pragma[nomagic] private TypeRepr getASelfTyArg() { result = - this.getSelfPath().getPart().getGenericArgList().getAGenericArg().(TypeArg).getTypeRepr() + this.getSelfPath().getSegment().getGenericArgList().getAGenericArg().(TypeArg).getTypeRepr() } /** diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 17a7e95b5a3..52a2eb0ead3 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -240,7 +240,7 @@ private Type inferImplicitSelfType(SelfParam self, TypePath path) { */ private TypeMention getExplicitTypeArgMention(Path path, TypeParam tp) { exists(int i | - result = path.getPart().getGenericArgList().getTypeArg(pragma[only_bind_into](i)) and + result = path.getSegment().getGenericArgList().getTypeArg(pragma[only_bind_into](i)) and tp = resolvePath(path).getTypeParam(pragma[only_bind_into](i)) ) or diff --git a/rust/ql/lib/codeql/rust/internal/TypeMention.qll b/rust/ql/lib/codeql/rust/internal/TypeMention.qll index 7def62da554..f8fa7923f21 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeMention.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeMention.qll @@ -78,7 +78,7 @@ class TypeReprMention extends TypeMention, TypeRepr { class PathMention extends TypeMention, Path { override TypeMention getTypeArgument(int i) { - result = this.getPart().getGenericArgList().getTypeArg(i) + result = this.getSegment().getGenericArgList().getTypeArg(i) or // `Self` paths inside traits and `impl` blocks have implicit type arguments // that are the type parameters of the trait or impl. For example, in @@ -93,7 +93,7 @@ class PathMention extends TypeMention, Path { // // the `Self` return type is shorthand for `Foo`. exists(ImplOrTraitItemNode node | this = node.getASelfPath() | - result = node.(ImplItemNode).getSelfPath().getPart().getGenericArgList().getTypeArg(i) + result = node.(ImplItemNode).getSelfPath().getSegment().getGenericArgList().getTypeArg(i) or result = node.(Trait).getGenericParamList().getTypeParam(i) ) @@ -140,7 +140,7 @@ private predicate isImplSelfTypeParam( ) { exists(PathMention path | selfPath = impl.getSelfPath() and - path = selfPath.getPart().getGenericArgList().getTypeArg(i).(PathTypeRepr).getPath() and + path = selfPath.getSegment().getGenericArgList().getTypeArg(i).(PathTypeRepr).getPath() and tp = path.resolveType() ) } diff --git a/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll b/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll index 5ab77b63b6a..ec0dfa56e1d 100644 --- a/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll +++ b/rust/ql/lib/codeql/rust/security/regex/RegexInjectionExtensions.qll @@ -63,7 +63,7 @@ private class RegexInjectionDefaultBarrier extends RegexInjectionBarrier { .getFunction() .(PathExpr) .getPath() - .getPart() + .getSegment() .getNameRef() .getText() = "escape" } diff --git a/rust/ql/lib/rust.dbscheme b/rust/ql/lib/rust.dbscheme index eccb4fa8b63..c066837a1f0 100644 --- a/rust/ql/lib/rust.dbscheme +++ b/rust/ql/lib/rust.dbscheme @@ -771,9 +771,9 @@ path_qualifiers( ); #keyset[id] -path_parts( +path_segments_( int id: @path ref, - int part: @path_segment ref + int segment: @path_segment ref ); path_segments( diff --git a/rust/ql/test/extractor-tests/generated/Path/Path.expected b/rust/ql/test/extractor-tests/generated/Path/Path.expected index 4cda1d25932..7cf8362293e 100644 --- a/rust/ql/test/extractor-tests/generated/Path/Path.expected +++ b/rust/ql/test/extractor-tests/generated/Path/Path.expected @@ -1,25 +1,25 @@ -| gen_path.rs:5:9:5:18 | some_crate | hasQualifier: | no | hasPart: | yes | -| gen_path.rs:5:9:5:31 | ...::some_module | hasQualifier: | yes | hasPart: | yes | -| gen_path.rs:5:9:5:42 | ...::some_item | hasQualifier: | yes | hasPart: | yes | -| gen_path.rs:6:5:6:7 | foo | hasQualifier: | no | hasPart: | yes | -| gen_path.rs:6:5:6:12 | ...::bar | hasQualifier: | yes | hasPart: | yes | -| gen_path_expr.rs:5:13:5:20 | variable | hasQualifier: | no | hasPart: | yes | -| gen_path_expr.rs:6:13:6:15 | foo | hasQualifier: | no | hasPart: | yes | -| gen_path_expr.rs:6:13:6:20 | ...::bar | hasQualifier: | yes | hasPart: | yes | -| gen_path_expr.rs:7:13:7:15 | <...> | hasQualifier: | no | hasPart: | yes | -| gen_path_expr.rs:7:13:7:20 | ...::foo | hasQualifier: | yes | hasPart: | yes | -| gen_path_expr.rs:7:14:7:14 | T | hasQualifier: | no | hasPart: | yes | -| gen_path_expr.rs:8:13:8:31 | <...> | hasQualifier: | no | hasPart: | yes | -| gen_path_expr.rs:8:13:8:36 | ...::foo | hasQualifier: | yes | hasPart: | yes | -| gen_path_expr.rs:8:14:8:21 | TypeRepr | hasQualifier: | no | hasPart: | yes | -| gen_path_expr.rs:8:26:8:30 | Trait | hasQualifier: | no | hasPart: | yes | -| gen_path_pat.rs:5:11:5:11 | x | hasQualifier: | no | hasPart: | yes | -| gen_path_pat.rs:6:9:6:11 | Foo | hasQualifier: | no | hasPart: | yes | -| gen_path_pat.rs:6:9:6:16 | ...::Bar | hasQualifier: | yes | hasPart: | yes | -| gen_path_type_repr.rs:5:14:5:16 | std | hasQualifier: | no | hasPart: | yes | -| gen_path_type_repr.rs:5:14:5:29 | ...::collections | hasQualifier: | yes | hasPart: | yes | -| gen_path_type_repr.rs:5:14:5:48 | ...::HashMap::<...> | hasQualifier: | yes | hasPart: | yes | -| gen_path_type_repr.rs:5:40:5:42 | i32 | hasQualifier: | no | hasPart: | yes | -| gen_path_type_repr.rs:5:45:5:47 | i32 | hasQualifier: | no | hasPart: | yes | -| gen_path_type_repr.rs:6:14:6:14 | X | hasQualifier: | no | hasPart: | yes | -| gen_path_type_repr.rs:6:14:6:20 | ...::Item | hasQualifier: | yes | hasPart: | yes | +| gen_path.rs:5:9:5:18 | some_crate | hasQualifier: | no | hasSegment: | yes | +| gen_path.rs:5:9:5:31 | ...::some_module | hasQualifier: | yes | hasSegment: | yes | +| gen_path.rs:5:9:5:42 | ...::some_item | hasQualifier: | yes | hasSegment: | yes | +| gen_path.rs:6:5:6:7 | foo | hasQualifier: | no | hasSegment: | yes | +| gen_path.rs:6:5:6:12 | ...::bar | hasQualifier: | yes | hasSegment: | yes | +| gen_path_expr.rs:5:13:5:20 | variable | hasQualifier: | no | hasSegment: | yes | +| gen_path_expr.rs:6:13:6:15 | foo | hasQualifier: | no | hasSegment: | yes | +| gen_path_expr.rs:6:13:6:20 | ...::bar | hasQualifier: | yes | hasSegment: | yes | +| gen_path_expr.rs:7:13:7:15 | <...> | hasQualifier: | no | hasSegment: | yes | +| gen_path_expr.rs:7:13:7:20 | ...::foo | hasQualifier: | yes | hasSegment: | yes | +| gen_path_expr.rs:7:14:7:14 | T | hasQualifier: | no | hasSegment: | yes | +| gen_path_expr.rs:8:13:8:31 | <...> | hasQualifier: | no | hasSegment: | yes | +| gen_path_expr.rs:8:13:8:36 | ...::foo | hasQualifier: | yes | hasSegment: | yes | +| gen_path_expr.rs:8:14:8:21 | TypeRepr | hasQualifier: | no | hasSegment: | yes | +| gen_path_expr.rs:8:26:8:30 | Trait | hasQualifier: | no | hasSegment: | yes | +| gen_path_pat.rs:5:11:5:11 | x | hasQualifier: | no | hasSegment: | yes | +| gen_path_pat.rs:6:9:6:11 | Foo | hasQualifier: | no | hasSegment: | yes | +| gen_path_pat.rs:6:9:6:16 | ...::Bar | hasQualifier: | yes | hasSegment: | yes | +| gen_path_type_repr.rs:5:14:5:16 | std | hasQualifier: | no | hasSegment: | yes | +| gen_path_type_repr.rs:5:14:5:29 | ...::collections | hasQualifier: | yes | hasSegment: | yes | +| gen_path_type_repr.rs:5:14:5:48 | ...::HashMap::<...> | hasQualifier: | yes | hasSegment: | yes | +| gen_path_type_repr.rs:5:40:5:42 | i32 | hasQualifier: | no | hasSegment: | yes | +| gen_path_type_repr.rs:5:45:5:47 | i32 | hasQualifier: | no | hasSegment: | yes | +| gen_path_type_repr.rs:6:14:6:14 | X | hasQualifier: | no | hasSegment: | yes | +| gen_path_type_repr.rs:6:14:6:20 | ...::Item | hasQualifier: | yes | hasSegment: | yes | diff --git a/rust/ql/test/extractor-tests/generated/Path/Path.ql b/rust/ql/test/extractor-tests/generated/Path/Path.ql index c5e1ba9d78a..2f32fa34147 100644 --- a/rust/ql/test/extractor-tests/generated/Path/Path.ql +++ b/rust/ql/test/extractor-tests/generated/Path/Path.ql @@ -2,10 +2,10 @@ import codeql.rust.elements import TestUtils -from Path x, string hasQualifier, string hasPart +from Path x, string hasQualifier, string hasSegment where toBeTested(x) and not x.isUnknown() and (if x.hasQualifier() then hasQualifier = "yes" else hasQualifier = "no") and - if x.hasPart() then hasPart = "yes" else hasPart = "no" -select x, "hasQualifier:", hasQualifier, "hasPart:", hasPart + if x.hasSegment() then hasSegment = "yes" else hasSegment = "no" +select x, "hasQualifier:", hasQualifier, "hasSegment:", hasSegment diff --git a/rust/ql/test/extractor-tests/generated/Path/Path_getPart.ql b/rust/ql/test/extractor-tests/generated/Path/Path_getSegment.ql similarity index 84% rename from rust/ql/test/extractor-tests/generated/Path/Path_getPart.ql rename to rust/ql/test/extractor-tests/generated/Path/Path_getSegment.ql index 402b1354588..7ccbefb4149 100644 --- a/rust/ql/test/extractor-tests/generated/Path/Path_getPart.ql +++ b/rust/ql/test/extractor-tests/generated/Path/Path_getSegment.ql @@ -4,4 +4,4 @@ import TestUtils from Path x where toBeTested(x) and not x.isUnknown() -select x, x.getPart() +select x, x.getSegment() diff --git a/rust/schema/annotations.py b/rust/schema/annotations.py index 68d2c1a7736..c23425a65cd 100644 --- a/rust/schema/annotations.py +++ b/rust/schema/annotations.py @@ -87,6 +87,7 @@ class _: foo::bar; ``` """ + segment: _ | ql.db_table_name("path_segments_") | doc("last segment of this path") @annotate(GenericArgList) diff --git a/rust/schema/ast.py b/rust/schema/ast.py index 84e30ac407a..a7391c4dd87 100644 --- a/rust/schema/ast.py +++ b/rust/schema/ast.py @@ -479,7 +479,7 @@ class ParenthesizedArgList(AstNode, ): class Path(AstNode, ): qualifier: optional["Path"] | child - part: optional["PathSegment"] | child + segment: optional["PathSegment"] | child class PathExpr(Expr, ): attrs: list["Attr"] | child