]> git.lizzy.rs Git - rust.git/commitdiff
simplify E0308 message for primitive types
authorkalita.alexey <kalita.alexey@outlook.com>
Sat, 16 Jan 2016 13:07:45 +0000 (17:07 +0400)
committerkalita.alexey <kalita.alexey@outlook.com>
Mon, 18 Jan 2016 04:59:44 +0000 (08:59 +0400)
14 files changed:
src/librustc/middle/infer/error_reporting.rs
src/librustc/middle/ty/sty.rs
src/test/compile-fail/if-branch-types.rs
src/test/compile-fail/integer-literal-suffix-inference.rs
src/test/compile-fail/issue-13359.rs
src/test/compile-fail/issue-3477.rs
src/test/compile-fail/issue-5100.rs
src/test/compile-fail/issue-8761.rs
src/test/compile-fail/pattern-error-continue.rs
src/test/compile-fail/pptypedef.rs
src/test/compile-fail/repeat_count.rs
src/test/compile-fail/shift-various-bad-types.rs
src/test/compile-fail/tutorial-suffix-inference-test.rs
src/test/compile-fail/type-mismatch-multiple.rs

index f390d85a28d66370e29dc8c124ea59b23bb4416d..5cc848d2ca3d1516cb0ee15825db05abce6c0820 100644 (file)
@@ -486,13 +486,24 @@ fn report_type_error(&self,
             }
         };
 
+        let is_simple_error = if let &TypeError::Sorts(ref values) = terr {
+            values.expected.is_primitive() && values.found.is_primitive()
+        } else {
+            false
+        };
+
+        let expected_found_str = if is_simple_error {
+            expected_found_str
+        } else {
+            format!("{} ({})", expected_found_str, terr)
+        };
+
         let mut err = struct_span_err!(self.tcx.sess,
                                        trace.origin.span(),
                                        E0308,
-                                       "{}: {} ({})",
+                                       "{}: {}",
                                        trace.origin,
-                                       expected_found_str,
-                                       terr);
+                                       expected_found_str);
 
         self.check_and_note_conflicting_crates(&mut err, terr, trace.origin.span());
 
index 7e8d38ae8e79708700b7eb7cde7e53e9b4b4c71e..6d40d377b7852920e860917bdc342ace324976ec 100644 (file)
@@ -910,6 +910,13 @@ pub fn is_empty(&self, _cx: &ty::ctxt) -> bool {
         }
     }
 
