File tree 2 files changed +36
-1
lines changed
2 files changed +36
-1
lines changed Original file line number Diff line number Diff line change @@ -275,7 +275,13 @@ macro_rules! impls{
275
275
/// any methods, but instead is used to gate access to data.
276
276
///
277
277
/// FIXME. Better documentation needed here!
278
- pub trait MarkerTrait : PhantomFn < Self > { }
278
+ pub trait MarkerTrait : PhantomFn < Self , Self > { }
279
+ // ~~~~~ <-- FIXME(#22806)?
280
+ //
281
+ // Marker trait has been made invariant so as to avoid inf recursion,
282
+ // but we should ideally solve the underlying problem. That's a bit
283
+ // complicated.
284
+
279
285
impl < T : ?Sized > MarkerTrait for T { }
280
286
281
287
/// `PhantomFn` is a marker trait for use with traits that contain
Original file line number Diff line number Diff line change
1
+ // Copyright 2015 The Rust Project Developers. See the COPYRIGHT
2
+ // file at the top-level directory of this distribution and at
3
+ // http://rust-lang.org/COPYRIGHT.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6
+ // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7
+ // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8
+ // option. This file may not be copied, modified, or distributed
9
+ // except according to those terms.
10
+
11
+ // Regression test for issue #22655: This test should not lead to
12
+ // infinite recursion.
13
+
14
+ unsafe impl < T : Send + ?Sized > Send for Unique < T > { }
15
+
16
+ pub struct Unique < T : ?Sized > {
17
+ pointer : * const T ,
18
+ }
19
+
20
+ pub struct Node < V > {
21
+ vals : V ,
22
+ edges : Unique < Node < V > > ,
23
+ }
24
+
25
+ fn is_send < T : Send > ( ) { }
26
+
27
+ fn main ( ) {
28
+ is_send :: < Node < & ' static ( ) > > ( ) ;
29
+ }
You can’t perform that action at this time.
0 commit comments