From 99ee15eb96a943ea23888f4995793c7c774144ea Mon Sep 17 00:00:00 2001 From: Klaus Meinhardt Date: Wed, 29 Nov 2017 14:35:14 +0100 Subject: [PATCH] no-accessor-recursion: avoid crash on abstract accessor --- rules/noAccessorRecursionRule.ts | 2 +- test/rules/no-accessor-recursion/default/test.ts.lint | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/rules/noAccessorRecursionRule.ts b/rules/noAccessorRecursionRule.ts index 5ac4215..523e34e 100644 --- a/rules/noAccessorRecursionRule.ts +++ b/rules/noAccessorRecursionRule.ts @@ -14,7 +14,7 @@ function walk(ctx: Lint.WalkContext) { let name: string | undefined; return ctx.sourceFile.statements.forEach(function cb(node: ts.Node): any { - if (isAccessorDeclaration(node)) { + if (isAccessorDeclaration(node) && node.body !== undefined) { const before = name; name = getPropertyName(node.name); node.body.statements.forEach(cb); diff --git a/test/rules/no-accessor-recursion/default/test.ts.lint b/test/rules/no-accessor-recursion/default/test.ts.lint index 0e4f76c..8b04e77 100644 --- a/test/rules/no-accessor-recursion/default/test.ts.lint +++ b/test/rules/no-accessor-recursion/default/test.ts.lint @@ -82,4 +82,13 @@ obj = { } } +abstract class MyClass { + abstract get prop(): string; + + set prop(v: string) { + this.prop = v; + ~~~~~~~~~ [fail] + } +} + [fail]: accessor recursion is not allowed