Skip to content

Commit 7bdf2ab

Browse files
authored
Merge pull request #21210 from paldepind/rust/self-tests
Rust: Add tests for `Self` constructors
2 parents e40f896 + 8f6f7d0 commit 7bdf2ab

File tree

5 files changed

+8172
-8092
lines changed

5 files changed

+8172
-8092
lines changed

rust/ql/test/library-tests/path-resolution/main.rs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -938,6 +938,52 @@ mod patterns {
938938
}
939939
}
940940

941+
/// Tests for referring to constructors via `Self`
942+
mod self_constructors {
943+
struct TupleStruct(i32); // $ item=i32
944+
945+
#[rustfmt::skip]
946+
impl TupleStruct { // $ item=TupleStruct
947+
#[rustfmt::skip]
948+
fn new(x: i32) -> Self { // $ item=i32 item=TupleStruct
949+
let _ = Self(0); // $ item=TupleStruct
950+
let constructor = Self; // $ item=TupleStruct
951+
constructor(x)
952+
} // new
953+
} // ImplTupleStruct
954+
955+
struct StructStruct {
956+
a: i32, // $ item=i32
957+
}
958+
959+
#[rustfmt::skip]
960+
impl StructStruct { // $ item=StructStruct
961+
#[rustfmt::skip]
962+
fn new(a: i32) -> Self { // $ item=i32 item=StructStruct
963+
Self { a } // $ item=StructStruct
964+
} // new
965+
} // ImplStructStruct
966+
967+
enum MyEnum {
968+
A(
969+
i32, // $ item=i32
970+
), // MyEnumA
971+
}
972+
973+
#[rustfmt::skip]
974+
impl MyEnum { // $ item=MyEnum
975+
fn get(self) -> i32{ // $ item=i32
976+
match self {
977+
Self::A( // $ item=MyEnumA
978+
x,
979+
) => {
980+
x
981+
}
982+
}
983+
}
984+
}
985+
}
986+
941987
fn main() {
942988
my::nested::nested1::nested2::f(); // $ item=I4
943989
my::f(); // $ item=I38

rust/ql/test/library-tests/path-resolution/path-resolution.expected

Lines changed: 94 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ mod
3333
| main.rs:819:1:871:1 | mod associated_types |
3434
| main.rs:877:1:896:1 | mod impl_with_attribute_macro |
3535
| main.rs:898:1:939:1 | mod patterns |
36+
| main.rs:941:1:985:1 | mod self_constructors |
3637
| my2/mod.rs:1:1:1:16 | mod nested2 |
3738
| my2/mod.rs:20:1:20:12 | mod my3 |
3839
| my2/mod.rs:22:1:23:10 | mod mymod |
@@ -73,7 +74,7 @@ resolvePath
7374
| main.rs:37:17:37:24 | ...::f | main.rs:26:9:28:9 | fn f |
7475
| main.rs:39:17:39:23 | println | {EXTERNAL LOCATION} | MacroRules |
7576
| main.rs:40:17:40:17 | f | main.rs:26:9:28:9 | fn f |
76-
| main.rs:47:9:47:13 | super | main.rs:1:1:978:2 | SourceFile |
77+
| main.rs:47:9:47:13 | super | main.rs:1:1:1024:2 | SourceFile |
7778
| main.rs:47:9:47:17 | ...::m1 | main.rs:20:1:44:1 | mod m1 |
7879
| main.rs:47:9:47:21 | ...::m2 | main.rs:25:5:43:5 | mod m2 |
7980
| main.rs:47:9:47:24 | ...::g | main.rs:30:9:34:9 | fn g |
@@ -88,7 +89,7 @@ resolvePath
8889
| main.rs:68:17:68:19 | Foo | main.rs:66:9:66:21 | struct Foo |
8990
| main.rs:71:13:71:15 | Foo | main.rs:60:5:60:17 | struct Foo |
9091
| main.rs:73:5:73:5 | f | main.rs:62:5:69:5 | fn f |
91-
| main.rs:75:5:75:8 | self | main.rs:1:1:978:2 | SourceFile |
92+
| main.rs:75:5:75:8 | self | main.rs:1:1:1024:2 | SourceFile |
9293
| main.rs:75:5:75:11 | ...::i | main.rs:78:1:90:1 | fn i |
9394
| main.rs:79:5:79:11 | println | {EXTERNAL LOCATION} | MacroRules |
9495
| main.rs:81:13:81:15 | Foo | main.rs:55:1:55:13 | struct Foo |
@@ -110,7 +111,7 @@ resolvePath
110111
| main.rs:112:9:112:15 | println | {EXTERNAL LOCATION} | MacroRules |
111112
| main.rs:118:9:118:15 | println | {EXTERNAL LOCATION} | MacroRules |
112113
| main.rs:122:9:122:15 | println | {EXTERNAL LOCATION} | MacroRules |
113-
| main.rs:125:13:125:17 | super | main.rs:1:1:978:2 | SourceFile |
114+
| main.rs:125:13:125:17 | super | main.rs:1:1:1024:2 | SourceFile |
114115
| main.rs:125:13:125:21 | ...::m5 | main.rs:110:1:114:1 | mod m5 |
115116
| main.rs:126:9:126:9 | f | main.rs:111:5:113:5 | fn f |
116117
| main.rs:126:9:126:9 | f | main.rs:117:5:119:5 | fn f |
@@ -477,79 +478,95 @@ resolvePath
477478
| main.rs:935:13:935:16 | Some | {EXTERNAL LOCATION} | Some |
478479
| main.rs:935:18:935:18 | z | main.rs:922:5:924:12 | Const |
479480
| main.rs:935:24:935:24 | z | main.rs:922:5:924:12 | Const |
480-
| main.rs:942:5:942:6 | my | main.rs:1:1:1:7 | mod my |
481-
| main.rs:942:5:942:14 | ...::nested | my.rs:1:1:1:15 | mod nested |
482-
| main.rs:942:5:942:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 |
483-
| main.rs:942:5:942:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 |
484-
| main.rs:942:5:942:35 | ...::f | my/nested.rs:3:9:5:9 | fn f |
485-
| main.rs:943:5:943:6 | my | main.rs:1:1:1:7 | mod my |
486-
| main.rs:943:5:943:9 | ...::f | my.rs:5:1:7:1 | fn f |
487-
| main.rs:944:5:944:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 |
488-
| main.rs:944:5:944:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 |
489-
| main.rs:944:5:944:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
490-
| main.rs:944:5:944:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f |
491-
| main.rs:945:5:945:5 | f | my2/nested2.rs:3:9:5:9 | fn f |
492-
| main.rs:946:5:946:5 | g | my2/nested2.rs:7:9:9:9 | fn g |
493-
| main.rs:947:5:947:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) |
494-
| main.rs:947:5:947:12 | ...::h | main.rs:57:1:76:1 | fn h |
495-
| main.rs:948:5:948:6 | m1 | main.rs:20:1:44:1 | mod m1 |
496-
| main.rs:948:5:948:10 | ...::m2 | main.rs:25:5:43:5 | mod m2 |
497-
| main.rs:948:5:948:13 | ...::g | main.rs:30:9:34:9 | fn g |
498-
| main.rs:949:5:949:6 | m1 | main.rs:20:1:44:1 | mod m1 |
499-
| main.rs:949:5:949:10 | ...::m2 | main.rs:25:5:43:5 | mod m2 |
500-
| main.rs:949:5:949:14 | ...::m3 | main.rs:36:9:42:9 | mod m3 |
501-
| main.rs:949:5:949:17 | ...::h | main.rs:37:27:41:13 | fn h |
502-
| main.rs:950:5:950:6 | m4 | main.rs:46:1:53:1 | mod m4 |
503-
| main.rs:950:5:950:9 | ...::i | main.rs:49:5:52:5 | fn i |
504-
| main.rs:951:5:951:5 | h | main.rs:57:1:76:1 | fn h |
505-
| main.rs:952:5:952:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f |
506-
| main.rs:953:5:953:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g |
507-
| main.rs:954:5:954:5 | j | main.rs:104:1:108:1 | fn j |
508-
| main.rs:955:5:955:6 | m6 | main.rs:116:1:128:1 | mod m6 |
509-
| main.rs:955:5:955:9 | ...::g | main.rs:121:5:127:5 | fn g |
510-
| main.rs:956:5:956:6 | m7 | main.rs:130:1:149:1 | mod m7 |
511-
| main.rs:956:5:956:9 | ...::f | main.rs:141:5:148:5 | fn f |
512-
| main.rs:957:5:957:6 | m8 | main.rs:151:1:205:1 | mod m8 |
513-
| main.rs:957:5:957:9 | ...::g | main.rs:189:5:204:5 | fn g |
514-
| main.rs:958:5:958:6 | m9 | main.rs:207:1:215:1 | mod m9 |
515-
| main.rs:958:5:958:9 | ...::f | main.rs:210:5:214:5 | fn f |
516-
| main.rs:959:5:959:7 | m11 | main.rs:238:1:275:1 | mod m11 |
517-
| main.rs:959:5:959:10 | ...::f | main.rs:243:5:246:5 | fn f |
518-
| main.rs:960:5:960:7 | m15 | main.rs:306:1:375:1 | mod m15 |
519-
| main.rs:960:5:960:10 | ...::f | main.rs:362:5:374:5 | fn f |
520-
| main.rs:961:5:961:7 | m16 | main.rs:377:1:574:1 | mod m16 |
521-
| main.rs:961:5:961:10 | ...::f | main.rs:446:5:470:5 | fn f |
522-
| main.rs:962:5:962:20 | trait_visibility | main.rs:576:1:626:1 | mod trait_visibility |
523-
| main.rs:962:5:962:23 | ...::f | main.rs:603:5:625:5 | fn f |
524-
| main.rs:963:5:963:7 | m17 | main.rs:628:1:658:1 | mod m17 |
525-
| main.rs:963:5:963:10 | ...::f | main.rs:652:5:657:5 | fn f |
526-
| main.rs:964:5:964:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 |
527-
| main.rs:964:5:964:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f |
528-
| main.rs:965:5:965:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 |
529-
| main.rs:965:5:965:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f |
530-
| main.rs:966:5:966:7 | my3 | my2/mod.rs:20:1:20:12 | mod my3 |
531-
| main.rs:966:5:966:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f |
532-
| main.rs:967:5:967:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f |
533-
| main.rs:968:5:968:12 | my_alias | main.rs:1:1:1:7 | mod my |
534-
| main.rs:968:5:968:22 | ...::nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f |
535-
| main.rs:969:5:969:7 | m18 | main.rs:660:1:678:1 | mod m18 |
536-
| main.rs:969:5:969:12 | ...::m19 | main.rs:665:5:677:5 | mod m19 |
537-
| main.rs:969:5:969:17 | ...::m20 | main.rs:670:9:676:9 | mod m20 |
538-
| main.rs:969:5:969:20 | ...::g | main.rs:671:13:675:13 | fn g |
539-
| main.rs:970:5:970:7 | m23 | main.rs:707:1:732:1 | mod m23 |
540-
| main.rs:970:5:970:10 | ...::f | main.rs:727:5:731:5 | fn f |
541-
| main.rs:971:5:971:7 | m24 | main.rs:734:1:802:1 | mod m24 |
542-
| main.rs:971:5:971:10 | ...::f | main.rs:788:5:801:5 | fn f |
543-
| main.rs:972:5:972:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) |
544-
| main.rs:972:5:972:11 | ...::h | main.rs:57:1:76:1 | fn h |
545-
| main.rs:973:5:973:13 | z_changed | main.rs:807:1:807:9 | fn z_changed |
546-
| main.rs:974:5:974:11 | AStruct | main.rs:809:1:809:17 | struct AStruct |
547-
| main.rs:974:5:974:22 | ...::z_on_type | main.rs:813:5:813:17 | fn z_on_type |
548-
| main.rs:975:5:975:11 | AStruct | main.rs:809:1:809:17 | struct AStruct |
549-
| main.rs:976:5:976:29 | impl_with_attribute_macro | main.rs:877:1:896:1 | mod impl_with_attribute_macro |
550-
| main.rs:976:5:976:35 | ...::test | main.rs:892:5:895:5 | fn test |
551-
| main.rs:977:5:977:12 | patterns | main.rs:898:1:939:1 | mod patterns |
552-
| main.rs:977:5:977:18 | ...::test | main.rs:899:5:913:5 | fn test |
481+
| main.rs:943:24:943:26 | i32 | {EXTERNAL LOCATION} | struct i32 |
482+
| main.rs:946:10:946:20 | TupleStruct | main.rs:943:5:943:28 | struct TupleStruct |
483+
| main.rs:948:19:948:21 | i32 | {EXTERNAL LOCATION} | struct i32 |
484+
| main.rs:948:27:948:30 | Self | main.rs:943:5:943:28 | struct TupleStruct |
485+
| main.rs:949:21:949:24 | Self | main.rs:943:5:943:28 | struct TupleStruct |
486+
| main.rs:950:31:950:34 | Self | main.rs:943:5:943:28 | struct TupleStruct |
487+
| main.rs:956:12:956:14 | i32 | {EXTERNAL LOCATION} | struct i32 |
488+
| main.rs:960:10:960:21 | StructStruct | main.rs:955:5:957:5 | struct StructStruct |
489+
| main.rs:962:19:962:21 | i32 | {EXTERNAL LOCATION} | struct i32 |
490+
| main.rs:962:27:962:30 | Self | main.rs:955:5:957:5 | struct StructStruct |
491+
| main.rs:963:13:963:16 | Self | main.rs:955:5:957:5 | struct StructStruct |
492+
| main.rs:969:13:969:15 | i32 | {EXTERNAL LOCATION} | struct i32 |
493+
| main.rs:974:10:974:15 | MyEnum | main.rs:967:5:971:5 | enum MyEnum |
494+
| main.rs:975:25:975:27 | i32 | {EXTERNAL LOCATION} | struct i32 |
495+
| main.rs:977:17:977:20 | Self | main.rs:967:5:971:5 | enum MyEnum |
496+
| main.rs:977:17:977:23 | ...::A | main.rs:968:9:970:9 | A |
497+
| main.rs:988:5:988:6 | my | main.rs:1:1:1:7 | mod my |
498+
| main.rs:988:5:988:14 | ...::nested | my.rs:1:1:1:15 | mod nested |
499+
| main.rs:988:5:988:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 |
500+
| main.rs:988:5:988:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 |
501+
| main.rs:988:5:988:35 | ...::f | my/nested.rs:3:9:5:9 | fn f |
502+
| main.rs:989:5:989:6 | my | main.rs:1:1:1:7 | mod my |
503+
| main.rs:989:5:989:9 | ...::f | my.rs:5:1:7:1 | fn f |
504+
| main.rs:990:5:990:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 |
505+
| main.rs:990:5:990:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 |
506+
| main.rs:990:5:990:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
507+
| main.rs:990:5:990:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f |
508+
| main.rs:991:5:991:5 | f | my2/nested2.rs:3:9:5:9 | fn f |
509+
| main.rs:992:5:992:5 | g | my2/nested2.rs:7:9:9:9 | fn g |
510+
| main.rs:993:5:993:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) |
511+
| main.rs:993:5:993:12 | ...::h | main.rs:57:1:76:1 | fn h |
512+
| main.rs:994:5:994:6 | m1 | main.rs:20:1:44:1 | mod m1 |
513+
| main.rs:994:5:994:10 | ...::m2 | main.rs:25:5:43:5 | mod m2 |
514+
| main.rs:994:5:994:13 | ...::g | main.rs:30:9:34:9 | fn g |
515+
| main.rs:995:5:995:6 | m1 | main.rs:20:1:44:1 | mod m1 |
516+
| main.rs:995:5:995:10 | ...::m2 | main.rs:25:5:43:5 | mod m2 |
517+
| main.rs:995:5:995:14 | ...::m3 | main.rs:36:9:42:9 | mod m3 |
518+
| main.rs:995:5:995:17 | ...::h | main.rs:37:27:41:13 | fn h |
519+
| main.rs:996:5:996:6 | m4 | main.rs:46:1:53:1 | mod m4 |
520+
| main.rs:996:5:996:9 | ...::i | main.rs:49:5:52:5 | fn i |
521+
| main.rs:997:5:997:5 | h | main.rs:57:1:76:1 | fn h |
522+
| main.rs:998:5:998:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f |
523+
| main.rs:999:5:999:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g |
524+
| main.rs:1000:5:1000:5 | j | main.rs:104:1:108:1 | fn j |
525+
| main.rs:1001:5:1001:6 | m6 | main.rs:116:1:128:1 | mod m6 |
526+
| main.rs:1001:5:1001:9 | ...::g | main.rs:121:5:127:5 | fn g |
527+
| main.rs:1002:5:1002:6 | m7 | main.rs:130:1:149:1 | mod m7 |
528+
| main.rs:1002:5:1002:9 | ...::f | main.rs:141:5:148:5 | fn f |
529+
| main.rs:1003:5:1003:6 | m8 | main.rs:151:1:205:1 | mod m8 |
530+
| main.rs:1003:5:1003:9 | ...::g | main.rs:189:5:204:5 | fn g |
531+
| main.rs:1004:5:1004:6 | m9 | main.rs:207:1:215:1 | mod m9 |
532+
| main.rs:1004:5:1004:9 | ...::f | main.rs:210:5:214:5 | fn f |
533+
| main.rs:1005:5:1005:7 | m11 | main.rs:238:1:275:1 | mod m11 |
534+
| main.rs:1005:5:1005:10 | ...::f | main.rs:243:5:246:5 | fn f |
535+
| main.rs:1006:5:1006:7 | m15 | main.rs:306:1:375:1 | mod m15 |
536+
| main.rs:1006:5:1006:10 | ...::f | main.rs:362:5:374:5 | fn f |
537+
| main.rs:1007:5:1007:7 | m16 | main.rs:377:1:574:1 | mod m16 |
538+
| main.rs:1007:5:1007:10 | ...::f | main.rs:446:5:470:5 | fn f |
539+
| main.rs:1008:5:1008:20 | trait_visibility | main.rs:576:1:626:1 | mod trait_visibility |
540+
| main.rs:1008:5:1008:23 | ...::f | main.rs:603:5:625:5 | fn f |
541+
| main.rs:1009:5:1009:7 | m17 | main.rs:628:1:658:1 | mod m17 |
542+
| main.rs:1009:5:1009:10 | ...::f | main.rs:652:5:657:5 | fn f |
543+
| main.rs:1010:5:1010:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 |
544+
| main.rs:1010:5:1010:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f |
545+
| main.rs:1011:5:1011:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 |
546+
| main.rs:1011:5:1011:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f |
547+
| main.rs:1012:5:1012:7 | my3 | my2/mod.rs:20:1:20:12 | mod my3 |
548+
| main.rs:1012:5:1012:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f |
549+
| main.rs:1013:5:1013:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f |
550+
| main.rs:1014:5:1014:12 | my_alias | main.rs:1:1:1:7 | mod my |
551+
| main.rs:1014:5:1014:22 | ...::nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f |
552+
| main.rs:1015:5:1015:7 | m18 | main.rs:660:1:678:1 | mod m18 |
553+
| main.rs:1015:5:1015:12 | ...::m19 | main.rs:665:5:677:5 | mod m19 |
554+
| main.rs:1015:5:1015:17 | ...::m20 | main.rs:670:9:676:9 | mod m20 |
555+
| main.rs:1015:5:1015:20 | ...::g | main.rs:671:13:675:13 | fn g |
556+
| main.rs:1016:5:1016:7 | m23 | main.rs:707:1:732:1 | mod m23 |
557+
| main.rs:1016:5:1016:10 | ...::f | main.rs:727:5:731:5 | fn f |
558+
| main.rs:1017:5:1017:7 | m24 | main.rs:734:1:802:1 | mod m24 |
559+
| main.rs:1017:5:1017:10 | ...::f | main.rs:788:5:801:5 | fn f |
560+
| main.rs:1018:5:1018:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) |
561+
| main.rs:1018:5:1018:11 | ...::h | main.rs:57:1:76:1 | fn h |
562+
| main.rs:1019:5:1019:13 | z_changed | main.rs:807:1:807:9 | fn z_changed |
563+
| main.rs:1020:5:1020:11 | AStruct | main.rs:809:1:809:17 | struct AStruct |
564+
| main.rs:1020:5:1020:22 | ...::z_on_type | main.rs:813:5:813:17 | fn z_on_type |
565+
| main.rs:1021:5:1021:11 | AStruct | main.rs:809:1:809:17 | struct AStruct |
566+
| main.rs:1022:5:1022:29 | impl_with_attribute_macro | main.rs:877:1:896:1 | mod impl_with_attribute_macro |
567+
| main.rs:1022:5:1022:35 | ...::test | main.rs:892:5:895:5 | fn test |
568+
| main.rs:1023:5:1023:12 | patterns | main.rs:898:1:939:1 | mod patterns |
569+
| main.rs:1023:5:1023:18 | ...::test | main.rs:899:5:913:5 | fn test |
553570
| my2/mod.rs:4:5:4:11 | println | {EXTERNAL LOCATION} | MacroRules |
554571
| my2/mod.rs:5:5:5:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 |
555572
| my2/mod.rs:5:5:5:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 |
@@ -575,7 +592,7 @@ resolvePath
575592
| my2/my3/mod.rs:3:5:3:5 | g | my2/mod.rs:3:1:6:1 | fn g |
576593
| my2/my3/mod.rs:4:5:4:5 | h | main.rs:57:1:76:1 | fn h |
577594
| my2/my3/mod.rs:7:5:7:9 | super | my2/mod.rs:1:1:25:34 | SourceFile |
578-
| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:978:2 | SourceFile |
595+
| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:1024:2 | SourceFile |
579596
| my2/my3/mod.rs:7:5:7:19 | ...::h | main.rs:57:1:76:1 | fn h |
580597
| my2/my3/mod.rs:8:5:8:9 | super | my2/mod.rs:1:1:25:34 | SourceFile |
581598
| my2/my3/mod.rs:8:5:8:12 | ...::g | my2/mod.rs:3:1:6:1 | fn g |
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
multipleResolvedTargets
2-
| main.rs:2860:13:2860:17 | x.f() |
2+
| main.rs:2871:13:2871:17 | x.f() |

rust/ql/test/library-tests/type-inference/main.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,17 @@ mod method_impl {
9595
}
9696
}
9797

98+
mod struct_self_call {
99+
struct ATupleStruct(i64);
100+
101+
impl Default for ATupleStruct {
102+
fn default() -> Self {
103+
let n = Default::default(); // $ target=default type=n:i64
104+
Self(n)
105+
}
106+
}
107+
}
108+
98109
mod trait_impl {
99110
#[derive(Debug)]
100111
struct MyThing {

0 commit comments

Comments
 (0)