Skip to content

Commit 86916cf

Browse files
committed
[Mangled name -> metadata] Add built-in types support
1 parent eda032d commit 86916cf

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

stdlib/public/runtime/MetadataLookup.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -584,7 +584,10 @@ class DecodedMetadataBuilder {
584584
}
585585

586586
BuiltType createBuiltinType(StringRef mangledName) const {
587-
// FIXME: Implement.
587+
#define BUILTIN_TYPE(Symbol, _) \
588+
if (mangledName.equals(#Symbol)) \
589+
return &METADATA_SYM(Symbol).base;
590+
#include "swift/Runtime/BuiltinTypes.def"
588591
return BuiltType();
589592
}
590593

test/Runtime/demangleToMetadata.swift

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1-
// RUN: %target-run-simple-swift
1+
// RUN: %empty-directory(%t)
2+
// RUN: %target-build-swift -parse-stdlib %s -module-name main -o %t/a.out
3+
// RUN: %target-run %t/a.out
24
// REQUIRES: executable_test
35

6+
import Swift
47
import StdlibUnittest
58

69
let DemangleToMetadataTests = TestSuite("DemangleToMetadata")
@@ -213,5 +216,19 @@ DemangleToMetadataTests.test("nested generic specializations") {
213216
_typeByMangledName("4main3CG2C5InnerC9InnermostVySiSS_Sd_s4Int8Vs5Int16Vs5Int32Vs5Int64VG")!)
214217
}
215218

219+
DemangleToMetadataTests.test("demangle built-in types") {
220+
expectEqual(Builtin.Int8.self, _typeByMangledName("Bi8_")!)
221+
expectEqual(Builtin.Int16.self, _typeByMangledName("Bi16_")!)
222+
expectEqual(Builtin.Int32.self, _typeByMangledName("Bi32_")!)
223+
expectEqual(Builtin.Int64.self, _typeByMangledName("Bi64_")!)
224+
expectEqual(Builtin.Int128.self, _typeByMangledName("Bi128_")!)
225+
expectEqual(Builtin.Int256.self, _typeByMangledName("Bi256_")!)
226+
expectEqual(Builtin.Int512.self, _typeByMangledName("Bi512_")!)
227+
228+
expectEqual(Builtin.NativeObject.self, _typeByMangledName("Bo")!)
229+
expectEqual(Builtin.BridgeObject.self, _typeByMangledName("Bb")!)
230+
expectEqual(Builtin.UnsafeValueBuffer.self, _typeByMangledName("BB")!)
231+
}
232+
216233
runAllTests()
217234

0 commit comments

Comments
 (0)