summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortk0miya <i.tkomiya@gmail.com>2014-08-21 13:30:25 +0900
committertk0miya <i.tkomiya@gmail.com>2014-08-21 13:30:25 +0900
commitd4a5d566f2093942b501106fce4ea24cd7757a1c (patch)
tree460e0ddce159851eb74596129965d3f5879697c9
parentcecbe8c94a90d3c6bc1fd513602d234f73b4f301 (diff)
downloadsphinx-d4a5d566f2093942b501106fce4ea24cd7757a1c.tar.gz
Do not highlight function pointers if unexpected tokens found
-rw-r--r--sphinx/domains/c.py6
1 files changed, 5 insertions, 1 deletions
diff --git a/sphinx/domains/c.py b/sphinx/domains/c.py
index cdc10066..4d12c141 100644
--- a/sphinx/domains/c.py
+++ b/sphinx/domains/c.py
@@ -40,9 +40,11 @@ c_funcptr_sig_re = re.compile(
(\s+const)? $ # const specifier
''', re.VERBOSE)
c_funcptr_arg_sig_re = re.compile(
- r'''^\s*([^(,]+?) # return type
+ r'''^\s*([^(,]+?) # return type
\( ([^()]+) \) \s* # name in parentheses
\( (.*) \) # arguments
+ (\s+const)? # const specifier
+ \s*(?=$|,) # end with comma or end of string
''', re.VERBOSE)
c_funcptr_name_re = re.compile(r'^\(\s*\*\s*(.*?)\s*\)$')
@@ -154,6 +156,8 @@ class CObject(ObjectDescription):
self._parse_type(param, m.group(1) + '(')
param += nodes.emphasis(m.group(2), m.group(2))
self._parse_type(param, ')(' + m.group(3) + ')')
+ if m.group(4):
+ param += addnodes.desc_addname(m.group(4), m.group(4))
else:
ctype, argname = arg.rsplit(' ', 1)
self._parse_type(param, ctype)