From 3bd4560d6eb6404f05c2c99a5755b86e9e896eb9 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 31 Jan 2019 10:30:15 +0300 Subject: convert punts and literals --- crates/ra_hir/src/macros.rs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'crates/ra_hir/src/macros.rs') diff --git a/crates/ra_hir/src/macros.rs b/crates/ra_hir/src/macros.rs index 9ba381685..c23ad53cc 100644 --- a/crates/ra_hir/src/macros.rs +++ b/crates/ra_hir/src/macros.rs @@ -221,12 +221,24 @@ fn convert_tt(tt: &SyntaxNode) -> Option { if child == first_child || child == last_child || child.kind().is_trivia() { continue; } - let child = if child.kind() == TOKEN_TREE { + let child: tt::TokenTree = if child.kind() == TOKEN_TREE { convert_tt(child)?.into() - } else if child.kind().is_keyword() { + } else if child.kind().is_keyword() || child.kind() == IDENT { let text = child.leaf_text().unwrap().clone(); tt::Leaf::from(tt::Ident { text }).into() + } else if child.kind().is_punct() { + // FIXME: multibyte tokens + tt::Leaf::from(tt::Punct { + char: child.text().char_at(0)?, + }) + .into() + } else if child.kind().is_literal() { + tt::Leaf::from(tt::Literal { + text: child.leaf_text().unwrap().clone(), + }) + .into() } else { + log::error!("unknown kind: {:?}", child); return None; }; token_trees.push(child) -- cgit v1.2.3