@@ -124,13 +124,15 @@ class ModuleWriter {
124124 std::vector<const Decl *> declsToWrite;
125125 DelayedMemberSet delayedMembers;
126126 DeclAndTypePrinter printer;
127+ OutputLanguageMode outputLangMode;
127128
128129public:
129130 ModuleWriter (raw_ostream &os, raw_ostream &prologueOS,
130131 llvm::SmallPtrSetImpl<ImportModuleTy> &imports, ModuleDecl &mod,
131132 AccessLevel access, OutputLanguageMode outputLang)
132133 : os(os), imports(imports), M(mod),
133- printer (M, os, prologueOS, delayedMembers, access, outputLang) {}
134+ printer (M, os, prologueOS, delayedMembers, access, outputLang),
135+ outputLangMode(outputLang) {}
134136
135137 // / Returns true if we added the decl's module to the import set, false if
136138 // / the decl is a local decl.
@@ -576,7 +578,11 @@ class ModuleWriter {
576578 const Decl *D = declsToWrite.back ();
577579 bool success = true ;
578580
579- if (isa<ValueDecl>(D)) {
581+ if (outputLangMode == OutputLanguageMode::Cxx) {
582+ if (auto FD = dyn_cast<FuncDecl>(D))
583+ success = writeFunc (FD);
584+ // FIXME: Warn on unsupported exported decl.
585+ } else if (isa<ValueDecl>(D)) {
580586 if (auto CD = dyn_cast<ClassDecl>(D))
581587 success = writeClass (CD);
582588 else if (auto PD = dyn_cast<ProtocolDecl>(D))
0 commit comments