+    pub fn is_primitive(&self) -> bool {
+        match self.sty {
+            TyBool | TyChar | TyInt(_) | TyUint(_) | TyFloat(_) => true,
+            _ => false,
+        }
+    }
+
     pub fn is_ty_var(&self) -> bool {
         match self.sty {
             TyInfer(TyVar(_)) => true,
index b7a5b991c6d561be4460ccc99ec16da95b7f7a7e..2c730531b823a85f86d2e0cd650fd3027ef5ed89 100644 (file)
@@ -13,6 +13,4 @@ fn main() {
     //~^ ERROR if and else have incompatible types
     //~| expected `i32`
     //~| found `u32`
-    //~| expected i32
-    //~| found u32
 }
index 5d9314faef98219d1dbcd8c0e371af9569a9f252..8f04b58b77868a3076b820651ec88d1c97c58407 100644 (file)
@@ -43,79 +43,55 @@ fn id_u64(n: u64) -> u64 { n }
     //~^ ERROR mismatched types
     //~| expected `i8`
     //~| found `i16`
-    //~| expected i8
-    //~| found i16
     id_i8(a32);
     //~^ ERROR mismatched types
     //~| expected `i8`
     //~| found `i32`
-    //~| expected i8
-    //~| found i32
     id_i8(a64);
     //~^ ERROR mismatched types
     //~| expected `i8`
     //~| found `i64`
-    //~| expected i8
-    //~| found i64
 
     id_i16(a8);
     //~^ ERROR mismatched types
     //~| expected `i16`
     //~| found `i8`
-    //~| expected i16
-    //~| found i8
     id_i16(a16); // ok
     id_i16(a32);
     //~^ ERROR mismatched types
     //~| expected `i16`
     //~| found `i32`
-    //~| expected i16
-    //~| found i32
     id_i16(a64);
     //~^ ERROR mismatched types
     //~| expected `i16`
     //~| found `i64`
-    //~| expected i16
-    //~| found i64
 
     id_i32(a8);
     //~^ ERROR mismatched types
     //~| expected `i32`
     //~| found `i8`
-    //~| expected i32
-    //~| found i8
     id_i32(a16);
     //~^ ERROR mismatched types
     //~| expected `i32`
     //~| found `i16`
-    //~| expected i32
-    //~| found i16
     id_i32(a32); // ok
     id_i32(a64);
     //~^ ERROR mismatched types
     //~| expected `i32`
     //~| found `i64`
-    //~| expected i32
-    //~| found i64
 
     id_i64(a8);
     //~^ ERROR mismatched types
     //~| expected `i64`
     //~| found `i8`
-    //~| expected i64
-    //~| found i8
     id_i64(a16);
     //~^ ERROR mismatched types
     //~| expected `i64`
     //~| found `i16`
-    //~| expected i64
-    //~| found i16
     id_i64(a32);
     //~^ ERROR mismatched types
     //~| expected `i64`
     //~| found `i32`
-    //~| expected i64
-    //~| found i32
     id_i64(a64); // ok
 
     id_i8(c8); // ok
@@ -123,79 +99,55 @@ fn id_u64(n: u64) -> u64 { n }
     //~^ ERROR mismatched types
     //~| expected `i8`
     //~| found `i16`
-    //~| expected i8
-    //~| found i16
     id_i8(c32);
     //~^ ERROR mismatched types
     //~| expected `i8`
     //~| found `i32`
-    //~| expected i8
-    //~| found i32
     id_i8(c64);
     //~^ ERROR mismatched types
     //~| expected `i8`
     //~| found `i64`
-    //~| expected i8
-    //~| found i64
 
     id_i16(c8);
     //~^ ERROR mismatched types
     //~| expected `i16`
     //~| found `i8`
-    //~| expected i16
-    //~| found i8
     id_i16(c16); // ok
     id_i16(c32);
     //~^ ERROR mismatched types
     //~| expected `i16`
     //~| found `i32`
-    //~| expected i16
-    //~| found i32
     id_i16(c64);
     //~^ ERROR mismatched types
     //~| expected `i16`
     //~| found `i64`
-    //~| expected i16
-    //~| found i64
 
     id_i32(c8);
     //~^ ERROR mismatched types
     //~| expected `i32`
     //~| found `i8`
-    //~| expected i32
-    //~| found i8
     id_i32(c16);
     //~^ ERROR mismatched types
     //~| expected `i32`
     //~| found `i16`
-    //~| expected i32
-    //~| found i16
     id_i32(c32); // ok
     id_i32(c64);
     //~^ ERROR mismatched types
     //~| expected `i32`
     //~| found `i64`
-    //~| expected i32
-    //~| found i64
 
     id_i64(a8);
     //~^ ERROR mismatched types
     //~| expected `i64`
     //~| found `i8`
-    //~| expected i64
-    //~| found i8
     id_i64(a16);
     //~^ ERROR mismatched types
     //~| expected `i64`
-    //~| found `i16`
-    //~| expected i64
     //~| found i16
     id_i64(a32);
     //~^ ERROR mismatched types
     //~| expected `i64`
     //~| found `i32`
-    //~| expected i64
-    //~| found i32
     id_i64(a64); // ok
 
     id_u8(b8); // ok
@@ -203,78 +155,54 @@ fn id_u64(n: u64) -> u64 { n }
     //~^ ERROR mismatched types
     //~| expected `u8`
     //~| found `u16`
-    //~| expected u8
-    //~| found u16
     id_u8(b32);
     //~^ ERROR mismatched types
     //~| expected `u8`
     //~| found `u32`
-    //~| expected u8
-    //~| found u32
     id_u8(b64);
     //~^ ERROR mismatched types
     //~| expected `u8`
     //~| found `u64`
-    //~| expected u8
-    //~| found u64
 
     id_u16(b8);
     //~^ ERROR mismatched types
     //~| expected `u16`
     //~| found `u8`
-    //~| expected u16
-    //~| found u8
     id_u16(b16); // ok
     id_u16(b32);
     //~^ ERROR mismatched types
     //~| expected `u16`
     //~| found `u32`
-    //~| expected u16
-    //~| found u32
     id_u16(b64);
     //~^ ERROR mismatched types
     //~| expected `u16`
     //~| found `u64`
-    //~| expected u16
-    //~| found u64
 
     id_u32(b8);
     //~^ ERROR mismatched types
     //~| expected `u32`
     //~| found `u8`
-    //~| expected u32
-    //~| found u8
     id_u32(b16);
     //~^ ERROR mismatched types
     //~| expected `u32`
     //~| found `u16`
-    //~| expected u32
-    //~| found u16
     id_u32(b32); // ok
     id_u32(b64);
     //~^ ERROR mismatched types
     //~| expected `u32`
     //~| found `u64`
-    //~| expected u32
-    //~| found u64
 
     id_u64(b8);
     //~^ ERROR mismatched types
     //~| expected `u64`
     //~| found `u8`
-    //~| expected u64
-    //~| found u8
     id_u64(b16);
     //~^ ERROR mismatched types
     //~| expected `u64`
     //~| found `u16`
-    //~| expected u64
-    //~| found u16
     id_u64(b32);
     //~^ ERROR mismatched types
     //~| expected `u64`
     //~| found `u32`
-    //~| expected u64
-    //~| found u32
     id_u64(b64); // ok
 }
index c53e5760941f15d9611f00255eafc5cc1d8e6b95..775412a12ca6a99c1efc68f8afa9a4f636be3b22 100644 (file)
@@ -17,13 +17,9 @@ fn main() {
     //~^ ERROR mismatched types
     //~| expected `i16`
     //~| found `isize`
-    //~| expected i16
-    //~| found isize
 
     bar(1*(1 as usize));
     //~^ ERROR mismatched types
     //~| expected `u32`
     //~| found `usize`
-    //~| expected u32
-    //~| found usize
 }
index 5e7c23164cbbbbe65f35aa29e73703b35299d5a7..43ef1b59ccf275e09c9f19106791ee115de8cadf 100644 (file)
@@ -13,6 +13,4 @@ fn main() {
     //~^ ERROR mismatched types
     //~| expected `char`
     //~| found `u8`
-    //~| expected char
-    //~| found u8
 }
index 35096110e8f43a30fd1d76c0e1bc24b4ec15707b..304b6f185fe365342459b5a8a16e367995249b98 100644 (file)
@@ -71,6 +71,4 @@ fn main() {
     let x: char = true; //~  ERROR mismatched types
                         //~| expected `char`
                         //~| found `bool`
-                        //~| expected char
-                        //~| found bool
 }
index 30e4ec8ad0e6d104a25e499b2ad32544aece5e47..35be01970cb56d4acfef455f7ff060e05c899026 100644 (file)
@@ -13,14 +13,10 @@ enum Foo {
     //~^ ERROR mismatched types
     //~| expected `isize`
     //~| found `i64`
-    //~| expected isize
-    //~| found i64
     B = 2u8
     //~^ ERROR mismatched types
     //~| expected `isize`
     //~| found `u8`
-    //~| expected isize
-    //~| found u8
 }
 
 fn main() {}
index aa7202574abfc3d15c0230790723e81f0d97b56c..9ebdcf1a9ecb02551164fbaa3a1971917fbae899 100644 (file)
@@ -42,6 +42,4 @@ fn main() {
     //~^ ERROR mismatched types
     //~| expected `char`
     //~| found `bool`
-    //~| expected char
-    //~| found bool
 }
index ccf82e90b7a1d89fc9b18e4bafb32fa03fb418d1..1a1c87ff47d467371b0390d974bd3ad80289228a 100644 (file)
@@ -15,13 +15,9 @@ fn main() {
     //~^ ERROR mismatched types
     //~| expected `u32`
     //~| found `i32`
-    //~| expected u32
-    //~| found i32
 
     let_in(3i32, |i| { assert!(i == 3u32); });
     //~^ ERROR mismatched types
     //~| expected `i32`
     //~| found `u32`
-    //~| expected i32
-    //~| found u32
 }
index 7a0623ba44f0240c2713d3dd644ffa5917ad6d77..9aa61418d6d047d60d2270c5d09de01525a8ab78 100644 (file)
@@ -25,8 +25,6 @@ fn main() {
     //~^ ERROR mismatched types
     //~| expected `usize`
     //~| found `bool`
-    //~| expected usize
-    //~| found bool) [E0308]
     //~| ERROR expected positive integer for repeat count, found boolean [E0306]
     let d = [0; 0.5];
     //~^ ERROR mismatched types
@@ -46,15 +44,11 @@ fn main() {
     //~^ ERROR mismatched types
     //~| expected `usize`
     //~| found `isize`
-    //~| expected usize
-    //~| found isize) [E0308]
     //~| ERROR expected positive integer for repeat count, found negative integer [E0306]
     let f = [0_usize; -1_isize];
     //~^ ERROR mismatched types
     //~| expected `usize`
     //~| found `isize`
-    //~| expected usize
-    //~| found isize) [E0308]
     //~| ERROR expected positive integer for repeat count, found negative integer [E0306]
     struct G {
         g: (),
index c980572fa152f595693a2e5132be769fb85f23c6..560af9193b35ea8b2eb34402faa53be07c0bed3a 100644 (file)
@@ -36,8 +36,6 @@ fn foo(p: &Panolpy) {
     //~^ ERROR mismatched types
     //~| expected `i32`
     //~| found `i64`
-    //~| expected i32
-    //~| found i64)
 }
 
 fn main() {
index bb1e199920d5c512165b2436f5086e31a6c274a3..99d6437c02ed4ecbab77b8fdd2abe1800fc85bf6 100644 (file)
@@ -20,14 +20,10 @@ fn identity_u16(n: u16) -> u16 { n }
     //~^ ERROR mismatched types
     //~| expected `u16`
     //~| found `u8`
-    //~| expected u16
-    //~| found u8
     identity_u16(y);
     //~^ ERROR mismatched types
     //~| expected `u16`
     //~| found `i32`
-    //~| expected u16
-    //~| found i32
 
     let a = 3;
 
@@ -38,7 +34,4 @@ fn identity_i(n: isize) -> isize { n }
     //~^ ERROR mismatched types
     //~| expected `u16`
     //~| found `isize`
-    //~| expected u16
-    //~| found isize
-
 }
index 627300a037720b92ba9a45e7981b1f9a985638ee..dd8f54cdabb8fe92c2945716848f2c1518b095a0 100644 (file)
@@ -19,5 +19,4 @@
 //~| ERROR mismatched types
 //~| expected `i32`
 //~| found `bool`
-//~| expected i32
-//~| found bool
+