document_private_items,
dotdot_in_tuple_patterns,
dotdoteq_in_patterns,
+ dreg,
+ dreg_low16,
+ dreg_low8,
drop,
drop_in_place,
drop_types_in_const,
expf64,
export_name,
expr,
+ extended_key_value_attributes,
extern_absolute_paths,
extern_crate_item_prelude,
extern_crate_self,
format_args_capture,
format_args_nl,
freeze,
+ freg,
frem_fast,
from,
from_desugaring,
iter,
keyword,
kind,
+ kreg,
label,
label_break_value,
lang,
lint_reasons,
literal,
llvm_asm,
+ local,
local_inner_macros,
log10f32,
log10f64,
pub_restricted,
pure,
pushpop_unsafe,
+ qreg,
+ qreg_low4,
+ qreg_low8,
quad_precision_float,
question_mark,
quote,
reexport_test_harness_main,
reference,
reflect,
+ reg,
+ reg16,
+ reg32,
+ reg64,
+ reg_abcd,
+ reg_byte,
+ reg_thumb,
register_attr,
register_tool,
relaxed_adts,
spotlight,
sqrtf32,
sqrtf64,
+ sreg,
+ sreg_low16,
sse4a_target_feature,
stable,
staged_api,
volatile_load,
volatile_set_memory,
volatile_store,
+ vreg,
+ vreg_low16,
warn,
wasm_import_module,
wasm_target_feature,
wrapping_mul,
wrapping_sub,
write_bytes,
+ xmm_reg,
+ ymm_reg,
+ zmm_reg,
}
}
self.0.as_u32()
}
+ pub fn is_empty(self) -> bool {
+ self == kw::Invalid
+ }
+
/// This method is supposed to be used in error messages, so it's expected to be
/// identical to printing the original identifier token written in source code
/// (`token_to_string`, `Ident::to_string`), except that symbols don't keep the rawness flag
/// Given that `kw` is imported, use them like `kw::keyword_name`.
/// For example `kw::Loop` or `kw::Break`.
pub mod kw {
- use super::Symbol;
- keywords!();
+ pub use super::kw_generated::*;
}
// This module has a very short name because it's used a lot.
///
/// Given that `sym` is imported, use them like `sym::symbol_name`.
/// For example `sym::rustfmt` or `sym::u8`.
-#[allow(rustc::default_hash_types)]
pub mod sym {
use super::Symbol;
use std::convert::TryInto;
- define_symbols!();
+ pub use super::sym_generated::*;
// Used from a macro in `librustc_feature/accepted.rs`
pub use super::kw::MacroRules as macro_rules;
- // Get the symbol for an integer. The first few non-negative integers each
- // have a static symbol and therefore are fast.
+ /// Get the symbol for an integer.
+ ///
+ /// The first few non-negative integers each have a static symbol and therefore
+ /// are fast.
pub fn integer<N: TryInto<usize> + Copy + ToString>(n: N) -> Symbol {
if let Result::Ok(idx) = n.try_into() {
- if let Option::Some(&sym_) = digits_array.get(idx) {
- return sym_;
+ if idx < 10 {
+ return Symbol::new(super::SYMBOL_DIGITS_BASE + idx as u32);
}
}
Symbol::intern(&n.to_string())
self == kw::True || self == kw::False
}
- /// This symbol can be a raw identifier.
+ /// Returns `true` if this symbol can be a raw identifier.
pub fn can_be_raw(self) -> bool {
self != kw::Invalid && self != kw::Underscore && !self.is_path_segment_keyword()
}