Use FxIndexMap instead of otherwise unused StableMap for WEAK_ITEMS_REFS.
This commit is contained in:
parent
748cb1f01d
commit
b8138db0ff
@ -11,7 +11,7 @@ use crate::def_id::DefId;
|
||||
use crate::{MethodKind, Target};
|
||||
|
||||
use rustc_ast as ast;
|
||||
use rustc_data_structures::fx::FxHashMap;
|
||||
use rustc_data_structures::fx::FxIndexMap;
|
||||
use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
|
||||
use rustc_macros::HashStable_Generic;
|
||||
use rustc_span::symbol::{kw, sym, Symbol};
|
||||
@ -134,8 +134,8 @@ macro_rules! language_item_table {
|
||||
}
|
||||
|
||||
/// A mapping from the name of the lang item to its order and the form it must be of.
|
||||
pub static ITEM_REFS: LazyLock<FxHashMap<Symbol, (usize, Target)>> = LazyLock::new(|| {
|
||||
let mut item_refs = FxHashMap::default();
|
||||
pub static ITEM_REFS: LazyLock<FxIndexMap<Symbol, (usize, Target)>> = LazyLock::new(|| {
|
||||
let mut item_refs = FxIndexMap::default();
|
||||
$( item_refs.insert($module::$name, (LangItem::$variant as usize, $target)); )*
|
||||
item_refs
|
||||
});
|
||||
|
@ -4,7 +4,7 @@ use crate::def_id::DefId;
|
||||
use crate::{lang_items, LangItem, LanguageItems};
|
||||
|
||||
use rustc_ast as ast;
|
||||
use rustc_data_structures::stable_map::StableMap;
|
||||
use rustc_data_structures::fx::FxIndexMap;
|
||||
use rustc_span::symbol::{sym, Symbol};
|
||||
|
||||
use std::sync::LazyLock;
|
||||
@ -12,8 +12,8 @@ use std::sync::LazyLock;
|
||||
macro_rules! weak_lang_items {
|
||||
($($name:ident, $item:ident, $sym:ident;)*) => (
|
||||
|
||||
pub static WEAK_ITEMS_REFS: LazyLock<StableMap<Symbol, LangItem>> = LazyLock::new(|| {
|
||||
let mut map = StableMap::default();
|
||||
pub static WEAK_ITEMS_REFS: LazyLock<FxIndexMap<Symbol, LangItem>> = LazyLock::new(|| {
|
||||
let mut map = FxIndexMap::default();
|
||||
$(map.insert(sym::$name, LangItem::$item);)*
|
||||
map
|
||||
});
|
||||
|
@ -68,7 +68,7 @@ fn verify<'tcx>(tcx: TyCtxt<'tcx>, items: &lang_items::LanguageItems) {
|
||||
}
|
||||
}
|
||||
|
||||
for (name, item) in WEAK_ITEMS_REFS.clone().into_sorted_vector().into_iter() {
|
||||
for (name, &item) in WEAK_ITEMS_REFS.iter() {
|
||||
if missing.contains(&item) && required(tcx, item) && items.require(item).is_err() {
|
||||
if item == LangItem::PanicImpl {
|
||||
tcx.sess.err("`#[panic_handler]` function required, but not found");
|
||||
|
@ -1,11 +1,11 @@
|
||||
error: extern location for std does not exist:
|
||||
|
||||
error: `#[panic_handler]` function required, but not found
|
||||
|
||||
error: language item required, but not found: `eh_personality`
|
||||
|
|
||||
= note: this can occur when a binary crate with `#![no_std]` is compiled for a target where `eh_personality` is defined in the standard library
|
||||
= help: you may be able to compile for a target that doesn't need `eh_personality`, specify a target with `--target` or in `.cargo/config`
|
||||
|
||||
error: `#[panic_handler]` function required, but not found
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
|
@ -10,13 +10,13 @@ help: you can use `as` to change the binding name of the import
|
||||
LL | extern crate core as other_core;
|
||||
|
|
||||
|
||||
error: `#[panic_handler]` function required, but not found
|
||||
|
||||
error: language item required, but not found: `eh_personality`
|
||||
|
|
||||
= note: this can occur when a binary crate with `#![no_std]` is compiled for a target where `eh_personality` is defined in the standard library
|
||||
= help: you may be able to compile for a target that doesn't need `eh_personality`, specify a target with `--target` or in `.cargo/config`
|
||||
|
||||
error: `#[panic_handler]` function required, but not found
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0259`.
|
||||
|
Loading…
x
Reference in New Issue
Block a user