@@ -510,6 +510,14 @@ ManglingSubstitutorTestCase g_mangled_substitutor_structor_test_cases[] = {
510510 /* expected*/ " _ZN2D12C1D2I2C12D1EE2C12D1" , /* expect_error*/ false },
511511 {/* .mangled*/ " _ZN3FooC6Ev" , /* from*/ " D1" , /* to*/ " D2" , /* expected*/ " " ,
512512 /* expect_error*/ true },
513+ {/* .mangled*/ " _ZN2D12C1B2D1C1I2C1B2C12D1B2D1EE2C1B2C12D1B2D1" ,
514+ /* from*/ " C1" , /* to*/ " C2" ,
515+ /* expected*/ " _ZN2D12C1B2D1C2I2C1B2C12D1B2D1EE2C1B2C12D1B2D1" ,
516+ /* expect_error*/ false },
517+ {/* .mangled*/ " _ZN2D12C1B2D1D1I2C1B2C12D1B2D1EE2C1B2C12D1B2D1" ,
518+ /* from*/ " D1" , /* to*/ " D2" ,
519+ /* expected*/ " _ZN2D12C1B2D1D2I2C1B2C12D1B2D1EE2C1B2C12D1B2D1" ,
520+ /* expect_error*/ false },
513521};
514522
515523TEST_P (ManglingSubstitutorStructorTestFixture, Structors) {
@@ -577,11 +585,20 @@ TEST(CPlusPlusLanguage, ManglingSubstitutor_StructorAlias) {
577585 }
578586
579587 {
580- // Check that variants in other parts of the name don't get replaced.
588+ // Check that ctor variants in other parts of the name don't get replaced.
589+ auto subst_or_err =
590+ CPlusPlusLanguage::SubstituteStructorAliases_ItaniumMangle (
591+ " _ZN2D12C1B2D1C1I2C1B2C12D1B2D1EE2C1B2C12D1B2D1" );
592+ EXPECT_THAT_EXPECTED (subst_or_err, llvm::Succeeded ());
593+ EXPECT_EQ (*subst_or_err, " _ZN2D12C1B2D1C2I2C1B2C12D1B2D1EE2C1B2C12D1B2D1" );
594+ }
595+
596+ {
597+ // Check that dtor variants in other parts of the name don't get replaced.
581598 auto subst_or_err =
582599 CPlusPlusLanguage::SubstituteStructorAliases_ItaniumMangle (
583- " _ZN2D12C1C1I2C12D1EE2C12D1 " );
600+ " _ZN2D12C1B2D1D1I2C1B2C12D1B2D1EE2C1B2C12D1B2D1 " );
584601 EXPECT_THAT_EXPECTED (subst_or_err, llvm::Succeeded ());
585- EXPECT_EQ (*subst_or_err, " _ZN2D12C1C2I2C12D1EE2C12D1 " );
602+ EXPECT_EQ (*subst_or_err, " _ZN2D12C1B2D1D2I2C1B2C12D1B2D1EE2C1B2C12D1B2D1 " );
586603 }
587604}
0 commit comments