diff --git a/lib/Sema/TypeCheckAttr.cpp b/lib/Sema/TypeCheckAttr.cpp index 7099f26ae5e02..685e2a559155a 100644 --- a/lib/Sema/TypeCheckAttr.cpp +++ b/lib/Sema/TypeCheckAttr.cpp @@ -135,6 +135,12 @@ class AttributeChecker : public AttributeVisitor { } if (!getActorIsolation(nominal).isMainActor() && destructor->hasBody()) { + // In module emission jobs, type checking the body of the destructor may + // be skipped which means availability in the body cannot be diagnosed + // accurately. + if (destructor->isBodySkipped()) + return; + TypeChecker::checkAvailability( destructor->getBodySourceRange(), C.getIsolatedDeinitAvailability(), D->getDeclContext(), diff --git a/test/Concurrency/deinit_isolation_availability.swift b/test/Concurrency/deinit_isolation_availability.swift index 0b02ed7cd9eb6..196ba61e37634 100644 --- a/test/Concurrency/deinit_isolation_availability.swift +++ b/test/Concurrency/deinit_isolation_availability.swift @@ -2,6 +2,11 @@ // RUN: %target-typecheck-verify-swift -swift-version 5 %s -strict-concurrency=complete -target %target-swift-6.1-abi-triple // RUN: %target-typecheck-verify-swift -swift-version 5 %s -strict-concurrency=complete -target %target-swift-6.1-abi-triple -target-min-inlining-version min -verify-additional-prefix inlining- +// Test -emit-module configurations. + +// RUN: %target-swift-frontend -emit-module -verify -swift-version 5 %s -strict-concurrency=complete -target %target-swift-5.1-abi-triple -experimental-skip-non-inlinable-function-bodies -verify-additional-prefix inlining- +// RUN: %target-swift-frontend -emit-module -verify -swift-version 5 %s -strict-concurrency=complete -target %target-swift-6.1-abi-triple -experimental-skip-non-inlinable-function-bodies -target-min-inlining-version min -verify-additional-prefix inlining- + // REQUIRES: concurrency // REQUIRES: OS=macosx