summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArmin Ronacher <armin.ronacher@active-4.com>2011-09-22 11:15:46 +0200
committerArmin Ronacher <armin.ronacher@active-4.com>2011-09-22 11:15:46 +0200
commite18d423f0adac717d8e6a8d6ed9fad5bca7f0933 (patch)
treef39a3e9c8b9ca9a9dd311a803284e9875330076a
parente3c56cb286cbfb52e6d6186ddefde3776a3e2589 (diff)
downloadsphinx-e18d423f0adac717d8e6a8d6ed9fad5bca7f0933.tar.gz
Added support for noexcept specifiers
-rw-r--r--sphinx/domains/cpp.py8
-rw-r--r--tests/test_cpp_domain.py3
2 files changed, 9 insertions, 2 deletions
diff --git a/sphinx/domains/cpp.py b/sphinx/domains/cpp.py
index 9ec70f53..ecae79f6 100644
--- a/sphinx/domains/cpp.py
+++ b/sphinx/domains/cpp.py
@@ -426,13 +426,14 @@ class MemberObjDefExpr(NamedDefExpr):
class FuncDefExpr(NamedDefExpr):
def __init__(self, name, visibility, static, explicit, constexpr, rv,
- signature, const, pure_virtual):
+ signature, const, noexcept, pure_virtual):
NamedDefExpr.__init__(self, name, visibility, static)
self.rv = rv
self.signature = signature
self.explicit = explicit
self.constexpr = constexpr
self.const = const
+ self.noexcept = noexcept
self.pure_virtual = pure_virtual
def get_id(self):
@@ -456,6 +457,8 @@ class FuncDefExpr(NamedDefExpr):
map(unicode, self.signature))))
if self.const:
buf.append(u'const')
+ if self.noexcept:
+ buf.append(u'noexcept')
if self.pure_virtual:
buf.append(u'= 0')
return u' '.join(buf)
@@ -776,6 +779,7 @@ class DefinitionParser(object):
args.append(ArgumentDefExpr(argtype, argname, default))
self.skip_ws()
const = self.skip_word_and_ws('const')
+ noexcept = self.skip_word_and_ws('noexcept')
if self.skip_string('='):
self.skip_ws()
if not (self.skip_string('0') or \
@@ -787,7 +791,7 @@ class DefinitionParser(object):
pure_virtual = True
else:
pure_virtual = False
- return args, const, pure_virtual
+ return args, const, noexcept, pure_virtual
def _parse_visibility_static(self):
visibility = 'public'
diff --git a/tests/test_cpp_domain.py b/tests/test_cpp_domain.py
index a4e80510..61ad91e7 100644
--- a/tests/test_cpp_domain.py
+++ b/tests/test_cpp_domain.py
@@ -54,6 +54,9 @@ def test_type_definitions():
x = 'constexpr int get_value()'
assert unicode(parse('function', x)) == x
+ x = 'int get_value() const noexcept'
+ assert unicode(parse('function', x)) == x
+
def test_operators():
x = parse('function', 'void operator new [ ] ()')