import ceylon.language.meta.declaration {
ClassDeclaration
}
import ceylon.language.meta.model {
ClosedType = Type
}
"A class model represents the model of a Ceylon class that you can inspect.
A class model can be either a toplevel [[Class]] or a member [[MemberClass]].
"
shared sealed interface ClassModel<out Type=Anything, in Arguments=Nothing>
satisfies ClassOrInterface<Type>
given Arguments satisfies Anything[] {
"The declaration model of this class,
which is necessarily a [[ClassDeclaration]]."
shared formal actual ClassDeclaration declaration;
"A function model for this class's initializer or default constructor,
or null if this class has constructors but lacks a default constructor."
since("1.2.0")
shared formal FunctionModel<Type, Arguments>? defaultConstructor;
"Looks up a constructor by name,
Returns `null` if no such constructor matches.
This excludes unshared constructors."
throws(`class IncompatibleTypeException`,
"If the specified type arguments are not
compatible with the actual result.")
since("1.2.0")
shared formal FunctionModel<Type, Arguments>|ValueModel<Type>? getConstructor
<Arguments>
(String name)
given Arguments satisfies Anything[];
"Looks up a constructor by name,
Returns `null` if no such constructor matches.
This includes unshared constructors."
throws(`class IncompatibleTypeException`,
"If the specified type arguments are not
compatible with the actual result.")
since("1.2.0")
shared formal FunctionModel<Type, Arguments>|ValueModel<Type>? getDeclaredConstructor
<Arguments>
(String name)
given Arguments satisfies Anything[];
"Returns the list of callable constructors directly declared on this class
and annotated with all the specified annotations.
This includes unshared callable constructors."
since("1.2.0")
shared formal FunctionModel<Type, Arguments>[] getDeclaredCallableConstructors
<Arguments=Nothing>
(ClosedType<Annotation>* annotationTypes)
given Arguments satisfies Anything[];
"Returns the list of shared callable constructors on this class
and annotated with all the specified annotations.
This does not include unshared callable constructors."
since("1.2.0")
shared formal FunctionModel<Type, Arguments>[] getCallableConstructors
<Arguments=Nothing>
(ClosedType<Annotation>* annotationTypes)
given Arguments satisfies Anything[];
"Returns the list of value constructors directly declared on this class
and annotated with all the specified annotations.
This includes unshared constructors."
since("1.2.0")
shared formal ValueModel<Type>[] getDeclaredValueConstructors
(ClosedType<Annotation>* annotationTypes);
"Returns the list of shared value constructors on this class
and annotated with all the specified annotations.
This does not include unshared value constructors."
since("1.2.0")
shared formal ValueModel<Type>[] getValueConstructors
(ClosedType<Annotation>* annotationTypes);
}