libsyntax: Give a nice error message when view items are used anywhere other than the top of a module.
This is a step on the way to parsing "extern mod foo;"
This commit is contained in:
parent
81e6bb1b4b
commit
30e243a5aa
src
@ -3119,6 +3119,30 @@ class parser {
|
||||
return iovi_item(self.mk_item(lo, self.last_span.hi, ident, item_,
|
||||
visibility,
|
||||
maybe_append(attrs, extra_attrs)));
|
||||
} else if self.eat_keyword(~"use") {
|
||||
let view_item = self.parse_use();
|
||||
return iovi_view_item(@{
|
||||
node: view_item,
|
||||
attrs: attrs,
|
||||
vis: visibility,
|
||||
span: mk_sp(lo, self.last_span.hi)
|
||||
});
|
||||
} else if self.eat_keyword(~"import") {
|
||||
let view_paths = self.parse_view_paths();
|
||||
return iovi_view_item(@{
|
||||
node: view_item_import(view_paths),
|
||||
attrs: attrs,
|
||||
vis: visibility,
|
||||
span: mk_sp(lo, self.last_span.hi)
|
||||
});
|
||||
} else if self.eat_keyword(~"export") {
|
||||
let view_paths = self.parse_view_paths();
|
||||
return iovi_view_item(@{
|
||||
node: view_item_export(view_paths),
|
||||
attrs: attrs,
|
||||
vis: visibility,
|
||||
span: mk_sp(lo, self.last_span.hi)
|
||||
});
|
||||
} else if !self.is_any_keyword(copy self.token)
|
||||
&& self.look_ahead(1) == token::NOT
|
||||
&& is_plain_ident(self.look_ahead(2)) {
|
||||
|
10
src/test/compile-fail/view-items-at-top.rs
Normal file
10
src/test/compile-fail/view-items-at-top.rs
Normal file
@ -0,0 +1,10 @@
|
||||
use std;
|
||||
|
||||
fn f() {
|
||||
}
|
||||
|
||||
import std::io::println; //~ ERROR view items must be declared at the top
|
||||
|
||||
fn main() {
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user