diff options
| -rw-r--r-- | src/comp/metadata/csearch.rs | 3 | ||||
| -rw-r--r-- | src/comp/middle/ast_map.rs | 2 | ||||
| -rw-r--r-- | src/test/compile-fail/fully-qualified-type-name1.rs | 7 | ||||
| -rw-r--r-- | src/test/compile-fail/fully-qualified-type-name2.rs | 17 |
4 files changed, 27 insertions, 2 deletions
diff --git a/src/comp/metadata/csearch.rs b/src/comp/metadata/csearch.rs index 1ac86faed0d..6cd78d0b5c4 100644 --- a/src/comp/metadata/csearch.rs +++ b/src/comp/metadata/csearch.rs @@ -60,7 +60,8 @@ fn resolve_path(cstore: cstore::cstore, cnum: ast::crate_num, fn get_item_path(tcx: ty::ctxt, def: ast::def_id) -> ast_map::path { let cstore = tcx.sess.cstore; let cdata = cstore::get_crate_data(cstore, def.crate); - ret decoder::get_item_path(cdata, def.node); + let path = decoder::get_item_path(cdata, def.node); + [ast_map::path_mod(cdata.name)] + path } fn get_enum_variants(tcx: ty::ctxt, def: ast::def_id) -> [ty::variant_info] { diff --git a/src/comp/middle/ast_map.rs b/src/comp/middle/ast_map.rs index 1504f5f738e..01ad8a3df67 100644 --- a/src/comp/middle/ast_map.rs +++ b/src/comp/middle/ast_map.rs @@ -17,7 +17,7 @@ fn path_to_str_with_sep(p: path, sep: str) -> str { } fn path_to_str(p: path) -> str { - path_to_str_with_sep(p, "::") + "::" + path_to_str_with_sep(p, "::") } enum ast_node { diff --git a/src/test/compile-fail/fully-qualified-type-name1.rs b/src/test/compile-fail/fully-qualified-type-name1.rs new file mode 100644 index 00000000000..9a197de565b --- /dev/null +++ b/src/test/compile-fail/fully-qualified-type-name1.rs @@ -0,0 +1,7 @@ +// Test that we use fully-qualified type names in error messages. + +fn main() { + let x: option<uint>; + x = 5; + //!^ ERROR mismatched types: expected `::core::option::t<uint>` +} diff --git a/src/test/compile-fail/fully-qualified-type-name2.rs b/src/test/compile-fail/fully-qualified-type-name2.rs new file mode 100644 index 00000000000..4b40875ebd1 --- /dev/null +++ b/src/test/compile-fail/fully-qualified-type-name2.rs @@ -0,0 +1,17 @@ +// Test that we use fully-qualified type names in error messages. + +mod x { + enum foo { } +} + +mod y { + enum foo { } +} + +fn bar(x: x::foo) -> y::foo { + ret x; + //!^ ERROR mismatched types: expected `::y::foo` but found `::x::foo` +} + +fn main() { +} |
