Skip to content

Commit

Permalink
Remove export_name query
Browse files Browse the repository at this point in the history
Part of #47320
  • Loading branch information
wesleywiser committed Mar 7, 2018
1 parent 97b30f0 commit 5460b88
Show file tree
Hide file tree
Showing 11 changed files with 38 additions and 64 deletions.
1 change: 0 additions & 1 deletion src/librustc/dep_graph/dep_node.rs
Expand Up @@ -627,7 +627,6 @@ define_dep_nodes!( <'tcx>
[input] AllCrateNums,
[] ExportedSymbols(CrateNum),
[eval_always] CollectAndPartitionTranslationItems,
[] ExportName(DefId),
[] ContainsExternIndicator(DefId),
[] IsTranslatedItem(DefId),
[] CodegenUnit(InternedString),
Expand Down
2 changes: 2 additions & 0 deletions src/librustc/hir/mod.rs
Expand Up @@ -2216,6 +2216,7 @@ pub fn provide(providers: &mut Providers) {
pub struct TransFnAttrs {
pub flags: TransFnAttrFlags,
pub inline: InlineAttr,
pub export_name: Option<Symbol>,
}

bitflags! {
Expand All @@ -2234,6 +2235,7 @@ impl TransFnAttrs {
TransFnAttrs {
flags: TransFnAttrFlags::empty(),
inline: InlineAttr::None,
export_name: None,
}
}

Expand Down
2 changes: 2 additions & 0 deletions src/librustc/ich/impls_hir.rs
Expand Up @@ -1147,10 +1147,12 @@ impl<'hir> HashStable<StableHashingContext<'hir>> for hir::TransFnAttrs
let hir::TransFnAttrs {
flags,
inline,
export_name,
} = *self;

flags.hash_stable(hcx, hasher);
inline.hash_stable(hcx, hasher);
export_name.hash_stable(hcx, hasher);
}
}

Expand Down
1 change: 0 additions & 1 deletion src/librustc/ty/maps/mod.rs
Expand Up @@ -363,7 +363,6 @@ define_maps! { <'tcx>
[] fn collect_and_partition_translation_items:
collect_and_partition_translation_items_node(CrateNum)
-> (Arc<DefIdSet>, Arc<Vec<Arc<CodegenUnit<'tcx>>>>),
[] fn export_name: ExportName(DefId) -> Option<Symbol>,
[] fn contains_extern_indicator: ContainsExternIndicator(DefId) -> bool,
[] fn symbol_export_level: GetSymbolExportLevel(DefId) -> SymbolExportLevel,
[] fn is_translated_item: IsTranslatedItem(DefId) -> bool,
Expand Down
1 change: 0 additions & 1 deletion src/librustc/ty/maps/plumbing.rs
Expand Up @@ -926,7 +926,6 @@ pub fn force_from_dep_node<'a, 'gcx, 'lcx>(tcx: TyCtxt<'a, 'gcx, 'lcx>,
DepKind::CollectAndPartitionTranslationItems => {
force!(collect_and_partition_translation_items, LOCAL_CRATE);
}
DepKind::ExportName => { force!(export_name, def_id!()); }
DepKind::ContainsExternIndicator => {
force!(contains_extern_indicator, def_id!());
}
Expand Down
38 changes: 0 additions & 38 deletions src/librustc_trans_utils/diagnostics.rs

This file was deleted.

2 changes: 0 additions & 2 deletions src/librustc_trans_utils/lib.rs
Expand Up @@ -37,7 +37,6 @@ extern crate rustc;
extern crate rustc_back;
extern crate rustc_mir;
extern crate rustc_incremental;
#[macro_use]
extern crate syntax;
extern crate syntax_pos;
extern crate rustc_data_structures;
Expand All @@ -46,7 +45,6 @@ pub extern crate rustc as __rustc;

use rustc::ty::TyCtxt;

pub mod diagnostics;
pub mod link;
pub mod trans_crate;
pub mod symbol_names;
Expand Down
22 changes: 2 additions & 20 deletions src/librustc_trans_utils/symbol_names.rs
Expand Up @@ -120,27 +120,9 @@ pub fn provide(providers: &mut Providers) {
def_symbol_name,
symbol_name,

export_name: |tcx, id| {
tcx.get_attrs(id).iter().fold(None, |ia, attr| {
if attr.check_name("export_name") {
if let s @ Some(_) = attr.value_str() {
s
} else {
struct_span_err!(tcx.sess, attr.span, E0558,
"export_name attribute has invalid format")
.span_label(attr.span, "did you mean #[export_name=\"*\"]?")
.emit();
None
}
} else {
ia
}
})
},

contains_extern_indicator: |tcx, id| {
attr::contains_name(&tcx.get_attrs(id), "no_mangle") ||
tcx.export_name(id).is_some()
tcx.trans_fn_attrs(id).export_name.is_some()
},

..*providers
Expand Down Expand Up @@ -287,7 +269,7 @@ fn compute_symbol_name<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, instance: Instance
return tcx.item_name(def_id).to_string();
}

if let Some(name) = tcx.export_name(def_id) {
if let Some(name) = tcx.trans_fn_attrs(def_id).export_name {
// Use provided name
return name.to_string();
}
Expand Down
1 change: 0 additions & 1 deletion src/librustc_trans_utils/trans_crate.rs
Expand Up @@ -233,7 +233,6 @@ impl TransCrate for MetadataOnlyTransCrate {
MonoItem::Fn(inst) => {
let def_id = inst.def_id();
if def_id.is_local() {
let _ = tcx.export_name(def_id);
let _ = tcx.contains_extern_indicator(def_id);
let _ = inst.def.is_inline(tcx);
let _ = tcx.trans_fn_attrs(def_id);
Expand Down
9 changes: 9 additions & 0 deletions src/librustc_typeck/collect.rs
Expand Up @@ -1777,6 +1777,15 @@ fn trans_fn_attrs<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, id: DefId) -> TransFnAt
_ => ia,
}
});
} else if attr.check_name("export_name") {
if let s @ Some(_) = attr.value_str() {
trans_fn_attrs.export_name = s;
} else {
struct_span_err!(tcx.sess, attr.span, E0558,
"export_name attribute has invalid format")
.span_label(attr.span, "did you mean #[export_name=\"*\"]?")
.emit();
}
}
}

Expand Down
23 changes: 23 additions & 0 deletions src/librustc_typeck/diagnostics.rs
Expand Up @@ -3774,6 +3774,29 @@ For more information about the inline attribute, https:
read://doc.rust-lang.org/reference.html#inline-attributes
"##,

E0558: r##"
The `export_name` attribute was malformed.
Erroneous code example:
```ignore (error-emitted-at-codegen-which-cannot-be-handled-by-compile_fail)
#[export_name] // error: export_name attribute has invalid format
pub fn something() {}
fn main() {}
```
The `export_name` attribute expects a string in order to determine the name of
the exported symbol. Example:
```
#[export_name = "some_function"] // ok!
pub fn something() {}
fn main() {}
```
"##,

E0559: r##"
An unknown field was specified into an enum's structure variant.
Expand Down

0 comments on commit 5460b88

Please sign in to comment.