From cfc0e6b318637f2e76d9e9a19a421ff114832c00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristj=C3=A1n=20Valur=20J=C3=B3nsson?= Date: Tue, 14 Apr 2026 16:28:03 +0000 Subject: [PATCH 1/2] cpp_demangle: add deferred PCG parse probes for post-merge integration --- src/ast.rs | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/ast.rs b/src/ast.rs index c64d698..6510551 100644 --- a/src/ast.rs +++ b/src/ast.rs @@ -10156,6 +10156,46 @@ mod tests { }); } + #[test] + fn parse_realworld_pcg_binarycompare_invoke_full_mangled_name_probe() { + let mut subs = SubstitutionTable::new(); + let ctx = ParseContext::new(Default::default()); + let input = IndexStr::new( + b"_ZN16PCGSelectGrammarL13BinaryCompareIdEMUlRKdS3_E_8__invokeES3_S3_", + ); + + match MangledName::parse(&ctx, &mut subs, input) { + Ok((_name, tail)) => assert!( + tail.is_empty(), + "pcg binarycompare invoke full parse left tail: {:?}", + String::from_utf8_lossy(tail.as_ref()) + ), + Err(err) => panic!( + "failed pcg binarycompare invoke full mangled name: {:?}", + err + ), + } + } + + #[test] + fn parse_realworld_pcg_binarycompare_name_and_bare_probe() { + let mut subs = SubstitutionTable::new(); + let ctx = ParseContext::new(Default::default()); + let input = IndexStr::new( + b"N16PCGSelectGrammarL13BinaryCompareIdEMUlRKdS3_E_8__invokeES3_S3_", + ); + + let (_name, tail) = Name::parse(&ctx, &mut subs, input).expect("name parse"); + match BareFunctionType::parse(&ctx, &mut subs, tail) { + Ok((_ty, tail)) => assert!( + tail.is_empty(), + "pcg binarycompare bare full parse left tail: {:?}", + String::from_utf8_lossy(tail.as_ref()) + ), + Err(err) => panic!("failed pcg binarycompare bare function parse: {:?}", err), + } + } + #[test] fn parse_template_arg() { assert_parse!(TemplateArg { From 76d534b0903ff0f25d51e3438b33c2114292a63b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristj=C3=A1n=20Valur=20J=C3=B3nsson?= Date: Fri, 17 Apr 2026 09:13:58 +0000 Subject: [PATCH 2/2] Apply rustfmt --- src/ast.rs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/ast.rs b/src/ast.rs index 6510551..72faf33 100644 --- a/src/ast.rs +++ b/src/ast.rs @@ -10160,9 +10160,8 @@ mod tests { fn parse_realworld_pcg_binarycompare_invoke_full_mangled_name_probe() { let mut subs = SubstitutionTable::new(); let ctx = ParseContext::new(Default::default()); - let input = IndexStr::new( - b"_ZN16PCGSelectGrammarL13BinaryCompareIdEMUlRKdS3_E_8__invokeES3_S3_", - ); + let input = + IndexStr::new(b"_ZN16PCGSelectGrammarL13BinaryCompareIdEMUlRKdS3_E_8__invokeES3_S3_"); match MangledName::parse(&ctx, &mut subs, input) { Ok((_name, tail)) => assert!( @@ -10181,9 +10180,8 @@ mod tests { fn parse_realworld_pcg_binarycompare_name_and_bare_probe() { let mut subs = SubstitutionTable::new(); let ctx = ParseContext::new(Default::default()); - let input = IndexStr::new( - b"N16PCGSelectGrammarL13BinaryCompareIdEMUlRKdS3_E_8__invokeES3_S3_", - ); + let input = + IndexStr::new(b"N16PCGSelectGrammarL13BinaryCompareIdEMUlRKdS3_E_8__invokeES3_S3_"); let (_name, tail) = Name::parse(&ctx, &mut subs, input).expect("name parse"); match BareFunctionType::parse(&ctx, &mut subs, tail) {