@@ -2680,3 +2680,116 @@ LL | | */
26802680    let  renderer = Renderer :: plain ( ) . anonymized_line_numbers ( true ) ; 
26812681    assert_data_eq ! ( renderer. render( input) ,  expected) ; 
26822682} 
2683+ 
2684+ #[ test]  
2685+ fn  mismatched_types1 ( )  { 
2686+     // tests/ui/include-macros/mismatched-types.rs 
2687+ 
2688+     let  file_txt_source = r#""# ; 
2689+ 
2690+     let  rust_source = r#"fn main() { 
2691+     let b: &[u8] = include_str!("file.txt");    //~ ERROR mismatched types 
2692+     let s: &str = include_bytes!("file.txt");   //~ ERROR mismatched types 
2693+ }"# ; 
2694+ 
2695+     let  input = Level :: ERROR . header ( "mismatched types" ) . id ( "E0308" ) . group ( 
2696+         Group :: new ( ) 
2697+             . element ( 
2698+                 Snippet :: source ( file_txt_source) 
2699+                     . fold ( true ) 
2700+                     . line_start ( 3 ) 
2701+                     . origin ( "$DIR/file.txt" ) 
2702+                     . annotation ( 
2703+                         AnnotationKind :: Primary 
2704+                             . span ( 0 ..0 ) 
2705+                             . label ( "expected `&[u8]`, found `&str`" ) , 
2706+                     ) , 
2707+             ) 
2708+             . element ( 
2709+                 Snippet :: source ( rust_source) 
2710+                     . origin ( "$DIR/mismatched-types.rs" ) 
2711+                     . fold ( true ) 
2712+                     . annotation ( 
2713+                         AnnotationKind :: Context 
2714+                             . span ( 23 ..28 ) 
2715+                             . label ( "expected due to this" ) , 
2716+                     ) 
2717+                     . annotation ( 
2718+                         AnnotationKind :: Context 
2719+                             . span ( 31 ..55 ) 
2720+                             . label ( "in this macro invocation" ) , 
2721+                     ) , 
2722+             ) 
2723+             . element ( 
2724+                 Level :: NOTE . title ( "expected reference `&[u8]`\n    found reference `&'static str`" ) , 
2725+             ) , 
2726+     ) ; 
2727+ 
2728+     let  expected = str![ [ r#" 
2729+ error[E0308]: mismatched types 
2730+   --> $DIR/file.txt:3:1 
2731+    | 
2732+ LL | 
2733+    | ^ expected `&[u8]`, found `&str` 
2734+    | 
2735+   ::: $DIR/mismatched-types.rs:2:12 
2736+    | 
2737+ LL |     let b: &[u8] = include_str!("file.txt");    //~ ERROR mismatched types 
2738+    |            -----   ------------------------ in this macro invocation 
2739+    |            | 
2740+    |            expected due to this 
2741+    | 
2742+    = note: expected reference `&[u8]` 
2743+               found reference `&'static str` 
2744+ "# ] ] ; 
2745+     let  renderer = Renderer :: plain ( ) . anonymized_line_numbers ( true ) ; 
2746+     assert_data_eq ! ( renderer. render( input) ,  expected) ; 
2747+ } 
2748+ 
2749+ #[ test]  
2750+ fn  mismatched_types2 ( )  { 
2751+     // tests/ui/include-macros/mismatched-types.rs 
2752+ 
2753+     let  source = r#"fn main() { 
2754+     let b: &[u8] = include_str!("file.txt");    //~ ERROR mismatched types 
2755+     let s: &str = include_bytes!("file.txt");   //~ ERROR mismatched types 
2756+ }"# ; 
2757+ 
2758+     let  input = Level :: ERROR . header ( "mismatched types" ) . id ( "E0308" ) . group ( 
2759+         Group :: new ( ) 
2760+             . element ( 
2761+                 Snippet :: source ( source) 
2762+                     . origin ( "$DIR/mismatched-types.rs" ) 
2763+                     . fold ( true ) 
2764+                     . annotation ( 
2765+                         AnnotationKind :: Primary 
2766+                             . span ( 105 ..131 ) 
2767+                             . label ( "expected `&str`, found `&[u8; 0]`" ) , 
2768+                     ) 
2769+                     . annotation ( 
2770+                         AnnotationKind :: Context 
2771+                             . span ( 98 ..102 ) 
2772+                             . label ( "expected due to this" ) , 
2773+                     ) , 
2774+             ) 
2775+             . element ( 
2776+                 Level :: NOTE 
2777+                     . title ( "expected reference `&str`\n    found reference `&'static [u8; 0]`" ) , 
2778+             ) , 
2779+     ) ; 
2780+ 
2781+     let  expected = str![ [ r#" 
2782+ error[E0308]: mismatched types 
2783+   --> $DIR/mismatched-types.rs:3:19 
2784+    | 
2785+ LL |     let s: &str = include_bytes!("file.txt");   //~ ERROR mismatched types 
2786+    |            ----   ^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `&str`, found `&[u8; 0]` 
2787+    |            | 
2788+    |            expected due to this 
2789+    | 
2790+    = note: expected reference `&str` 
2791+               found reference `&'static [u8; 0]` 
2792+ "# ] ] ; 
2793+     let  renderer = Renderer :: plain ( ) . anonymized_line_numbers ( true ) ; 
2794+     assert_data_eq ! ( renderer. render( input) ,  expected) ; 
2795+ } 
0 commit comments