aboutsummaryrefslogtreecommitdiff
path: root/src/parser
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2018-02-17 13:27:17 +0000
committerAleksey Kladov <[email protected]>2018-02-17 13:27:17 +0000
commit1c4e05ec2f177dd82c85b015f611650430b2f020 (patch)
tree8dfe6cab5e91be9d6acaf91aee767b19ec93d3c9 /src/parser
parent94681450f82c7cf6b034548aebd0cc0279fd09ad (diff)
More correct path type
Diffstat (limited to 'src/parser')
-rw-r--r--src/parser/grammar/types.rs9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/parser/grammar/types.rs b/src/parser/grammar/types.rs
index c25517a51..bcdc3ef97 100644
--- a/src/parser/grammar/types.rs
+++ b/src/parser/grammar/types.rs
@@ -10,7 +10,7 @@ pub(super) fn type_(p: &mut Parser) {
10 UNDERSCORE => placeholder_type(p), 10 UNDERSCORE => placeholder_type(p),
11 FN_KW | UNSAFE_KW | EXTERN_KW => fn_pointer_type(p), 11 FN_KW | UNSAFE_KW | EXTERN_KW => fn_pointer_type(p),
12 FOR_KW => for_type(p), 12 FOR_KW => for_type(p),
13 IDENT => path_type(p), 13 _ if paths::is_path_start(p) => path_type(p),
14 _ => { 14 _ => {
15 p.error("expected type"); 15 p.error("expected type");
16 } 16 }
@@ -178,8 +178,13 @@ fn for_type(p: &mut Parser) {
178 m.complete(p, FOR_TYPE); 178 m.complete(p, FOR_TYPE);
179} 179}
180 180
181// test path_type
182// type A = Foo;
183// type B = ::Foo;
184// type C = self::Foo;
185// type D = super::Foo;
181fn path_type(p: &mut Parser) { 186fn path_type(p: &mut Parser) {
182 assert!(p.at(IDENT)); 187 assert!(paths::is_path_start(p));
183 let m = p.start(); 188 let m = p.start();
184 paths::type_path(p); 189 paths::type_path(p);
185 m.complete(p, PATH_TYPE); 190 m.complete(p, PATH_TYPE);