TypedDeclaration.ceylon
"A declaration with a type.
The type can either be explicitly specified ([[type]] is a [[Type]])
or inferred ([[type]] is a [[Modifier]] that indicates type inference).
Examples:
shared String name;
shared actual void visit(Node that) { print(that); that.visitChildren(this); }"
shared abstract class TypedDeclaration()
of AnyValue | AnyFunction
extends Declaration() {
"The name of the declaration."
shared actual formal MemberName name;
"The type of the declaration, or a
modifier indicating type inference."
shared formal Type|VariadicType|TypeModifier type;
"The definition of the declaration, if present."
shared formal AnySpecifier|Block? definition;
}