Add error message for using typeof instead of an ICE.

This adds error E0516

fixing a type pointed out by @jonas-schievink
This commit is contained in:
skeleten 2015-10-22 22:08:46 +02:00
parent e38210b195
commit 044a8fe6f6
3 changed files with 35 additions and 1 deletions

View file

@ -1703,7 +1703,9 @@ pub fn ast_ty_to_ty<'tcx>(this: &AstConv<'tcx>,
}
}
hir::TyTypeof(ref _e) => {
tcx.sess.span_bug(ast_ty.span, "typeof is reserved but unimplemented");
span_err!(tcx.sess, ast_ty.span, E0516,
"`typeof` is a reserved keyword but unimplemented");
tcx.types.err
}
hir::TyInfer => {
// TyInfer also appears as the type of arguments or return

View file

@ -3331,6 +3331,25 @@ extern "platform-intrinsic" {
```
"##,
E0516: r##"
The `typeof` keyword is currently reserved but unimplemented.
Erroneous code example:
```
fn main() {
let x: typeof(92) = 92;
}
```
Try using type inference instead. Example:
```
fn main() {
let x = 92;
}
```
"##,
}
register_diagnostics! {

View file

@ -0,0 +1,13 @@
// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
fn main() {
let x: typeof(92) = 92; //~ ERROR `typeof` is a reserved keyword
}