A module descriptor: a list of annotations, followed by the keyword ‘module’, and then the module name, version and body.

Examples (multi-line):

module tmp "1.0.0" {}

"Tests for the [[ceylon.ast.core module|module ceylon.ast.core]]"
by ("Lucas Werkmeister <mail@lucaswerkmeister.de>")
license ("http://www.apache.org/licenses/LICENSE-2.0.html")
module test.ceylon.ast.core "1.1.0" {
    shared import ceylon.test "1.1.0";
    import ceylon.ast.core "1.1.0";
}

no subtypes hierarchy

Initializer
ModuleDescriptor(FullPackageName name, StringLiteral version, ModuleBody body = ..., Annotations annotations = ...)
Parameters:
  • name

    The module name.

  • version

    The module version.

    (No constraints on the version – allowed characters, length, etc. – are specified, but some versions crash the compiler, and constraints will likely be specified at some point.)

  • body = ModuleBody()

    The module body.

  • annotations = Annotations()

    The module’s annotations. The most commonly used are:

Attributes
annotationsSource Codeshared Annotations annotations

The module’s annotations. The most commonly used are:

bodySource Codeshared ModuleBody body

The module body.

childrenSource Codeshared actual [FullPackageName, StringLiteral, ModuleBody, Annotations] children

The child nodes of this node.

hashSource Codeshared actual Integer hash

The hash value of the value, which allows the value to be an element of a hash-based set or key of a hash-based map. Implementations must respect the constraint that:

  • if x==y then x.hash==y.hash.

Therefore, a class which refines equals must also refine hash.

Refines Object.hash
nameSource Codeshared FullPackageName name

The module name.

versionSource Codeshared StringLiteral version

The module version.

(No constraints on the version – allowed characters, length, etc. – are specified, but some versions crash the compiler, and constraints will likely be specified at some point.)

Inherited Attributes
Attributes inherited from: Node
Attributes inherited from: Object
Methods
copySource Codeshared ModuleDescriptor copy(FullPackageName name = ..., StringLiteral version = ..., ModuleBody body = ..., Annotations annotations = ...)
Parameters:
  • name = this.name
  • version = this.version
  • body = this.body
  • annotations = this.annotations
equalsSource Codeshared actual Boolean equals(Object that)

Determine if two values are equal. Implementations should respect the constraints that:

  • if x===y then x==y (reflexivity),
  • if x==y then y==x (symmetry),
  • if x==y and y==z then x==z (transitivity).

Furthermore it is recommended that implementations ensure that if x==y then x and y have the same concrete class.

A class which explicitly refines equals() is said to support value equality, and the equality operator == is considered much more meaningful for such classes than for a class which simply inherits the default implementation of identity equality from Identifiable.

transformSource Codeshared actual Result transform<out Result>(Transformer<Result> transformer)

Transform this node with the given transformer by calling the appropriate transformX method on the transformer.

If you have a Node node that’s actually an LIdentifier instance, then the runtime will call LIdentifier.transform; therefore, this method is by nature narrowing. This means that if transformer is a NarrowingTransformer, calling node.transform(transformer) is equivalent to calling transformer.transformNode(node). On the other hand, if transformer is a WideningTransformer, then the two operations are very different.

Inherited Methods
Methods inherited from: Node