LookupTree

abstract class LookupTree<Element : A_BasicObject, Result : A_BasicObject>

LookupTree is used to look up method definitions by argument types, although it's more general than that.

Author

Mark van Gulik

Parameters

Element

The kind of elements in the lookup tree, such as method definitions.

Result

What we expect to produce from a lookup activity, such as the tuple of most-specific matching method definitions for some arguments.

Constructors

Link copied to clipboard
fun LookupTree()

Functions

Link copied to clipboard
fun castForGenerator(): LookupTree<A_Definition, A_Tuple>

Strengthen the type to a lookup tree suitable for method lookups.

Link copied to clipboard
abstract fun <AdaptorMemento> expandIfNecessary(    signatureExtrasExtractor: (Element) -> Pair<A_Type?, List<A_Type>>,     adaptor: LookupTreeAdaptor<Element, Result, AdaptorMemento>,     numNaturalArgs: Int,     memento: AdaptorMemento): DecisionStep<Element, Result>

If it has not already been computed, compute and cache the DecisionStep to use for making progress at this InternalLookupTree. Fail if this is not an InternalLookupTree.

Link copied to clipboard
open override fun toString(): String

abstract fun toString(indent: Int): String

Describe this LookupTree at a given indent level.

Properties

Link copied to clipboard
abstract val solutionOrNull: Result?

Answer the lookup solution (List of definitions at this leaf node, or null if this is not a leaf node.

Inheritors

Link copied to clipboard
Link copied to clipboard