Skip to content

Commit d8c826d

Browse files
committed
Fix up AST printing for multiple types specified in operator decl.
1 parent 7033412 commit d8c826d

File tree

2 files changed

+26
-14
lines changed

2 files changed

+26
-14
lines changed

include/swift/AST/Decl.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6412,14 +6412,6 @@ class OperatorDecl : public Decl {
64126412
return IdentifierLocs;
64136413
}
64146414

6415-
Identifier getDesignatedNominalTypeName() const {
6416-
return !Identifiers.empty() ? Identifiers[0] : Identifier();
6417-
}
6418-
6419-
SourceLoc getDesignatedNominalTypeNameLoc() const {
6420-
return !IdentifierLocs.empty() ? IdentifierLocs[0] : SourceLoc();
6421-
}
6422-
64236415
ArrayRef<NominalTypeDecl *> getDesignatedNominalTypes() const {
64246416
return DesignatedNominalTypes;
64256417
}

lib/AST/ASTPrinter.cpp

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2876,8 +2876,14 @@ void PrintAST::visitInfixOperatorDecl(InfixOperatorDecl *decl) {
28762876
if (auto *group = decl->getPrecedenceGroup())
28772877
Printer << " : " << group->getName();
28782878
auto designatedNominalTypes = decl->getDesignatedNominalTypes();
2879-
for (auto typeDecl : designatedNominalTypes)
2880-
Printer << ", " << typeDecl->getName();
2879+
auto first = true;
2880+
for (auto typeDecl : designatedNominalTypes) {
2881+
if (first && !decl->getPrecedenceGroup())
2882+
Printer << " : " << typeDecl->getName();
2883+
else
2884+
Printer << ", " << typeDecl->getName();
2885+
first = false;
2886+
}
28812887
}
28822888

28832889
void PrintAST::visitPrecedenceGroupDecl(PrecedenceGroupDecl *decl) {
@@ -2950,8 +2956,15 @@ void PrintAST::visitPrefixOperatorDecl(PrefixOperatorDecl *decl) {
29502956
[&]{
29512957
Printer.printName(decl->getName());
29522958
});
2953-
if (!decl->getDesignatedNominalTypeName().empty())
2954-
Printer << " : " << decl->getDesignatedNominalTypeName();
2959+
auto designatedNominalTypes = decl->getDesignatedNominalTypes();
2960+
auto first = true;
2961+
for (auto typeDecl : designatedNominalTypes) {
2962+
if (first)
2963+
Printer << " : " << typeDecl->getName();
2964+
else
2965+
Printer << ", " << typeDecl->getName();
2966+
first = false;
2967+
}
29552968
}
29562969

29572970
void PrintAST::visitPostfixOperatorDecl(PostfixOperatorDecl *decl) {
@@ -2961,8 +2974,15 @@ void PrintAST::visitPostfixOperatorDecl(PostfixOperatorDecl *decl) {
29612974
[&]{
29622975
Printer.printName(decl->getName());
29632976
});
2964-
if (!decl->getDesignatedNominalTypeName().empty())
2965-
Printer << " : " << decl->getDesignatedNominalTypeName();
2977+
auto designatedNominalTypes = decl->getDesignatedNominalTypes();
2978+
auto first = true;
2979+
for (auto typeDecl : designatedNominalTypes) {
2980+
if (first)
2981+
Printer << " : " << typeDecl->getName();
2982+
else
2983+
Printer << ", " << typeDecl->getName();
2984+
first = false;
2985+
}
29662986
}
29672987

29682988
void PrintAST::visitModuleDecl(ModuleDecl *decl) { }

0 commit comments

Comments
 (0)