@@ -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