mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Be explicit about rvalue references.
This commit is contained in:
@@ -299,7 +299,7 @@ class ArrayDefExpr(WrappingDefExpr):
|
||||
)
|
||||
|
||||
|
||||
class RefDefExpr(WrappingDefExpr):
|
||||
class LValRefDefExpr(WrappingDefExpr):
|
||||
|
||||
def get_id(self):
|
||||
return self.typename.get_id() + u'R'
|
||||
@@ -308,6 +308,15 @@ class RefDefExpr(WrappingDefExpr):
|
||||
return u'%s&' % self.typename
|
||||
|
||||
|
||||
class RValRefDefExpr(WrappingDefExpr):
|
||||
|
||||
def get_id(self):
|
||||
return self.typename.get_id() + u'RR'
|
||||
|
||||
def __unicode__(self):
|
||||
return u'%s&&' % self.typename
|
||||
|
||||
|
||||
class ConstDefExpr(WrappingDefExpr):
|
||||
|
||||
def __init__(self, typename, prefix=False):
|
||||
@@ -598,7 +607,10 @@ class DefinitionParser(object):
|
||||
elif self.match(_array_def_re):
|
||||
expr = ArrayDefExpr(expr, self.last_match.group(1))
|
||||
elif self.skip_string('&'):
|
||||
expr = RefDefExpr(expr)
|
||||
if self.skip_string('&'):
|
||||
expr = RValRefDefExpr(expr)
|
||||
else:
|
||||
expr = LValRefDefExpr(expr)
|
||||
else:
|
||||
return expr
|
||||
|
||||
|
||||
@@ -49,6 +49,10 @@ def test_type_definitions():
|
||||
assert unicode(parse('type_object', 'long long int foo')) == 'long long foo'
|
||||
|
||||
|
||||
x = 'MyClass::MyClass(MyClass::MyClass&&)'
|
||||
assert unicode(parse('function', x)) == x
|
||||
|
||||
|
||||
def test_operators():
|
||||
x = parse('function', 'void operator new [ ] ()')
|
||||
assert unicode(x) == 'void operator new[]()'
|
||||
|
||||
Reference in New Issue
Block a user