nl_tokens: Check the decorators of a node
pl_tokens: function checkDecorators ( node ) { if ( ! node . decorators ) { return ; } // skip this check for nodes that cannot have decorators. These should have already had an error reported by // checkGrammarDecorators. if ( ! ts . nodeCanBeDecorated ( node ) ) { return ; } if ( ! compilerOptions . experimentalDecorators ) { error ( node , ts . Diagnostics . Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Specify_experimentalDecorators_to_remove_this_warning ) ; } if ( compilerOptions . emitDecoratorMetadata ) { // we only need to perform these checks if we are emitting serialized type metadata for the target of a decorator. switch ( node . kind ) { case 214 /* ClassDeclaration */ : var constructor = ts . getFirstConstructorWithBody ( node ) ; if ( constructor ) { checkParameterTypeAnnotationsAsExpressions ( constructor ) ; } break ; case 143 /* MethodDeclaration */ : checkParameterTypeAnnotationsAsExpressions ( node ) ; // fall-through case 146 /* SetAccessor */ : case 145 /* GetAccessor */ : case 141 /* PropertyDeclaration */ : case 138 /* Parameter */ : checkTypeAnnotationAsExpression ( <mask> ) ; break ; } } emitDecorate = true ; if ( node . kind === 138 /* Parameter */ ) { emitParam = true ; } ts . forEach ( node . decorators , checkDecorator ) ; }