Skip to content
This repository has been archived by the owner on Mar 25, 2021. It is now read-only.

Default type parameter of WalkContext and AbstractWalker to void #2600

Merged
merged 4 commits into from
Mar 24, 2019
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/language/rule/abstractRule.ts
Expand Up @@ -48,7 +48,7 @@ export abstract class AbstractRule implements IRule {
return this.ruleSeverity !== "off";
}

protected applyWithFunction(sourceFile: ts.SourceFile, walkFn: (ctx: WalkContext<void>) => void): RuleFailure[];
protected applyWithFunction(sourceFile: ts.SourceFile, walkFn: (ctx: WalkContext) => void): RuleFailure[];
protected applyWithFunction<T, U extends T>(
sourceFile: ts.SourceFile,
walkFn: (ctx: WalkContext<T>) => void,
Expand Down
2 changes: 1 addition & 1 deletion src/language/walker/scopeAwareRuleWalker.ts
Expand Up @@ -26,7 +26,7 @@ import {RuleWalker} from "./ruleWalker";
*
* For example, imagine a `no-break` rule that warns on `break` in `for` but not in `switch`:
*
* function walk(ctx: Lint.WalkContext<void>): void {
* function walk(ctx: Lint.WalkContext): void {
* let isInFor = false;
* ts.forEachChild(ctx.sourceFile, function cb(node: ts.Node): void {
* switch (node.kind) {
Expand Down
2 changes: 1 addition & 1 deletion src/language/walker/walkContext.ts
Expand Up @@ -19,7 +19,7 @@ import * as ts from "typescript";

import { Fix, RuleFailure } from "../rule/rule";

export class WalkContext<T> {
export class WalkContext<T = void> {
public readonly failures: RuleFailure[] = [];

constructor(public readonly sourceFile: ts.SourceFile, public readonly ruleName: string, public readonly options: T) {}
Expand Down
2 changes: 1 addition & 1 deletion src/language/walker/walker.ts
Expand Up @@ -27,7 +27,7 @@ export interface IWalker {
getFailures(): RuleFailure[];
}

export abstract class AbstractWalker<T> extends WalkContext<T> implements IWalker {
export abstract class AbstractWalker<T = void> extends WalkContext<T> implements IWalker {
public abstract walk(sourceFile: ts.SourceFile): void;

public getSourceFile() {
Expand Down
2 changes: 1 addition & 1 deletion src/rules/adjacentOverloadSignaturesRule.ts
Expand Up @@ -43,7 +43,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>): void {
function walk(ctx: Lint.WalkContext): void {
const { sourceFile } = ctx;
visitStatements(sourceFile.statements);
return ts.forEachChild(sourceFile, function cb(node: ts.Node): void {
Expand Down
2 changes: 1 addition & 1 deletion src/rules/callableTypesRule.ts
Expand Up @@ -43,7 +43,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>) {
function walk(ctx: Lint.WalkContext) {
return ts.forEachChild(ctx.sourceFile, function cb(node: ts.Node): void {
if ((isInterfaceDeclaration(node) && noSupertype(node)
|| isTypeLiteralNode(node))
Expand Down
2 changes: 1 addition & 1 deletion src/rules/classNameRule.ts
Expand Up @@ -42,7 +42,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>) {
function walk(ctx: Lint.WalkContext) {
return ts.forEachChild(ctx.sourceFile, function cb(node: ts.Node): void {
if (isClassLikeDeclaration(node) && node.name !== undefined ||
isInterfaceDeclaration(node)) {
Expand Down
2 changes: 1 addition & 1 deletion src/rules/interfaceOverTypeLiteralRule.ts
Expand Up @@ -40,7 +40,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>): void {
function walk(ctx: Lint.WalkContext): void {
return ts.forEachChild(ctx.sourceFile, function cb(node: ts.Node): void {
if (isTypeAliasDeclaration(node) && node.type.kind === ts.SyntaxKind.TypeLiteral) {
ctx.addFailureAtNode(node.name, Rule.FAILURE_STRING);
Expand Down
2 changes: 1 addition & 1 deletion src/rules/labelPositionRule.ts
Expand Up @@ -45,7 +45,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>): void {
function walk(ctx: Lint.WalkContext): void {
return ts.forEachChild(ctx.sourceFile, function cb(node: ts.Node): void {
if (isLabeledStatement(node) && !isLabelable(node.statement)) {
ctx.addFailureAtNode(node.label, Rule.FAILURE_STRING);
Expand Down
2 changes: 1 addition & 1 deletion src/rules/memberAccessRule.ts
Expand Up @@ -73,7 +73,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>, noPublic: boolean, checkAccessor: boolean, checkConstructor: boolean) {
function walk(ctx: Lint.WalkContext, noPublic: boolean, checkAccessor: boolean, checkConstructor: boolean) {
return ts.forEachChild(ctx.sourceFile, function recur(node: ts.Node): void {
if (isClassLikeDeclaration(node)) {
for (const child of node.members) {
Expand Down
2 changes: 1 addition & 1 deletion src/rules/newParensRule.ts
Expand Up @@ -40,7 +40,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>) {
function walk(ctx: Lint.WalkContext) {
return ts.forEachChild(ctx.sourceFile, function cb(node: ts.Node): void {
if (node.kind === ts.SyntaxKind.NewExpression && (node as ts.NewExpression).arguments === undefined) {
ctx.addFailureAtNode(node, Rule.FAILURE_STRING);
Expand Down
2 changes: 1 addition & 1 deletion src/rules/newlineBeforeReturnRule.ts
Expand Up @@ -40,7 +40,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

class NewlineBeforeReturnWalker extends Lint.AbstractWalker<void> {
class NewlineBeforeReturnWalker extends Lint.AbstractWalker {
public walk(sourceFile: ts.SourceFile) {
const cb = (node: ts.Node): void => {
if (node.kind === ts.SyntaxKind.ReturnStatement) {
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noAngleBracketTypeAssertionRule.ts
Expand Up @@ -45,7 +45,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>) {
function walk(ctx: Lint.WalkContext) {
return ts.forEachChild(ctx.sourceFile, function cb(node: ts.Node): void {
if (isTypeAssertion(node)) {
const start = node.getStart(ctx.sourceFile);
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noAnyRule.ts
Expand Up @@ -43,7 +43,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>) {
function walk(ctx: Lint.WalkContext) {
return ts.forEachChild(ctx.sourceFile, function cb(node: ts.Node): void {
if (node.kind === ts.SyntaxKind.AnyKeyword) {
const start = node.end - 3;
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noArgRule.ts
Expand Up @@ -44,7 +44,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>) {
function walk(ctx: Lint.WalkContext) {
return ts.forEachChild(ctx.sourceFile, function cb(node: ts.Node): void {
if (isPropertyAccessExpression(node) &&
node.name.text === "callee" &&
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noBitwiseRule.ts
Expand Up @@ -48,7 +48,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>) {
function walk(ctx: Lint.WalkContext) {
return ts.forEachChild(ctx.sourceFile, function cb(node: ts.Node): void {
if (node.kind === ts.SyntaxKind.BinaryExpression) {
switch ((node as ts.BinaryExpression).operatorToken.kind) {
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noBooleanLiteralCompareRule.ts
Expand Up @@ -44,7 +44,7 @@ export class Rule extends Lint.Rules.TypedRule {
}
}

function walk(ctx: Lint.WalkContext<void>, checker: ts.TypeChecker): void {
function walk(ctx: Lint.WalkContext, checker: ts.TypeChecker): void {
return ts.forEachChild(ctx.sourceFile, function cb(node: ts.Node): void {
if (utils.isBinaryExpression(node)) {
const cmp = getBooleanComparison(node, checker);
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noConstructRule.ts
Expand Up @@ -45,7 +45,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>) {
function walk(ctx: Lint.WalkContext) {
return ts.forEachChild(ctx.sourceFile, function cb(node: ts.Node): void {
if (isNewExpression(node) && node.expression.kind === ts.SyntaxKind.Identifier) {
switch ((node.expression as ts.Identifier).text) {
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noDebuggerRule.ts
Expand Up @@ -40,7 +40,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>) {
function walk(ctx: Lint.WalkContext) {
return ts.forEachChild(ctx.sourceFile, function cb(node: ts.Node): void {
if (node.kind === ts.SyntaxKind.DebuggerStatement) {
return ctx.addFailureAtNode(node, Rule.FAILURE_STRING);
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noDuplicateSuperRule.ts
Expand Up @@ -42,7 +42,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>): void {
function walk(ctx: Lint.WalkContext): void {
return ts.forEachChild(ctx.sourceFile, function cb(node: ts.Node): void {
if (isConstructorDeclaration(node) && node.body) {
getSuperForNode(node.body);
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noDuplicateVariableRule.ts
Expand Up @@ -48,7 +48,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>): void {
function walk(ctx: Lint.WalkContext): void {
let scope = new Set<string>();
return ts.forEachChild(ctx.sourceFile, function cb(node: ts.Node): void {
if (utils.isFunctionScopeBoundary(node)) {
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noEmptyInterfaceRule.ts
Expand Up @@ -41,7 +41,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>) {
function walk(ctx: Lint.WalkContext) {
return ts.forEachChild(ctx.sourceFile, function cb(node: ts.Node): void {
if (isInterfaceDeclaration(node) &&
node.members.length === 0 &&
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noEmptyRule.ts
Expand Up @@ -42,7 +42,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>) {
function walk(ctx: Lint.WalkContext) {
return ts.forEachChild(ctx.sourceFile, function cb(node: ts.Node): void {
if (node.kind === ts.SyntaxKind.Block &&
(node as ts.Block).statements.length === 0 &&
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noEvalRule.ts
Expand Up @@ -44,7 +44,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>) {
function walk(ctx: Lint.WalkContext) {
return ts.forEachChild(ctx.sourceFile, function cb(node: ts.Node): void {
if (isCallExpression(node) &&
node.expression.kind === ts.SyntaxKind.Identifier && (node.expression as ts.Identifier).text === "eval") {
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noForInArrayRule.ts
Expand Up @@ -54,7 +54,7 @@ export class Rule extends Lint.Rules.TypedRule {
}
}

function walk(ctx: Lint.WalkContext<void>, program: ts.Program) {
function walk(ctx: Lint.WalkContext, program: ts.Program) {
return ts.forEachChild(ctx.sourceFile, function cb(node: ts.Node): void {
if (node.kind === ts.SyntaxKind.ForInStatement) {
const type = program.getTypeChecker().getTypeAtLocation((node as ts.ForInStatement).expression);
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noInternalModuleRule.ts
Expand Up @@ -41,7 +41,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

class NoInternalModuleWalker extends Lint.AbstractWalker<void> {
class NoInternalModuleWalker extends Lint.AbstractWalker {
public walk(sourceFile: ts.SourceFile) {
return this.checkStatements(sourceFile.statements);
}
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noInvalidTemplateStringsRule.ts
Expand Up @@ -41,7 +41,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>) {
function walk(ctx: Lint.WalkContext) {
return ts.forEachChild(ctx.sourceFile, function cb(node: ts.Node): void {
if (utils.isStringLiteral(node)) {
check(node);
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noIrregularWhitespaceRule.ts
Expand Up @@ -45,7 +45,7 @@ export class Rule extends Lint.Rules.AbstractRule {
export const IRREGULAR_WHITESPACE_REGEX = /[\u000b\u000c\u0085\ufeff\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u202f\u205f\u3000\u2028\u2029]+/mg;
/* tslint:enable:max-line-length */

function walk(ctx: Lint.WalkContext<void>): void {
function walk(ctx: Lint.WalkContext): void {
IRREGULAR_WHITESPACE_REGEX.lastIndex = 0;
let match: RegExpExecArray | null;
// tslint:disable-next-line no-conditional-assignment
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noMisusedNewRule.ts
Expand Up @@ -41,7 +41,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>) {
function walk(ctx: Lint.WalkContext) {
return ts.forEachChild(ctx.sourceFile, function cb(node: ts.Node): void {
if (isMethodSignature(node)) {
if (getPropertyName(node.name) === "constructor") {
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noNullKeywordRule.ts
Expand Up @@ -44,7 +44,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>) {
function walk(ctx: Lint.WalkContext) {
return ts.forEachChild(ctx.sourceFile, cb);
function cb(node: ts.Node): void {
if (node.kind >= ts.SyntaxKind.FirstTypeNode && node.kind <= ts.SyntaxKind.LastTypeNode) {
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noObjectLiteralTypeAssertionRule.ts
Expand Up @@ -43,7 +43,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>): void {
function walk(ctx: Lint.WalkContext): void {
return ts.forEachChild(ctx.sourceFile, function cb(node: ts.Node): void {
if (isTypeAssertionLike(node) && isObjectLiteral(node.expression)) {
ctx.addFailureAtNode(node, Rule.FAILURE_STRING);
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noReferenceImportRule.ts
Expand Up @@ -41,7 +41,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>): void {
function walk(ctx: Lint.WalkContext): void {
const { sourceFile } = ctx;
if (sourceFile.typeReferenceDirectives.length === 0) {
return;
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noReferenceRule.ts
Expand Up @@ -42,7 +42,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>): void {
function walk(ctx: Lint.WalkContext): void {
for (const ref of ctx.sourceFile.referencedFiles) {
ctx.addFailure(ref.pos, ref.end, Rule.FAILURE_STRING);
}
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noSparseArraysRule.ts
Expand Up @@ -41,7 +41,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>): void {
function walk(ctx: Lint.WalkContext): void {
return ts.forEachChild(ctx.sourceFile, function cb(node: ts.Node): void {
if (!utils.isArrayLiteralExpression(node)) {
if (utils.isBinaryExpression(node) && node.operatorToken.kind === ts.SyntaxKind.EqualsToken) {
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noStringLiteralRule.ts
Expand Up @@ -42,7 +42,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>) {
function walk(ctx: Lint.WalkContext) {
return ts.forEachChild(ctx.sourceFile, function cb(node: ts.Node): void {
if (isElementAccessExpression(node)) {
const argument = node.argumentExpression;
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noStringThrowRule.ts
Expand Up @@ -42,7 +42,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>): void {
function walk(ctx: Lint.WalkContext): void {
const { sourceFile } = ctx;
return ts.forEachChild(ctx.sourceFile, function cb(node: ts.Node): void {
if (isThrowStatement(node)) {
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noSwitchCaseFallThroughRule.ts
Expand Up @@ -66,7 +66,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

export class NoSwitchCaseFallThroughWalker extends Lint.AbstractWalker<void> {
export class NoSwitchCaseFallThroughWalker extends Lint.AbstractWalker {
public walk(sourceFile: ts.SourceFile) {
const cb = (node: ts.Node): void => {
if (node.kind === ts.SyntaxKind.SwitchStatement) {
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noUnnecessaryCallbackWrapperRule.ts
Expand Up @@ -44,7 +44,7 @@ export class Rule extends Lint.Rules.AbstractRule {
}
}

function walk(ctx: Lint.WalkContext<void>) {
function walk(ctx: Lint.WalkContext) {
return ts.forEachChild(ctx.sourceFile, cb);
function cb(node: ts.Node): void {
if (isArrowFunction(node) && !hasModifier(node.modifiers, ts.SyntaxKind.AsyncKeyword) &&
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noUnnecessaryTypeAssertionRule.ts
Expand Up @@ -39,7 +39,7 @@ export class Rule extends Lint.Rules.TypedRule {
}
}

class Walker extends Lint.AbstractWalker<void> {
class Walker extends Lint.AbstractWalker {
constructor(sourceFile: ts.SourceFile, ruleName: string, private readonly checker: ts.TypeChecker) {
super(sourceFile, ruleName, undefined);
}
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noUnsafeAnyRule.ts
Expand Up @@ -43,7 +43,7 @@ export class Rule extends Lint.Rules.TypedRule {
}
}

function walk(ctx: Lint.WalkContext<void>, checker: ts.TypeChecker): void {
function walk(ctx: Lint.WalkContext, checker: ts.TypeChecker): void {
if (ctx.sourceFile.isDeclarationFile) {
// Not possible in a declaration file.
return;
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noUnsafeFinallyRule.ts
Expand Up @@ -52,7 +52,7 @@ export class Rule extends Lint.Rules.AbstractRule {

type JumpStatement = ts.BreakStatement | ts.ContinueStatement | ts.ThrowStatement | ts.ReturnStatement;

function walk(ctx: Lint.WalkContext<void>): void {
function walk(ctx: Lint.WalkContext): void {
let inFinally = false;
ts.forEachChild(ctx.sourceFile, function cb(node: ts.Node): void {
switch (node.kind) {
Expand Down
4 changes: 2 additions & 2 deletions src/rules/noUnusedVariableRule.ts
Expand Up @@ -96,7 +96,7 @@ function parseOptions(options: any[]): Options {
return { checkParameters, ignorePattern };
}

function walk(ctx: Lint.WalkContext<void>, program: ts.Program, { checkParameters, ignorePattern }: Options): void {
function walk(ctx: Lint.WalkContext, program: ts.Program, { checkParameters, ignorePattern }: Options): void {
const { sourceFile } = ctx;
const unusedCheckedProgram = getUnusedCheckedProgram(program, checkParameters);
const diagnostics = ts.getPreEmitDiagnostics(unusedCheckedProgram, sourceFile);
Expand Down Expand Up @@ -148,7 +148,7 @@ function walk(ctx: Lint.WalkContext<void>, program: ts.Program, { checkParameter
* - If all of the import specifiers in an import are unused, add a combined failure for them all.
* - Unused imports are fixable.
*/
function addImportSpecifierFailures(ctx: Lint.WalkContext<void>, failures: Map<ts.Identifier, string>, sourceFile: ts.SourceFile) {
function addImportSpecifierFailures(ctx: Lint.WalkContext, failures: Map<ts.Identifier, string>, sourceFile: ts.SourceFile) {
forEachImport(sourceFile, (importNode) => {
if (importNode.kind === ts.SyntaxKind.ImportEqualsDeclaration) {
tryRemoveAll(importNode.name);
Expand Down
2 changes: 1 addition & 1 deletion src/rules/noUseBeforeDeclareRule.ts
Expand Up @@ -45,7 +45,7 @@ export class Rule extends Lint.Rules.TypedRule {
}
}

function walk(ctx: Lint.WalkContext<void>, checker: ts.TypeChecker): void {
function walk(ctx: Lint.WalkContext, checker: ts.TypeChecker): void {
return ts.forEachChild(ctx.sourceFile, function recur(node: ts.Node): void {
switch (node.kind) {
case ts.SyntaxKind.TypeReference:
Expand Down