Unnamed repository; edit this file 'description' to name the repository.
Rollup merge of #151505 - bjorn3:proc_macro_refactors, r=petrochenkov,Kobzol
Various refactors to the proc_macro bridge This reduces the amount of types, traits and other abstractions that are involved with the bridge, which should make it easier to understand and modify. This should also help a bit with getting rid of the type marking hack, which is complicating the code a fair bit. Fixes: rust-lang/rust#139810
Matthias Krüger 3 months ago
parent ecb3a42 · parent 643303f · commit e107345
-rw-r--r--crates/proc-macro-srv/src/bridge.rs2
-rw-r--r--crates/proc-macro-srv/src/dylib.rs2
-rw-r--r--crates/proc-macro-srv/src/dylib/proc_macros.rs2
-rw-r--r--crates/proc-macro-srv/src/lib.rs8
-rw-r--r--crates/proc-macro-srv/src/server_impl/rust_analyzer_span.rs105
-rw-r--r--crates/proc-macro-srv/src/server_impl/token_id.rs105
-rw-r--r--crates/proc-macro-srv/src/token_stream.rs42
7 files changed, 131 insertions, 135 deletions
diff --git a/crates/proc-macro-srv/src/bridge.rs b/crates/proc-macro-srv/src/bridge.rs
index fc063a07b5..fc62f9413a 100644
--- a/crates/proc-macro-srv/src/bridge.rs
+++ b/crates/proc-macro-srv/src/bridge.rs
@@ -1,6 +1,6 @@
//! `proc_macro::bridge` newtypes.
-use proc_macro::bridge as pm_bridge;
+use rustc_proc_macro::bridge as pm_bridge;
pub use pm_bridge::{DelimSpan, Diagnostic, ExpnGlobals, LitKind};
diff --git a/crates/proc-macro-srv/src/dylib.rs b/crates/proc-macro-srv/src/dylib.rs
index 02bdcc50d3..8680e9180e 100644
--- a/crates/proc-macro-srv/src/dylib.rs
+++ b/crates/proc-macro-srv/src/dylib.rs
@@ -3,7 +3,7 @@
mod proc_macros;
mod version;
-use proc_macro::bridge;
+use rustc_proc_macro::bridge;
use std::{fmt, fs, io, time::SystemTime};
use temp_dir::TempDir;
diff --git a/crates/proc-macro-srv/src/dylib/proc_macros.rs b/crates/proc-macro-srv/src/dylib/proc_macros.rs
index c763301135..76c5097101 100644
--- a/crates/proc-macro-srv/src/dylib/proc_macros.rs
+++ b/crates/proc-macro-srv/src/dylib/proc_macros.rs
@@ -1,6 +1,6 @@
//! Proc macro ABI
use crate::{ProcMacroClientHandle, ProcMacroKind, ProcMacroSrvSpan, token_stream::TokenStream};
-use proc_macro::bridge;
+use rustc_proc_macro::bridge;
#[repr(transparent)]
pub(crate) struct ProcMacros([bridge::client::ProcMacro]);
diff --git a/crates/proc-macro-srv/src/lib.rs b/crates/proc-macro-srv/src/lib.rs
index f2d1dfbba4..920d58b4e9 100644
--- a/crates/proc-macro-srv/src/lib.rs
+++ b/crates/proc-macro-srv/src/lib.rs
@@ -22,9 +22,9 @@
)]
#![deny(deprecated_safe, clippy::undocumented_unsafe_blocks)]
-extern crate proc_macro;
#[cfg(feature = "in-rust-tree")]
extern crate rustc_driver as _;
+extern crate rustc_proc_macro;
#[cfg(not(feature = "in-rust-tree"))]
extern crate ra_ap_rustc_lexer as rustc_lexer;
@@ -52,7 +52,7 @@ use temp_dir::TempDir;
pub use crate::server_impl::token_id::SpanId;
-pub use proc_macro::Delimiter;
+pub use rustc_proc_macro::Delimiter;
pub use span;
pub use crate::bridge::*;
@@ -181,7 +181,9 @@ impl ProcMacroSrv<'_> {
}
pub trait ProcMacroSrvSpan: Copy + Send + Sync {
- type Server<'a>: proc_macro::bridge::server::Server<TokenStream = crate::token_stream::TokenStream<Self>>;
+ type Server<'a>: rustc_proc_macro::bridge::server::Server<
+ TokenStream = crate::token_stream::TokenStream<Self>,
+ >;
fn make_server<'a>(
call_site: Self,
def_site: Self,
diff --git a/crates/proc-macro-srv/src/server_impl/rust_analyzer_span.rs b/crates/proc-macro-srv/src/server_impl/rust_analyzer_span.rs
index 32725afc55..ec30630c10 100644
--- a/crates/proc-macro-srv/src/server_impl/rust_analyzer_span.rs
+++ b/crates/proc-macro-srv/src/server_impl/rust_analyzer_span.rs
@@ -10,7 +10,7 @@ use std::{
};
use intern::Symbol;
-use proc_macro::bridge::server;
+use rustc_proc_macro::bridge::server;
use span::{FIXUP_ERASED_FILE_AST_ID_MARKER, Span, TextRange, TextSize};
use crate::{
@@ -19,8 +19,6 @@ use crate::{
server_impl::literal_from_str,
};
-pub struct FreeFunctions;
-
pub struct RaSpanServer<'a> {
// FIXME: Report this back to the caller to track as dependencies
pub tracked_env_vars: HashMap<Box<str>, Option<Box<str>>>,
@@ -33,13 +31,28 @@ pub struct RaSpanServer<'a> {
}
impl server::Types for RaSpanServer<'_> {
- type FreeFunctions = FreeFunctions;
type TokenStream = crate::token_stream::TokenStream<Span>;
type Span = Span;
type Symbol = Symbol;
}
-impl server::FreeFunctions for RaSpanServer<'_> {
+impl server::Server for RaSpanServer<'_> {
+ fn globals(&mut self) -> ExpnGlobals<Self::Span> {
+ ExpnGlobals {
+ def_site: self.def_site,
+ call_site: self.call_site,
+ mixed_site: self.mixed_site,
+ }
+ }
+
+ fn intern_symbol(ident: &str) -> Self::Symbol {
+ Symbol::intern(ident)
+ }
+
+ fn with_symbol_string(symbol: &Self::Symbol, f: impl FnOnce(&str)) {
+ f(symbol.as_str())
+ }
+
fn injected_env_var(&mut self, _: &str) -> Option<std::string::String> {
None
}
@@ -58,13 +71,19 @@ impl server::FreeFunctions for RaSpanServer<'_> {
fn emit_diagnostic(&mut self, _: Diagnostic<Self::Span>) {
// FIXME handle diagnostic
}
-}
-impl server::TokenStream for RaSpanServer<'_> {
- fn is_empty(&mut self, stream: &Self::TokenStream) -> bool {
+ fn ts_drop(&mut self, stream: Self::TokenStream) {
+ drop(stream);
+ }
+
+ fn ts_clone(&mut self, stream: &Self::TokenStream) -> Self::TokenStream {
+ stream.clone()
+ }
+
+ fn ts_is_empty(&mut self, stream: &Self::TokenStream) -> bool {
stream.is_empty()
}
- fn from_str(&mut self, src: &str) -> Self::TokenStream {
+ fn ts_from_str(&mut self, src: &str) -> Self::TokenStream {
Self::TokenStream::from_str(src, self.call_site).unwrap_or_else(|e| {
Self::TokenStream::from_str(
&format!("compile_error!(\"failed to parse str to token stream: {e}\")"),
@@ -73,15 +92,15 @@ impl server::TokenStream for RaSpanServer<'_> {
.unwrap()
})
}
- fn to_string(&mut self, stream: &Self::TokenStream) -> String {
+ fn ts_to_string(&mut self, stream: &Self::TokenStream) -> String {
stream.to_string()
}
- fn from_token_tree(&mut self, tree: TokenTree<Self::Span>) -> Self::TokenStream {
+ fn ts_from_token_tree(&mut self, tree: TokenTree<Self::Span>) -> Self::TokenStream {
Self::TokenStream::new(vec![tree])
}
- fn expand_expr(&mut self, self_: &Self::TokenStream) -> Result<Self::TokenStream, ()> {
+ fn ts_expand_expr(&mut self, self_: &Self::TokenStream) -> Result<Self::TokenStream, ()> {
// FIXME: requires db, more importantly this requires name resolution so we would need to
// eagerly expand this proc-macro, but we can't know that this proc-macro is eager until we
// expand it ...
@@ -90,7 +109,7 @@ impl server::TokenStream for RaSpanServer<'_> {
Ok(self_.clone())
}
- fn concat_trees(
+ fn ts_concat_trees(
&mut self,
base: Option<Self::TokenStream>,
trees: Vec<TokenTree<Self::Span>>,
@@ -106,7 +125,7 @@ impl server::TokenStream for RaSpanServer<'_> {
}
}
- fn concat_streams(
+ fn ts_concat_streams(
&mut self,
base: Option<Self::TokenStream>,
streams: Vec<Self::TokenStream>,
@@ -118,28 +137,26 @@ impl server::TokenStream for RaSpanServer<'_> {
stream
}
- fn into_trees(&mut self, stream: Self::TokenStream) -> Vec<TokenTree<Self::Span>> {
+ fn ts_into_trees(&mut self, stream: Self::TokenStream) -> Vec<TokenTree<Self::Span>> {
(*stream.0).clone()
}
-}
-impl server::Span for RaSpanServer<'_> {
- fn debug(&mut self, span: Self::Span) -> String {
+ fn span_debug(&mut self, span: Self::Span) -> String {
format!("{:?}", span)
}
- fn file(&mut self, span: Self::Span) -> String {
+ fn span_file(&mut self, span: Self::Span) -> String {
self.callback.as_mut().map(|cb| cb.file(span.anchor.file_id.file_id())).unwrap_or_default()
}
- fn local_file(&mut self, span: Self::Span) -> Option<String> {
+ fn span_local_file(&mut self, span: Self::Span) -> Option<String> {
self.callback.as_mut().and_then(|cb| cb.local_file(span.anchor.file_id.file_id()))
}
- fn save_span(&mut self, _span: Self::Span) -> usize {
+ fn span_save_span(&mut self, _span: Self::Span) -> usize {
// FIXME, quote is incompatible with third-party tools
// This is called by the quote proc-macro which is expanded when the proc-macro is compiled
// As such, r-a will never observe this
0
}
- fn recover_proc_macro_span(&mut self, _id: usize) -> Self::Span {
+ fn span_recover_proc_macro_span(&mut self, _id: usize) -> Self::Span {
// FIXME, quote is incompatible with third-party tools
// This is called by the expansion of quote!, r-a will observe this, but we don't have
// access to the spans that were encoded
@@ -149,23 +166,23 @@ impl server::Span for RaSpanServer<'_> {
///
/// See PR:
/// https://github.com/rust-lang/rust/pull/55780
- fn source_text(&mut self, span: Self::Span) -> Option<String> {
+ fn span_source_text(&mut self, span: Self::Span) -> Option<String> {
self.callback.as_mut()?.source_text(span)
}
- fn parent(&mut self, _span: Self::Span) -> Option<Self::Span> {
+ fn span_parent(&mut self, _span: Self::Span) -> Option<Self::Span> {
// FIXME requires db, looks up the parent call site
None
}
- fn source(&mut self, span: Self::Span) -> Self::Span {
+ fn span_source(&mut self, span: Self::Span) -> Self::Span {
// FIXME requires db, returns the top level call site
span
}
- fn byte_range(&mut self, span: Self::Span) -> Range<usize> {
+ fn span_byte_range(&mut self, span: Self::Span) -> Range<usize> {
// FIXME requires db to resolve the ast id, THIS IS NOT INCREMENTAL
Range { start: span.range.start().into(), end: span.range.end().into() }
}
- fn join(&mut self, first: Self::Span, second: Self::Span) -> Option<Self::Span> {
+ fn span_join(&mut self, first: Self::Span, second: Self::Span) -> Option<Self::Span> {
// We can't modify the span range for fixup spans, those are meaningful to fixup, so just
// prefer the non-fixup span.
if first.anchor.ast_id == FIXUP_ERASED_FILE_AST_ID_MARKER {
@@ -193,7 +210,7 @@ impl server::Span for RaSpanServer<'_> {
ctx: second.ctx,
})
}
- fn subspan(
+ fn span_subspan(
&mut self,
span: Self::Span,
start: Bound<usize>,
@@ -237,11 +254,11 @@ impl server::Span for RaSpanServer<'_> {
})
}
- fn resolved_at(&mut self, span: Self::Span, at: Self::Span) -> Self::Span {
+ fn span_resolved_at(&mut self, span: Self::Span, at: Self::Span) -> Self::Span {
Span { ctx: at.ctx, ..span }
}
- fn end(&mut self, span: Self::Span) -> Self::Span {
+ fn span_end(&mut self, span: Self::Span) -> Self::Span {
// We can't modify the span range for fixup spans, those are meaningful to fixup.
if span.anchor.ast_id == FIXUP_ERASED_FILE_AST_ID_MARKER {
return span;
@@ -249,7 +266,7 @@ impl server::Span for RaSpanServer<'_> {
Span { range: TextRange::empty(span.range.end()), ..span }
}
- fn start(&mut self, span: Self::Span) -> Self::Span {
+ fn span_start(&mut self, span: Self::Span) -> Self::Span {
// We can't modify the span range for fixup spans, those are meaningful to fixup.
if span.anchor.ast_id == FIXUP_ERASED_FILE_AST_ID_MARKER {
return span;
@@ -257,38 +274,18 @@ impl server::Span for RaSpanServer<'_> {
Span { range: TextRange::empty(span.range.start()), ..span }
}
- fn line(&mut self, _span: Self::Span) -> usize {
+ fn span_line(&mut self, _span: Self::Span) -> usize {
// FIXME requires db to resolve line index, THIS IS NOT INCREMENTAL
1
}
- fn column(&mut self, _span: Self::Span) -> usize {
+ fn span_column(&mut self, _span: Self::Span) -> usize {
// FIXME requires db to resolve line index, THIS IS NOT INCREMENTAL
1
}
-}
-impl server::Symbol for RaSpanServer<'_> {
- fn normalize_and_validate_ident(&mut self, string: &str) -> Result<Self::Symbol, ()> {
+ fn symbol_normalize_and_validate_ident(&mut self, string: &str) -> Result<Self::Symbol, ()> {
// FIXME: nfc-normalize and validate idents
Ok(<Self as server::Server>::intern_symbol(string))
}
}
-
-impl server::Server for RaSpanServer<'_> {
- fn globals(&mut self) -> ExpnGlobals<Self::Span> {
- ExpnGlobals {
- def_site: self.def_site,
- call_site: self.call_site,
- mixed_site: self.mixed_site,
- }
- }
-
- fn intern_symbol(ident: &str) -> Self::Symbol {
- Symbol::intern(ident)
- }
-
- fn with_symbol_string(symbol: &Self::Symbol, f: impl FnOnce(&str)) {
- f(symbol.as_str())
- }
-}
diff --git a/crates/proc-macro-srv/src/server_impl/token_id.rs b/crates/proc-macro-srv/src/server_impl/token_id.rs
index a968ea4cd2..3bf07290c8 100644
--- a/crates/proc-macro-srv/src/server_impl/token_id.rs
+++ b/crates/proc-macro-srv/src/server_impl/token_id.rs
@@ -6,7 +6,7 @@ use std::{
};
use intern::Symbol;
-use proc_macro::bridge::server;
+use rustc_proc_macro::bridge::server;
use crate::{
ProcMacroClientHandle,
@@ -25,8 +25,6 @@ impl std::fmt::Debug for SpanId {
type Span = SpanId;
-pub struct FreeFunctions;
-
pub struct SpanIdServer<'a> {
// FIXME: Report this back to the caller to track as dependencies
pub tracked_env_vars: HashMap<Box<str>, Option<Box<str>>>,
@@ -39,13 +37,28 @@ pub struct SpanIdServer<'a> {
}
impl server::Types for SpanIdServer<'_> {
- type FreeFunctions = FreeFunctions;
type TokenStream = crate::token_stream::TokenStream<Span>;
type Span = Span;
type Symbol = Symbol;
}
-impl server::FreeFunctions for SpanIdServer<'_> {
+impl server::Server for SpanIdServer<'_> {
+ fn globals(&mut self) -> ExpnGlobals<Self::Span> {
+ ExpnGlobals {
+ def_site: self.def_site,
+ call_site: self.call_site,
+ mixed_site: self.mixed_site,
+ }
+ }
+
+ fn intern_symbol(ident: &str) -> Self::Symbol {
+ Symbol::intern(ident)
+ }
+
+ fn with_symbol_string(symbol: &Self::Symbol, f: impl FnOnce(&str)) {
+ f(symbol.as_str())
+ }
+
fn injected_env_var(&mut self, _: &str) -> Option<std::string::String> {
None
}
@@ -61,13 +74,19 @@ impl server::FreeFunctions for SpanIdServer<'_> {
}
fn emit_diagnostic(&mut self, _: Diagnostic<Self::Span>) {}
-}
-impl server::TokenStream for SpanIdServer<'_> {
- fn is_empty(&mut self, stream: &Self::TokenStream) -> bool {
+ fn ts_drop(&mut self, stream: Self::TokenStream) {
+ drop(stream);
+ }
+
+ fn ts_clone(&mut self, stream: &Self::TokenStream) -> Self::TokenStream {
+ stream.clone()
+ }
+
+ fn ts_is_empty(&mut self, stream: &Self::TokenStream) -> bool {
stream.is_empty()
}
- fn from_str(&mut self, src: &str) -> Self::TokenStream {
+ fn ts_from_str(&mut self, src: &str) -> Self::TokenStream {
Self::TokenStream::from_str(src, self.call_site).unwrap_or_else(|e| {
Self::TokenStream::from_str(
&format!("compile_error!(\"failed to parse str to token stream: {e}\")"),
@@ -76,18 +95,18 @@ impl server::TokenStream for SpanIdServer<'_> {
.unwrap()
})
}
- fn to_string(&mut self, stream: &Self::TokenStream) -> String {
+ fn ts_to_string(&mut self, stream: &Self::TokenStream) -> String {
stream.to_string()
}
- fn from_token_tree(&mut self, tree: TokenTree<Self::Span>) -> Self::TokenStream {
+ fn ts_from_token_tree(&mut self, tree: TokenTree<Self::Span>) -> Self::TokenStream {
Self::TokenStream::new(vec![tree])
}
- fn expand_expr(&mut self, self_: &Self::TokenStream) -> Result<Self::TokenStream, ()> {
+ fn ts_expand_expr(&mut self, self_: &Self::TokenStream) -> Result<Self::TokenStream, ()> {
Ok(self_.clone())
}
- fn concat_trees(
+ fn ts_concat_trees(
&mut self,
base: Option<Self::TokenStream>,
trees: Vec<TokenTree<Self::Span>>,
@@ -103,7 +122,7 @@ impl server::TokenStream for SpanIdServer<'_> {
}
}
- fn concat_streams(
+ fn ts_concat_streams(
&mut self,
base: Option<Self::TokenStream>,
streams: Vec<Self::TokenStream>,
@@ -115,49 +134,47 @@ impl server::TokenStream for SpanIdServer<'_> {
stream
}
- fn into_trees(&mut self, stream: Self::TokenStream) -> Vec<TokenTree<Self::Span>> {
+ fn ts_into_trees(&mut self, stream: Self::TokenStream) -> Vec<TokenTree<Self::Span>> {
(*stream.0).clone()
}
-}
-impl server::Span for SpanIdServer<'_> {
- fn debug(&mut self, span: Self::Span) -> String {
+ fn span_debug(&mut self, span: Self::Span) -> String {
format!("{:?}", span.0)
}
- fn file(&mut self, _span: Self::Span) -> String {
+ fn span_file(&mut self, _span: Self::Span) -> String {
String::new()
}
- fn local_file(&mut self, _span: Self::Span) -> Option<String> {
+ fn span_local_file(&mut self, _span: Self::Span) -> Option<String> {
None
}
- fn save_span(&mut self, _span: Self::Span) -> usize {
+ fn span_save_span(&mut self, _span: Self::Span) -> usize {
0
}
- fn recover_proc_macro_span(&mut self, _id: usize) -> Self::Span {
+ fn span_recover_proc_macro_span(&mut self, _id: usize) -> Self::Span {
self.call_site
}
/// Recent feature, not yet in the proc_macro
///
/// See PR:
/// https://github.com/rust-lang/rust/pull/55780
- fn source_text(&mut self, _span: Self::Span) -> Option<String> {
+ fn span_source_text(&mut self, _span: Self::Span) -> Option<String> {
None
}
- fn parent(&mut self, _span: Self::Span) -> Option<Self::Span> {
+ fn span_parent(&mut self, _span: Self::Span) -> Option<Self::Span> {
None
}
- fn source(&mut self, span: Self::Span) -> Self::Span {
+ fn span_source(&mut self, span: Self::Span) -> Self::Span {
span
}
- fn byte_range(&mut self, _span: Self::Span) -> Range<usize> {
+ fn span_byte_range(&mut self, _span: Self::Span) -> Range<usize> {
Range { start: 0, end: 0 }
}
- fn join(&mut self, first: Self::Span, _second: Self::Span) -> Option<Self::Span> {
+ fn span_join(&mut self, first: Self::Span, _second: Self::Span) -> Option<Self::Span> {
// Just return the first span again, because some macros will unwrap the result.
Some(first)
}
- fn subspan(
+ fn span_subspan(
&mut self,
span: Self::Span,
_start: Bound<usize>,
@@ -166,48 +183,28 @@ impl server::Span for SpanIdServer<'_> {
// Just return the span again, because some macros will unwrap the result.
Some(span)
}
- fn resolved_at(&mut self, _span: Self::Span, _at: Self::Span) -> Self::Span {
+ fn span_resolved_at(&mut self, _span: Self::Span, _at: Self::Span) -> Self::Span {
self.call_site
}
- fn end(&mut self, _self_: Self::Span) -> Self::Span {
+ fn span_end(&mut self, _self_: Self::Span) -> Self::Span {
self.call_site
}
- fn start(&mut self, _self_: Self::Span) -> Self::Span {
+ fn span_start(&mut self, _self_: Self::Span) -> Self::Span {
self.call_site
}
- fn line(&mut self, _span: Self::Span) -> usize {
+ fn span_line(&mut self, _span: Self::Span) -> usize {
1
}
- fn column(&mut self, _span: Self::Span) -> usize {
+ fn span_column(&mut self, _span: Self::Span) -> usize {
1
}
-}
-impl server::Symbol for SpanIdServer<'_> {
- fn normalize_and_validate_ident(&mut self, string: &str) -> Result<Self::Symbol, ()> {
+ fn symbol_normalize_and_validate_ident(&mut self, string: &str) -> Result<Self::Symbol, ()> {
// FIXME: nfc-normalize and validate idents
Ok(<Self as server::Server>::intern_symbol(string))
}
}
-
-impl server::Server for SpanIdServer<'_> {
- fn globals(&mut self) -> ExpnGlobals<Self::Span> {
- ExpnGlobals {
- def_site: self.def_site,
- call_site: self.call_site,
- mixed_site: self.mixed_site,
- }
- }
-
- fn intern_symbol(ident: &str) -> Self::Symbol {
- Symbol::intern(ident)
- }
-
- fn with_symbol_string(symbol: &Self::Symbol, f: impl FnOnce(&str)) {
- f(symbol.as_str())
- }
-}
diff --git a/crates/proc-macro-srv/src/token_stream.rs b/crates/proc-macro-srv/src/token_stream.rs
index 36827d2561..2358f6963c 100644
--- a/crates/proc-macro-srv/src/token_stream.rs
+++ b/crates/proc-macro-srv/src/token_stream.rs
@@ -4,8 +4,8 @@ use core::fmt;
use std::{mem, sync::Arc};
use intern::Symbol;
-use proc_macro::Delimiter;
use rustc_lexer::{DocStyle, LiteralKind};
+use rustc_proc_macro::Delimiter;
use crate::bridge::{DelimSpan, Group, Ident, LitKind, Literal, Punct, TokenTree};
@@ -52,7 +52,7 @@ impl<S> TokenStream<S> {
S: SpanLike + Copy,
{
let mut groups = Vec::new();
- groups.push((proc_macro::Delimiter::None, 0..0, vec![]));
+ groups.push((rustc_proc_macro::Delimiter::None, 0..0, vec![]));
let mut offset = 0;
let mut tokens = rustc_lexer::tokenize(s, rustc_lexer::FrontmatterAllowed::No).peekable();
while let Some(token) = tokens.next() {
@@ -102,7 +102,7 @@ impl<S> TokenStream<S> {
};
match token.kind {
rustc_lexer::TokenKind::OpenParen => {
- groups.push((proc_macro::Delimiter::Parenthesis, range, vec![]))
+ groups.push((rustc_proc_macro::Delimiter::Parenthesis, range, vec![]))
}
rustc_lexer::TokenKind::CloseParen if *open_delim != Delimiter::Parenthesis => {
return if *open_delim == Delimiter::None {
@@ -130,7 +130,7 @@ impl<S> TokenStream<S> {
);
}
rustc_lexer::TokenKind::OpenBrace => {
- groups.push((proc_macro::Delimiter::Brace, range, vec![]))
+ groups.push((rustc_proc_macro::Delimiter::Brace, range, vec![]))
}
rustc_lexer::TokenKind::CloseBrace if *open_delim != Delimiter::Brace => {
return if *open_delim == Delimiter::None {
@@ -158,7 +158,7 @@ impl<S> TokenStream<S> {
);
}
rustc_lexer::TokenKind::OpenBracket => {
- groups.push((proc_macro::Delimiter::Bracket, range, vec![]))
+ groups.push((rustc_proc_macro::Delimiter::Bracket, range, vec![]))
}
rustc_lexer::TokenKind::CloseBracket if *open_delim != Delimiter::Bracket => {
return if *open_delim == Delimiter::None {
@@ -460,10 +460,10 @@ fn display_token_tree<S>(
f,
"{}",
match delimiter {
- proc_macro::Delimiter::Parenthesis => "(",
- proc_macro::Delimiter::Brace => "{",
- proc_macro::Delimiter::Bracket => "[",
- proc_macro::Delimiter::None => "",
+ rustc_proc_macro::Delimiter::Parenthesis => "(",
+ rustc_proc_macro::Delimiter::Brace => "{",
+ rustc_proc_macro::Delimiter::Bracket => "[",
+ rustc_proc_macro::Delimiter::None => "",
}
)?;
if let Some(stream) = stream {
@@ -473,10 +473,10 @@ fn display_token_tree<S>(
f,
"{}",
match delimiter {
- proc_macro::Delimiter::Parenthesis => ")",
- proc_macro::Delimiter::Brace => "}",
- proc_macro::Delimiter::Bracket => "]",
- proc_macro::Delimiter::None => "",
+ rustc_proc_macro::Delimiter::Parenthesis => ")",
+ rustc_proc_macro::Delimiter::Brace => "}",
+ rustc_proc_macro::Delimiter::Bracket => "]",
+ rustc_proc_macro::Delimiter::None => "",
}
)?;
}
@@ -587,16 +587,16 @@ fn debug_token_tree<S: fmt::Debug>(
f,
"GROUP {}{} {:#?} {:#?} {:#?}",
match delimiter {
- proc_macro::Delimiter::Parenthesis => "(",
- proc_macro::Delimiter::Brace => "{",
- proc_macro::Delimiter::Bracket => "[",
- proc_macro::Delimiter::None => "$",
+ rustc_proc_macro::Delimiter::Parenthesis => "(",
+ rustc_proc_macro::Delimiter::Brace => "{",
+ rustc_proc_macro::Delimiter::Bracket => "[",
+ rustc_proc_macro::Delimiter::None => "$",
},
match delimiter {
- proc_macro::Delimiter::Parenthesis => ")",
- proc_macro::Delimiter::Brace => "}",
- proc_macro::Delimiter::Bracket => "]",
- proc_macro::Delimiter::None => "$",
+ rustc_proc_macro::Delimiter::Parenthesis => ")",
+ rustc_proc_macro::Delimiter::Brace => "}",
+ rustc_proc_macro::Delimiter::Bracket => "]",
+ rustc_proc_macro::Delimiter::None => "$",
},
span.open,
span.close,