@@ -2680,3 +2680,116 @@ LL | | */
2680
2680
let renderer = Renderer :: plain ( ) . anonymized_line_numbers ( true ) ;
2681
2681
assert_data_eq ! ( renderer. render( input) , expected) ;
2682
2682
}
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");
10000
//~ 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
<
57AE
td data-grid-cell-id="diff-3808400e9736befc20dc1f423be43b430e6d06881502fd3a60d642985e6495c1-2682-2736-0" data-selected="false" role="gridcell" style="background-color:var(--diffBlob-additionNum-bgColor, var(--diffBlob-addition-bgColor-num));text-align:center" tabindex="-1" valign="top" class="focusable-grid-cell diff-line-number position-relative left-side">
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 ( ) {
B41A
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