From b71e99838f2a0a15e2092d2c6d04c4bfed11ccae Mon Sep 17 00:00:00 2001 From: detachhead Date: Sat, 17 Aug 2024 16:21:55 +1000 Subject: [PATCH] fix `reportUnusedParameter` on parameters prefixed with `_` --- packages/pyright-internal/src/analyzer/checker.ts | 12 +++++------- .../src/tests/samples/reportUnusedParameter.py | 4 +++- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/checker.ts b/packages/pyright-internal/src/analyzer/checker.ts index 04d46309c8..91862be99d 100644 --- a/packages/pyright-internal/src/analyzer/checker.ts +++ b/packages/pyright-internal/src/analyzer/checker.ts @@ -3661,12 +3661,6 @@ export class Checker extends ParseTreeWalker { if (decl.node.nodeType === ParseNodeType.Name) { nameNode = decl.node; - - // Don't emit a diagnostic if the name starts with an underscore. - // This indicates that the variable is unused. - if (!nameNode.d.value.startsWith('_')) { - rule = DiagnosticRule.reportUnusedVariable; - } } else if (decl.node.nodeType === ParseNodeType.Parameter) { nameNode = decl.node.d.name; @@ -3693,12 +3687,16 @@ export class Checker extends ParseTreeWalker { rule = DiagnosticRule.reportUnusedVariable; } - if (nameNode) { + // Don't emit a diagnostic if the name starts with an underscore. + // This indicates that the variable is unused. + if (nameNode && !nameNode.d.value.startsWith('_')) { message = ( rule === DiagnosticRule.reportUnusedParameter ? LocMessage.unaccessedSymbol() : LocMessage.unaccessedVariable() ).format({ name: nameNode.d.value }); + } else { + rule = undefined; } break; diff --git a/packages/pyright-internal/src/tests/samples/reportUnusedParameter.py b/packages/pyright-internal/src/tests/samples/reportUnusedParameter.py index 01be0fee2f..80e81ab303 100644 --- a/packages/pyright-internal/src/tests/samples/reportUnusedParameter.py +++ b/packages/pyright-internal/src/tests/samples/reportUnusedParameter.py @@ -15,4 +15,6 @@ class Bar(Foo): def foo(self, asdf: int): ... @override - def bar(self, asdf: int): ... \ No newline at end of file + def bar(self, asdf: int): ... + +def bar(_value: int): ... \ No newline at end of file