about summary refs log tree commit diff
diff options
context:
space:
mode:
authorCaleb Cartwright <caleb.cartwright@outlook.com>2021-12-28 19:23:51 -0600
committerCaleb Cartwright <calebcartwright@users.noreply.github.com>2021-12-28 20:25:17 -0600
commitf935f0cf89f53a9df3a443b9cc09bb1bcc33064b (patch)
tree512e603b1fe4d22c50ac2d080ab366f56a271c55
parent50bbb43dab5af3b42338bd6a9748da9a27136bf2 (diff)
downloadrust-f935f0cf89f53a9df3a443b9cc09bb1bcc33064b.tar.gz
rust-f935f0cf89f53a9df3a443b9cc09bb1bcc33064b.zip
feat: support parsing asm! args
-rw-r--r--src/lib.rs1
-rw-r--r--src/parse/macros/asm.rs11
-rw-r--r--src/parse/macros/mod.rs1
3 files changed, 13 insertions, 0 deletions
diff --git a/src/lib.rs b/src/lib.rs
index f59ebad97ce..ad23b16e02e 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -15,6 +15,7 @@ extern crate log;
 // N.B. these crates are loaded from the sysroot, so they need extern crate.
 extern crate rustc_ast;
 extern crate rustc_ast_pretty;
+extern crate rustc_builtin_macros;
 extern crate rustc_data_structures;
 extern crate rustc_errors;
 extern crate rustc_expand;
diff --git a/src/parse/macros/asm.rs b/src/parse/macros/asm.rs
new file mode 100644
index 00000000000..cc9fb5072ce
--- /dev/null
+++ b/src/parse/macros/asm.rs
@@ -0,0 +1,11 @@
+use rustc_ast::ast;
+use rustc_builtin_macros::asm::{parse_asm_args, AsmArgs};
+
+use crate::rewrite::RewriteContext;
+
+#[allow(dead_code)]
+pub(crate) fn parse_asm(context: &RewriteContext<'_>, mac: &ast::MacCall) -> Option<AsmArgs> {
+    let ts = mac.args.inner_tokens();
+    let mut parser = super::build_parser(context, ts);
+    parse_asm_args(&mut parser, context.parse_sess.inner(), mac.span(), false).ok()
+}
diff --git a/src/parse/macros/mod.rs b/src/parse/macros/mod.rs
index 7e12f82af15..2e9ce1d35f4 100644
--- a/src/parse/macros/mod.rs
+++ b/src/parse/macros/mod.rs
@@ -10,6 +10,7 @@ use rustc_span::Symbol;
 use crate::macros::MacroArg;
 use crate::rewrite::RewriteContext;
 
+pub(crate) mod asm;
 pub(crate) mod cfg_if;
 pub(crate) mod lazy_static;