@@ -21,12 +21,48 @@ fn stmt() {
21
21
check_prefix ( PrefixEntryPoint :: Stmt , "92; fn" , "92" ) ;
22
22
check_prefix ( PrefixEntryPoint :: Stmt , "let _ = 92; 1" , "let _ = 92" ) ;
23
23
check_prefix ( PrefixEntryPoint :: Stmt , "pub fn f() {} = 92" , "pub fn f() {}" ) ;
24
+ check_prefix ( PrefixEntryPoint :: Stmt , "struct S;;" , "struct S;" ) ;
25
+ check_prefix ( PrefixEntryPoint :: Stmt , "fn f() {};" , "fn f() {}" ) ;
24
26
check_prefix ( PrefixEntryPoint :: Stmt , ";;;" , ";" ) ;
25
27
check_prefix ( PrefixEntryPoint :: Stmt , "+" , "+" ) ;
26
28
check_prefix ( PrefixEntryPoint :: Stmt , "@" , "@" ) ;
27
29
check_prefix ( PrefixEntryPoint :: Stmt , "loop {} - 1" , "loop {}" ) ;
28
30
}
29
31
32
+ #[ test]
33
+ fn pat ( ) {
34
+ check_prefix ( PrefixEntryPoint :: Pat , "x y" , "x" ) ;
35
+ check_prefix ( PrefixEntryPoint :: Pat , "fn f() {}" , "fn" ) ;
36
+ // FIXME: This one is wrong, we should consume only one pattern.
37
+ check_prefix ( PrefixEntryPoint :: Pat , ".. .." , ".. .." ) ;
38
+ }
39
+
40
+ #[ test]
41
+ fn ty ( ) {
42
+ check_prefix ( PrefixEntryPoint :: Ty , "fn() foo" , "fn()" ) ;
43
+ check_prefix ( PrefixEntryPoint :: Ty , "Clone + Copy + fn" , "Clone + Copy +" ) ;
44
+ check_prefix ( PrefixEntryPoint :: Ty , "struct f" , "struct" ) ;
45
+ }
46
+
47
+ #[ test]
48
+ fn expr ( ) {
49
+ check_prefix ( PrefixEntryPoint :: Expr , "92 92" , "92" ) ;
50
+ check_prefix ( PrefixEntryPoint :: Expr , "+1" , "+" ) ;
51
+ check_prefix ( PrefixEntryPoint :: Expr , "-1" , "-1" ) ;
52
+ check_prefix ( PrefixEntryPoint :: Expr , "fn foo() {}" , "fn" ) ;
53
+ check_prefix ( PrefixEntryPoint :: Expr , "#[attr] ()" , "#[attr] ()" ) ;
54
+ }
55
+
56
+ #[ test]
57
+ fn path ( ) {
58
+ check_prefix ( PrefixEntryPoint :: Path , "foo::bar baz" , "foo::bar" ) ;
59
+ check_prefix ( PrefixEntryPoint :: Path , "foo::<> baz" , "foo::<>" ) ;
60
+ check_prefix ( PrefixEntryPoint :: Path , "foo<> baz" , "foo<>" ) ;
61
+ check_prefix ( PrefixEntryPoint :: Path , "Fn() -> i32?" , "Fn() -> i32" ) ;
62
+ // FIXME: this shouldn't be accepted as path actually.
63
+ check_prefix ( PrefixEntryPoint :: Path , "<_>::foo" , "<_>::foo" ) ;
64
+ }
65
+
30
66
fn check_prefix ( entry : PrefixEntryPoint , input : & str , prefix : & str ) {
31
67
let lexed = LexedStr :: new ( input) ;
32
68
let input = lexed. to_input ( ) ;
0 commit comments