Skip to content

Commit 250cea2

Browse files
authored
Merge pull request #134 from nojaf/fix-128
Exclude type with generic arguments for StructDiscriminatedUnionAnalyzer allTypesArePrimitive check
2 parents a67edf1 + 6c818e6 commit 250cea2

14 files changed

+35
-12
lines changed

CHANGELOG.md

+6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Changelog
22

3+
## 0.13.1 - 2024-01-08
4+
5+
### Fixed
6+
7+
* InvalidOperationException on some DUs. [#128](https://github.com/ionide/ionide-analyzers/issues/128)
8+
39
## 0.13.0 - 2024-11-19
410

511
### Added

src/Ionide.Analyzers/Suggestion/StructDiscriminatedUnionAnalyzer.fs

+2
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,8 @@ let private analyze
110110

111111
if ff.FieldType.IsFunctionType || ff.FieldType.IsAnonRecordType then
112112
false
113+
elif not (Seq.isEmpty ff.FieldType.GenericArguments) then
114+
false
113115
else
114116

115117
primitives.Contains ff.FieldType.BasicQualifiedName

tests/Ionide.Analyzers.Tests/Performance/CombinePipedModuleFunctionsAnalyzerTests.fs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ let mutable projectOptions: FSharpProjectOptions = FSharpProjectOptions.zero
1010
[<SetUp>]
1111
let Setup () =
1212
task {
13-
let! opts = mkOptionsFromProject "net7.0" []
13+
let! opts = mkOptionsFromProject "net8.0" []
1414
projectOptions <- opts
1515
}
1616

tests/Ionide.Analyzers.Tests/Performance/EqualsNullAnalyzerTests.fs

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ let mutable projectOptions: FSharpProjectOptions = FSharpProjectOptions.zero
1212
[<SetUp>]
1313
let Setup () =
1414
task {
15-
let! opts = mkOptionsFromProject "net7.0" []
15+
let! opts = mkOptionsFromProject "net8.0" []
1616
projectOptions <- opts
1717
}
1818

tests/Ionide.Analyzers.Tests/Performance/ListEqualsEmptyListAnalyzerTests.fs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ let mutable projectOptions: FSharpProjectOptions = FSharpProjectOptions.zero
1010
[<SetUp>]
1111
let Setup () =
1212
task {
13-
let! opts = mkOptionsFromProject "net7.0" []
13+
let! opts = mkOptionsFromProject "net8.0" []
1414
projectOptions <- opts
1515
}
1616

tests/Ionide.Analyzers.Tests/Performance/ReturnStructPartialActivePatternAnalyzerTests.fs

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ let Setup () =
1313
task {
1414
let! opts =
1515
mkOptionsFromProject
16-
"net7.0"
16+
"net8.0"
1717
[
1818
{
1919
Name = "FSharp.Compiler.Service"

tests/Ionide.Analyzers.Tests/Style/PostfixGenericsAnalyzerTests.fs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ let mutable projectOptions: FSharpProjectOptions = FSharpProjectOptions.zero
1010
[<SetUp>]
1111
let Setup () =
1212
task {
13-
let! opts = mkOptionsFromProject "net7.0" []
13+
let! opts = mkOptionsFromProject "net8.0" []
1414

1515
projectOptions <- opts
1616
}

tests/Ionide.Analyzers.Tests/Suggestion/CopyAndUpdateRecordChangesAllFieldsAnalyzerTests.fs

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ let mutable projectOptions: FSharpProjectOptions = FSharpProjectOptions.zero
1212
[<SetUp>]
1313
let Setup () =
1414
task {
15-
let! opts = mkOptionsFromProject "net7.0" []
15+
let! opts = mkOptionsFromProject "net8.0" []
1616

1717
projectOptions <- opts
1818
}

tests/Ionide.Analyzers.Tests/Suggestion/EmptyStringAnalyzerTests.fs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ let mutable projectOptions: FSharpProjectOptions = FSharpProjectOptions.zero
1010
[<SetUp>]
1111
let Setup () =
1212
task {
13-
let! opts = mkOptionsFromProject "net7.0" []
13+
let! opts = mkOptionsFromProject "net8.0" []
1414

1515
projectOptions <- opts
1616
}

tests/Ionide.Analyzers.Tests/Suggestion/HandleOptionGracefullyAnalyzerTests.fs

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ let messageString =
1313
[<SetUp>]
1414
let Setup () =
1515
task {
16-
let! opts = mkOptionsFromProject "net7.0" []
16+
let! opts = mkOptionsFromProject "net8.0" []
1717
projectOptions <- opts
1818
}
1919

tests/Ionide.Analyzers.Tests/Suggestion/HeadConsEmptyListPatternAnalyzerTests.fs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ let mutable projectOptions: FSharpProjectOptions = FSharpProjectOptions.zero
1010
[<SetUp>]
1111
let Setup () =
1212
task {
13-
let! opts = mkOptionsFromProject "net7.0" []
13+
let! opts = mkOptionsFromProject "net8.0" []
1414
projectOptions <- opts
1515
}
1616

tests/Ionide.Analyzers.Tests/Suggestion/IgnoreFunctionAnalyzerTests.fs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ let mutable projectOptions: FSharpProjectOptions = FSharpProjectOptions.zero
1010
[<SetUp>]
1111
let Setup () =
1212
task {
13-
let! opts = mkOptionsFromProject "net7.0" []
13+
let! opts = mkOptionsFromProject "net8.0" []
1414

1515
projectOptions <- opts
1616
}

tests/Ionide.Analyzers.Tests/Suggestion/StructDiscriminatedUnionAnalyzerTests.fs

+16-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ let mutable projectOptions: FSharpProjectOptions = FSharpProjectOptions.zero
1212
[<SetUp>]
1313
let Setup () =
1414
task {
15-
let! opts = mkOptionsFromProject "net7.0" []
15+
let! opts = mkOptionsFromProject "net8.0" []
1616
projectOptions <- opts
1717
}
1818

@@ -235,3 +235,18 @@ type Foo =
235235
let! msgs = structDiscriminatedUnionCliAnalyzer ctx
236236
Assert.That(msgs, Is.Empty)
237237
}
238+
239+
[<Test>]
240+
let ``negative: int array`` () =
241+
async {
242+
let source =
243+
"""module Foo
244+
245+
type SingleCaseDU = | One of int[]
246+
type TwoCaseDU = | Empty | Full of int[]
247+
"""
248+
249+
let ctx = getContext projectOptions source
250+
let! msgs = structDiscriminatedUnionCliAnalyzer ctx
251+
Assert.That(msgs, Is.Empty)
252+
}

tests/Ionide.Analyzers.Tests/Suggestion/UnnamedDiscriminatedUnionFieldAnalyzerTests.fs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ let mutable projectOptions: FSharpProjectOptions = FSharpProjectOptions.zero
1010
[<SetUp>]
1111
let Setup () =
1212
task {
13-
let! opts = mkOptionsFromProject "net7.0" []
13+
let! opts = mkOptionsFromProject "net8.0" []
1414
projectOptions <- opts
1515
}
1616

0 commit comments

Comments
 (0)