Fix issue #8763
* added case & better error message for "impl trait for module" * used better way to print the module * switched from //error-pattern to //~ ERROR * added compile-fail test trait-impl-for-module.rs * revised compile-fail test trait-or-new-type-instead (the error message for the modified test is still unclear, but that's a different bug) * added FIXME to trait-or-new-type-instead
This commit is contained in:
parent
314d6f693f
commit
e1d1ad34f7
|
@ -1,4 +1,4 @@
|
|||
// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
|
||||
// Copyright 2012-2013 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
|
@ -60,10 +60,11 @@ use middle::typeck::lookup_def_tcx;
|
|||
|
||||
use std::vec;
|
||||
use syntax::abi::AbiSet;
|
||||
use syntax::{ast, ast_util};
|
||||
use syntax::{ast, ast_map, ast_util};
|
||||
use syntax::codemap::Span;
|
||||
use syntax::opt_vec::OptVec;
|
||||
use syntax::opt_vec;
|
||||
use syntax::parse::token;
|
||||
use syntax::print::pprust::{lifetime_to_str, path_to_str};
|
||||
|
||||
pub trait AstConv {
|
||||
|
@ -518,6 +519,12 @@ pub fn ast_ty_to_ty<AC:AstConv, RS:RegionScope>(
|
|||
let did = ast_util::local_def(id);
|
||||
ty::mk_self(tcx, did)
|
||||
}
|
||||
ast::DefMod(id) => {
|
||||
tcx.sess.span_fatal(ast_ty.span,
|
||||
format!("found module name used as a type: {}",
|
||||
ast_map::node_id_to_str(tcx.items, id.node,
|
||||
token::get_ident_interner())));
|
||||
}
|
||||
_ => {
|
||||
tcx.sess.span_fatal(ast_ty.span,
|
||||
format!("found value name used as a type: {:?}", a_def));
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
// Copyright 2013 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.
|
||||
|
||||
mod a {
|
||||
}
|
||||
|
||||
trait A {
|
||||
}
|
||||
|
||||
impl A for a { //~ERROR found module name used as a type
|
||||
}
|
||||
|
||||
fn main() {
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
|
||||
// Copyright 2012-2013 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
|
@ -8,8 +8,8 @@
|
|||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// error-pattern: found value name used as a type
|
||||
impl<T> Option<T> {
|
||||
// FIXME(#8767) bad error message; Option is not a module
|
||||
impl<T> Option<T> { //~ERROR found module name used as a type
|
||||
pub fn foo(&self) { }
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue