DecQualifier.ceylon
"A qualifier for a [[Dec]], that is,
a period-separated sequence of [[identifiers|components]],
possibly itself qualified by a [[‘`package`’ qualifier|packageQualifier]].
(The qualifier may also be completely empty.)
Examples:
process
Entry
package.Object"
shared class DecQualifier(components = [], packageQualifier = null)
extends Node() {
"The components of the qualifier."
shared [Identifier*] components;
"The ‘`package`’ qualifier, if present."
shared PackageQualifier? packageQualifier;
shared actual [PackageQualifier,Identifier*]|[Identifier*] children
= if (exists packageQualifier) then [packageQualifier, *components] else components;
shared actual Result transform<out Result>(Transformer<Result> transformer)
=> transformer.transformDecQualifier(this);
shared actual void visit(Visitor visitor)
=> visitor.visitDecQualifier(this);
shared actual Boolean equals(Object that) {
if (is DecQualifier that) {
if (exists packageQualifier) {
if (exists packageQualifier_ = that.packageQualifier) {
if (packageQualifier != packageQualifier_) {
return false;
}
} else {
return false;
}
} else if (that.packageQualifier exists) {
return false;
}
return components == that.components;
} else {
return false;
}
}
shared actual Integer hash
=> 31 * (components.hash + (packageQualifier?.hash else 0));
shared DecQualifier copy([Identifier*] components = this.components, PackageQualifier? packageQualifier = this.packageQualifier) {
value ret = DecQualifier(components, packageQualifier);
copyExtraInfoTo(ret);
return ret;
}
}