Warn for non-trivial type declarators in shared declarations.
authorRobert Bradshaw <robertwb@gmail.com>
Fri, 4 Oct 2013 04:43:48 +0000 (21:43 -0700)
committerRobert Bradshaw <robertwb@gmail.com>
Fri, 4 Oct 2013 04:43:48 +0000 (21:43 -0700)
Cython/Compiler/Nodes.py
Cython/Compiler/Options.py

index fe7adb3..8b726f1 100644 (file)
@@ -1175,6 +1175,12 @@ class CVarDefNode(StatNode):
         visibility = self.visibility
 
         for declarator in self.declarators:
+            
+            if (len(self.declarators) > 1
+                and not isinstance(declarator, CNameDeclaratorNode)
+                and env.directives['warn.multiple_declarators']):
+                warning(declarator.pos, "Non-trivial type declarators in shared declaration.", 1)
+            
             if isinstance(declarator, CFuncDeclaratorNode):
                 name_declarator, type = declarator.analyse(base_type, env, directive_locals=self.directive_locals)
             else:
index 472dfdc..05f123e 100644 (file)
@@ -123,6 +123,7 @@ directive_defaults = {
     'warn.unused': False,
     'warn.unused_arg': False,
     'warn.unused_result': False,
+    'warn.multiple_declarators': True,
 
 # optimizations
     'optimize.inline_defnode_calls': True,