From 78304fc73bc21c07b8497bd69a9c0fc59d984d6e Mon Sep 17 00:00:00 2001 From: webwarrior-ws Date: Wed, 6 Aug 2025 10:54:47 +0200 Subject: [PATCH 1/3] Tests(ParameterNames): fix test That uses identifier name instead of parameter name. This is wrong because the rule is supposed to operate only on function or method parameters. --- .../Rules/Conventions/Naming/ParameterNames.fs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/FSharpLint.Core.Tests/Rules/Conventions/Naming/ParameterNames.fs b/tests/FSharpLint.Core.Tests/Rules/Conventions/Naming/ParameterNames.fs index 19adee889..c15a46d67 100644 --- a/tests/FSharpLint.Core.Tests/Rules/Conventions/Naming/ParameterNames.fs +++ b/tests/FSharpLint.Core.Tests/Rules/Conventions/Naming/ParameterNames.fs @@ -78,13 +78,13 @@ let result = extractInt singleCaseDU let source = """ module Program -let __foo_bar = 0 +let baz __foo_bar = 0 """ let expected = """ module Program -let __foobar = 0 +let baz __foobar = 0 """ this.Parse source From 3aeff5de13b87efe67b4443ed4d2374459690ec5 Mon Sep 17 00:00:00 2001 From: webwarrior-ws Date: Wed, 6 Aug 2025 10:58:08 +0200 Subject: [PATCH 2/3] Tests(ParameterNames): add test for module members That makes sure that member names don't cause errors as they the rule is only for function parameters. --- .../Rules/Conventions/Naming/ParameterNames.fs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/FSharpLint.Core.Tests/Rules/Conventions/Naming/ParameterNames.fs b/tests/FSharpLint.Core.Tests/Rules/Conventions/Naming/ParameterNames.fs index c15a46d67..9e0030781 100644 --- a/tests/FSharpLint.Core.Tests/Rules/Conventions/Naming/ParameterNames.fs +++ b/tests/FSharpLint.Core.Tests/Rules/Conventions/Naming/ParameterNames.fs @@ -114,3 +114,14 @@ let foo ((x, y) as bar_coord) = bar_coord """ Assert.IsTrue this.ErrorsExist + + [] + member this.``Module members should not cause errors as they are not parameters``() = + this.Parse """ +module BitLaunch = + module Regions = + let Bucharest = "Bucharest" + let Amsterdam someArg = "Amsterdam" +""" + + Assert.IsFalse this.ErrorsExist From 148445cfc82e6e615a9d24bf0e87a8b23aec26b3 Mon Sep 17 00:00:00 2001 From: webwarrior-ws Date: Wed, 6 Aug 2025 11:01:51 +0200 Subject: [PATCH 3/3] ParameterNames: fix rule To not fire on member names. --- src/FSharpLint.Core/Rules/Conventions/Naming/ParameterNames.fs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/FSharpLint.Core/Rules/Conventions/Naming/ParameterNames.fs b/src/FSharpLint.Core/Rules/Conventions/Naming/ParameterNames.fs index 81c22e27e..e42eebb81 100644 --- a/src/FSharpLint.Core/Rules/Conventions/Naming/ParameterNames.fs +++ b/src/FSharpLint.Core/Rules/Conventions/Naming/ParameterNames.fs @@ -41,7 +41,7 @@ let private getIdentifiers (args:AstNodeRuleParams) = | AstNode.Binding(SynBinding(access, _, _, _, attributes, _, valData, pattern, _, _, _, _, _)) -> if not (isLiteral attributes) then match identifierTypeFromValData valData with - | Value | Function -> + | Function -> let accessControlLevel = getAccessControlLevel args.SyntaxArray args.NodeIndex getPatternIdents accessControlLevel (getValueOrFunctionIdents args.CheckInfo) true pattern | Member | Property ->