Skip to content

Commit 52b4ae4

Browse files
committed
Define BUILTIN_TYPE_NAME constants in Strings.h
1 parent 4b9a685 commit 52b4ae4

File tree

6 files changed

+79
-36
lines changed

6 files changed

+79
-36
lines changed

include/swift/Strings.h

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,41 @@ namespace swift {
4444
static const char MANGLING_MODULE_OBJC[] = "__C";
4545
/// The name of the fake module used to hold synthesized ClangImporter things.
4646
static const char MANGLING_MODULE_CLANG_IMPORTER[] = "__C_Synthesized";
47+
48+
/// The name of the Builtin type name for Int
49+
static const char BUILTIN_TYPE_NAME_INT[] = "Builtin.Int";
50+
/// The name of the Builtin type name for Int8
51+
static const char BUILTIN_TYPE_NAME_INT8[] = "Builtin.Int8";
52+
/// The name of the Builtin type name for Int16
53+
static const char BUILTIN_TYPE_NAME_INT16[] = "Builtin.Int16";
54+
/// The name of the Builtin type name for Int32
55+
static const char BUILTIN_TYPE_NAME_INT32[] = "Builtin.Int32";
56+
/// The name of the Builtin type name for Int64
57+
static const char BUILTIN_TYPE_NAME_INT64[] = "Builtin.Int64";
58+
/// The name of the Builtin type name for Int128
59+
static const char BUILTIN_TYPE_NAME_INT128[] = "Builtin.Int128";
60+
/// The name of the Builtin type name for Int256
61+
static const char BUILTIN_TYPE_NAME_INT256[] = "Builtin.Int256";
62+
/// The name of the Builtin type name for Int512
63+
static const char BUILTIN_TYPE_NAME_INT512[] = "Builtin.Int512";
64+
/// The name of the Builtin type name for Float
65+
static const char BUILTIN_TYPE_NAME_Float[] = "Builtin.Float";
66+
/// The name of the Builtin type name for NativeObject
67+
static const char BUILTIN_TYPE_NAME_NATIVEOBJECT[] = "Builtin.NativeObject";
68+
/// The name of the Builtin type name for BridgeObject
69+
static const char BUILTIN_TYPE_NAME_BRIDGEOBJECT[] = "Builtin.BridgeObject";
70+
/// The name of the Builtin type name for RawPointer
71+
static const char BUILTIN_TYPE_NAME_RAWPOINTER[] = "Builtin.RawPointer";
72+
/// The name of the Builtin type name for UnsafeValueBuffer
73+
static const char BUILTIN_TYPE_NAME_UNSAFEVALUEBUFFER[] = "Builtin.UnsafeValueBuffer";
74+
/// The name of the Builtin type name for UnknownObject
75+
static const char BUILTIN_TYPE_NAME_UNKNOWNOBJECT[] = "Builtin.UnknownObject";
76+
/// The name of the Builtin type name for Vector
77+
static const char BUILTIN_TYPE_NAME_VEC[] = "Builtin.Vec";
78+
/// The name of the Builtin type name for SILToken
79+
static const char BUILTIN_TYPE_NAME_SILTOKEN[] = "Builtin.SILToken";
80+
/// The name of the Builtin type name for Word
81+
static const char BUILTIN_TYPE_NAME_WORD[] = "Builtin.Word";
4782
} // end namespace swift
4883

4984
#endif // SWIFT_STRINGS_H

lib/AST/ASTPrinter.cpp

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3200,23 +3200,23 @@ class TypePrinter : public TypeVisitor<TypePrinter> {
32003200
}
32013201

32023202
void visitBuiltinRawPointerType(BuiltinRawPointerType *T) {
3203-
Printer << "Builtin.RawPointer";
3203+
Printer << BUILTIN_TYPE_NAME_RAWPOINTER;
32043204
}
32053205

32063206
void visitBuiltinNativeObjectType(BuiltinNativeObjectType *T) {
3207-
Printer << "Builtin.NativeObject";
3207+
Printer << BUILTIN_TYPE_NAME_NATIVEOBJECT;
32083208
}
32093209

32103210
void visitBuiltinUnknownObjectType(BuiltinUnknownObjectType *T) {
3211-
Printer << "Builtin.UnknownObject";
3211+
Printer << BUILTIN_TYPE_NAME_UNKNOWNOBJECT;
32123212
}
32133213

32143214
void visitBuiltinBridgeObjectType(BuiltinBridgeObjectType *T) {
3215-
Printer << "Builtin.BridgeObject";
3215+
Printer << BUILTIN_TYPE_NAME_BRIDGEOBJECT;
32163216
}
32173217

32183218
void visitBuiltinUnsafeValueBufferType(BuiltinUnsafeValueBufferType *T) {
3219-
Printer << "Builtin.UnsafeValueBuffer";
3219+
Printer << BUILTIN_TYPE_NAME_UNSAFEVALUEBUFFER;
32203220
}
32213221

