Rust: undo rename of Path::segment to Path::part

This commit is contained in:
Paolo Tranquilli
2025-03-20 16:28:21 +01:00
parent a762e518c6
commit b48d9a255e
22 changed files with 69 additions and 68 deletions

View File

@@ -36,7 +36,6 @@ fn property_name(type_name: &str, field_name: &str) -> String {
("CallExpr", "expr") => "function", ("CallExpr", "expr") => "function",
("LetExpr", "expr") => "scrutinee", ("LetExpr", "expr") => "scrutinee",
("MatchExpr", "expr") => "scrutinee", ("MatchExpr", "expr") => "scrutinee",
("Path", "segment") => "part",
(_, "then_branch") => "then", (_, "then_branch") => "then",
(_, "else_branch") => "else_", (_, "else_branch") => "else_",
("ArrayType", "ty") => "element_type_repr", ("ArrayType", "ty") => "element_type_repr",

View File

@@ -953,7 +953,7 @@ fn make_qualified_path(
id: trap::TrapId::Star, id: trap::TrapId::Star,
text: Some(name), text: Some(name),
})); }));
let part = Some(trap.emit(generated::PathSegment { let segment = Some(trap.emit(generated::PathSegment {
id: trap::TrapId::Star, id: trap::TrapId::Star,
generic_arg_list: None, generic_arg_list: None,
name_ref, name_ref,
@@ -964,7 +964,7 @@ fn make_qualified_path(
trap.emit(generated::Path { trap.emit(generated::Path {
id: trap::TrapId::Star, id: trap::TrapId::Star,
qualifier, qualifier,
part, segment,
}) })
} }
path.into_iter() path.into_iter()

View File

@@ -1,2 +1,2 @@
mod.rs 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7 mod.rs 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7 4bcb9def847469aae9d8649461546b7c21ec97cf6e63d3cf394e339915ce65d7
top.rs 22ca74a6a44e2984afdaffbc536d847296a79312d201b81948a32fe56064c8bf 22ca74a6a44e2984afdaffbc536d847296a79312d201b81948a32fe56064c8bf top.rs 4e8e5b1e16bb2f4b157b987c86c7b5cdb1d48a4586eafd08a92dcb989c94820e 4e8e5b1e16bb2f4b157b987c86c7b5cdb1d48a4586eafd08a92dcb989c94820e

View File

@@ -2027,7 +2027,7 @@ impl From<trap::Label<Pat>> for trap::Label<Element> {
pub struct Path { pub struct Path {
pub id: trap::TrapId<Path>, pub id: trap::TrapId<Path>,
pub qualifier: Option<trap::Label<Path>>, pub qualifier: Option<trap::Label<Path>>,
pub part: Option<trap::Label<PathSegment>>, pub segment: Option<trap::Label<PathSegment>>,
} }
impl trap::TrapEntry for Path { impl trap::TrapEntry for Path {
@@ -2040,8 +2040,8 @@ impl trap::TrapEntry for Path {
if let Some(v) = self.qualifier { if let Some(v) = self.qualifier {
out.add_tuple("path_qualifiers", vec![id.into(), v.into()]); out.add_tuple("path_qualifiers", vec![id.into(), v.into()]);
} }
if let Some(v) = self.part { if let Some(v) = self.segment {
out.add_tuple("path_parts", vec![id.into(), v.into()]); out.add_tuple("path_segments_", vec![id.into(), v.into()]);
} }
} }
} }

View File

@@ -1659,11 +1659,11 @@ impl Translator<'_> {
pub(crate) fn emit_path(&mut self, node: ast::Path) -> Option<Label<generated::Path>> { pub(crate) fn emit_path(&mut self, node: ast::Path) -> Option<Label<generated::Path>> {
let qualifier = node.qualifier().and_then(|x| self.emit_path(x)); 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 { let label = self.trap.emit(generated::Path {
id: TrapId::Star, id: TrapId::Star,
qualifier, qualifier,
part, segment,
}); });
self.emit_location(label, &node); self.emit_location(label, &node);
emit_detached!(Path, self, node, label); emit_detached!(Path, self, node, label);

View File

@@ -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/ParenExpr.qll bc0731505bfe88516205ec360582a4222d2681d11342c93e15258590ddee82f2 d4bd6e0c80cf1d63746c88d4bcb3a01d4c75732e5da09e3ebd9437ced227fb60
lib/codeql/rust/elements/internal/generated/ParenPat.qll 4f168ef5d5bb87a903251cc31b2e44a759b099ec69c90af31783fbb15778c940 0e34f94a45a13396fd57d94c245dc64d1adde2ab0e22b56946f7e94c04e297fc 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/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/ParenthesizedArgList.qll c5fa328ea60d3a3333d7c7bb3480969c1873166c7ac8ebb9d0afad7a8099d1a8 2dbbb6200d96f7db7dea4a55bdeab8d67b14d39a43e0bd54ada019f7e466f163
lib/codeql/rust/elements/internal/generated/Pat.qll 3605ac062be2f294ee73336e9669027b8b655f4ad55660e1eab35266275154ee 7f9400db2884d336dd1d21df2a8093759c2a110be9bf6482ce8e80ae0fd74ed4 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/PathAstNode.qll e6d4d5bffd3c623baaaee46bc183eb31ce88795535f164f6a9b9b4d98bbd6101 168db515404933479ba6b150c72e012d28592cbc32366aefcb1bf9599dbcd183
lib/codeql/rust/elements/internal/generated/PathExpr.qll 34ebad4d062ce8b7e517f2ab09d52745fb8455203f4a936df7284ad296638387 ba66781cdbdeb89c27a4bfb2be0f27f85fb34978d699b4e343446fb0d7ad2aa6 lib/codeql/rust/elements/internal/generated/PathExpr.qll 34ebad4d062ce8b7e517f2ab09d52745fb8455203f4a936df7284ad296638387 ba66781cdbdeb89c27a4bfb2be0f27f85fb34978d699b4e343446fb0d7ad2aa6
lib/codeql/rust/elements/internal/generated/PathExprBase.qll d8218e201b8557fa6d9ca2c30b764e5ad9a04a2e4fb695cc7219bbd7636a6ac2 4ef178426d7095a156f4f8c459b4d16f63abc64336cb50a6cf883a5f7ee09113 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/PureSynthConstructors.qll e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f e5b8e69519012bbaae29dcb82d53f7f7ecce368c0358ec27ef6180b228a0057f
lib/codeql/rust/elements/internal/generated/RangeExpr.qll 23cca03bf43535f33b22a38894f70d669787be4e4f5b8fe5c8f7b964d30e9027 18624cef6c6b679eeace2a98737e472432e0ead354cca02192b4d45330f047c9 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/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/RecordFieldList.qll 4a23b0d75a90671197246dbbb4e62706c180074abb8ebe60a96df11c47a917a2 09be127977651a24010b090d9681714d83ebd461098f9cf0e0d1973cafb1c782
lib/codeql/rust/elements/internal/generated/RefExpr.qll 7d995884e3dc1c25fc719f5d7253179344d63650e217e9ff6530285fe7a57f64 f2c3c12551deea4964b66553fb9b6423ee16fec53bd63db4796191aa60dc6c66 lib/codeql/rust/elements/internal/generated/RefExpr.qll 7d995884e3dc1c25fc719f5d7253179344d63650e217e9ff6530285fe7a57f64 f2c3c12551deea4964b66553fb9b6423ee16fec53bd63db4796191aa60dc6c66
lib/codeql/rust/elements/internal/generated/RefPat.qll 456ede39837463ee22a630ec7ab6c8630d3664a8ea206fcc6e4f199e92fa564c 5622062765f32930465ba6b170e986706f159f6070f48adee3c20e24e8df4e05 lib/codeql/rust/elements/internal/generated/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.ql a96bb8b51d8c0c466afc1c076834fa16edf7e67fffe2f641799850dee43099a2 0e6c375e621b7a7756d39e8edd78b671e53d1aac757ac54a26747fe5259c5394
test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr_getTypeRepr.ql 64fe4ea708bc489ba64ed845f63cfbcd57c1179c57d95be309db37eac2f5eb71 0f4cbbfdf39d89830b5249cabf26d834fc2310b8a9579c19383c90cb4333afb7 test/extractor-tests/generated/ParenTypeRepr/ParenTypeRepr_getTypeRepr.ql 64fe4ea708bc489ba64ed845f63cfbcd57c1179c57d95be309db37eac2f5eb71 0f4cbbfdf39d89830b5249cabf26d834fc2310b8a9579c19383c90cb4333afb7
test/extractor-tests/generated/ParenthesizedArgList/MISSING_SOURCE.txt b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 b6cf5771fdbbe981aeb3f443ec7a40517b6e99ffc9817fd8872c2e344240dae1 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.ql 5039fe730998a561f51813a0716e18c7c1d36b6da89936e4cfbdb4ef0e895560 cd3ddf8ab93cd573381807f59cded7fb3206f1dbdff582490be6f23bed2d6f29
test/extractor-tests/generated/Path/PathExpr_getAttr.ql 2ccac48cd91d86670c1d2742de20344135d424e6f0e3dafcc059555046f92d92 9b7b5f5f9e3674fad9b3a5bcd3cabc0dff32a95640da0fce6f4d0eb931f1757d test/extractor-tests/generated/Path/PathExpr_getAttr.ql 2ccac48cd91d86670c1d2742de20344135d424e6f0e3dafcc059555046f92d92 9b7b5f5f9e3674fad9b3a5bcd3cabc0dff32a95640da0fce6f4d0eb931f1757d
test/extractor-tests/generated/Path/PathExpr_getPath.ql e7894071313a74166bdd31d7cd974037fcd5a7f0e92d5eec42833266196eb858 46a06e8a1207e7a0fa175cd4b61068e5fd6c43b5575b88986409f0ac2be64c51 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/PathSegment_getTypeRepr.ql d9d8ff43a55671616bd5b98ff2c03690ec2661817d19a61edcc4b37d23e312d0 b4dc0ae4d7f03c98c23312b358d214565b34c7a028ba8983826c6bf5c1177eeb
test/extractor-tests/generated/Path/PathTypeRepr.ql c2e069acc5111088a7287d98b4bd4bf44bd79c5a786b275f7448ebafc3613500 6e016750e5fef92a98bc5cc60bfd40d85fbb5eb2d251b4d69ffe600813f81df0 test/extractor-tests/generated/Path/PathTypeRepr.ql c2e069acc5111088a7287d98b4bd4bf44bd79c5a786b275f7448ebafc3613500 6e016750e5fef92a98bc5cc60bfd40d85fbb5eb2d251b4d69ffe600813f81df0
test/extractor-tests/generated/Path/PathTypeRepr_getPath.ql 49e96ea2aa482e3b80cb0e2d944055f8298f7fc55b36cea7468586c94bacf686 29b3c2140ac1bc6e0e6160140e292e2b84e13145c1553480e2a582cd7f7bd3fd 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_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.ql 44fb7174365c6deecdc22c720d84617c6e060c05d49c41c90433451588f8aa6f 871fab471c82fede3c36edc003f9decee5bb7844c016951d28be78d0c91487e5
test/extractor-tests/generated/PrefixExpr/PrefixExpr_getAttr.ql fdad6ad5199435ded1e4a9ea6b246e76b904cd73a36aaa4780e84eef91741c5b 75d63940046e62c1efa1151b0cac45b5ec0bab5e39aec2e11d43f6c385e37984 test/extractor-tests/generated/PrefixExpr/PrefixExpr_getAttr.ql fdad6ad5199435ded1e4a9ea6b246e76b904cd73a36aaa4780e84eef91741c5b 75d63940046e62c1efa1151b0cac45b5ec0bab5e39aec2e11d43f6c385e37984
test/extractor-tests/generated/PrefixExpr/PrefixExpr_getExpr.ql 2d1d97f6277794871fbb032ea87ac30b1aa902a74cd874720156162057ea202e b1b9880fce07d66df7ec87f12189c37adf9f233a1d0b38a1b09808d052a95642 test/extractor-tests/generated/PrefixExpr/PrefixExpr_getExpr.ql 2d1d97f6277794871fbb032ea87ac30b1aa902a74cd874720156162057ea202e b1b9880fce07d66df7ec87f12189c37adf9f233a1d0b38a1b09808d052a95642

2
rust/ql/.gitattributes generated vendored
View File

@@ -1008,8 +1008,8 @@
/test/extractor-tests/generated/Path/PathSegment_getTypeRepr.ql linguist-generated /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.ql linguist-generated
/test/extractor-tests/generated/Path/PathTypeRepr_getPath.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_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.ql linguist-generated
/test/extractor-tests/generated/PrefixExpr/PrefixExpr_getAttr.ql linguist-generated /test/extractor-tests/generated/PrefixExpr/PrefixExpr_getAttr.ql linguist-generated
/test/extractor-tests/generated/PrefixExpr/PrefixExpr_getExpr.ql linguist-generated /test/extractor-tests/generated/PrefixExpr/PrefixExpr_getExpr.ql linguist-generated

View File

@@ -32,14 +32,14 @@ module Impl {
result = "...::" result = "...::"
or or
index = 1 and index = 1 and
result = this.getPart().toAbbreviatedString() result = this.getSegment().toAbbreviatedString()
} }
/** /**
* Gets the text of this path, if it exists. * Gets the text of this path, if it exists.
*/ */
pragma[nomagic] pragma[nomagic]
string getText() { result = this.getPart().getNameRef().getText() } string getText() { result = this.getSegment().getNameRef().getText() }
} }
/** A simple identifier path. */ /** A simple identifier path. */
@@ -49,7 +49,7 @@ module Impl {
IdentPath() { IdentPath() {
not this.hasQualifier() and not this.hasQualifier() and
exists(PathSegment ps | exists(PathSegment ps |
ps = this.getPart() and ps = this.getSegment() and
not ps.hasGenericArgList() and not ps.hasGenericArgList() and
not ps.hasParenthesizedArgList() and not ps.hasParenthesizedArgList() and
not ps.hasTypeRepr() and not ps.hasTypeRepr() and

View File

@@ -809,12 +809,12 @@ private module Impl {
} }
private Element getImmediateChildOfPath(Path e, int index, string partialPredicateCall) { 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 b = 0 and
bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and bAstNode = b + 1 + max(int i | i = -1 or exists(getImmediateChildOfAstNode(e, i, _)) | i) and
n = bAstNode and n = bAstNode and
nQualifier = n + 1 and nQualifier = n + 1 and
nPart = nQualifier + 1 and nSegment = nQualifier + 1 and
( (
none() none()
or or
@@ -822,7 +822,7 @@ private module Impl {
or or
index = n and result = e.getQualifier() and partialPredicateCall = "Qualifier()" index = n and result = e.getQualifier() and partialPredicateCall = "Qualifier()"
or or
index = nQualifier and result = e.getPart() and partialPredicateCall = "Part()" index = nQualifier and result = e.getSegment() and partialPredicateCall = "Segment()"
) )
) )
} }

View File

@@ -42,15 +42,16 @@ module Generated {
final predicate hasQualifier() { exists(this.getQualifier()) } 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() { PathSegment getSegment() {
result = Synth::convertPathSegmentFromRaw(Synth::convertPathToRaw(this).(Raw::Path).getPart()) 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()) }
} }
} }

View File

@@ -718,9 +718,9 @@ module Raw {
Path getQualifier() { path_qualifiers(this, result) } 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) }
} }
/** /**

View File

@@ -31,14 +31,14 @@ class StreamCipherInit extends Cryptography::CryptographicOperation::Range {
rawAlgorithmName = rawAlgorithmName =
p.getPath() p.getPath()
.getQualifier() .getQualifier()
.getPart() .getSegment()
.getGenericArgList() .getGenericArgList()
.getGenericArg(0) .getGenericArg(0)
.(TypeArg) .(TypeArg)
.getTypeRepr() .getTypeRepr()
.(PathTypeRepr) .(PathTypeRepr)
.getPath() .getPath()
.getPart() .getSegment()
.getNameRef() .getNameRef()
.getText() .getText()
) and ) and

View File

@@ -312,7 +312,7 @@ class ImplItemNode extends ImplOrTraitItemNode instanceof Impl {
pragma[nomagic] pragma[nomagic]
private TypeRepr getASelfTyArg() { private TypeRepr getASelfTyArg() {
result = result =
this.getSelfPath().getPart().getGenericArgList().getAGenericArg().(TypeArg).getTypeRepr() this.getSelfPath().getSegment().getGenericArgList().getAGenericArg().(TypeArg).getTypeRepr()
} }
/** /**

View File

@@ -240,7 +240,7 @@ private Type inferImplicitSelfType(SelfParam self, TypePath path) {
*/ */
private TypeMention getExplicitTypeArgMention(Path path, TypeParam tp) { private TypeMention getExplicitTypeArgMention(Path path, TypeParam tp) {
exists(int i | 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)) tp = resolvePath(path).getTypeParam(pragma[only_bind_into](i))
) )
or or

