22layout : doc-page
33title : " Changes in Implicit Resolution"
44---
5-
5+ This page describes changes to the implicit resolution of old-style ` implicit ` s in Dotty.
66Implicit resolution uses a new algorithm which caches implicit results
77more aggressively for performance. There are also some changes that
88affect implicits on the language level.
@@ -39,7 +39,7 @@ affect implicits on the language level.
3939 due to _shadowing_ (where an implicit is hidden by a nested definition)
4040 no longer applies.
4141
42- 3 . Package prefixes no longer contribute to the implicit scope of a type .
42+ 3 . Package prefixes no longer contribute to the implicit search scope of a type .
4343 Example :
4444 ```scala
4545 package p
@@ -52,7 +52,7 @@ affect implicits on the language level.
5252 ```
5353 Both `a` and `b` are visible as implicits at the point of the definition
5454 of `type C`. However , a reference to `p.o.C` outside of package `p` will
55- have only `b` in its implicit scope but not `a`.
55+ have only `b` in its implicit search scope but not `a`.
5656
5757 4 . The treatment of ambiguity errors has changed. If an ambiguity is encountered
5858 in some recursive step of an implicit search, the ambiguity is propagated to the caller.
@@ -85,7 +85,7 @@ affect implicits on the language level.
8585 5 . The treatment of divergence errors has also changed. A divergent implicit is
8686 treated as a normal failure, after which alternatives are still tried. This also makes
8787 sense : Encountering a divergent implicit means that we assume that no finite
88- solution can be found on the given path , but another path can still be tried. By contrast
88+ solution can be found on the corresponding path, but another path can still be tried. By contrast
8989 most (but not all) divergence errors in Scala 2 would terminate the implicit
9090 search as a whole.
9191
0 commit comments