File tree 2 files changed +72
-0
lines changed
2 files changed +72
-0
lines changed Original file line number Diff line number Diff line change
1
+ // run-pass
2
+
3
+ #![ allow( incomplete_features) ]
4
+ #![ feature( const_mut_refs) ]
5
+ #![ feature( inline_const) ]
6
+
7
+ use std:: marker:: PhantomData ;
8
+
9
+ // rust-lang/rust#78174: ICE: "cannot convert ReErased to a region vid"
10
+ fn issue_78174 ( ) {
11
+ let foo = const { "foo" } ;
12
+ assert_eq ! ( foo, "foo" ) ;
13
+ }
14
+
15
+ pub struct InvariantRef < ' a , T : ?Sized > ( & ' a T , PhantomData < & ' a mut & ' a T > ) ;
16
+
17
+ impl < ' a , T : ?Sized > InvariantRef < ' a , T > {
18
+ pub const fn new ( r : & ' a T ) -> Self {
19
+ InvariantRef ( r, PhantomData )
20
+ }
21
+ }
22
+
23
+ fn get_invariant_ref < ' a > ( ) -> InvariantRef < ' a , ( ) > {
24
+ const { InvariantRef :: < ' a , ( ) > :: new ( & ( ) ) }
25
+ }
26
+
27
+ fn get_invariant_ref2 < ' a > ( ) -> InvariantRef < ' a , ( ) > {
28
+ // Try some type inference
29
+ const { InvariantRef :: new ( & ( ) ) }
30
+ }
31
+
32
+ fn main ( ) {
33
+ issue_78174 ( ) ;
34
+ get_invariant_ref ( ) ;
35
+ get_invariant_ref2 ( ) ;
36
+ }
Original file line number Diff line number Diff line change
1
+ // run-pass
2
+
3
+ #![ allow( incomplete_features) ]
4
+ #![ feature( const_mut_refs) ]
5
+ #![ feature( inline_const) ]
6
+
7
+ use std:: marker:: PhantomData ;
8
+
9
+ // rust-lang/rust#78174: ICE: "cannot convert ReErased to a region vid"
10
+ fn issue_78174 ( ) {
11
+ match "foo" {
12
+ const { concat ! ( "fo" , "o" ) } => ( ) ,
13
+ _ => unreachable ! ( ) ,
14
+ }
15
+ }
16
+
17
+ #[ derive( PartialEq , Eq ) ]
18
+ pub struct InvariantRef < ' a , T : ?Sized > ( & ' a T , PhantomData < & ' a mut & ' a T > ) ;
19
+
20
+ impl < ' a , T : ?Sized > InvariantRef < ' a , T > {
21
+ pub const fn new ( r : & ' a T ) -> Self {
22
+ InvariantRef ( r, PhantomData )
23
+ }
24
+ }
25
+
26
+ fn match_invariant_ref < ' a > ( ) {
27
+ match const { InvariantRef :: < ' a , _ > :: new ( & ( ) ) } {
28
+ const { InvariantRef :: < ' a , ( ) > :: new ( & ( ) ) } => {
29
+ }
30
+ }
31
+ }
32
+
33
+ fn main ( ) {
34
+ issue_78174 ( ) ;
35
+ match_invariant_ref ( ) ;
36
+ }
You can’t perform that action at this time.
0 commit comments