error on local cimport (rather than traceback)
authorRobert Bradshaw <robertwb@math.washington.edu>
Mon, 25 Feb 2008 20:47:30 +0000 (12:47 -0800)
committerRobert Bradshaw <robertwb@math.washington.edu>
Mon, 25 Feb 2008 20:47:30 +0000 (12:47 -0800)
Cython/Compiler/Nodes.py

index 8204427cc4f7f52b15c35af41ff872cfe818cd66..ce0e0fb7d89edcf6bf0891c48c40801a4589ca90 100644 (file)
@@ -3296,6 +3296,9 @@ class CImportStatNode(StatNode):
     #  as_name       string or None   Name specified in "as" clause, if any
     
     def analyse_declarations(self, env):
+        if not env.is_module_scope:
+            error(self.pos, "cimport only allowed at module level")
+            return
         module_scope = env.find_module(self.module_name, self.pos)
         if "." in self.module_name:
             names = self.module_name.split(".")
@@ -3328,6 +3331,9 @@ class FromCImportStatNode(StatNode):
     #  imported_names  [(pos, name, as_name)]  Names to be imported
     
     def analyse_declarations(self, env):
+        if not env.is_module_scope:
+            error(self.pos, "cimport only allowed at module level")
+            return
         module_scope = env.find_module(self.module_name, self.pos)
         env.add_imported_module(module_scope)
         for pos, name, as_name in self.imported_names: