diff --git a/lib/IRGen/GenStruct.cpp b/lib/IRGen/GenStruct.cpp index 8711047d838ae..dbe600ee0160f 100644 --- a/lib/IRGen/GenStruct.cpp +++ b/lib/IRGen/GenStruct.cpp @@ -1636,6 +1636,9 @@ void IRGenModule::emitStructDecl(StructDecl *st) { } void IRGenModule::maybeEmitOpaqueTypeDecl(OpaqueTypeDecl *opaque) { + if (opaque->getASTContext().LangOpts.hasFeature(Feature::Embedded)) + return; + if (!opaque->isAvailableDuringLowering()) return; diff --git a/test/embedded/opaque-return-types.swift b/test/embedded/opaque-return-types.swift new file mode 100644 index 0000000000000..22af015702880 --- /dev/null +++ b/test/embedded/opaque-return-types.swift @@ -0,0 +1,15 @@ +// RUN: %target-swift-emit-ir %s -target %target-cpu-apple-macos14 -enable-experimental-feature Embedded | %FileCheck %s + +// REQUIRES: swift_in_compiler +// REQUIRES: VENDOR=apple +// REQUIRES: OS=macosx + +protocol Proto { } + +struct MyStruct: Proto { } + +func foo() -> some Proto { + MyStruct() +} + +// CHECK: define {{.*}}@main(