@@ -24,11 +24,7 @@ affect implicits on the language level.
24
24
...
25
25
}
26
26
27
- 2 . Implicit parameters may not have singleton types.
28
-
29
- /*!*/ def f(implicit x: y.type) // error `y.type` not allowed as type of implicit
30
-
31
- 3 . Nesting is now taken into account for selecting an implicit.
27
+ 2 . Nesting is now taken into account for selecting an implicit.
32
28
Consider for instance the following scenario:
33
29
34
30
def f(implicit i: C) = {
@@ -41,7 +37,7 @@ affect implicits on the language level.
41
37
more deeply than ` i ` . Previously, this would have resulted in an
42
38
ambiguity error.
43
39
44
- 4 . The treatment of ambiguity errors has changed. If an ambiguity is encountered
40
+ 3 . The treatment of ambiguity errors has changed. If an ambiguity is encountered
45
41
in some recursive step of an implicit search, the ambiguity is propagated to the caller.
46
42
Example: Say you have the following definitions:
47
43
@@ -69,7 +65,7 @@ affect implicits on the language level.
69
65
which implements negation directly. For any query type ` Q ` : ` Not[Q] ` succeeds if and only if
70
66
the implicit search for ` Q ` fails.
71
67
72
- 5 . The treatment of divergence errors has also changed. A divergent implicit is
68
+ 4 . The treatment of divergence errors has also changed. A divergent implicit is
73
69
treated as a normal failure, after which alternatives are still tried. This also makes
74
70
sense: Encountering a divergent implicit means that we assume that no finite
75
71
solution can be found on the given path, but another path can still be tried. By contrast
0 commit comments