summaryrefslogtreecommitdiffstats
path: root/third_party/rust/syn/tests/test_stmt.rs
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/syn/tests/test_stmt.rs')
-rw-r--r--third_party/rust/syn/tests/test_stmt.rs93
1 files changed, 93 insertions, 0 deletions
diff --git a/third_party/rust/syn/tests/test_stmt.rs b/third_party/rust/syn/tests/test_stmt.rs
new file mode 100644
index 0000000000..f444e5b49e
--- /dev/null
+++ b/third_party/rust/syn/tests/test_stmt.rs
@@ -0,0 +1,93 @@
+#![allow(clippy::assertions_on_result_states, 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,
+ }),
+ })
+ "###);
+}