Skip to content

Commit fbfb4d5

Browse files
committed
Sema: Check the availability of result builder attributes on function parameters.
Resolves #60391 and rdar://99006375
1 parent bca9004 commit fbfb4d5

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

lib/Sema/TypeCheckAccess.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1819,6 +1819,9 @@ class DeclAvailabilityChecker : public DeclVisitor<DeclAvailabilityChecker> {
18191819
checkType(wrapperType, wrapperAttrs[index]->getTypeRepr(), fn);
18201820
}
18211821

1822+
if (auto attr = P->getAttachedResultBuilder())
1823+
checkType(P->getResultBuilderType(), attr->getTypeRepr(), fn);
1824+
18221825
checkType(P->getInterfaceType(), P->getTypeRepr(), fn);
18231826
}
18241827
}

test/Constraints/result_builder_availability.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,16 @@
55
@available(*, unavailable)
66
@resultBuilder
77
struct UnavailableBuilder {
8-
// expected-note@-1 {{'UnavailableBuilder' has been explicitly marked unavailable here}}
8+
// expected-note@-1 2 {{'UnavailableBuilder' has been explicitly marked unavailable here}}
99
static func buildBlock() {}
1010
}
1111

1212
@UnavailableBuilder public func usesUnavailableBuilder() {}
1313
// expected-error@-1 {{'UnavailableBuilder' is unavailable}}
1414

15+
public func takesUnavailableBuilder(@UnavailableBuilder _ fn: () -> ()) {}
16+
// expected-error@-1 {{'UnavailableBuilder' is unavailable}}
17+
1518
enum Either<T,U> {
1619
case first(T)
1720
case second(U)

0 commit comments

Comments
 (0)