| import ceylon.language { AnnotationType = Annotation } |
| |
| |
| """The declaration model of a class that has a parameter list rather than |
| explicit constructors. For example: |
| |
| class Color(Integer rgba) { |
| } |
| |
| Such classes have a meaningful parameter list and for abstraction purposes |
| have a single [[defaultConstructor]] representing the |
| class' parameter list and the class initializer code. |
| This "constructor" will have the same |
| [[SharedAnnotation]], [[DeprecationAnnotation]] |
| and [[ThrownExceptionAnnotation]] |
| annotations as the class, but will have no |
| other annotations. |
| """ |
| see(`interface ClassWithConstructorsDeclaration`) |
| since("1.2.0") |
| shared sealed interface ClassWithInitializerDeclaration |
| satisfies ClassDeclaration { |
| |
| "A CallableConstructorDeclaration representing the class initializer." |
| shared actual formal CallableConstructorDeclaration defaultConstructor; |
| |
| "The list of parameter declarations for this class." |
| shared actual formal FunctionOrValueDeclaration[] parameterDeclarations; |
| |
| "A singleton sequence containing the [[defaultConstructor]]." |
| shared actual default Sequence<CallableConstructorDeclaration> constructorDeclarations() |
| => Singleton(defaultConstructor); |
| |
| shared actual default CallableConstructorDeclaration? getConstructorDeclaration(String name) |
| => if (name.empty) then defaultConstructor else null; |
| |
| shared actual formal CallableConstructorDeclaration[] annotatedConstructorDeclarations<Annotation>() |
| given Annotation satisfies AnnotationType; |
| } |
| |