From cbe0051b7b9e4bc47366e77d560043a6e1466dec Mon Sep 17 00:00:00 2001 From: Steve Kirbach Date: Fri, 19 Jan 2024 08:47:39 -0800 Subject: [PATCH] hopefully the last one (#137) * hopefully the last one * add different check for GUID type --- swiftwinrt/code_writers.h | 6 +----- swiftwinrt/code_writers/type_writers.cpp | 2 +- .../Sources/test_component/test_component+Generics.swift | 4 ++-- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/swiftwinrt/code_writers.h b/swiftwinrt/code_writers.h index 909ba5af..c4c22dd4 100644 --- a/swiftwinrt/code_writers.h +++ b/swiftwinrt/code_writers.h @@ -501,10 +501,6 @@ bind(function)); auto impl_names = w.push_impl_names(true); - auto c_name = is_struct(*generic_param) ? - generic_param->mangled_name() : - generic_param->cpp_abi_name(); - w.write(R"(internal enum %: ReferenceBridge { typealias CABI = % typealias SwiftProjection = % @@ -527,7 +523,7 @@ bind(function)); get_full_swift_type_name(w, generic_param), w.support, type.mangled_name(), - c_name, + bind(*generic_param, write_type_params::c_abi), bind(*generic_param, projection_layer::c_abi), bind(generic_param, "result", true), type.mangled_name()); diff --git a/swiftwinrt/code_writers/type_writers.cpp b/swiftwinrt/code_writers/type_writers.cpp index deb7186e..059f535a 100644 --- a/swiftwinrt/code_writers/type_writers.cpp +++ b/swiftwinrt/code_writers/type_writers.cpp @@ -213,7 +213,7 @@ static void write_c_abi_type(writer& w, metadata_type const& type) } else if (auto systype = dynamic_cast(&type)) { - if (systype->cpp_abi_name() == "GUID") + if (systype->category() == param_category::guid_type) { w.write("%.GUID", w.support); } diff --git a/tests/test_component/Sources/test_component/test_component+Generics.swift b/tests/test_component/Sources/test_component/test_component+Generics.swift index ffb0d220..82033dac 100644 --- a/tests/test_component/Sources/test_component/test_component+Generics.swift +++ b/tests/test_component/Sources/test_component/test_component+Generics.swift @@ -7121,7 +7121,7 @@ internal enum __x_ABI_C__FIReference_1_GUIDBridge: ReferenceBridge { static func from(abi: ComPtr?) -> SwiftProjection? { guard let val = abi else { return nil } - var result: GUID = .init() + var result: test_component.GUID = .init() try! CHECKED(val.get().pointee.lpVtbl.pointee.get_Value(val.get(), &result)) return .init(from: result) } @@ -7237,7 +7237,7 @@ internal enum __x_ABI_C__FIReference_1___x_ABI_Ctest__zcomponent__CSignedBridge: static func from(abi: ComPtr?) -> SwiftProjection? { guard let val = abi else { return nil } - var result: Signed = .init(0) + var result: __x_ABI_Ctest__component_CSigned = .init(0) try! CHECKED(val.get().pointee.lpVtbl.pointee.get_Value(val.get(), &result)) return result }