Sha256: 87cbe82a90f48efb57ffd09141042698b3e011a21d0d5412154d80324b0a5ef0

Contents?: true

Size: 1.19 KB

Versions: 31

Compression:

Stored size: 1.19 KB

Contents

use crate::parse::ParseStream;
use proc_macro2::{Delimiter, TokenStream};
use std::cmp::Ordering;
use std::iter;

pub(crate) fn between<'a>(begin: ParseStream<'a>, end: ParseStream<'a>) -> TokenStream {
    let end = end.cursor();
    let mut cursor = begin.cursor();
    assert!(crate::buffer::same_buffer(end, cursor));

    let mut tokens = TokenStream::new();
    while cursor != end {
        let (tt, next) = cursor.token_tree().unwrap();

        if crate::buffer::cmp_assuming_same_buffer(end, next) == Ordering::Less {
            // A syntax node can cross the boundary of a None-delimited group
            // due to such groups being transparent to the parser in most cases.
            // Any time this occurs the group is known to be semantically
            // irrelevant. https://github.com/dtolnay/syn/issues/1235
            if let Some((inside, _span, after)) = cursor.group(Delimiter::None) {
                assert!(next == after);
                cursor = inside;
                continue;
            } else {
                panic!("verbatim end must not be inside a delimited group");
            }
        }

        tokens.extend(iter::once(tt));
        cursor = next;
    }
    tokens
}

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
wasmtime-30.0.2 ./ext/cargo-vendor/syn-2.0.98/src/verbatim.rs
wasmtime-29.0.0 ./ext/cargo-vendor/syn-2.0.96/src/verbatim.rs
wasmtime-28.0.0 ./ext/cargo-vendor/syn-2.0.95/src/verbatim.rs
wasmtime-27.0.0 ./ext/cargo-vendor/syn-2.0.89/src/verbatim.rs
wasmtime-26.0.0 ./ext/cargo-vendor/syn-2.0.85/src/verbatim.rs
wasmtime-25.0.2 ./ext/cargo-vendor/syn-2.0.75/src/verbatim.rs
wasmtime-25.0.1 ./ext/cargo-vendor/syn-2.0.75/src/verbatim.rs
wasmtime-25.0.0 ./ext/cargo-vendor/syn-2.0.75/src/verbatim.rs
wasmtime-24.0.0 ./ext/cargo-vendor/syn-2.0.75/src/verbatim.rs
wasmtime-23.0.2 ./ext/cargo-vendor/syn-2.0.48/src/verbatim.rs
wasmtime-22.0.0 ./ext/cargo-vendor/syn-2.0.48/src/verbatim.rs
wasmtime-21.0.1 ./ext/cargo-vendor/syn-2.0.48/src/verbatim.rs
wasmtime-20.0.2 ./ext/cargo-vendor/syn-2.0.48/src/verbatim.rs
wasmtime-20.0.0 ./ext/cargo-vendor/syn-2.0.48/src/verbatim.rs
wasmtime-18.0.3 ./ext/cargo-vendor/syn-2.0.48/src/verbatim.rs
wasmtime-17.0.1 ./ext/cargo-vendor/syn-2.0.48/src/verbatim.rs
wasmtime-17.0.0 ./ext/cargo-vendor/syn-2.0.48/src/verbatim.rs
wasmtime-16.0.0 ./ext/cargo-vendor/syn-2.0.48/src/verbatim.rs
wasmtime-15.0.1 ./ext/cargo-vendor/syn-2.0.48/src/verbatim.rs
wasmtime-15.0.0 ./ext/cargo-vendor/syn-2.0.48/src/verbatim.rs