keep ignoring unknown directives in directive comments
authorStefan Behnel <scoder@users.berlios.de>
Sun, 6 Dec 2009 11:04:41 +0000 (12:04 +0100)
committerStefan Behnel <scoder@users.berlios.de>
Sun, 6 Dec 2009 11:04:41 +0000 (12:04 +0100)
Cython/Compiler/Options.py
Cython/Compiler/Parsing.py

index d5a540d70fa4d79b750c8878fa2c442bccdeb8d8..28ccc5e3a936613f44ec66cce3ad9d9e6757d4d8 100644 (file)
@@ -120,7 +120,7 @@ def parse_directive_value(name, value, relaxed_bool=False):
     else:
         assert False
 
-def parse_directive_list(s, relaxed_bool=False):
+def parse_directive_list(s, relaxed_bool=False, ignore_unknown=False):
     """
     Parses a comma-seperated list of pragma options. Whitespace
     is not considered.
@@ -151,6 +151,8 @@ def parse_directive_list(s, relaxed_bool=False):
         name, value = [ s.strip() for s in item.strip().split('=', 1) ]
         parsed_value = parse_directive_value(name, value, relaxed_bool=relaxed_bool)
         if parsed_value is None:
-            raise ValueError('Unknown option: "%s"' % name)
-        result[name] = parsed_value
+            if not ignore_unknown:
+                raise ValueError('Unknown option: "%s"' % name)
+        else:
+            result[name] = parsed_value
     return result
index 73345a9879d532bab9f22fc487fe870121fd9901..0f5371cce370caffeb1f7dee2cc98e5b7d203d15 100644 (file)
@@ -2588,7 +2588,8 @@ def p_compiler_directive_comments(s):
         if m:
             directives = m.group(1).strip()
             try:
-                result.update( Options.parse_directive_list(directives) )
+                result.update( Options.parse_directive_list(
+                    directives, ignore_unknown=True) )
             except ValueError, e:
                 s.error(e.args[0], fatal=False)
         s.next()