Skip to content

Commit 7de85ee

Browse files
committed
Add correct(ish) example
1 parent 04e9037 commit 7de85ee

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

test/NameLookup/module_selector.swift

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,40 @@ import struct ModuleSelectorTestingKit::A
1313

1414
let magnitude: Never = fatalError()
1515

16+
// Test correct code using `A`
17+
18+
extension ModuleSelectorTestingKit::A: Swift::Equatable {
19+
@_implements(Swift::Equatable, ==(_:_:))
20+
public static func equals(_: ModuleSelectorTestingKit::A, _: ModuleSelectorTestingKit::A) -> Swift::Bool {
21+
Swift::fatalError()
22+
}
23+
24+
// FIXME: Add tests with autodiff @_differentiable(jvp:vjp:) and
25+
// @_derivative(of:)
26+
27+
@_dynamicReplacement(for: ModuleSelectorTestingKit::negate())
28+
mutating func myNegate() {
29+
let fn: (Swift::Int, Swift::Int) -> Swift::Int =
30+
(+)
31+
// FIXME: it'd be nice to handle module selectors on operators.
32+
33+
let magnitude: Int.Swift::Magnitude = main::magnitude
34+
// FIXME incorrect: expected-error@-1 {{variable used within its own initial value}}
35+
// expected-EVENTUALLY-error@-1 {{something about type mismatch between 'Never' and 'Int.Swift::Magnitude'}}
36+
37+
if Swift::Bool.Swift::random() {
38+
self.ModuleSelectorTestingKit::negate()
39+
}
40+
else {
41+
self = ModuleSelectorTestingKit::A(value: .Swift::min)
42+
}
43+
44+
self.main::myNegate()
45+
}
46+
47+
// FIXME: Can we test @convention(witness_method:)?
48+
}
49+
1650
// Test resolution of main:: using `B`
1751

1852
extension main::B {}

0 commit comments

Comments
 (0)