Skip to content

Commit 2a63c25

Browse files
committed
[wip][tests] set the stage for pending Copyable fixes
1 parent 6778ca4 commit 2a63c25

File tree

2 files changed

+34
-24
lines changed

2 files changed

+34
-24
lines changed

test/Sema/copyable.swift

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,10 @@
11
// RUN: %target-typecheck-verify-swift
22

3-
protocol P: Copyable {} // expected-error {{'Copyable' is unavailable}}
4-
struct S: P {}
53

6-
typealias PleaseLetMeDoIt = Copyable // expected-error {{'Copyable' is unavailable}}
7-
typealias WhatIfIQualify = Swift.Copyable // expected-error {{'Copyable' is unavailable}}
8-
9-
class C: Copyable {} // expected-error {{'Copyable' is unavailable}}
10-
11-
@_moveOnly struct MOStruct: Copyable {}
12-
// expected-error@-1 {{move-only struct 'MOStruct' cannot conform to 'Copyable'}}
13-
// expected-error@-2 {{'Copyable' is unavailable}}
14-
15-
16-
func whatever<T>(_ t: T) where T: Copyable {} // expected-error {{'Copyable' is unavailable}}
17-
func vatever<T: Copyable>(_ t: T) {} // expected-error {{'Copyable' is unavailable}}
18-
func buttever(_ t: any Copyable) {} // expected-error {{'Copyable' is unavailable}}
19-
func zuttever(_ t: some Copyable) {} // expected-error 2{{'Copyable' is unavailable}}
20-
21-
enum RockNRoll<T: Copyable> { // expected-error {{'Copyable' is unavailable}}
22-
case isNoisePollution(Copyable) // expected-error {{'Copyable' is unavailable}}
23-
case isMusic(T)
4+
struct AVX: Copyable, ~Copyable, Sendable { // expected-error {{move-only struct 'AVX' cannot conform to 'Copyable'}}
5+
deinit {}
246
}
257

26-
enum namespace {
27-
typealias Copyable = Int
28-
29-
func Copyable() -> Copyable { return 0 }
8+
extension Copyable { // expected-error {{this should be illegal}}
9+
func clone() -> Self { return self }
3010
}

test/Sema/copyable_module.swift

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// RUN: %empty-directory(%t)
2+
// RUN: %target-swift-emit-module-interface(%t/Library.swiftinterface) %s -module-name Library
3+
// RUN: %target-swift-typecheck-module-from-interface(%t/Library.swiftinterface) -I %t
4+
// RUN: %FileCheck %s < %t/Library.swiftinterface
5+
6+
// CHECK: todo -- make sure Copyable doesn't show up in the module or its interface!
7+
8+
public protocol P: Copyable {}
9+
public struct S: P {}
10+
11+
public typealias PleaseLetMeDoIt = Copyable
12+
public typealias WhatIfIQualify = Swift.Copyable
13+
14+
public class C: Swift.Copyable {}
15+
16+
public func whatever<T>(_ t: T) where T: Copyable {}
17+
public func vatever<T: Copyable>(_ t: T) {}
18+
public func buttever(_ t: any Copyable) {}
19+
public func zuttever(_ t: some Copyable) {}
20+
21+
public enum RockNRoll<T: Copyable> {
22+
case isNoisePollution(Copyable)
23+
case isMusic(T)
24+
}
25+
26+
public enum namespace {
27+
typealias Copyable = Int
28+
29+
func Copyable() -> Copyable { return 0 }
30+
}

0 commit comments

Comments
 (0)