123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #![allow(clippy::non_ascii_literal)]
- #[macro_use]
- mod macros;
- use proc_macro2::{Delimiter, Group, Ident, Span, TokenStream, TokenTree};
- use quote::quote;
- use std::iter::FromIterator;
- use syn::Stmt;
- #[test]
- fn test_raw_operator() {
- let stmt = syn::parse_str::<Stmt>("let _ = &raw const x;").unwrap();
- snapshot!(stmt, @r###"
- Local(Local {
- pat: Pat::Wild,
- init: Some(Verbatim(`& raw const x`)),
- })
- "###);
- }
- #[test]
- fn test_raw_variable() {
- let stmt = syn::parse_str::<Stmt>("let _ = &raw;").unwrap();
- snapshot!(stmt, @r###"
- Local(Local {
- pat: Pat::Wild,
- init: Some(Expr::Reference {
- expr: Expr::Path {
- path: Path {
- segments: [
- PathSegment {
- ident: "raw",
- arguments: None,
- },
- ],
- },
- },
- }),
- })
- "###);
- }
- #[test]
- fn test_raw_invalid() {
- assert!(syn::parse_str::<Stmt>("let _ = &raw x;").is_err());
- }
- #[test]
- fn test_none_group() {
- // <Ø async fn f() {} Ø>
- let tokens = TokenStream::from_iter(vec![TokenTree::Group(Group::new(
- Delimiter::None,
- TokenStream::from_iter(vec![
- TokenTree::Ident(Ident::new("async", Span::call_site())),
- TokenTree::Ident(Ident::new("fn", Span::call_site())),
- TokenTree::Ident(Ident::new("f", Span::call_site())),
- TokenTree::Group(Group::new(Delimiter::Parenthesis, TokenStream::new())),
- TokenTree::Group(Group::new(Delimiter::Brace, TokenStream::new())),
- ]),
- ))]);
- snapshot!(tokens as Stmt, @r###"
- Item(Item::Fn {
- vis: Inherited,
- sig: Signature {
- asyncness: Some,
- ident: "f",
- generics: Generics,
- output: Default,
- },
- block: Block,
- })
- "###);
- }
- #[test]
- fn test_let_dot_dot() {
- let tokens = quote! {
- let .. = 10;
- };
- snapshot!(tokens as Stmt, @r###"
- Local(Local {
- pat: Pat::Rest,
- init: Some(Expr::Lit {
- lit: 10,
- }),
- })
- "###);
- }
|