From 68e22e1fb1a77fc255e3efb67cf9a84ec2c3d745 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Wed, 14 Jun 2023 12:49:18 -0400 Subject: [PATCH] AST: Fix logic error in TypeMatcher::visitParameterizedProtocolType() Fixes https://github.com/apple/swift/issues/63410. --- include/swift/AST/TypeMatcher.h | 10 ++++++---- test/Generics/issue-63410.swift | 8 ++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 test/Generics/issue-63410.swift diff --git a/include/swift/AST/TypeMatcher.h b/include/swift/AST/TypeMatcher.h index 8f3e7ca1c3e..076d445c8c4 100644 --- a/include/swift/AST/TypeMatcher.h +++ b/include/swift/AST/TypeMatcher.h @@ -438,10 +438,12 @@ class TypeMatcher { if (firstArgs.size() == secondArgs.size()) { for (unsigned i : indices(firstArgs)) { - return this->visit(CanType(firstArgs[i]), - secondArgs[i], - sugaredFirstType->castTo() - ->getArgs()[i]); + if (!this->visit(CanType(firstArgs[i]), + secondArgs[i], + sugaredFirstType->castTo() + ->getArgs()[i])) { + return false; + } } return true; diff --git a/test/Generics/issue-63410.swift b/test/Generics/issue-63410.swift new file mode 100644 index 00000000000..81b2585d538 --- /dev/null +++ b/test/Generics/issue-63410.swift @@ -0,0 +1,8 @@ +// RUN: %target-typecheck-verify-swift + +protocol Derived where C == any Derived { + associatedtype A + associatedtype B + + associatedtype C +}