Skip to content

Commit df925fd

Browse files
committed
review fixups
1 parent af51424 commit df925fd

File tree

4 files changed

+43
-70
lines changed

4 files changed

+43
-70
lines changed

compiler/rustc_expand/src/proc_macro_server.rs

+4-3
Original file line numberDiff line numberDiff line change
@@ -498,12 +498,13 @@ impl server::TokenStream for Rustc<'_, '_> {
498498
}
499499
builder.build()
500500
}
501-
fn into_iter(
501+
fn into_trees(
502502
&mut self,
503503
stream: Self::TokenStream,
504504
) -> Vec<TokenTree<Self::Group, Self::Punct, Self::Ident, Self::Literal>> {
505-
// FIXME: This is a raw port of the previous approach, and can probably
506-
// be optimized.
505+
// FIXME: This is a raw port of the previous approach (which had a
506+
// `TokenStreamIter` server-side object with a single `next` method),
507+
// and can probably be optimized (for bulk conversion).
507508
let mut cursor = stream.into_trees();
508509
let mut stack = Vec::new();
509510
let mut tts = Vec::new();

library/proc_macro/src/bridge/mod.rs

+24-29
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,9 @@ macro_rules! with_api {
7373
) -> $S::TokenStream;
7474
fn concat_streams(
7575
base: Option<$S::TokenStream>,
76-
trees: Vec<$S::TokenStream>,
76+
streams: Vec<$S::TokenStream>,
7777
) -> $S::TokenStream;
78-
fn into_iter(
78+
fn into_trees(
7979
$self: $S::TokenStream
8080
) -> Vec<TokenTree<$S::Group, $S::Punct, $S::Ident, $S::Literal>>;
8181
},
@@ -307,32 +307,6 @@ impl<'a, T, M> Unmark for &'a mut Marked<T, M> {
307307
}
308308
}
309309

310-
impl<T: Mark> Mark for Option<T> {
311-
type Unmarked = Option<T::Unmarked>;
312-
fn mark(unmarked: Self::Unmarked) -> Self {
313-
unmarked.map(T::mark)
314-
}
315-
}
316-
impl<T: Unmark> Unmark for Option<T> {
317-
type Unmarked = Option<T::Unmarked>;
318-
fn unmark(self) -> Self::Unmarked {
319-
self.map(T::unmark)
320-
}
321-
}
322-
323-
impl<T: Mark, E: Mark> Mark for Result<T, E> {
324-
type Unmarked = Result<T::Unmarked, E::Unmarked>;
325-
fn mark(unmarked: Self::Unmarked) -> Self {
326-
unmarked.map(T::mark).map_err(E::mark)
327-
}
328-
}
329-
impl<T: Unmark, E: Unmark> Unmark for Result<T, E> {
330-
type Unmarked = Result<T::Unmarked, E::Unmarked>;
331-
fn unmark(self) -> Self::Unmarked {
332-
self.map(T::unmark).map_err(E::unmark)
333-
}
334-
}
335-
336310
impl<T: Mark> Mark for Vec<T> {
337311
type Unmarked = Vec<T::Unmarked>;
338312
fn mark(unmarked: Self::Unmarked) -> Self {
@@ -378,7 +352,6 @@ mark_noop! {
378352
Level,
379353
LineColumn,
380354
Spacing,
381-
Bound<usize>,
382355
}
383356

384357
rpc_encode_decode!(
@@ -438,6 +411,28 @@ macro_rules! compound_traits {
438411
};
439412
}
440413

414+
compound_traits!(
415+
enum Bound<T> {
416+
Included(x),
417+
Excluded(x),
418+
Unbounded,
419+
}
420+
);
421+
422+
compound_traits!(
423+
enum Option<T> {
424+
Some(t),
425+
None,
426+
}
427+
);
428+
429+
compound_traits!(
430+
enum Result<T, E> {
431+
Ok(t),
432+
Err(e),
433+
}
434+
);
435+
441436
#[derive(Clone)]
442437
pub enum TokenTree<G, P, I, L> {
443438
Group(G),

library/proc_macro/src/bridge/rpc.rs

-23
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ use std::any::Any;
44
use std::char;
55
use std::io::Write;
66
use std::num::NonZeroU32;
7-
use std::ops::Bound;
87
use std::str;
98

109
pub(super) type Writer = super::buffer::Buffer;
@@ -186,28 +185,6 @@ impl<'a, S, A: for<'s> DecodeMut<'a, 's, S>, B: for<'s> DecodeMut<'a, 's, S>> De
186185
}
187186
}
188187

189-
rpc_encode_decode!(
190-
enum Bound<T> {
191-
Included(x),
192-
Excluded(x),
193-
Unbounded,
194-
}
195-
);
196-
197-
rpc_encode_decode!(
198-
enum Option<T> {
199-
None,
200-
Some(x),
201-
}
202-
);
203-
204-
rpc_encode_decode!(
205-
enum Result<T, E> {
206-
Ok(x),
207-
Err(e),
208-
}
209-
);
210-
211188
impl<S> Encode<S> for &[u8] {
212189
fn encode(self, w: &mut Writer, s: &mut S) {
213190
self.len().encode(w, s);

library/proc_macro/src/lib.rs

+15-15
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ impl From<TokenTree> for TokenStream {
235235

236236
/// Non-generic helper for implementing `FromIterator<TokenTree>` and
237237
/// `Extend<TokenTree>` with less monomorphization in calling crates.
238-
struct ExtendStreamWithTreesHelper {
238+
struct ConcatTreesHelper {
239239
trees: Vec<
240240
bridge::TokenTree<
241241
bridge::client::Group,
@@ -246,9 +246,9 @@ struct ExtendStreamWithTreesHelper {
246246
>,
247247
}
248248

249-
impl ExtendStreamWithTreesHelper {
249+
impl ConcatTreesHelper {
250250
fn new(capacity: usize) -> Self {
251-
ExtendStreamWithTreesHelper { trees: Vec::with_capacity(capacity) }
251+
ConcatTreesHelper { trees: Vec::with_capacity(capacity) }
252252
}
253253

254254
fn push(&mut self, tree: TokenTree) {
@@ -263,7 +263,7 @@ impl ExtendStreamWithTreesHelper {
263263
}
264264
}
265265

266-
fn extend(self, stream: &mut TokenStream) {
266+
fn append_to(self, stream: &mut TokenStream) {
267267
if self.trees.is_empty() {
268268
return;
269269
}
@@ -273,13 +273,13 @@ impl ExtendStreamWithTreesHelper {
273273

274274
/// Non-generic helper for implementing `FromIterator<TokenStream>` and
275275
/// `Extend<TokenStream>` with less monomorphization in calling crates.
276-
struct ExtendStreamWithStreamsHelper {
276+
struct ConcatStreamsHelper {
277277
streams: Vec<bridge::client::TokenStream>,
278278
}
279279

280-
impl ExtendStreamWithStreamsHelper {
280+
impl ConcatStreamsHelper {
281281
fn new(capacity: usize) -> Self {
282-
ExtendStreamWithStreamsHelper { streams: Vec::with_capacity(capacity) }
282+
ConcatStreamsHelper { streams: Vec::with_capacity(capacity) }
283283
}
284284

285285
fn push(&mut self, stream: TokenStream) {
@@ -296,7 +296,7 @@ impl ExtendStreamWithStreamsHelper {
296296
}
297297
}
298298

299-
fn extend(mut self, stream: &mut TokenStream) {
299+
fn append_to(mut self, stream: &mut TokenStream) {
300300
if self.streams.is_empty() {
301301
return;
302302
}
@@ -314,7 +314,7 @@ impl ExtendStreamWithStreamsHelper {
314314
impl iter::FromIterator<TokenTree> for TokenStream {
315315
fn from_iter<I: IntoIterator<Item = TokenTree>>(trees: I) -> Self {
316316
let iter = trees.into_iter();
317-
let mut builder = ExtendStreamWithTreesHelper::new(iter.size_hint().0);
317+
let mut builder = ConcatTreesHelper::new(iter.size_hint().0);
318318
iter.for_each(|tree| builder.push(tree));
319319
builder.build()
320320
}
@@ -326,7 +326,7 @@ impl iter::FromIterator<TokenTree> for TokenStream {
326326
impl iter::FromIterator<TokenStream> for TokenStream {
327327
fn from_iter<I: IntoIterator<Item = TokenStream>>(streams: I) -> Self {
328328
let iter = streams.into_iter();
329-
let mut builder = ExtendStreamWithStreamsHelper::new(iter.size_hint().0);
329+
let mut builder = ConcatStreamsHelper::new(iter.size_hint().0);
330330
iter.for_each(|stream| builder.push(stream));
331331
builder.build()
332332
}
@@ -336,19 +336,19 @@ impl iter::FromIterator<TokenStream> for TokenStream {
336336
impl Extend<TokenTree> for TokenStream {
337337
fn extend<I: IntoIterator<Item = TokenTree>>(&mut self, trees: I) {
338338
let iter = trees.into_iter();
339-
let mut builder = ExtendStreamWithTreesHelper::new(iter.size_hint().0);
339+
let mut builder = ConcatTreesHelper::new(iter.size_hint().0);
340340
iter.for_each(|tree| builder.push(tree));
341-
builder.extend(self);
341+
builder.append_to(self);
342342
}
343343
}
344344

345345
#[stable(feature = "token_stream_extend", since = "1.30.0")]
346346
impl Extend<TokenStream> for TokenStream {
347347
fn extend<I: IntoIterator<Item = TokenStream>>(&mut self, streams: I) {
348348
let iter = streams.into_iter();
349-
let mut builder = ExtendStreamWithStreamsHelper::new(iter.size_hint().0);
349+
let mut builder = ConcatStreamsHelper::new(iter.size_hint().0);
350350
iter.for_each(|stream| builder.push(stream));
351-
builder.extend(self);
351+
builder.append_to(self);
352352
}
353353
}
354354

@@ -393,7 +393,7 @@ pub mod token_stream {
393393
type IntoIter = IntoIter;
394394

395395
fn into_iter(self) -> IntoIter {
396-
IntoIter(self.0.map(|v| v.into_iter()).unwrap_or_default().into_iter())
396+
IntoIter(self.0.map(|v| v.into_trees()).unwrap_or_default().into_iter())
397397
}
398398
}
399399
}

0 commit comments

Comments
 (0)