[interop][SwiftToCxx] add initial support for passing/returning enums

This commit is contained in:
Tongjie Wang
2022-06-20 00:45:07 -07:00
parent 0c67ce6487
commit 00598e8019
9 changed files with 351 additions and 35 deletions

View File

@@ -240,6 +240,11 @@ public:
}
void forwardDeclare(const EnumDecl *ED) {
// FIXME: (tongjie) do we need this?
if (outputLangMode == swift::OutputLanguageMode::Cxx) {
return;
}
assert(ED->isObjC() || ED->hasClangNode());
forwardDeclare(ED, [&]{
@@ -595,7 +600,9 @@ public:
const Decl *D = declsToWrite.back();
bool success = true;
if (outputLangMode == OutputLanguageMode::Cxx) {
if (auto ED = dyn_cast<EnumDecl>(D)) {
success = writeEnum(ED);
} else if (outputLangMode == OutputLanguageMode::Cxx) {
if (auto FD = dyn_cast<FuncDecl>(D))
success = writeFunc(FD);
if (auto SD = dyn_cast<StructDecl>(D))
@@ -606,8 +613,6 @@ public:
success = writeClass(CD);
else if (auto PD = dyn_cast<ProtocolDecl>(D))
success = writeProtocol(PD);
else if (auto ED = dyn_cast<EnumDecl>(D))
success = writeEnum(ED);
else if (auto ED = dyn_cast<FuncDecl>(D))
success = writeFunc(ED);
else