@@ -490,39 +490,39 @@ void ClangValueTypePrinter::printTypeGenericTraits(
490490 << " ::" << typeMetadataFuncName << " (0)._0;\n " ;
491491 os << " }\n " ;
492492
493- os << " namespace " << cxx_synthesis::getCxxImplNamespaceName () << " {\n " ;
493+ os << " namespace " << cxx_synthesis::getCxxImplNamespaceName () << " {\n " ;
494494
495- if (!isa<ClassDecl>(typeDecl)) {
495+ if (!isa<ClassDecl>(typeDecl)) {
496+ os << " template<>\n " ;
497+ os << " static inline const constexpr bool isValueType<" ;
498+ printer.printBaseName (typeDecl->getModuleContext ());
499+ os << " ::" ;
500+ printer.printBaseName (typeDecl);
501+ os << " > = true;\n " ;
502+ if (typeDecl->isResilient ()) {
496503 os << " template<>\n " ;
497- os << " static inline const constexpr bool isValueType <" ;
504+ os << " static inline const constexpr bool isOpaqueLayout <" ;
498505 printer.printBaseName (typeDecl->getModuleContext ());
499506 os << " ::" ;
500507 printer.printBaseName (typeDecl);
501508 os << " > = true;\n " ;
502- if (typeDecl->isResilient ()) {
509+ }
510+ }
511+
503512 os << " template<>\n " ;
504- os << " static inline const constexpr bool isOpaqueLayout <" ;
513+ os << " struct implClassFor <" ;
505514 printer.printBaseName (typeDecl->getModuleContext ());
506515 os << " ::" ;
507516 printer.printBaseName (typeDecl);
508- os << " > = true;\n " ;
509- }
510- }
511-
512- os << " template<>\n " ;
513- os << " struct implClassFor<" ;
514- printer.printBaseName (typeDecl->getModuleContext ());
515- os << " ::" ;
516- printer.printBaseName (typeDecl);
517- os << " > { using type = " ;
518- printer.printBaseName (typeDecl->getModuleContext ());
519- os << " ::" << cxx_synthesis::getCxxImplNamespaceName () << " ::" ;
520- printCxxImplClassName (os, typeDecl);
521- os << " ; };\n " ;
522- os << " } // namespace\n " ;
523- os << " #pragma clang diagnostic pop\n " ;
524- os << " } // namespace swift\n " ;
525- os << " \n namespace " ;
526- printer.printBaseName (typeDecl->getModuleContext ());
527- os << " {\n " ;
517+ os << " > { using type = " ;
518+ printer.printBaseName (typeDecl->getModuleContext ());
519+ os << " ::" << cxx_synthesis::getCxxImplNamespaceName () << " ::" ;
520+ printCxxImplClassName (os, typeDecl);
521+ os << " ; };\n " ;
522+ os << " } // namespace\n " ;
523+ os << " #pragma clang diagnostic pop\n " ;
524+ os << " } // namespace swift\n " ;
525+ os << " \n namespace " ;
526+ printer.printBaseName (typeDecl->getModuleContext ());
527+ os << " {\n " ;
528528}
0 commit comments