Class ResolverOrDefiner

java.lang.Object
org.ek9lang.compiler.common.RuleSupport
org.ek9lang.compiler.support.ResolverOrDefiner
Direct Known Subclasses:
ParameterisedLocator, ResolveOrDefineTypes

public abstract class ResolverOrDefiner extends RuleSupport
Used as an abstract base for parameterised types.
  • Field Details

    • symbolFactory

      protected final SymbolFactory symbolFactory
    • errorIfNotDefinedOrResolved

      protected final boolean errorIfNotDefinedOrResolved
    • checkSemanticConstraints

      protected final boolean checkSemanticConstraints
  • Constructor Details

    • ResolverOrDefiner

      protected ResolverOrDefiner(SymbolsAndScopes symbolsAndScopes, SymbolFactory symbolFactory, ErrorListener errorListener, boolean errorIfNotDefinedOrResolved)
    • ResolverOrDefiner

      protected ResolverOrDefiner(SymbolsAndScopes symbolsAndScopes, SymbolFactory symbolFactory, ErrorListener errorListener, boolean errorIfNotDefinedOrResolved, boolean checkSemanticConstraints)
      Parameters:
      checkSemanticConstraints - when true (the default for user-source resolution paths), additional EK9 semantic constraints are enforced at parameterisation time — currently the rule that MutexLock (or a parameterised MutexLock of T) cannot appear as a type argument to another generic (E08254). Internal compiler synthesis paths (e.g. SynthesizeSuperFunction) pass false to skip these user-facing rules.
  • Method Details

    • resolveOrDefine

      public Optional<ISymbol> resolveOrDefine(ParameterisedTypeData details)
      Attempts to resolve the parameterised type first and return that, else returns a new symbol.