65 lines
1.6 KiB
Plaintext
65 lines
1.6 KiB
Plaintext
# Decorators on classes and class fields
|
|
|
|
@d1 class Foo {
|
|
@d2 bar() {}
|
|
@d3 get baz() { return 1 }
|
|
@d4 quux = 1
|
|
}
|
|
|
|
==>
|
|
|
|
Script(ClassDeclaration(
|
|
Decorator(VariableName),
|
|
class,VariableDefinition,ClassBody(
|
|
MethodDeclaration(Decorator(VariableName),PropertyDefinition,ParamList,Block),
|
|
MethodDeclaration(Decorator(VariableName),get,PropertyDefinition,ParamList,Block(
|
|
ReturnStatement(return,Number))),
|
|
PropertyDeclaration(Decorator(VariableName),PropertyDefinition,Equals,Number))))
|
|
|
|
# Multiple decorators
|
|
|
|
@d1 @d2 class Y {}
|
|
|
|
==>
|
|
|
|
Script(ClassDeclaration(Decorator(VariableName),Decorator(VariableName),class,VariableDefinition,ClassBody))
|
|
|
|
# Member decorators
|
|
|
|
@one.two class X {}
|
|
|
|
==>
|
|
|
|
Script(ClassDeclaration(Decorator(MemberExpression(VariableName,PropertyName)),class,VariableDefinition,ClassBody))
|
|
|
|
# Call decorators
|
|
|
|
@d(2) @a.b() class Z {}
|
|
|
|
==>
|
|
|
|
Script(ClassDeclaration(
|
|
Decorator(CallExpression(VariableName,ArgList(Number))),
|
|
Decorator(CallExpression(MemberExpression(VariableName,PropertyName),ArgList)),
|
|
class,VariableDefinition,ClassBody))
|
|
|
|
# Parenthesized decorators
|
|
|
|
@(a instanceof Array ? x : y)(2) class P {}
|
|
|
|
==>
|
|
|
|
Script(ClassDeclaration(
|
|
Decorator(CallExpression(ParenthesizedExpression(
|
|
ConditionalExpression(BinaryExpression(VariableName,instanceof,VariableName),LogicOp,VariableName,LogicOp,VariableName)),
|
|
ArgList(Number))),
|
|
class,VariableDefinition,ClassBody))
|
|
|
|
# Parameter decorators
|
|
|
|
function foo(@d bar) {}
|
|
|
|
==>
|
|
|
|
Script(FunctionDeclaration(function,VariableDefinition,ParamList(Decorator(VariableName),VariableDefinition),Block))
|