use syntax_pos::DUMMY_SP;
use syntax::ast::*;
+ use syntax::attr;
+ use syntax::source_map::dummy_spanned;
use syntax::symbol::Symbol;
use syntax::with_globals;
Raw(u16),
}
-/// A literal.
+/// An AST literal.
#[derive(Clone, RustcEncodable, RustcDecodable, Debug)]
pub struct Lit {
- pub node: LitKind,
+ /// The original literal token as written in source code.
pub token: token::Lit,
+ /// The original literal suffix as written in source code.
pub suffix: Option<Symbol>,
+ /// The "semantic" representation of the literal lowered from the original tokens.
+ /// Strings are unescaped, hexadecimal forms are eliminated, etc.
+ /// FIXME: Remove this and only create the semantic representation during lowering to HIR.
+ pub node: LitKind,
pub span: Span,
}
impl LitKind {
/// Converts literal token with a suffix into a semantic literal.
- /// Works speculatively and may return `None` is diagnostic handler is not passed.
+ /// Works speculatively and may return `None` if diagnostic handler is not passed.
/// If diagnostic handler is passed, always returns `Some`,
/// possibly after reporting non-fatal errors and recovery.
fn from_lit_token(
impl Lit {
/// Converts literal token with a suffix into an AST literal.
- /// Works speculatively and may return `None` is diagnostic handler is not passed.
+ /// Works speculatively and may return `None` if diagnostic handler is not passed.
/// If diagnostic handler is passed, may return `Some`,
/// possibly after reporting non-fatal errors and recovery, or `None` for irrecoverable errors.
crate fn from_token(