[cxx-interop] Suppress warning in non-arc Obj-C++

We have some arc specific casts in our generated headers that can
trigger some warnings in non-arc Obj-C++ code. These casts are noop in
that case so it is fine to have them there. And we do want them as we
want the code to be compatible both with arc and non-arc code.

rdar://163281971
This commit is contained in:
Gabor Horvath
2025-11-28 14:48:24 +00:00
parent 443237860c
commit 501cc36462
2 changed files with 7 additions and 0 deletions

View File

@@ -567,6 +567,8 @@ static void writePostImportPrologue(raw_ostream &os, ModuleDecl &M) {
"#pragma clang diagnostic ignored \"-Wunknown-pragmas\"\n"
"#pragma clang diagnostic ignored \"-Wnullability\"\n"
"#pragma clang diagnostic ignored "
"\"-Warc-bridge-casts-disallowed-in-nonarc\"\n"
"#pragma clang diagnostic ignored "
"\"-Wdollar-in-identifier-extension\"\n"
"#pragma clang diagnostic ignored "
"\"-Wunsafe-buffer-usage\"\n"

View File

@@ -2,6 +2,7 @@
// RUN: %target-swift-frontend %s -module-name UseCoreFoundation -enable-experimental-cxx-interop -clang-header-expose-decls=all-public -typecheck -verify -emit-clang-header-path %t/UseCoreFoundation.h
// RUN: %target-interop-build-clangxx -std=gnu++20 -fobjc-arc -c -x objective-c++-header %t/UseCoreFoundation.h -o %t/o.o
// RUN: %target-interop-build-clangxx -Werror=arc-bridge-casts-disallowed-in-nonarc -std=gnu++20 -fno-objc-arc -c -x objective-c++-header %t/UseCoreFoundation.h -o %t/o.o
// REQUIRES: objc_interop
@@ -14,3 +15,7 @@ public class TestFoundationType {
_bundle = bundle
}
}
public func getArray() -> [String] {
[]
}