View File

@@ -78,7 +78,7 @@ class TypeReprMention extends TypeMention, TypeRepr {
class PathMention extends TypeMention, Path { class PathMention extends TypeMention, Path {
override TypeMention getTypeArgument(int i) { override TypeMention getTypeArgument(int i) {
result = this.getPart().getGenericArgList().getTypeArg(i) result = this.getSegment().getGenericArgList().getTypeArg(i)
or or
// `Self` paths inside traits and `impl` blocks have implicit type arguments // `Self` paths inside traits and `impl` blocks have implicit type arguments
// that are the type parameters of the trait or impl. For example, in // 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<T>`. // the `Self` return type is shorthand for `Foo<T>`.
exists(ImplOrTraitItemNode node | this = node.getASelfPath() | exists(ImplOrTraitItemNode node | this = node.getASelfPath() |
result = node.(ImplItemNode).getSelfPath().getPart().getGenericArgList().getTypeArg(i) result = node.(ImplItemNode).getSelfPath().getSegment().getGenericArgList().getTypeArg(i)
or or
result = node.(Trait).getGenericParamList().getTypeParam(i) result = node.(Trait).getGenericParamList().getTypeParam(i)
) )
@@ -140,7 +140,7 @@ private predicate isImplSelfTypeParam(
) { ) {
exists(PathMention path | exists(PathMention path |
selfPath = impl.getSelfPath() and 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() tp = path.resolveType()
) )
} }

View File

@@ -63,7 +63,7 @@ private class RegexInjectionDefaultBarrier extends RegexInjectionBarrier {
.getFunction() .getFunction()
.(PathExpr) .(PathExpr)
.getPath() .getPath()
.getPart() .getSegment()
.getNameRef() .getNameRef()
.getText() = "escape" .getText() = "escape"
} }

View File

@@ -771,9 +771,9 @@ path_qualifiers(
); );
#keyset[id] #keyset[id]
path_parts( path_segments_(
int id: @path ref, int id: @path ref,
int part: @path_segment ref int segment: @path_segment ref
); );
path_segments( path_segments(

View File

@@ -1,25 +1,25 @@
| gen_path.rs:5:9:5:18 | some_crate | hasQualifier: | no | 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 | hasPart: | 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 | hasPart: | yes | | gen_path.rs:5:9:5:42 | ...::some_item | hasQualifier: | yes | hasSegment: | yes |
| gen_path.rs:6:5:6:7 | foo | hasQualifier: | no | hasPart: | yes | | gen_path.rs:6:5:6:7 | foo | hasQualifier: | no | hasSegment: | yes |
| gen_path.rs:6:5:6:12 | ...::bar | hasQualifier: | yes | hasPart: | yes | | gen_path.rs:6:5:6:12 | ...::bar | hasQualifier: | yes | hasSegment: | yes |
| gen_path_expr.rs:5:13:5:20 | variable | hasQualifier: | no | hasPart: | 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 | hasPart: | 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 | hasPart: | yes | | gen_path_expr.rs:6:13:6:20 | ...::bar | hasQualifier: | yes | hasSegment: | yes |
| gen_path_expr.rs:7:13:7:15 | <...> | hasQualifier: | no | hasPart: | yes | | gen_path_expr.rs:7:13:7:15 | <...> | hasQualifier: | no | hasSegment: | yes |
| gen_path_expr.rs:7:13:7:20 | ...::foo | hasQualifier: | yes | hasPart: | 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 | hasPart: | yes | | gen_path_expr.rs:7:14:7:14 | T | hasQualifier: | no | hasSegment: | yes |
| gen_path_expr.rs:8:13:8:31 | <...> | hasQualifier: | no | hasPart: | yes | | gen_path_expr.rs:8:13:8:31 | <...> | hasQualifier: | no | hasSegment: | yes |
| gen_path_expr.rs:8:13:8:36 | ...::foo | hasQualifier: | yes | hasPart: | 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 | hasPart: | 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 | hasPart: | 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 | hasPart: | 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 | hasPart: | 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 | hasPart: | 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 | hasPart: | 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 | hasPart: | 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 | hasPart: | 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 | hasPart: | 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 | hasPart: | 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 | hasPart: | 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 | hasPart: | yes | | gen_path_type_repr.rs:6:14:6:20 | ...::Item | hasQualifier: | yes | hasSegment: | yes |

View File

@@ -2,10 +2,10 @@
import codeql.rust.elements import codeql.rust.elements
import TestUtils import TestUtils
from Path x, string hasQualifier, string hasPart from Path x, string hasQualifier, string hasSegment
where where
toBeTested(x) and toBeTested(x) and
not x.isUnknown() and not x.isUnknown() and
(if x.hasQualifier() then hasQualifier = "yes" else hasQualifier = "no") and (if x.hasQualifier() then hasQualifier = "yes" else hasQualifier = "no") and
if x.hasPart() then hasPart = "yes" else hasPart = "no" if x.hasSegment() then hasSegment = "yes" else hasSegment = "no"
select x, "hasQualifier:", hasQualifier, "hasPart:", hasPart select x, "hasQualifier:", hasQualifier, "hasSegment:", hasSegment

View File

@@ -4,4 +4,4 @@ import TestUtils
from Path x from Path x
where toBeTested(x) and not x.isUnknown() where toBeTested(x) and not x.isUnknown()
select x, x.getPart() select x, x.getSegment()

View File

@@ -87,6 +87,7 @@ class _:
foo::bar; foo::bar;
``` ```
""" """
segment: _ | ql.db_table_name("path_segments_") | doc("last segment of this path")
@annotate(GenericArgList) @annotate(GenericArgList)

2
rust/schema/ast.py generated
View File

@@ -479,7 +479,7 @@ class ParenthesizedArgList(AstNode, ):
class Path(AstNode, ): class Path(AstNode, ):
qualifier: optional["Path"] | child qualifier: optional["Path"] | child
part: optional["PathSegment"] | child segment: optional["PathSegment"] | child
class PathExpr(Expr, ): class PathExpr(Expr, ):
attrs: list["Attr"] | child attrs: list["Attr"] | child