Merge pull request #397 from dtolnay/multiple

Collect apis from multiple cxx::bridge in the same file
diff --git a/gen/src/mod.rs b/gen/src/mod.rs
index 33ab9c9..9b732d2 100644
--- a/gen/src/mod.rs
+++ b/gen/src/mod.rs
@@ -108,20 +108,24 @@
 }
 
 pub(super) fn generate(syntax: File, opt: &Opt) -> Result<GeneratedCode> {
+    if syntax.modules.is_empty() {
+        return Err(Error::NoBridgeMod);
+    }
+
+    let ref mut apis = Vec::new();
     let ref mut errors = Errors::new();
-    let bridge = syntax
-        .modules
-        .into_iter()
-        .next()
-        .ok_or(Error::NoBridgeMod)?;
-    let ref namespace = bridge.namespace;
-    let trusted = bridge.unsafety.is_some();
-    let ref apis = syntax::parse_items(errors, bridge.content, trusted, namespace);
+    for bridge in syntax.modules {
+        let ref namespace = bridge.namespace;
+        let trusted = bridge.unsafety.is_some();
+        apis.extend(syntax::parse_items(errors, bridge.content, trusted, namespace));
+    }
+
     let ref types = Types::collect(errors, apis);
     check::precheck(errors, apis, opt);
     errors.propagate()?;
     check::typecheck(errors, apis, types);
     errors.propagate()?;
+
     // Some callers may wish to generate both header and implementation from the
     // same token stream to avoid parsing twice. Others only need to generate
     // one or the other.