Class ResolverOrDefiner
java.lang.Object
org.ek9lang.compiler.common.RuleSupport
org.ek9lang.compiler.support.ResolverOrDefiner
- Direct Known Subclasses:
ParameterisedLocator, ResolveOrDefineTypes
Used as an abstract base for parameterised types.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final booleanprotected final booleanprotected final SymbolFactoryFields inherited from class RuleSupport
errorListener, symbolsAndScopes -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedResolverOrDefiner(SymbolsAndScopes symbolsAndScopes, SymbolFactory symbolFactory, ErrorListener errorListener, boolean errorIfNotDefinedOrResolved) protectedResolverOrDefiner(SymbolsAndScopes symbolsAndScopes, SymbolFactory symbolFactory, ErrorListener errorListener, boolean errorIfNotDefinedOrResolved, boolean checkSemanticConstraints) -
Method Summary
Modifier and TypeMethodDescriptionresolveOrDefine(ParameterisedTypeData details) Attempts to resolve the parameterised type first and return that, else returns a new symbol.
-
Field Details
-
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- whentrue(the default for user-source resolution paths), additional EK9 semantic constraints are enforced at parameterisation time — currently the rules thatMutexLock(or a parameterisedMutexLock of T) cannot appear as a type argument to another generic (E08254), and thatVoidcannot be a type argument at all (E10011, reported once types are resolved, from phase 2; seeVoidAsTypeOrError). Internal compiler synthesis paths (e.g.SynthesizeSuperFunction) passfalseto skip these user-facing rules. The closeable rule (E81061, from phase 2; seeCloseableNotInGenericParameterOrError) is NOT one of them: it holds on every path that reports, synthesis included - synthesis declines to name a closeable instead (D7, 2026-10-06).
-
-
Method Details
-
resolveOrDefine
Attempts to resolve the parameterised type first and return that, else returns a new symbol.
-