diff --git a/src/rules/handleCallbackErrRule.ts b/src/rules/handleCallbackErrRule.ts index 65e6ff8..4a8e4c4 100644 --- a/src/rules/handleCallbackErrRule.ts +++ b/src/rules/handleCallbackErrRule.ts @@ -197,8 +197,7 @@ class ErrCallbackHandlerWalker extends Lint.RuleWalker { doCheck = !inPropertyAccess; } else if (inPropertyAccess) { // Make sure we are not in nested property access, i.e. caller.caller.error.prop - const isCaller = (node.parent as ts.PropertyAccessExpression).expression === node; - doCheck = isCaller && !this.isPropAccess(node.parent.parent); + doCheck = (node.parent as ts.PropertyAccessExpression).expression === node; } else { doCheck = true; } diff --git a/src/test/rules/handleCallbackErrRuleTests.ts b/src/test/rules/handleCallbackErrRuleTests.ts index c5375af..05829c1 100644 --- a/src/test/rules/handleCallbackErrRuleTests.ts +++ b/src/test/rules/handleCallbackErrRuleTests.ts @@ -86,11 +86,41 @@ ruleTester.addTestGroup('standard-fail', 'should fail with standard config', [ ]); ruleTester.addTestGroup('custom-error-name-pass', 'should pass with custom error name', [ + { + code: dedent` + function isRecoverable (error: TSError) { + return error.diagnostics.every(x => RECOVERY_CODES.indexOf(x.code) > -1) + }`, + options: ['error'] + }, + { + code: dedent` + const foo = (error: TSError) => { + return error.one.two.three.four.five(0); + }`, + options: ['error'] + }, { code: `function(errorMsg, stream) { console.error(errorMsg) }`, options: ['errorMsg'] }, { code: `function(err, stream) { }`, options: ['errorMsg'] } ]); ruleTester.addTestGroup('custom-error-name-fail', 'should fail with custom error name', [ + { + code: dedent` + const foo = (error: TSError) => { + return one.two.three.error.four.five(0); + }`, + options: ['error'], + errors: [error] + }, + { + code: dedent` + const foo = (error: TSError) => { + return error.one.two.three.four.five(0); + }`, + options: ['error', { allowProperties: false }], + errors: [strictError] + }, { code: `function(errorMsg, stream) { }`, options: ['errorMsg'], errors: [error] }, { code: `error => console.error('Could not print the document');`,