32223222
void visitBuiltinVectorType(BuiltinVectorType *T) {
@@ -3228,21 +3228,23 @@ class TypePrinter : public TypeVisitor<TypePrinter> {
32283228
llvm::raw_svector_ostream UnderlyingOS(UnderlyingStrVec);
32293229
T->getElementType().print(UnderlyingOS);
32303230
}
3231-
if (UnderlyingStrVec.startswith("Builtin."))
3231+
std::string builtin_name = BUILTIN_NAME;
3232+
std::string builtin_type_prefix = builtin_name + ".";
3233+
if (UnderlyingStrVec.startswith(builtin_type_prefix))
32323234
UnderlyingStr = UnderlyingStrVec.substr(8);
32333235
else
32343236
UnderlyingStr = UnderlyingStrVec;
32353237
}
32363238

3237-
Printer << "Builtin.Vec" << T->getNumElements() << "x" << UnderlyingStr;
3239+
Printer << BUILTIN_TYPE_NAME_VEC << T->getNumElements() << "x" << UnderlyingStr;
32383240
}
32393241

32403242
void visitBuiltinIntegerType(BuiltinIntegerType *T) {
32413243
auto width = T->getWidth();
32423244
if (width.isFixedWidth()) {
3243-
Printer << "Builtin.Int" << width.getFixedWidth();
3245+
Printer << BUILTIN_TYPE_NAME_INT << width.getFixedWidth();
32443246
} else if (width.isPointerWidth()) {
3245-
Printer << "Builtin.Word";
3247+
Printer << BUILTIN_TYPE_NAME_WORD;
32463248
} else {
32473249
llvm_unreachable("impossible bit width");
32483250
}
@@ -3260,7 +3262,7 @@ class TypePrinter : public TypeVisitor<TypePrinter> {
32603262
}
32613263

32623264
void visitSILTokenType(SILTokenType *T) {
3263-
Printer << "Builtin.SILToken";
3265+
Printer << BUILTIN_TYPE_NAME_SILTOKEN;
32643266
}
32653267

32663268
void visitNameAliasType(NameAliasType *T) {

lib/Demangling/Demangler.cpp

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -923,18 +923,18 @@ NodePointer Demangler::demangleBuiltinType() {
923923
switch (nextChar()) {
924924
case 'b':
925925
Ty = createNode(Node::Kind::BuiltinTypeName,
926-
"Builtin.BridgeObject");
926+
BUILTIN_TYPE_NAME_BRIDGEOBJECT);
927927
break;
928928
case 'B':
929929
Ty = createNode(Node::Kind::BuiltinTypeName,
930-
"Builtin.UnsafeValueBuffer");
930+
BUILTIN_TYPE_NAME_UNSAFEVALUEBUFFER);
931931
break;
932932
case 'f': {
933933
int size = demangleIndex() - 1;
934934
if (size <= 0)
935935
return nullptr;
936936
CharVector name;
937-
name.append("Builtin.Float", *this);
937+
name.append(BUILTIN_TYPE_NAME_Float, *this);
938938
name.append(size, *this);
939939
Ty = createNode(Node::Kind::BuiltinTypeName, name);
940940
break;
@@ -944,7 +944,7 @@ NodePointer Demangler::demangleBuiltinType() {
944944
if (size <= 0)
945945
return nullptr;
946946
CharVector name;
947-
name.append("Builtin.Int", *this);
947+
name.append(BUILTIN_TYPE_NAME_INT, *this);
948948
name.append(size, *this);
949949
Ty = createNode(Node::Kind::BuiltinTypeName, name);
950950
break;
@@ -954,35 +954,37 @@ NodePointer Demangler::demangleBuiltinType() {
954954
if (elts <= 0)
955955
return nullptr;
956956
NodePointer EltType = popTypeAndGetChild();
957+
std::string builtin_name = BUILTIN_NAME;
958+
std::string builtin_type_prefix = builtin_name + ".";
957959
if (!EltType || EltType->getKind() != Node::Kind::BuiltinTypeName ||
958-
!EltType->getText().startswith("Builtin."))
960+
!EltType->getText().startswith(builtin_type_prefix))
959961
return nullptr;
960962
CharVector name;
961-
name.append("Builtin.Vec", *this);
963+
name.append(BUILTIN_TYPE_NAME_VEC, *this);
962964
name.append(elts, *this);
963965
name.push_back('x', *this);
964-
name.append(EltType->getText().substr(sizeof("Builtin.") - 1), *this);
966+
name.append(EltType->getText().substr(strlen(builtin_type_prefix.c_str())), *this);
965967
Ty = createNode(Node::Kind::BuiltinTypeName, name);
966968
break;
967969
}
968970
case 'O':
969971
Ty = createNode(Node::Kind::BuiltinTypeName,
970-
"Builtin.UnknownObject");
972+
BUILTIN_TYPE_NAME_UNKNOWNOBJECT);
971973
break;
972974
case 'o':
973975
Ty = createNode(Node::Kind::BuiltinTypeName,
974-
"Builtin.NativeObject");
976+
BUILTIN_TYPE_NAME_NATIVEOBJECT);
975977
break;
976978
case 'p':
977979
Ty = createNode(Node::Kind::BuiltinTypeName,
978-
"Builtin.RawPointer");
980+
BUILTIN_TYPE_NAME_RAWPOINTER);
979981
break;
980982
case 't':
981-
Ty = createNode(Node::Kind::BuiltinTypeName, "Builtin.SILToken");
983+
Ty = createNode(Node::Kind::BuiltinTypeName, BUILTIN_TYPE_NAME_SILTOKEN);
982984
break;
983985
case 'w':
984986
Ty = createNode(Node::Kind::BuiltinTypeName,
985-
"Builtin.Word");
987+
BUILTIN_TYPE_NAME_WORD);
986988
break;
987989
default:
988990
return nullptr;

