about summary refs log tree commit diff
path: root/src/libsyntax_ext
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2019-02-27 22:06:26 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2019-03-16 23:13:15 +0300
commit6ad55b3decefd53263f20a6c575aaa85c1edcbec (patch)
tree6ad909da93cbfe48a004e134ea296ada6f84ee42 /src/libsyntax_ext
parent5cb5083909f19c107aec186a72b8b9104f8ca30d (diff)
downloadrust-6ad55b3decefd53263f20a6c575aaa85c1edcbec.tar.gz
rust-6ad55b3decefd53263f20a6c575aaa85c1edcbec.zip
syntax: Introduce `Ident::can_be_raw`
Diffstat (limited to 'src/libsyntax_ext')
-rw-r--r--src/libsyntax_ext/proc_macro_decls.rs4
-rw-r--r--src/libsyntax_ext/proc_macro_server.rs8
2 files changed, 4 insertions, 8 deletions
diff --git a/src/libsyntax_ext/proc_macro_decls.rs b/src/libsyntax_ext/proc_macro_decls.rs
index efa6ce56648..6787ba6dd43 100644
--- a/src/libsyntax_ext/proc_macro_decls.rs
+++ b/src/libsyntax_ext/proc_macro_decls.rs
@@ -128,7 +128,7 @@ impl<'a> CollectProcMacros<'a> {
             }
         };
 
-        if trait_ident.is_path_segment_keyword() {
+        if !trait_ident.can_be_raw() {
             self.handler.span_err(trait_attr.span(),
                                   &format!("`{}` cannot be a name of derive macro", trait_ident));
         }
@@ -162,7 +162,7 @@ impl<'a> CollectProcMacros<'a> {
                         return None;
                     }
                 };
-                if ident.is_path_segment_keyword() {
+                if !ident.can_be_raw() {
                     self.handler.span_err(
                         attr.span(),
                         &format!("`{}` cannot be a name of derive helper attribute", ident),
diff --git a/src/libsyntax_ext/proc_macro_server.rs b/src/libsyntax_ext/proc_macro_server.rs
index a7ac95ba9ef..c0a9dfe6189 100644
--- a/src/libsyntax_ext/proc_macro_server.rs
+++ b/src/libsyntax_ext/proc_macro_server.rs
@@ -340,12 +340,8 @@ impl Ident {
         if !Self::is_valid(string) {
             panic!("`{:?}` is not a valid identifier", string)
         }
-        if is_raw {
-            let normalized_sym = Symbol::intern(string);
-            if normalized_sym == keywords::Underscore.name() ||
-               ast::Ident::with_empty_ctxt(normalized_sym).is_path_segment_keyword() {
-                panic!("`{:?}` is not a valid raw identifier", string)
-            }
+        if is_raw && !ast::Ident::from_str(string).can_be_raw() {
+            panic!("`{}` cannot be a raw identifier", string);
         }
         Ident { sym, is_raw, span }
     }