diff --git a/src/ir/context.rs b/src/ir/context.rs
index bdf3842..c0f9246 100644
--- a/src/ir/context.rs
+++ b/src/ir/context.rs
@@ -2160,16 +2160,21 @@
             ::clang_sys::CXCursor_Namespace,
             "Be a nice person"
         );
+
+        let mut module_name = None;
+        let spelling = cursor.spelling();
+        if !spelling.is_empty()
+        {
+            module_name = Some(spelling)
+        }
+
         let tokens = match cursor.tokens() {
             Some(tokens) => tokens,
-            None => return (None, ModuleKind::Normal),
+            None => return (module_name, ModuleKind::Normal),
         };
-
         let mut iter = tokens.iter();
         let mut kind = ModuleKind::Normal;
         let mut found_namespace_keyword = false;
-        let mut module_name = None;
-
         while let Some(token) = iter.next() {
             match &*token.spelling {
                 "inline" => {
@@ -2195,7 +2200,9 @@
                     break;
                 }
                 name if found_namespace_keyword => {
-                    module_name = Some(name.to_owned());
+                    if module_name.is_none() {
+                        module_name = Some(name.to_owned());
+                    }
                     break;
                 }
                 _ => {
diff --git a/tests/expectations/tests/namespace.rs b/tests/expectations/tests/namespace.rs
index 726383d..dc51640 100644
--- a/tests/expectations/tests/namespace.rs
+++ b/tests/expectations/tests/namespace.rs
@@ -1,6 +1,11 @@
 /* automatically generated by rust-bindgen */
 
-#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
+#![allow(
+    dead_code,
+    non_snake_case,
+    non_camel_case_types,
+    non_upper_case_globals
+)]
 
 #[allow(non_snake_case, non_camel_case_types, non_upper_case_globals)]
 pub mod root {
@@ -19,7 +24,7 @@
             pub fn in_whatever();
         }
     }
-    pub mod _bindgen_mod_id_13 {
+    pub mod _bindgen_mod_id_17 {
         #[allow(unused_imports)]
         use self::super::super::root;
         #[repr(C)]
@@ -49,7 +54,7 @@
     #[repr(C)]
     #[derive(Debug)]
     pub struct C<T> {
-        pub _base: root::_bindgen_mod_id_13::A,
+        pub _base: root::_bindgen_mod_id_17::A,
         pub m_c: T,
         pub m_c_ptr: *mut T,
         pub m_c_arr: [T; 10usize],
@@ -88,4 +93,20 @@
             pub fn barr() -> root::C<f32>;
         }
     }
+    pub mod foobar {
+        #[allow(unused_imports)]
+        use self::super::super::root;
+        extern "C" {
+            #[link_name = "\u{1}_ZN6foobar3fooEv"]
+            pub fn foo();
+        }
+    }
+    pub mod faraway {
+        #[allow(unused_imports)]
+        use self::super::super::root;
+        extern "C" {
+            #[link_name = "\u{1}_ZN7faraway3barEv"]
+            pub fn bar();
+        }
+    }
 }
diff --git a/tests/headers/namespace.hpp b/tests/headers/namespace.hpp
index 408207f..a8e6f8e 100644
--- a/tests/headers/namespace.hpp
+++ b/tests/headers/namespace.hpp
@@ -40,3 +40,12 @@
 
     C<float> barr(); // <- This is the problematic one
 }
+
+#define NAMESPACE foobar
+namespace NAMESPACE {
+    void foo();
+}
+
+#include "namespace/nsbegin.h"
+void bar();
+#include "namespace/nsend.h"
diff --git a/tests/headers/namespace/nsbegin.h b/tests/headers/namespace/nsbegin.h
new file mode 100644
index 0000000..47a51c9
--- /dev/null
+++ b/tests/headers/namespace/nsbegin.h
@@ -0,0 +1 @@
+namespace faraway {
diff --git a/tests/headers/namespace/nsend.h b/tests/headers/namespace/nsend.h
new file mode 100644
index 0000000..5c34318
--- /dev/null
+++ b/tests/headers/namespace/nsend.h
@@ -0,0 +1 @@
+}
