diff --git a/src/lib.rs b/src/lib.rs
index fc016d86666..9e80e8f1b6b 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -398,9 +398,16 @@ fn parse_input(input: Input,
                parse_session: &ParseSess)
                -> Result<ast::Crate, Option<DiagnosticBuilder>> {
     let result = match input {
-        Input::File(file) => parse::parse_crate_from_file(&file, parse_session),
+        Input::File(file) => {
+            let mut parser = parse::new_parser_from_file(parse_session, &file);
+            parser.cfg_mods = false;
+            parser.parse_crate_mod()
+        }
         Input::Text(text) => {
-            parse::parse_crate_from_source_str("stdin".to_owned(), text, parse_session)
+            let mut parser =
+                parse::new_parser_from_source_str(parse_session, "stdin".to_owned(), text);
+            parser.cfg_mods = false;
+            parser.parse_crate_mod()
         }
     };
 
diff --git a/src/visitor.rs b/src/visitor.rs
index bea976523bb..95ec54e89ee 100644
--- a/src/visitor.rs
+++ b/src/visitor.rs
@@ -548,7 +548,7 @@ impl<'a> FmtVisitor<'a> {
     }
 
     pub fn format_separate_mod(&mut self, m: &ast::Mod) {
-        let filemap = self.codemap.lookup_char_pos(source!(self, m.inner).lo).file;
+        let filemap = self.codemap.lookup_char_pos(m.inner.lo).file;
         self.last_pos = filemap.start_pos;
         self.block_indent = Indent::empty();
         self.walk_mod_items(m);