From 13686b6778b5d03fb4887ae314ebd79001695064 Mon Sep 17 00:00:00 2001 From: Haitao Li Date: Fri, 6 Apr 2012 18:43:14 +0800 Subject: [PATCH] Use real crate name in crate_map name `use` statement may introduce an crate name alias. This patch always uses the link attrbute "name" as the crate's name when building the crate map. Closes #1706 --- src/rustc/metadata/creader.rs | 6 +++++- src/test/run-pass/use-crate-name-alias.rs | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 src/test/run-pass/use-crate-name-alias.rs diff --git a/src/rustc/metadata/creader.rs b/src/rustc/metadata/creader.rs index 4b53fc758a7f..0721342767d0 100644 --- a/src/rustc/metadata/creader.rs +++ b/src/rustc/metadata/creader.rs @@ -355,7 +355,11 @@ fn resolve_crate(e: env, ident: ast::ident, metas: [@ast::meta_item], // Now resolve the crates referenced by this crate let cnum_map = resolve_crate_deps(e, cdata); - let cmeta = @{name: ident, data: cdata, + let cname = alt attr::meta_item_value_from_list(metas, "name") { + option::some(v) { v } + option::none { ident } + }; + let cmeta = @{name: cname, data: cdata, cnum_map: cnum_map, cnum: cnum}; let cstore = e.sess.cstore; diff --git a/src/test/run-pass/use-crate-name-alias.rs b/src/test/run-pass/use-crate-name-alias.rs new file mode 100644 index 000000000000..fe75111fc499 --- /dev/null +++ b/src/test/run-pass/use-crate-name-alias.rs @@ -0,0 +1,4 @@ +// Issue #1706 +use stdlib(name="std"); + +fn main() {}