@@ -402,13 +402,13 @@ _decl_ ::= _class-decl_ # Class declaration
402402 | _ const-decl_ # Constant declaration
403403 | _ global-decl_ # Global declaration
404404
405- _ class-decl_ ::= ` class ` _ class-name_ _ type -parameters_ _ members_ ` end `
406- | ` class ` _ class-name_ _ type -parameters_ ` < ` _ class-name_ _ type-arguments_ _ members_ ` end `
405+ _ class-decl_ ::= ` class ` _ class-name_ _ module-type -parameters_ _ members_ ` end `
406+ | ` class ` _ class-name_ _ module-type -parameters_ ` < ` _ class-name_ _ type-arguments_ _ members_ ` end `
407407
408- _ module-decl_ ::= ` module ` _ module-name_ _ type -parameters_ _ members_ ` end `
409- | ` module ` _ module-name_ _ type -parameters_ ` : ` _ class-name_ _ type-arguments_ _ members_ ` end `
408+ _ module-decl_ ::= ` module ` _ module-name_ _ module-type -parameters_ _ members_ ` end `
409+ | ` module ` _ module-name_ _ module-type -parameters_ ` : ` _ class-name_ _ type-arguments_ _ members_ ` end `
410410
411- _ interface-decl_ ::= ` interface ` _ interface-name_ _ type -parameters_ _ interface-members_ ` end `
411+ _ interface-decl_ ::= ` interface ` _ interface-name_ _ module-type -parameters_ _ interface-members_ ` end `
412412
413413_ interface-members_ ::= _ method-member_ # Method
414414 | _ include-member_ # Mixin (include)
@@ -424,6 +424,12 @@ _global-decl_ ::= _global-name_ `:` _type_
424424
425425_ const-name_ ::= _ namespace_ /[ A-Z] \w* /
426426_ global-name_ ::= /$[ a-zA-Z] \w+/ | ...
427+
428+ _ module-type-parameters_ ::= # Empty
429+ | ` [ ` _ module-type-parameter_ ` , ` ... ` ] `
430+
431+ _ module-type-parameter_ ::= _ variance_ _ type-variable_
432+ _ variance_ ::= ` out ` | ` in `
427433```
428434
429435### Class declaration
0 commit comments