]> git.lizzy.rs Git - rust.git/blob - crates/parser/src/tests/top_entries.rs
split prefix/top tests
[rust.git] / crates / parser / src / tests / top_entries.rs
1 use expect_test::expect;
2
3 use crate::TopEntryPoint;
4
5 #[test]
6 fn source_file() {
7     check(
8         TopEntryPoint::SourceFile,
9         "",
10         expect![[r#"
11         SOURCE_FILE
12     "#]],
13     );
14
15     check(
16         TopEntryPoint::SourceFile,
17         "struct S;",
18         expect![[r#"
19         SOURCE_FILE
20           STRUCT
21             STRUCT_KW "struct"
22             WHITESPACE " "
23             NAME
24               IDENT "S"
25             SEMICOLON ";"
26     "#]],
27     );
28
29     check(
30         TopEntryPoint::SourceFile,
31         "@error@",
32         expect![[r#"
33         SOURCE_FILE
34           ERROR
35             AT "@"
36           MACRO_CALL
37             PATH
38               PATH_SEGMENT
39                 NAME_REF
40                   IDENT "error"
41           ERROR
42             AT "@"
43         error 0: expected an item
44         error 6: expected BANG
45         error 6: expected `{`, `[`, `(`
46         error 6: expected SEMICOLON
47         error 6: expected an item
48     "#]],
49     );
50 }
51
52 #[test]
53 fn macro_stmt() {
54     check(
55         TopEntryPoint::MacroStmts,
56         "#!/usr/bin/rust",
57         expect![[r##"
58             MACRO_STMTS
59               ERROR
60                 SHEBANG "#!/usr/bin/rust"
61             error 0: expected expression
62         "##]],
63     );
64     check(
65         TopEntryPoint::MacroStmts,
66         "let x = 1 2 struct S;",
67         expect![[r#"
68             MACRO_STMTS
69               LET_STMT
70                 LET_KW "let"
71                 WHITESPACE " "
72                 IDENT_PAT
73                   NAME
74                     IDENT "x"
75                 WHITESPACE " "
76                 EQ "="
77                 WHITESPACE " "
78                 LITERAL
79                   INT_NUMBER "1"
80               WHITESPACE " "
81               EXPR_STMT
82                 LITERAL
83                   INT_NUMBER "2"
84               WHITESPACE " "
85               STRUCT
86                 STRUCT_KW "struct"
87                 WHITESPACE " "
88                 NAME
89                   IDENT "S"
90                 SEMICOLON ";"
91         "#]],
92     );
93 }
94
95 #[track_caller]
96 fn check(entry: TopEntryPoint, input: &str, expect: expect_test::Expect) {
97     let (parsed, _errors) = super::parse(entry, input);
98     expect.assert_eq(&parsed)
99 }