For implicits, besides the local scope (including imported ones), there is the implicit scope
Where does Scala look for implicits?
https://www.scala-lang.org/files/archive/spec/2.11/07-implicits.html
The actual arguments that are eligible to be passed to an implicit parameter of type
fall into two categories. First, eligible are all identifiers
that can be accessed at the point of the method call without a prefix and that denote an implicit definition or an implicit parameter. An eligible identifier may thus be a local name, or a member of an enclosing template, or it may be have been made accessible without a prefix through an import clause. If there are no eligible identifiers under this rule, then, second, eligible are also all implicit members of some object that belongs to the implicit scope of the implicit parameter's type,
.
The implicit scope of a type
consists of all companion modules of classes that are associated with the implicit parameter's type. Here, we say a class
is associated with a type
if it is a base class of some part of
.
The parts of a type
are:
...
if
is a parameterized type [1,…,]
, the union of the parts of
and 1
,…,
;
...
Implicit conversion Int => Double
is Function1[Int, Double]
, so companion objects of Function1
, Int
, Double
will be investigated.