Dotty Documentation


class SearchHistory
extends Object

Records the history of currently open implicit searches

[-] Constructors

SearchHistory ( searchDepth: Int , seen: Map [ ClassSymbol, Int ] )

[-] Members

[+] val searchDepth : Int
[+] val seen : Map [ ClassSymbol, Int ]
[+] def nest ( proto: Type ) ( implicit ctx: Context ) : SearchHistory

Check for possible divergence. If one is detected return the current search history (this will be used as a criterion to abandon the implicit search in rankImplicits). If no divergence is detected, produce a new search history nested in the current one which records that we are now also looking for type proto.

As long as searchDepth is lower than the XminImplicitSearchDepth value in settings, a new history is always produced, so the implicit search is always undertaken. If searchDepth matches or exceeds the XminImplicitSearchDepth value, we test that the new search is for a class that is either not yet in the set of seen classes, or the complexity of the type proto being searched for is strictly lower than the complexity of the type that was previously encountered and that had the same class symbol as proto. A possible divergence is detected if that test fails.

[+] private def typeSize ( tp: Type ) ( implicit ctx: Context ) : Int

The number of applications and refinements in this type, after all aliases are expanded