Diffdown is a real-time collaborative Markdown editor/previewer built on the AT Protocol diffdown.com
at 9199d4f348146b93a8d99c8a2fb6f3bf911d45ca 64 lines 1.6 kB view raw
1# Decorators on classes and class fields 2 3@d1 class Foo { 4 @d2 bar() {} 5 @d3 get baz() { return 1 } 6 @d4 quux = 1 7} 8 9==> 10 11Script(ClassDeclaration( 12 Decorator(VariableName), 13 class,VariableDefinition,ClassBody( 14 MethodDeclaration(Decorator(VariableName),PropertyDefinition,ParamList,Block), 15 MethodDeclaration(Decorator(VariableName),get,PropertyDefinition,ParamList,Block( 16 ReturnStatement(return,Number))), 17 PropertyDeclaration(Decorator(VariableName),PropertyDefinition,Equals,Number)))) 18 19# Multiple decorators 20 21@d1 @d2 class Y {} 22 23==> 24 25Script(ClassDeclaration(Decorator(VariableName),Decorator(VariableName),class,VariableDefinition,ClassBody)) 26 27# Member decorators 28 29@one.two class X {} 30 31==> 32 33Script(ClassDeclaration(Decorator(MemberExpression(VariableName,PropertyName)),class,VariableDefinition,ClassBody)) 34 35# Call decorators 36 37@d(2) @a.b() class Z {} 38 39==> 40 41Script(ClassDeclaration( 42 Decorator(CallExpression(VariableName,ArgList(Number))), 43 Decorator(CallExpression(MemberExpression(VariableName,PropertyName),ArgList)), 44 class,VariableDefinition,ClassBody)) 45 46# Parenthesized decorators 47 48@(a instanceof Array ? x : y)(2) class P {} 49 50==> 51 52Script(ClassDeclaration( 53 Decorator(CallExpression(ParenthesizedExpression( 54 ConditionalExpression(BinaryExpression(VariableName,instanceof,VariableName),LogicOp,VariableName,LogicOp,VariableName)), 55 ArgList(Number))), 56 class,VariableDefinition,ClassBody)) 57 58# Parameter decorators 59 60function foo(@d bar) {} 61 62==> 63 64Script(FunctionDeclaration(function,VariableDefinition,ParamList(Decorator(VariableName),VariableDefinition),Block))