about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/libsyntax/parse/parser.rs12
-rw-r--r--src/test/run-pass/new-import-syntax.rs6
2 files changed, 15 insertions, 3 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 685a6a34405..0dd1c70cd93 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -3132,9 +3132,15 @@ class parser {
     }
 
     fn parse_use() -> view_item_ {
-        let ident = self.parse_ident();
-        let metadata = self.parse_optional_meta();
-        return view_item_use(ident, metadata, self.get_id());
+        if self.look_ahead(1) == token::SEMI ||
+            self.look_ahead(1) == token::LPAREN {
+            // Old-style "use"; i.e. what we now call "extern mod".
+            let ident = self.parse_ident();
+            let metadata = self.parse_optional_meta();
+            return view_item_use(ident, metadata, self.get_id());
+        }
+
+        return view_item_import(self.parse_view_paths());
     }
 
     fn parse_view_path() -> @view_path {
diff --git a/src/test/run-pass/new-import-syntax.rs b/src/test/run-pass/new-import-syntax.rs
new file mode 100644
index 00000000000..2d77d7ad569
--- /dev/null
+++ b/src/test/run-pass/new-import-syntax.rs
@@ -0,0 +1,6 @@
+use io::println;
+
+fn main() {
+    println("Hello world!");
+}
+