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; };
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); } } } } }