Cache

object Cache

Cache used to terminate the analysis

A finitary configuration is not enough for the analysis to terminate. We need to use cache to let the interpreter "know" that it can terminate.

For performance reasons we use curried key.

Note: It's tempting to use location of trees as key. That should be avoided as a template may have the same location as its single statement body. Macros may also create incorrect locations.

class Object
trait Matchable
class Any
Cache.type

Type members

Classlikes

class Cache

Types

opaque type CacheStore

Extensions

Extensions

extension (cache: CacheStore)
def contains(value: Value, expr: Tree): Boolean
def get(value: Value, expr: Tree): Value
def put(value: Value, expr: Tree, result: Value): Unit
def remove(value: Value, expr: Tree): Value | Null