Example #1
0
 IvyVisitor.prototype._stripAngularDecorators = function (node) {
     var _this = this;
     if (ts.isParameter(node)) {
         // Strip decorators from parameters (probably of the constructor).
         node = ts.updateParameter(node, this._nonCoreDecoratorsOnly(node), node.modifiers, node.dotDotDotToken, node.name, node.questionToken, node.type, node.initializer);
     }
     else if (ts.isMethodDeclaration(node) && node.decorators !== undefined) {
         // Strip decorators of methods.
         node = ts.updateMethod(node, this._nonCoreDecoratorsOnly(node), node.modifiers, node.asteriskToken, node.name, node.questionToken, node.typeParameters, node.parameters, node.type, node.body);
     }
     else if (ts.isPropertyDeclaration(node) && node.decorators !== undefined) {
         // Strip decorators of properties.
         node = ts.updateProperty(node, this._nonCoreDecoratorsOnly(node), node.modifiers, node.name, node.questionToken, node.type, node.initializer);
     }
     else if (ts.isGetAccessor(node)) {
         // Strip decorators of getters.
         node = ts.updateGetAccessor(node, this._nonCoreDecoratorsOnly(node), node.modifiers, node.name, node.parameters, node.type, node.body);
     }
     else if (ts.isSetAccessor(node)) {
         // Strip decorators of setters.
         node = ts.updateSetAccessor(node, this._nonCoreDecoratorsOnly(node), node.modifiers, node.name, node.parameters, node.body);
     }
     else if (ts.isConstructorDeclaration(node)) {
         // For constructors, strip decorators of the parameters.
         var parameters = node.parameters.map(function (param) { return _this._stripAngularDecorators(param); });
         node =
             ts.updateConstructor(node, node.decorators, node.modifiers, parameters, node.body);
     }
     return node;
 };
Example #2
0
 function enqueue_black(node) {
     const previousColor = getColor(node);
     if (previousColor === 2 /* Black */) {
         return;
     }
     if (previousColor === 1 /* Gray */) {
         // remove from gray queue
         gray_queue.splice(gray_queue.indexOf(node), 1);
         setColor(node, 0 /* White */);
         // add to black queue
         enqueue_black(node);
         // // move from one queue to the other
         // black_queue.push(node);
         // setColor(node, NodeColor.Black);
         return;
     }
     if (nodeOrParentIsBlack(node)) {
         return;
     }
     const fileName = node.getSourceFile().fileName;
     if (/^defaultLib:/.test(fileName) || /\.d\.ts$/.test(fileName)) {
         setColor(node, 2 /* Black */);
         return;
     }
     const sourceFile = node.getSourceFile();
     if (!sourceFilesLoaded[sourceFile.fileName]) {
         sourceFilesLoaded[sourceFile.fileName] = true;
         enqueueTopLevelModuleStatements(sourceFile);
     }
     if (ts.isSourceFile(node)) {
         return;
     }
     setColor(node, 2 /* Black */);
     black_queue.push(node);
     if (options.shakeLevel === 2 /* ClassMembers */ && (ts.isMethodDeclaration(node) || ts.isMethodSignature(node) || ts.isPropertySignature(node) || ts.isGetAccessor(node) || ts.isSetAccessor(node))) {
         const references = languageService.getReferencesAtPosition(node.getSourceFile().fileName, node.name.pos + node.name.getLeadingTriviaWidth());
         if (references) {
             for (let i = 0, len = references.length; i < len; i++) {
                 const reference = references[i];
                 const referenceSourceFile = program.getSourceFile(reference.fileName);
                 if (!referenceSourceFile) {
                     continue;
                 }
                 const referenceNode = getTokenAtPosition(referenceSourceFile, reference.textSpan.start, false, false);
                 if (ts.isMethodDeclaration(referenceNode.parent)
                     || ts.isPropertyDeclaration(referenceNode.parent)
                     || ts.isGetAccessor(referenceNode.parent)
                     || ts.isSetAccessor(referenceNode.parent)) {
                     enqueue_gray(referenceNode.parent);
                 }
             }
         }
     }
 }