File tree Expand file tree Collapse file tree 1 file changed +10
-6
lines changed Expand file tree Collapse file tree 1 file changed +10
-6
lines changed Original file line number Diff line number Diff line change
1
+ import FNV1
1
2
import InlineArray
2
3
import UCF
3
4
@@ -30,7 +31,7 @@ extension UCF.ProjectWideResolver
30
31
public
31
32
func resolve( _ selector: UCF . Selector ) -> UCF . Resolution < any UCF . ResolvableOverload >
32
33
{
33
- var rejected : [ any UCF . ResolvableOverload ]
34
+ var rejected : [ FNV24 : any UCF . ResolvableOverload ]
34
35
35
36
if let causal: UCF . ResolutionTable < UCF . CausalOverload > = self . causal
36
37
{
@@ -43,18 +44,18 @@ extension UCF.ProjectWideResolver
43
44
return . overload( overload)
44
45
45
46
case . ambiguous( let overloads, rejected: let rejections) :
46
- rejected = rejections
47
+ rejected = rejections. reduce ( into : [ : ] ) { $0 [ $1 . hash ] = $1 }
47
48
48
49
guard overloads. isEmpty
49
50
else
50
51
{
51
- return . ambiguous( overloads, rejected: rejected)
52
+ return . ambiguous( overloads, rejected: [ _ ] . init ( rejected. values ) )
52
53
}
53
54
}
54
55
}
55
56
else
56
57
{
57
- rejected = [ ]
58
+ rejected = [ : ]
58
59
}
59
60
60
61
switch self . global. resolve ( selector, in: self . scope)
@@ -66,9 +67,12 @@ extension UCF.ProjectWideResolver
66
67
return . overload( overload)
67
68
68
69
case . ambiguous( let overloads, rejected: let rejections) :
69
- rejected += rejections
70
+ for overload : any UCF . ResolvableOverload in rejections
71
+ {
72
+ rejected [ overload. hash] = overload
73
+ }
70
74
71
- return . ambiguous( overloads, rejected: rejected)
75
+ return . ambiguous( overloads, rejected: [ _ ] . init ( rejected. values ) )
72
76
}
73
77
}
74
78
}
You can’t perform that action at this time.
0 commit comments