Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 98b68265cc | |||
| efa7f5eaad |
@@ -1732,7 +1732,7 @@ class CxxParser:
|
||||
if tok.value == '*':
|
||||
if not ptr_to_member_ok:
|
||||
raise self._parse_error(tok)
|
||||
return name, '*'
|
||||
return name, 'PTR_TO_MEMBER'
|
||||
|
||||
pqname = PQName(segments, classkey, has_typename)
|
||||
|
||||
@@ -1804,7 +1804,7 @@ class CxxParser:
|
||||
tok = self.lex.token_if("NAME", "final", "DBL_COLON")
|
||||
if tok:
|
||||
pqname, op = self._parse_pqname(tok, fn_ok=True, ptr_to_member_ok=True)
|
||||
while op == '*':
|
||||
while op == 'PTR_TO_MEMBER':
|
||||
dtype = PointerToMember(base_type=Type(typename=pqname), ptr_to=dtype, const=dtype.const, volatile=dtype.volatile)
|
||||
# dtype = self._parse_cv_ptr(dtype)
|
||||
tok = self.lex.token_if("NAME", "final", "DBL_COLON")
|
||||
@@ -2506,7 +2506,7 @@ class CxxParser:
|
||||
tok = self.lex.token_if_in_set(self._pqname_start_tokens)
|
||||
if tok:
|
||||
pqname, op = self._parse_pqname(tok, fn_ok=True, ptr_to_member_ok=True)
|
||||
while op == '*':
|
||||
while op == 'PTR_TO_MEMBER':
|
||||
dtype = PointerToMember(base_type=Type(typename=pqname), ptr_to=dtype, const=dtype.const, volatile=dtype.volatile)
|
||||
# dtype = self._parse_cv_ptr(dtype)
|
||||
tok = self.lex.token_if_in_set(self._pqname_start_tokens)
|
||||
|
||||
@@ -374,9 +374,9 @@ class PointerToMember:
|
||||
v = " volatile" if self.volatile else ""
|
||||
ptr_to = self.ptr_to
|
||||
if isinstance(ptr_to, (Array, FunctionType)):
|
||||
return ptr_to.format_decl(f"({base_type.format()}::*{c}{v})")
|
||||
return ptr_to.format_decl(f"({self.base_type.format()}::*{c}{v})")
|
||||
else:
|
||||
return f"{ptr_to.format()} {base_type.format()}::*{c}{v}"
|
||||
return f"{ptr_to.format()} {self.base_type.format()}::*{c}{v}"
|
||||
|
||||
def format_decl(self, name: str):
|
||||
"""Format as a named declaration"""
|
||||
@@ -384,9 +384,9 @@ class PointerToMember:
|
||||
v = " volatile" if self.volatile else ""
|
||||
ptr_to = self.ptr_to
|
||||
if isinstance(ptr_to, (Array, FunctionType)):
|
||||
return ptr_to.format_decl(f"({base_type.format()}::*{c}{v} {name})")
|
||||
return ptr_to.format_decl(f"({self.base_type.format()}::*{c}{v} {name})")
|
||||
else:
|
||||
return f"{ptr_to.format()} {base_type.format()}::*{c}{v} {name}"
|
||||
return f"{ptr_to.format()} {self.base_type.format()}::*{c}{v} {name}"
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user