Package-level declarations

Types

Link copied to clipboard
class ConstructorInvocationException(val type: KClass<*>, val admissibleTypes: List<Set<KClass<*>>>) : OopException

Thrown by it.unibo.tuprolog.solve.libs.oop.OverloadSelector.findConstructor (and, through it, by it.unibo.tuprolog.solve.libs.oop.TypeRef.create) when type has no public constructor accepting arguments whose types are compatible with admissibleTypes -- e.g. new_object('java.util.ArrayList', [foo], X) fails this way, since no ArrayList constructor accepts an atom.

Link copied to clipboard
class MalformedAliasException(val dealiasingExpression: Struct) : OopException

Thrown when dealiasingExpression -- e.g. an argument or sub-term where a $Alias expression was expected -- is not actually of the shape $Alias (a compound with functor it.unibo.tuprolog.solve.libs.oop.OOP.DEALIASING_OPERATOR and one argument), such as $(a, b) or $1.

Link copied to clipboard
class MethodInvocationException(val type: KClass<*>, val missingMethodName: String, val admissibleTypes: List<Set<KClass<*>>>) : OopException

Thrown by it.unibo.tuprolog.solve.libs.oop.OverloadSelector.findMethod (and, through it, by it.unibo.tuprolog.solve.libs.oop.Ref.invoke) when type has no public member named missingMethodName accepting arguments whose types are compatible with admissibleTypes -- e.g. invoking foo on an object whose class declares no such method, or calling an existing method with the wrong number/kind of arguments.

Link copied to clipboard
class NoSuchAnAliasException(val dealiasingExpression: Struct) : OopException

Thrown when dealiasingExpression -- a well-formed $Alias expression, unlike the one triggering MalformedAliasException -- names an alias that no it.unibo.tuprolog.solve.libs.oop.rules.Alias fact currently registers, e.g. $undefined_alias when no alias(undefined_alias, _) clause exists (see register/2 / it.unibo.tuprolog.solve.libs.oop.primitives.Register for registering one).

Link copied to clipboard

The base type for every error :oop-lib can run into while bridging Prolog and JVM/Kotlin reflection -- e.g. an unresolvable method/constructor/property overload, a malformed alias expression, or a reflective operation actually throwing.

Link copied to clipboard
class OopRuntimeException(callable: KCallable<*>, receiver: Any?, inner: Throwable) : OopException

Wraps whatever Throwable itself threw while being reflectively invoked on receiver -- e.g. a NullPointerException from calling a method on a null-valued field, or any other exception the invoked JVM/Kotlin code raises. On the JVM this unwraps the java.lang.reflect.InvocationTargetException reflection wraps such failures in, so cause is the original exception thrown by the invoked code, not the reflection machinery's own wrapper.

Link copied to clipboard
class PropertyAssignmentException(val type: KClass<*>, val missingPropertyName: String, val admissibleTypes: Set<KClass<*>>) : OopException

Thrown by it.unibo.tuprolog.solve.libs.oop.OverloadSelector.findProperty (and, through it, by it.unibo.tuprolog.solve.libs.oop.Ref.assign) when type has no public mutable property named missingPropertyName whose setter accepts a value compatible with admissibleTypes -- e.g. assigning to a read-only val, to a non-existent property, or to a property of an incompatible type.

Link copied to clipboard
class RuntimePermissionException(val callable: KCallable<*>, val receiver: Any?, cause: Throwable? = null) : OopException

Thrown when the platform's reflection facilities deny access to callable on receiver -- on the JVM, this wraps a kotlin.reflect.full.IllegalCallableAccessException, typically raised when the JVM's own access-control checks (e.g. module boundaries, a SecurityManager) reject an otherwise public, reflectively-resolved member.

Link copied to clipboard
class TermToObjectConversionException(val term: Term, val targetType: KClass<*>? = null) : OopException

Thrown by it.unibo.tuprolog.solve.libs.oop.TermToObjectConverter.convertInto when term cannot be turned into an instance of targetType (or of any type at all, if targetType is null) -- e.g. converting a compound term that is not a recognized as/$ expression, or an it.unibo.tuprolog.solve.libs.oop.ObjectRef whose wrapped object is not a subtype of the requested type.