@@ -357,3 +357,77 @@ TEST_F(TestTypeSystemSwiftTypeRef, LanguageVersion) {
357
357
ASSERT_EQ (int_type.GetMinimumLanguage (), lldb::eLanguageTypeSwift);
358
358
}
359
359
}
360
+
361
+ TEST_F (TestTypeSystemSwiftTypeRef, TypeClass) {
362
+ using namespace swift ::Demangle;
363
+ Demangler dem;
364
+ NodeBuilder b (dem);
365
+ {
366
+ NodePointer n = b.GlobalTypeMangling (b.IntType ());
367
+ CompilerType t = GetCompilerType (b.Mangle (n));
368
+ ASSERT_EQ (t.GetTypeClass (), lldb::eTypeClassBuiltin);
369
+ }
370
+ {
371
+ std::string vec = StringRef (swift::BUILTIN_TYPE_NAME_VEC).str () + " 4xInt8" ;
372
+ NodePointer n =
373
+ b.GlobalType (b.Node (Node::Kind::BuiltinTypeName, vec.c_str ()));
374
+ CompilerType t = GetCompilerType (b.Mangle (n));
375
+ ASSERT_EQ (t.GetTypeClass (), lldb::eTypeClassVector);
376
+ }
377
+ {
378
+ NodePointer n = b.GlobalType (b.Node (Node::Kind::Tuple));
379
+ CompilerType t = GetCompilerType (b.Mangle (n));
380
+ ASSERT_EQ (t.GetTypeClass (), lldb::eTypeClassArray);
381
+ }
382
+ {
383
+ NodePointer n =
384
+ b.GlobalType (b.Node (Node::Kind::Enum, b.Node (Node::Kind::Module, " M" ),
385
+ b.Node (Node::Kind::Identifier, " E" )));
386
+ CompilerType t = GetCompilerType (b.Mangle (n));
387
+ ASSERT_EQ (t.GetTypeClass (), lldb::eTypeClassUnion);
388
+ }
389
+ {
390
+ NodePointer n = b.GlobalType (b.Node (Node::Kind::Structure,
391
+ b.Node (Node::Kind::Module, " M" ),
392
+ b.Node (Node::Kind::Identifier, " S" )));
393
+ CompilerType t = GetCompilerType (b.Mangle (n));
394
+ ASSERT_EQ (t.GetTypeClass (), lldb::eTypeClassStruct);
395
+ }
396
+ {
397
+ NodePointer n =
398
+ b.GlobalType (b.Node (Node::Kind::Class, b.Node (Node::Kind::Module, " M" ),
399
+ b.Node (Node::Kind::Identifier, " C" )));
400
+ CompilerType t = GetCompilerType (b.Mangle (n));
401
+ ASSERT_EQ (t.GetTypeClass (), lldb::eTypeClassClass);
402
+ }
403
+ {
404
+ NodePointer n = b.GlobalType (b.Node (
405
+ Node::Kind::InOut,
406
+ b.Node (Node::Kind::Structure,
407
+ b.Node (Node::Kind::Module, swift::STDLIB_NAME),
408
+ b.Node (Node::Kind::Identifier, swift::BUILTIN_TYPE_NAME_INT))));
409
+ CompilerType t = GetCompilerType (b.Mangle (n));
410
+ ASSERT_EQ (t.GetTypeClass (), lldb::eTypeClassReference);
411
+ }
412
+ {
413
+ NodePointer n = b.GlobalType (
414
+ b.Node (Node::Kind::FunctionType,
415
+ b.Node (Node::Kind::ArgumentTuple,
416
+ b.Node (Node::Kind::Type, b.Node (Node::Kind::Tuple))),
417
+ b.Node (Node::Kind::ReturnType,
418
+ b.Node (Node::Kind::Type, b.Node (Node::Kind::Tuple)))));
419
+ CompilerType t = GetCompilerType (b.Mangle (n));
420
+ ASSERT_EQ (t.GetTypeClass (), lldb::eTypeClassFunction);
421
+ }
422
+ {
423
+ NodePointer n = b.GlobalType (b.Node (
424
+ Node::Kind::ProtocolList,
425
+ b.Node (Node::Kind::TypeList,
426
+ b.Node (Node::Kind::Type,
427
+ b.Node (Node::Kind::Protocol,
428
+ b.Node (Node::Kind::Module, swift::STDLIB_NAME),
429
+ b.Node (Node::Kind::Identifier, " Error" ))))));
430
+ CompilerType t = GetCompilerType (b.Mangle (n));
431
+ ASSERT_EQ (t.GetTypeClass (), lldb::eTypeClassOther);
432
+ }
433
+ }
0 commit comments