@@ -15,14 +15,66 @@ extension UCF
15
15
}
16
16
extension UCF . ResolvableOverload
17
17
{
18
- static func ~= ( suffix : UCF . Selector . Suffix , self: Self ) -> Bool
18
+ static func ~= ( predicate : UCF . Predicate , self: Self ) -> Bool
19
19
{
20
+ if case nil = predicate. seal
21
+ {
22
+ // Macros are currently the only kind of declaration that *must* be spelled with
23
+ // trailing parentheses.
24
+ switch self . phylum
25
+ {
26
+ case . actor : break
27
+ case . associatedtype: break
28
+ case . case: break
29
+ case . class: break
30
+ case . deinitializer: break
31
+ case . enum: break
32
+ case . func: break
33
+ case . initializer: break
34
+ case . macro: return false
35
+ case . operator: break
36
+ case . protocol: break
37
+ case . struct: break
38
+ case . subscript: break
39
+ case . typealias: break
40
+ case . var: break
41
+ }
42
+ }
43
+ else
44
+ {
45
+ switch self . phylum
46
+ {
47
+ case . actor : return false
48
+ case . associatedtype: return false
49
+ case . case: return false
50
+ case . class: return false
51
+ case . deinitializer: return false
52
+ case . enum: return false
53
+ case . func: break
54
+ case . initializer: break
55
+ case . macro: break
56
+ case . operator: break
57
+ case . protocol: return false
58
+ case . struct: return false
59
+ case . subscript: break
60
+ case . typealias: return false
61
+ case . var: return false
62
+ }
63
+ }
64
+
65
+ guard
66
+ let suffix: UCF . Selector . Suffix = predicate. suffix
67
+ else
68
+ {
69
+ return true
70
+ }
71
+
20
72
switch suffix
21
73
{
22
- case . legacy( let filter, nil ) : filter ~= self . phylum
23
- case . legacy( _, let hash? ) : hash == self . hash
24
- case . hash( let hash) : hash == self . hash
25
- case . filter( let filter) : filter ~= self . phylum
74
+ case . legacy( let filter, nil ) : return filter ~= self . phylum
75
+ case . legacy( _, let hash? ) : return hash == self . hash
76
+ case . hash( let hash) : return hash == self . hash
77
+ case . filter( let filter) : return filter ~= self . phylum
26
78
}
27
79
}
28
80
}
0 commit comments