Skip to content

Commit ff20013

Browse files
committed
[AST] Add ErrorType originator for PlaceholderType
1 parent eeb0675 commit ff20013

File tree

4 files changed

+9
-2
lines changed

4 files changed

+9
-2
lines changed

include/swift/AST/Types.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7734,8 +7734,8 @@ class PlaceholderType : public TypeBase {
77347734
// NOTE: If you add a new Type-based originator, you'll need to update the
77357735
// recursive property logic in PlaceholderType::get.
77367736
using Originator =
7737-
llvm::PointerUnion<TypeVariableType *, DependentMemberType *, VarDecl *,
7738-
ErrorExpr *, TypeRepr *>;
7737+
llvm::PointerUnion<TypeVariableType *, DependentMemberType *, ErrorType *,
7738+
VarDecl *, ErrorExpr *, TypeRepr *>;
77397739

77407740
Originator O;
77417741

lib/AST/ASTContext.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3675,6 +3675,9 @@ Type PlaceholderType::get(ASTContext &ctx, Originator originator) {
36753675
if (auto *depTy = originator.dyn_cast<DependentMemberType *>())
36763676
return depTy->getRecursiveProperties();
36773677

3678+
if (auto *errTy = originator.dyn_cast<ErrorType *>())
3679+
return errTy->getRecursiveProperties();
3680+
36783681
return RecursiveTypeProperties();
36793682
}();
36803683
auto arena = getArena(originatorProps);

lib/AST/ASTDumper.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6077,6 +6077,8 @@ namespace {
60776077
Label::optional("originating_var"), DeclColor);
60786078
} else if (isa<ErrorExpr *>(originator)) {
60796079
printFlag("error_expr");
6080+
} else if (auto *errTy = originator.dyn_cast<ErrorType *>()) {
6081+
printRec(errTy, Label::always("error_type"));
60806082
} else if (auto *DMT = originator.dyn_cast<DependentMemberType *>()) {
60816083
printRec(DMT, Label::always("dependent_member_type"));
60826084
} else if (isa<TypeRepr *>(originator)) {

lib/AST/ASTPrinter.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6146,6 +6146,8 @@ class TypePrinter : public TypeVisitor<TypePrinter, void, NonRecursivePrintOptio
61466146
Printer << VD->getName();
61476147
} else if (isa<ErrorExpr *>(originator)) {
61486148
Printer << "error_expr";
6149+
} else if (auto *errTy = originator.dyn_cast<ErrorType *>()) {
6150+
visit(errTy);
61496151
} else if (auto *DMT = originator.dyn_cast<DependentMemberType *>()) {
61506152
visit(DMT);
61516153
} else if (isa<TypeRepr *>(originator)) {

0 commit comments

Comments
 (0)