Skip to content

Commit 8db1f03

Browse files
committed
Add .swiftinterface tests to check backward compatibility.
(cherry picked from commit 49a8770)
1 parent 5ddb6ce commit 8db1f03

File tree

4 files changed

+41
-3
lines changed

4 files changed

+41
-3
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// swift-interface-format-version: 1.0
2+
// swift-module-flags: -module-name lifetime_depend_diagnose -enable-experimental-feature LifetimeDependence -swift-version 5 -enable-library-evolution
3+
import Swift
4+
import _Concurrency
5+
import _StringProcessing
6+
import _SwiftConcurrencyShims
7+
8+
#if $LifetimeDependence
9+
public struct NE : ~Swift.Escapable {
10+
@usableFromInline
11+
internal let _pointer: Swift.UnsafeRawPointer?
12+
13+
@lifetime(borrow pointer)
14+
public init(pointer: Swift.UnsafeRawPointer?) {
15+
self._pointer = pointer
16+
}
17+
}
18+
19+
extension NE {
20+
// This is illegal at the source level because NE.init is implicitly @lifetime(borrow),
21+
// so we can't return it as dependent on @lifetime(copy self).
22+
@lifetime(copy self)
23+
@unsafe @_alwaysEmitIntoClient public func forward() -> NE {
24+
return NE(pointer: _pointer)
25+
}
26+
}
27+
#endif
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// RUN: %target-swift-frontend %s -emit-sil \
2+
// RUN: -o /dev/null \
3+
// RUN: -I %S/Inputs \
4+
// RUN: -verify \
5+
// RUN: -enable-experimental-feature LifetimeDependence
6+
7+
// REQUIRES: swift_in_compiler
8+
// REQUIRES: swift_feature_LifetimeDependence
9+
10+
// Test that lifetime dependence diagnostics continues to older (early
11+
// 2025) .swiftinterface files. Source-level diagnostics are stricter.
12+
13+
import lifetime_depend_diagnose

test/Sema/Inputs/lifetime_depend_infer.swiftinterface

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
// swift-interface-format-version: 1.0
2-
// swift-compiler-version: Swift version 6.2-dev effective-5.10 (LLVM 09f3cd831902283, Swift 889522485775a5d)
32
// swift-module-flags: -module-name lifetime_depend_infer -enable-experimental-feature LifetimeDependence -swift-version 5 -enable-library-evolution
4-
// swift-module-flags-ignorable: -formal-cxx-interoperability-mode=off -interface-compiler-version 6.2
53
import Swift
64
import _Concurrency
75
import _StringProcessing

test/Sema/lifetime_depend_infer_interface.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@
77

88
// Test that type checking continues to handle inference of lifetime
99
// dependencies that may be required in older (early
10-
// 2025) .swiftinterface files. Source-level type checking is more strict.
10+
// 2025) .swiftinterface files. Source-level type checking is stricter.
1111

1212
import lifetime_depend_infer

0 commit comments

Comments
 (0)