Skip to content

Commit 42779d6

Browse files
authored
[NFC] Remove some dead variadic tuple code (#33059)
* [ASTDemangler] Remove 'isVariadic' parameter from 'createTupleType' * [TypeDecoder] Remove 'variadic' argument from 'createTupleType' call * [Reflection] Remove support for variadic from TupleTypeRef * [Remote] Remove 'variadic' argument from 'createTupleType' call * [Runtime] Remove 'variadic' parameter from createTupleType in MetadataLookup * [Test] Remove variadic tuple typeref tests * [Reflection] Restore accidentally deleted code from 'visitFunctionTypeRef'
1 parent 589b919 commit 42779d6

File tree

9 files changed

+22
-53
lines changed

9 files changed

+22
-53
lines changed

include/swift/AST/ASTDemangler.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,7 @@ class ASTBuilder {
9292
Type createBoundGenericType(GenericTypeDecl *decl, ArrayRef<Type> args,
9393
Type parent);
9494

95-
Type createTupleType(ArrayRef<Type> eltTypes, StringRef labels,
96-
bool isVariadic);
95+
Type createTupleType(ArrayRef<Type> eltTypes, StringRef labels);
9796

9897
Type createFunctionType(ArrayRef<Demangle::FunctionParam<Type>> params,
9998
Type output, FunctionTypeFlags flags);

include/swift/Demangling/TypeDecoder.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -711,7 +711,6 @@ class TypeDecoder {
711711
case NodeKind::Tuple: {
712712
llvm::SmallVector<BuiltType, 8> elements;
713713
std::string labels;
714-
bool variadic = false;
715714
for (auto &element : *Node) {
716715
if (element->getKind() != NodeKind::TupleElement)
717716
return BuiltType();
@@ -744,7 +743,7 @@ class TypeDecoder {
744743

745744
elements.push_back(elementType);
746745
}
747-
return Builder.createTupleType(elements, std::move(labels), variadic);
746+
return Builder.createTupleType(elements, std::move(labels));
748747
}
749748
case NodeKind::TupleElement:
750749
if (Node->getNumChildren() < 1)

include/swift/Reflection/TypeRef.h

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -302,38 +302,28 @@ class BoundGenericTypeRef final : public TypeRef, public NominalTypeTrait {
302302

303303
class TupleTypeRef final : public TypeRef {
304304
std::vector<const TypeRef *> Elements;
305-
bool Variadic;
306305

307-
static TypeRefID Profile(const std::vector<const TypeRef *> &Elements,
308-
bool Variadic) {
306+
static TypeRefID Profile(const std::vector<const TypeRef *> &Elements) {
309307
TypeRefID ID;
310308
for (auto Element : Elements)
311309
ID.addPointer(Element);
312-
313-
ID.addInteger(static_cast<uint32_t>(Variadic));
314310
return ID;
315311
}
316312

317313
public:
318-
TupleTypeRef(std::vector<const TypeRef *> Elements, bool Variadic=false)
319-
: TypeRef(TypeRefKind::Tuple), Elements(std::move(Elements)),
320-
Variadic(Variadic) {}
314+
TupleTypeRef(std::vector<const TypeRef *> Elements)
315+
: TypeRef(TypeRefKind::Tuple), Elements(std::move(Elements)) {}
321316

322317
template <typename Allocator>
323318
static const TupleTypeRef *create(Allocator &A,
324-
std::vector<const TypeRef *> Elements,
325-
bool Variadic = false) {
326-
FIND_OR_CREATE_TYPEREF(A, TupleTypeRef, Elements, Variadic);
319+
std::vector<const TypeRef *> Elements) {
320+
FIND_OR_CREATE_TYPEREF(A, TupleTypeRef, Elements);
327321
}
328322

329323
const std::vector<const TypeRef *> &getElements() const {
330324
return Elements;
331325
};
332326

333-
bool isVariadic() const {
334-
return Variadic;
335-
}
336-
337327
static bool classof(const TypeRef *TR) {
338328
return TR->getKind() == TypeRefKind::Tuple;
339329
}

include/swift/Reflection/TypeRefBuilder.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -404,10 +404,10 @@ class TypeRefBuilder {
404404
}
405405

406406
const TupleTypeRef *createTupleType(llvm::ArrayRef<const TypeRef *> elements,
407-
std::string &&labels, bool isVariadic) {
407+
std::string &&labels) {
408408
// FIXME: Add uniqueness checks in TupleTypeRef::Profile and
409409
// unittests/Reflection/TypeRef.cpp if using labels for identity.
410-
return TupleTypeRef::create(*this, elements, isVariadic);
410+
return TupleTypeRef::create(*this, elements);
411411
}
412412

413413
const FunctionTypeRef *createFunctionType(
@@ -445,7 +445,7 @@ class TypeRefBuilder {
445445
break;
446446
}
447447

448-
auto result = createTupleType({}, "", false);
448+
auto result = createTupleType({}, "");
449449
return FunctionTypeRef::create(*this, {}, result, funcFlags);
450450
}
451451

include/swift/Remote/MetadataReader.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -759,8 +759,8 @@ class MetadataReader {
759759
!Reader->readString(RemoteAddress(tupleMeta->Labels), labels))
760760
return BuiltType();
761761

762-
auto BuiltTuple = Builder.createTupleType(elementTypes, std::move(labels),
763-
/*variadic*/ false);
762+
auto BuiltTuple =
763+
Builder.createTupleType(elementTypes, std::move(labels));
764764
TypeCache[MetadataAddress] = BuiltTuple;
765765
return BuiltTuple;
766766
}

lib/AST/ASTDemangler.cpp

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -323,12 +323,7 @@ Type ASTBuilder::createBoundGenericType(GenericTypeDecl *decl,
323323
return aliasDecl->getDeclaredInterfaceType().subst(subMap);
324324
}
325325

326-
Type ASTBuilder::createTupleType(ArrayRef<Type> eltTypes,
327-
StringRef labels,
328-
bool isVariadic) {
329-
// Just bail out on variadic tuples for now.
330-
if (isVariadic) return Type();
331-
326+
Type ASTBuilder::createTupleType(ArrayRef<Type> eltTypes, StringRef labels) {
332327
SmallVector<TupleTypeElt, 4> elements;
333328
elements.reserve(eltTypes.size());
334329
for (auto eltType : eltTypes) {

stdlib/public/Reflection/TypeRef.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -458,12 +458,6 @@ class DemanglingForTypeRef
458458

459459
Demangle::NodePointer visitTupleTypeRef(const TupleTypeRef *T) {
460460
auto tuple = Dem.createNode(Node::Kind::Tuple);
461-
if (T->isVariadic()) {
462-
auto tupleElt = Dem.createNode(Node::Kind::TupleElement);
463-
tupleElt->addChild(Dem.createNode(Node::Kind::VariadicMarker), Dem);
464-
tuple->addChild(tupleElt, Dem);
465-
return tuple;
466-
}
467461

468462
for (auto element : T->getElements()) {
469463
auto tupleElt = Dem.createNode(Node::Kind::TupleElement);

stdlib/public/runtime/MetadataLookup.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1397,8 +1397,7 @@ class DecodedMetadataBuilder {
13971397
}
13981398

13991399
BuiltType createTupleType(llvm::ArrayRef<BuiltType> elements,
1400-
std::string labels, bool variadic) const {
1401-
// TODO: 'variadic' should no longer exist
1400+
std::string labels) const {
14021401
auto flags = TupleTypeFlags().withNumElements(elements.size());
14031402
if (!labels.empty())
14041403
flags = flags.withNonConstantLabels(true);

unittests/Reflection/TypeRef.cpp

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -88,36 +88,29 @@ TEST(TypeRefTest, UniqueTupleTypeRef) {
8888
auto N2 = Builder.createNominalType(XYZ, nullptr);
8989

9090
std::vector<const TypeRef *> Void;
91-
auto Void1 = Builder.createTupleType(Void, "", false);
92-
auto Void2 = Builder.createTupleType(Void, "", false);
91+
auto Void1 = Builder.createTupleType(Void, "");
92+
auto Void2 = Builder.createTupleType(Void, "");
9393

9494
EXPECT_EQ(Void1, Void2);
9595

9696
std::vector<const TypeRef *> Elements1 { N1, N2 };
9797
std::vector<const TypeRef *> Elements2 { N1, N2, N2 };
9898

99-
auto T1 = Builder.createTupleType(Elements1, "", false);
100-
auto T2 = Builder.createTupleType(Elements1, "", false);
101-
auto T3 = Builder.createTupleType(Elements2, "", false);
99+
auto T1 = Builder.createTupleType(Elements1, "");
100+
auto T2 = Builder.createTupleType(Elements1, "");
101+
auto T3 = Builder.createTupleType(Elements2, "");
102102

103103
EXPECT_EQ(T1, T2);
104104
EXPECT_NE(T2, T3);
105105
EXPECT_NE(T1, Void1);
106-
107-
auto T4 = Builder.createTupleType(Elements1, "", true);
108-
auto T5 = Builder.createTupleType(Elements1, "", true);
109-
auto T6 = Builder.createTupleType(Elements1, "", false);
110-
111-
EXPECT_EQ(T4, T5);
112-
EXPECT_NE(T5, T6);
113106
}
114107

115108
TEST(TypeRefTest, UniqueFunctionTypeRef) {
116109

117110
TypeRefBuilder Builder(TypeRefBuilder::ForTesting);
118111

119112
std::vector<const TypeRef *> Void;
120-
auto VoidResult = Builder.createTupleType(Void, "", false);
113+
auto VoidResult = Builder.createTupleType(Void, "");
121114
Param Param1 = Builder.createNominalType(ABC, nullptr);
122115
Param Param2 = Builder.createNominalType(XYZ, nullptr);
123116

@@ -126,7 +119,7 @@ TEST(TypeRefTest, UniqueFunctionTypeRef) {
126119
std::vector<Param> Parameters2{Param1, Param1};
127120

128121
auto Result =
129-
Builder.createTupleType({Param1.getType(), Param2.getType()}, "", false);
122+
Builder.createTupleType({Param1.getType(), Param2.getType()}, "");
130123

131124
auto F1 =
132125
Builder.createFunctionType(Parameters1, Result, FunctionTypeFlags());
@@ -449,7 +442,7 @@ TEST(TypeRefTest, DeriveSubstitutions) {
449442
auto Nominal = Builder.createBoundGenericType(NominalName, NominalArgs,
450443
/*parent*/ nullptr);
451444

452-
auto Result = Builder.createTupleType({GTP00, GTP01}, "", false);
445+
auto Result = Builder.createTupleType({GTP00, GTP01}, "");
453446
auto Func =
454447
Builder.createFunctionType({Nominal}, Result, FunctionTypeFlags());
455448

0 commit comments

Comments
 (0)