2 Commits

Author SHA1 Message Date
98b68265cc Fixed PointerToMember format functions. 2024-01-05 14:37:46 +01:00
efa7f5eaad Fixed operator*(). 2024-01-05 14:36:06 +01:00
2 changed files with 7 additions and 7 deletions

View File

@@ -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)

View File

@@ -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}"