Commit e8e3a368 authored by Robert Bradshaw's avatar Robert Bradshaw

Compiler directive fixes, add c99 complex directive

parent 74a99576
......@@ -64,7 +64,9 @@ option_defaults = {
'cdivision': True, # Will be False in 0.12
'cdivision_warnings': False,
'always_allow_keywords': False,
'wraparound' : True
'wraparound' : True,
'c99_complex' : False,
'a': 4,
}
# Override types possibilities above, if needed
......@@ -95,6 +97,11 @@ def parse_option_value(name, value):
if value == "True": return True
elif value == "False": return False
else: raise ValueError("%s directive must be set to True or False" % name)
elif type is int:
try:
return int(value)
except ValueError:
raise ValueError("%s directive must be set to an integer" % name)
else:
assert False
......
......@@ -2488,7 +2488,7 @@ def p_code(s, level=None):
repr(s.sy), repr(s.systring)))
return body
COMPILER_DIRECTIVE_COMMENT_RE = re.compile(r"^#\s*cython:\s*([a-z_]+)\s*=(.*)$")
COMPILER_DIRECTIVE_COMMENT_RE = re.compile(r"^#\s*cython:\s*(\w+)\s*=(.*)$")
def p_compiler_directive_comments(s):
result = {}
......@@ -2498,10 +2498,10 @@ def p_compiler_directive_comments(s):
name = m.group(1)
try:
value = Options.parse_option_value(str(name), str(m.group(2).strip()))
if value is not None: # can be False!
result[name] = value
except ValueError, e:
s.error(e.args[0], fatal=False)
if value is not None: # can be False!
result[name] = value
s.next()
return result
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment