From 6f3d73bee5cf7d3802a3a98b8ecaac35d4c30bc8 Mon Sep 17 00:00:00 2001 From: Andy Date: Thu, 11 Aug 2016 12:27:38 -0700 Subject: [PATCH] Require semicolons for type aliases (#1475) --- src/language/walker/syntaxWalker.ts | 8 ++++++++ src/rules/semicolonRule.ts | 5 +++++ test/rules/semicolon/always/test.ts.lint | 3 +++ test/rules/semicolon/enabled/test.ts.lint | 4 ++++ test/rules/semicolon/ignore-interfaces/test.ts.lint | 4 ++++ test/rules/semicolon/never/test.ts.lint | 4 ++++ 6 files changed, 28 insertions(+) diff --git a/src/language/walker/syntaxWalker.ts b/src/language/walker/syntaxWalker.ts index 245bc0e6ae4..574b07fe4c0 100644 --- a/src/language/walker/syntaxWalker.ts +++ b/src/language/walker/syntaxWalker.ts @@ -286,6 +286,10 @@ export class SyntaxWalker { this.walkChildren(node); } + protected visitTypeAliasDeclaration(node: ts.TypeAliasDeclaration) { + this.walkChildren(node); + } + protected visitTypeAssertionExpression(node: ts.TypeAssertion) { this.walkChildren(node); } @@ -584,6 +588,10 @@ export class SyntaxWalker { this.visitTryStatement( node); break; + case ts.SyntaxKind.TypeAliasDeclaration: + this.visitTypeAliasDeclaration( node); + break; + case ts.SyntaxKind.TypeAssertionExpression: this.visitTypeAssertionExpression( node); break; diff --git a/src/rules/semicolonRule.ts b/src/rules/semicolonRule.ts index e6512c5e2ed..81d423edd08 100644 --- a/src/rules/semicolonRule.ts +++ b/src/rules/semicolonRule.ts @@ -140,6 +140,11 @@ class SemicolonWalker extends Lint.RuleWalker { super.visitExportAssignment(node); } + public visitTypeAliasDeclaration(node: ts.TypeAliasDeclaration) { + this.checkSemicolonAt(node); + super.visitTypeAliasDeclaration(node); + } + private checkSemicolonAt(node: ts.Node) { const sourceFile = this.getSourceFile(); const children = node.getChildren(sourceFile); diff --git a/test/rules/semicolon/always/test.ts.lint b/test/rules/semicolon/always/test.ts.lint index 8b933c82c4f..ee9fdaadceb 100644 --- a/test/rules/semicolon/always/test.ts.lint +++ b/test/rules/semicolon/always/test.ts.lint @@ -84,3 +84,6 @@ export = Date; export = Date ~nil [Missing semicolon] +type t = number; +type t = number + ~nil [Missing semicolon] diff --git a/test/rules/semicolon/enabled/test.ts.lint b/test/rules/semicolon/enabled/test.ts.lint index 3b7c7f5df7b..ee9fdaadceb 100644 --- a/test/rules/semicolon/enabled/test.ts.lint +++ b/test/rules/semicolon/enabled/test.ts.lint @@ -83,3 +83,7 @@ export default LoginPage export = Date; export = Date ~nil [Missing semicolon] + +type t = number; +type t = number + ~nil [Missing semicolon] diff --git a/test/rules/semicolon/ignore-interfaces/test.ts.lint b/test/rules/semicolon/ignore-interfaces/test.ts.lint index 1ee2a304971..abc2efa2582 100644 --- a/test/rules/semicolon/ignore-interfaces/test.ts.lint +++ b/test/rules/semicolon/ignore-interfaces/test.ts.lint @@ -83,3 +83,7 @@ export default LoginPage export = Date; export = Date ~nil [Missing semicolon] + +type t = number; +type t = number + ~nil [Missing semicolon] diff --git a/test/rules/semicolon/never/test.ts.lint b/test/rules/semicolon/never/test.ts.lint index 0cb9871f32e..18e22a135d3 100644 --- a/test/rules/semicolon/never/test.ts.lint +++ b/test/rules/semicolon/never/test.ts.lint @@ -116,3 +116,7 @@ export default LoginPage export = Date; ~ [Unnecessary semicolon] export = Date + +type t = number; + ~ [Unnecessary semicolon] +type t = number