qid
= qualified? id
;
-qclassid {-> classid}
- = qualified? classid {-> classid}
+qclassid
+ = qualified? classid
;
qmethid~noid {-> methid}
= qualified? methid~noid {-> methid~noid.methid}
= qualified? id
;
+qclassid
+ = qualified? [id]:classid
+ ;
+
signature = opar? [params]:param* cpar? type?;
param = id type? dotdotdot? annotations?
class APropdef super Prod end
class AMethid super Prod end
class AQid super Prod end
+class AQclassid super Prod end
class ASignature super Prod end
class AParam super Prod end
class AType super Prod end
var n_qualified: nullable AQualified = null is writable
var n_id: TId is writable, noinit
end
+class AQclassid
+ super AQclassid
+ var n_qualified: nullable AQualified = null is writable
+ var n_id: TClassid is writable, noinit
+end
class ASignature
super ASignature
var n_opar: nullable TOpar = null is writable
var n_id: TId is writable, noinit
end
+# A potentially qualified class identifier `foo::bar::Baz`
+class AQclassid
+ super Prod
+ # The qualifier, if any
+ var n_qualified: nullable AQualified = null is writable
+
+ # The final identifier
+ var n_id: TClassid is writable, noinit
+end
+
# A signature in a method definition. eg `(x,y:X,z:Z):T`
class ASignature
super Prod