diff --git a/src/FSharpLint.Core/Rules/Conventions/NoPartialFunctions.fs b/src/FSharpLint.Core/Rules/Conventions/NoPartialFunctions.fs index 5460f5133..013bc43ab 100644 --- a/src/FSharpLint.Core/Rules/Conventions/NoPartialFunctions.fs +++ b/src/FSharpLint.Core/Rules/Conventions/NoPartialFunctions.fs @@ -57,6 +57,7 @@ let private partialFunctionIdentifiers = ("Seq.reduce", Function "Seq.fold") ("Seq.reduceBack", Function "Seq.foldBack") ("Seq.pick", Function "Seq.tryPick") + ("Seq.cast", Function "Seq.choose tryUnbox") // List ("List.exactlyOne", Function "List.tryExactlyOne") diff --git a/tests/FSharpLint.Core.Tests/Rules/Conventions/NoPartialFunctions.fs b/tests/FSharpLint.Core.Tests/Rules/Conventions/NoPartialFunctions.fs index 56ac73d97..4052acec9 100644 --- a/tests/FSharpLint.Core.Tests/Rules/Conventions/NoPartialFunctions.fs +++ b/tests/FSharpLint.Core.Tests/Rules/Conventions/NoPartialFunctions.fs @@ -171,6 +171,16 @@ if foo.Head 1 then Assert.IsTrue this.ErrorsExist this.AssertErrorWithMessageExists("Consider using 'List.tryHead' instead of partial function/method 'List.Head'.") + [] + member this.``Error for Seq.cast``() = + this.Parse """ +let foo = [ box "Hello"; box 42 ] +let bar = Seq.cast foo +""" + + Assert.IsTrue this.ErrorsExist + this.AssertErrorWithMessageExists("Consider using 'Seq.choose tryUnbox' instead of partial function/method 'Seq.cast'.") + [] member this.``Regression found when parsing Console/Program_fs``() = this.Parse """