1 #![warn(clippy::new_ret_no_self)]
2 #![allow(dead_code, clippy::trivially_copy_pass_by_ref)]
22 // should not trigger the lint
23 pub fn new() -> impl R<Item = Self> {
35 // should not trigger the lint
36 pub fn new(_: String) -> impl R<Item = Self> {
48 // should trigger the lint
49 pub fn new(_: String) -> impl R<Item = u32> {
62 // should not trigger the lint
63 pub fn new(_: String) -> impl Q<Item = u32, Item2 = Self> {
71 // should not trigger lint
72 pub fn new() -> Self {
80 // should trigger lint
89 // should trigger lint
90 pub fn new(_: String) -> u32 {
95 struct TupleReturnerOk;
97 impl TupleReturnerOk {
98 // should not trigger lint
99 pub fn new() -> (Self, u32) { unimplemented!(); }
102 struct TupleReturnerOk2;
104 impl TupleReturnerOk2 {
105 // should not trigger lint (it doesn't matter which element in the tuple is Self)
106 pub fn new() -> (u32, Self) { unimplemented!(); }
109 struct TupleReturnerOk3;
111 impl TupleReturnerOk3 {
112 // should not trigger lint (tuple can contain multiple Self)
113 pub fn new() -> (Self, Self) { unimplemented!(); }
116 struct TupleReturnerBad;
118 impl TupleReturnerBad {
119 // should trigger lint
120 pub fn new() -> (u32, u32) { unimplemented!(); }
123 struct MutPointerReturnerOk;
125 impl MutPointerReturnerOk {
126 // should not trigger lint
127 pub fn new() -> *mut Self { unimplemented!(); }
130 struct MutPointerReturnerOk2;
132 impl MutPointerReturnerOk2 {
133 // should not trigger lint
134 pub fn new() -> *const Self { unimplemented!(); }
137 struct MutPointerReturnerBad;
139 impl MutPointerReturnerBad {
140 // should trigger lint
141 pub fn new() -> *mut V { unimplemented!(); }
144 struct GenericReturnerOk;
146 impl GenericReturnerOk {
147 // should not trigger lint
148 pub fn new() -> Option<Self> { unimplemented!(); }
151 struct GenericReturnerBad;
153 impl GenericReturnerBad {
154 // should trigger lint
155 pub fn new() -> Option<u32> { unimplemented!(); }
158 struct NestedReturnerOk;
160 impl NestedReturnerOk {
161 // should not trigger lint
162 pub fn new() -> (Option<Self>, u32) { unimplemented!(); }
165 struct NestedReturnerOk2;
167 impl NestedReturnerOk2 {
168 // should not trigger lint
169 pub fn new() -> ((Self, u32), u32) { unimplemented!(); }
172 struct NestedReturnerOk3;
174 impl NestedReturnerOk3 {
175 // should not trigger lint
176 pub fn new() -> Option<(Self, u32)> { unimplemented!(); }