Skip to content

Commit 18a211c

Browse files
authored
Merge pull request #60734 from tshortli/check-func-param-result-builder-availability
Sema: Check the availability of result builder attributes on function parameters
2 parents fd4e98a + fbfb4d5 commit 18a211c

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
@@ -1868,6 +1868,9 @@ class DeclAvailabilityChecker : public DeclVisitor<DeclAvailabilityChecker> {
18681868
checkType(wrapperType, wrapperAttrs[index]->getTypeRepr(), fn);
18691869
}
18701870

1871+
if (auto attr = P->getAttachedResultBuilder())
1872+
checkType(P->getResultBuilderType(), attr->getTypeRepr(), fn);
1873+
18711874
checkType(P->getInterfaceType(), P->getTypeRepr(), fn);
18721875
}
18731876
}

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)