"use strict"; exports.__esModule = true; var tslib_1 = require("tslib"); var Lint = require("tslint"); var ts = require("typescript"); var Rule = /** @class */ (function (_super) { tslib_1.__extends(Rule, _super); function Rule() { return _super !== null && _super.apply(this, arguments) || this; } Rule.prototype.apply = function (sourceFile) { return this.applyWithFunction(sourceFile, walk, undefined); }; return Rule; }(Lint.Rules.AbstractRule)); exports.Rule = Rule; function walk(ctx) { if (ctx.sourceFile.isDeclarationFile) return; return ts.forEachChild(ctx.sourceFile, cb); function cb(node) { if (node.kind !== ts.SyntaxKind.ReturnStatement || node.expression === undefined) return ts.forEachChild(node, cb); var curNode = node.expression; while (true) { switch (curNode.kind) { case ts.SyntaxKind.ParenthesizedExpression: curNode = curNode.expression; continue; case ts.SyntaxKind.AwaitExpression: ctx.addFailureAtNode(node, 'return await is redundant'); } break; } } }