mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2026-10-13 00:42:11 -05:00
Be explicit about rvalue references.
This commit is contained in:
1 parent
bdf5816437
commit
55935bdd04
2 files changed
+18
-2
No files matched your search
+14
-2
@@ -303,7 +303,7 @@ class ArrayDefExpr(WrappingDefExpr):
|
||||
)
|
||||
|
||||
|
||||
class RefDefExpr(WrappingDefExpr):
|
||||
class LValRefDefExpr(WrappingDefExpr):
|
||||
|
||||
def get_id(self):
|
||||
return self.typename.get_id() + u'R'
|
||||
@@ -312,6 +312,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):
|
||||
@@ -602,7 +611,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