lib/Demangling/Remangler.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -598,25 +598,25 @@ void Remangler::mangleBuiltinTypeName(Node *node) {
598598
Buffer << 'B';
599599
StringRef text = node->getText();
600600

601-
if (text == "Builtin.BridgeObject") {
601+
if (text == BUILTIN_TYPE_NAME_BRIDGEOBJECT) {
602602
Buffer << 'b';
603-
} else if (text == "Builtin.UnsafeValueBuffer") {
603+
} else if (text == BUILTIN_TYPE_NAME_UNSAFEVALUEBUFFER) {
604604
Buffer << 'B';
605-
} else if (text == "Builtin.UnknownObject") {
605+
} else if (text == BUILTIN_TYPE_NAME_UNKNOWNOBJECT) {
606606
Buffer << 'O';
607-
} else if (text == "Builtin.NativeObject") {
607+
} else if (text == BUILTIN_TYPE_NAME_NATIVEOBJECT) {
608608
Buffer << 'o';
609-
} else if (text == "Builtin.RawPointer") {
609+
} else if (text == BUILTIN_TYPE_NAME_RAWPOINTER) {
610610
Buffer << 'p';
611-
} else if (text == "Builtin.SILToken") {
611+
} else if (text == BUILTIN_TYPE_NAME_SILTOKEN) {
612612
Buffer << 't';
613-
} else if (text == "Builtin.Word") {
613+
} else if (text == BUILTIN_TYPE_NAME_WORD) {
614614
Buffer << 'w';
615-
} else if (stripPrefix(text, "Builtin.Int")) {
615+
} else if (stripPrefix(text, BUILTIN_TYPE_NAME_INT)) {
616616
Buffer << 'i' << text << '_';
617-
} else if (stripPrefix(text, "Builtin.Float")) {
617+
} else if (stripPrefix(text, BUILTIN_TYPE_NAME_Float)) {
618618
Buffer << 'f' << text << '_';
619-
} else if (stripPrefix(text, "Builtin.Vec")) {
619+
} else if (stripPrefix(text, BUILTIN_TYPE_NAME_VEC)) {
620620
auto split = text.split('x');
621621
if (split.second == "RawPointer") {
622622
Buffer << 'p';

lib/IDE/TypeReconstruction.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -798,10 +798,11 @@ static void VisitNodeBuiltinTypeName(
798798
std::string builtin_name = cur_node->getText();
799799

800800
StringRef builtin_name_ref(builtin_name);
801+
std::string builtin_type_prefix = stringWithFormat("%s.", BUILTIN_NAME);
801802

802-
if (builtin_name_ref.startswith("Builtin.")) {
803+
if (builtin_name_ref.startswith(builtin_type_prefix)) {
803804
StringRef stripped_name_ref =
804-
builtin_name_ref.drop_front(strlen("Builtin."));
805+
builtin_name_ref.drop_front(strlen(builtin_type_prefix.c_str()));
805806
SmallVector<ValueDecl *, 1> builtin_decls;
806807

807808
result._module =
@@ -814,7 +815,7 @@ static void VisitNodeBuiltinTypeName(
814815
}
815816
} else {
816817
result._error = stringWithFormat(
817-
"BuiltinTypeName %s doesn't start with Builtin.", builtin_name.c_str());
818+
"BuiltinTypeName %s doesn't start with %s", builtin_name.c_str(), builtin_type_prefix.c_str());
818819
}
819820
}
820821

lib/Serialization/Serialization.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
#include "swift/ClangImporter/ClangImporter.h"
3737
#include "swift/ClangImporter/ClangModule.h"
3838
#include "swift/Serialization/SerializationOptions.h"
39+
#include "swift/Strings.h"
3940

4041
// FIXME: We're just using CompilerInstance::createOutputFile.
4142
// This API should be sunk down to LLVM.
@@ -3551,7 +3552,9 @@ static TypeAliasDecl *findTypeAliasForBuiltin(ASTContext &Ctx, Type T) {
35513552
llvm::SmallString<32> FullName;
35523553
llvm::raw_svector_ostream OS(FullName);
35533554
T->print(OS);
3554-
assert(FullName.startswith("Builtin."));
3555+
std::string builtin_name = BUILTIN_NAME;
3556+
std::string builtin_type_prefix = builtin_name + ".";
3557+
assert(FullName.startswith(builtin_type_prefix));
35553558
StringRef TypeName = FullName.substr(8);
35563559

35573560
SmallVector<ValueDecl*, 4> CurModuleResults;

0 commit comments

Comments
 (0)