-
-
Notifications
You must be signed in to change notification settings - Fork 26
Open
Description
Describe the bug
(Very possibly a bug report for dotnet/fsharp.)
This F# file fails to be analyzed, because the analyzer throws within FCS complaining that the type parameter is required to support comparison but does not:
// WorldFreezer.fs
namespace Foo
type Bar<'appEvent> =
| Wibble of 'appEvent<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Update="FSharp.Core" Version="6.0.0" />
</ItemGroup>
<ItemGroup>
<Compile Include="WorldFreezer.fs" />
</ItemGroup>
</Project>Running the analyzers:
#!/bin/sh
nix develop --command dotnet build || exit 1
nix develop --command dotnet restore analyzers/analyzers.fsproj || exit 1
dotnet fsharp-analyzers --verbosity detailed --analyzers-path ./.analyzerpackages/woofware.fsharpanalyzers/*/ --project WoofWare.Zoomies/WoofWare.Zoomies.fsproj --report woofware.sarif
exit_code_2=$?
if [ "$exit_code_2" -eq 0 ]; then
exit 0
else
exit "$exit_code_2"
fianalyzers/analyzers.fsproj:
<Project Sdk="Microsoft.Build.NoTargets/3.7.134"> <!-- This is not a project we want to build. -->
<PropertyGroup>
<IsPackable>false</IsPackable>
<IsPublishable>false</IsPublishable>
<RestorePackagesPath>../.analyzerpackages/</RestorePackagesPath>
<TargetFramework>net6.0</TargetFramework>
<DisableImplicitNuGetFallbackFolder>true</DisableImplicitNuGetFallbackFolder>
<AutomaticallyUseReferenceAssemblyPackages>false</AutomaticallyUseReferenceAssemblyPackages> <!-- We don't want to build this project, so we do not need the reference assemblies for the framework we chose.-->
</PropertyGroup>
<ItemGroup>
<PackageDownload Include="G-Research.FSharp.Analyzers" Version="[0.20.0]" />
<PackageDownload Include="WoofWare.FSharpAnalyzers" Version="[0.2.8]" />
</ItemGroup>
</Project>{
"version": 1,
"isRoot": true,
"tools": {
"fantomas": {
"version": "7.0.3",
"commands": [
"fantomas"
]
},
"fsharp-analyzers": {
"version": "0.34.1",
"commands": [
"fsharp-analyzers"
]
},
"woofware.nunittestrunner": {
"version": "0.3.10",
"commands": [
"woofware.nunittestrunner"
]
}
}
}The enormous stack trace is at the bottom of this report.
Expected behaviour
Analysis runs, and in particular, this line of the StreamReadAnalyzer https://github.com/Smaug123/WoofWare.FSharpAnalyzers/blob/ce51189251779ec9bfa06c79a303d4b2fed1d69f/WoofWare.FSharpAnalyzers/StreamReadAnalyzer.fs#L37 does not throw.
Environment (please complete the following information):
> dotnet info
.NET SDK:
Version: 10.0.100
Commit: b0f34d51fc
Workload version: 10.0.100-manifests.4eab3e0f
MSBuild version: 18.0.2+b0f34d51f
Runtime Environment:
OS Name: Mac OS X
OS Version: 26.1
OS Platform: Darwin
RID: osx-arm64
Base Path: /nix/store/i48qfcm2yxxp4xmx3fb5bavjvl7yj1lz-dotnet-sdk-10.0.100/share/dotnet/sdk/10.0.100/
.NET workloads installed:
There are no installed workloads to display.
Configured to use workload sets when installing new manifests.
No workload sets are installed. Run "dotnet workload restore" to install a workload set.
Host:
Version: 10.0.0
Architecture: arm64
Commit: b0f34d51fc
.NET SDKs installed:
10.0.100 [/nix/store/i48qfcm2yxxp4xmx3fb5bavjvl7yj1lz-dotnet-sdk-10.0.100/share/dotnet/sdk]
.NET runtimes installed:
Microsoft.AspNetCore.App 10.0.0 [/nix/store/i48qfcm2yxxp4xmx3fb5bavjvl7yj1lz-dotnet-sdk-10.0.100/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 10.0.0 [/nix/store/i48qfcm2yxxp4xmx3fb5bavjvl7yj1lz-dotnet-sdk-10.0.100/share/dotnet/shared/Microsoft.NETCore.App]
Other architectures found:
None
Environment variables:
DOTNET_CLI_TELEMETRY_OPTOUT [1]
DOTNET_NOLOGO [1]
DOTNET_SKIP_FIRST_TIME_EXPERIENCE [1]
DOTNET_SKIP_WORKLOAD_INTEGRITY_CHECK [1]
global.json file:
Not found
Additional context
Horrible stack trace:
[20:41:25.316] [FSharp.Analyzers.Cli] info: Running in verbose mode
[20:41:25.323] [FSharp.Analyzers.Cli] info: Treat as Hints: []
[20:41:25.323] [FSharp.Analyzers.Cli] info: Treat as Info: []
[20:41:25.323] [FSharp.Analyzers.Cli] info: Treat as Warning: []
[20:41:25.323] [FSharp.Analyzers.Cli] info: Treat as Error: []
[20:41:25.326] [FSharp.Analyzers.Cli] info: Exclude Files: []
[20:41:25.326] [FSharp.Analyzers.Cli] info: Include Files: []
[20:41:25.330] [FSharp.Analyzers.Cli] info: Loading analyzers from /Users/patrick/Documents/GitHub/WoofWare.Zoomies/.analyzerpackages/woofware.fsharpanalyzers/0.2.8/
[20:41:25.363] [FSharp.Analyzers.Cli] info: Registered 9 analyzers from 1 dlls
[20:41:25.373] [FSharp.Analyzers.Cli] info: Loading project /Users/patrick/Documents/GitHub/WoofWare.Zoomies/WoofWare.Zoomies/WoofWare.Zoomies.fsproj
[20:41:25.631] [MsBuild] info: Build started.
[20:41:25.854] [MsBuild] info: Build succeeded.
[20:41:25.901] [FSharp.Analyzers.Cli] info: Checking project /Users/patrick/Documents/GitHub/WoofWare.Zoomies/WoofWare.Zoomies/WoofWare.Zoomies.fsproj
[20:41:27.298] [FSharp.Analyzers.Cli] info: Running analyzers for /Users/patrick/Documents/GitHub/WoofWare.Zoomies/WoofWare.Zoomies/obj/Debug/net6.0/.NETCoreApp,Version=v6.0.AssemblyAttributes.fs
[20:41:27.298] [FSharp.Analyzers.Cli] info: Running analyzers for /Users/patrick/Documents/GitHub/WoofWare.Zoomies/WoofWare.Zoomies/WorldFreezer.fs
[20:41:27.300] [FSharp.Analyzers.Cli] info: Running analyzers for /Users/patrick/Documents/GitHub/WoofWare.Zoomies/WoofWare.Zoomies/obj/Debug/net6.0/WoofWare.Zoomies.AssemblyInfo.fs
[20:41:27.300] [FSharp.Analyzers.Cli] info: Running analyzers for /Users/patrick/Documents/GitHub/WoofWare.Zoomies/WoofWare.Zoomies/obj/Debug/net6.0/WoofWare.Zoomies.Version.fs
[20:41:27.345] [FSharp.Analyzers.Cli] critical: Unhandled exception: FSharp.Compiler.DiagnosticsLogger+ReportedError: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: ConstraintSolverMissingConstraint
({ includeStaticParametersInTypeNames = false
openTopPathsSorted =
Internal.Utilities.Library.InterruptibleLazy`1[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[System.String]]]
openTopPathsRaw = []
shortTypeNames = false
suppressNestedTypes = false
maxMembers = None
showObsoleteMembers = false
showHiddenMembers = false
showTyparBinding = false
showInferenceTyparAnnotations = false
suppressInlineKeyword = true
suppressMutableKeyword = false
showMemberContainers = false
shortConstraints = false
useColonForReturnType = false
showAttributes = false
showCsharpCodeAnalysisAttributes = false
showOverrides = true
showStaticallyResolvedTyparAnnotations = true
showNullnessAnnotations = None
abbreviateAdditionalConstraints = false
showTyparDefaultConstraints = false
showDocumentation = false
shrinkOverloads = true
printVerboseSignatures = false
escapeKeywordNames = false
g = <TcGlobals>
contextAccessibility = public
generatedValueLayout = <fun:Empty@3244>
genericParameterStyle = Implicit }, appEvent,
SupportsComparison (4,6--4,12), (4,6--4,12), (4,6--4,12)))
at FSharp.Compiler.DiagnosticsLogger.DiagnosticsLoggerExtensions.DiagnosticsLogger.Error[T](DiagnosticsLogger x, Exception exn) in D:\a\_work\1\s\src\fsharp\src\Compiler\Facilities\DiagnosticsLogger.fs:line 475
at FSharp.Compiler.DiagnosticsLogger.CommitOperationResult[T](OperationResult`1 res) in D:\a\_work\1\s\src\fsharp\src\Compiler\Facilities\DiagnosticsLogger.fs:line 664
at FSharp.Compiler.Symbols.FSharpExprConvert.GetWitnessArgs(SymbolEnv cenv, ExprTranslationEnv env, ValRef vref, Range m, FSharpList`1 tps, FSharpList`1 tyargs) in D:\a\_work\1\s\src\fsharp\src\Compiler\Symbols\E
xprs.fs:line 519
at FSharp.Compiler.Symbols.FSharpExprConvert.ConvModuleValueOrMemberUseLinear(SymbolEnv cenv, ExprTranslationEnv env, Expr expr, ValRef vref, ValUseFlag vFlags, FSharpList`1 tyargs, FSharpList`1 curriedArgs, FSha
rpFunc`2 contF) in D:\a\_work\1\s\src\fsharp\src\Compiler\Symbols\Exprs.fs:line 504
at FSharp.Compiler.Symbols.FSharpExprConvert.ConvExprOnDemand@1339.Invoke(Unit unitVar0) in D:\a\_work\1\s\src\fsharp\src\Compiler\Symbols\Exprs.fs:line 1339
at FSharp.Compiler.Symbols.FSharpExpr.get_E() in D:\a\_work\1\s\src\fsharp\src\Compiler\Symbols\Exprs.fs:line 153
at FSharp.Compiler.Symbols.FSharpExprPatterns.|ObjectExpr|_|(FSharpExpr e) in D:\a\_work\1\s\src\fsharp\src\Compiler\Symbols\Exprs.fs:line 1489
at WoofWare.FSharpAnalyzers.ThrowingInDisposeAnalyzer.findObjectExpressions(FSharpExpr expr, List`1 violations) in /_//WoofWare.FSharpAnalyzers/ThrowingInDisposeAnalyzer.fs:line 130
at WoofWare.FSharpAnalyzers.ThrowingInDisposeAnalyzer.walkDeclarations@175(List`1 violations, FSharpList`1 decls) in /_//WoofWare.FSharpAnalyzers/ThrowingInDisposeAnalyzer.fs:line 187
at WoofWare.FSharpAnalyzers.ThrowingInDisposeAnalyzer.walkDeclarations@175(List`1 violations, FSharpList`1 decls) in /_//WoofWare.FSharpAnalyzers/ThrowingInDisposeAnalyzer.fs:line 179
at WoofWare.FSharpAnalyzers.ThrowingInDisposeAnalyzer.analyze(FSharpImplementationFileContents typedTree) in /_//WoofWare.FSharpAnalyzers/ThrowingInDisposeAnalyzer.fs:line 193
at WoofWare.FSharpAnalyzers.ThrowingInDisposeAnalyzer.cliAnalyzer@220-13.Invoke(Unit unitVar) in /_//WoofWare.FSharpAnalyzers/ThrowingInDisposeAnalyzer.fs:line 220
at Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[T,TResult](AsyncActivation`1 ctxt, TResult result1, FSharpFunc`2 part2) in D:\a\_work\1\s\src\fsharp\src\FSharp.Core\async.fs:line 509
at Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction) in D:\a\_work\1\s\src\fsharp\src\FSharp.Core\async.fs:line 112
--- End of stack trace from previous location ---
at Microsoft.FSharp.Control.AsyncResult`1.Commit() in D:\a\_work\1\s\src\fsharp\src\FSharp.Core\async.fs:line 453
at Microsoft.FSharp.Control.AsyncPrimitives.QueueAsyncAndWaitForResultSynchronously[a](CancellationToken token, FSharpAsync`1 computation, FSharpOption`1 timeout) in D:\a\_work\1\s\src\fsharp\src\FSharp.Core\asyn
c.fs:line 1138
at Microsoft.FSharp.Control.AsyncPrimitives.RunSynchronously[T](CancellationToken cancellationToken, FSharpAsync`1 computation, FSharpOption`1 timeout) in D:\a\_work\1\s\src\fsharp\src\FSharp.Core\async.fs:line 1
165
at Microsoft.FSharp.Control.FSharpAsync.RunSynchronously[T](FSharpAsync`1 computation, FSharpOption`1 timeout, FSharpOption`1 cancellationToken) in D:\a\_work\1\s\src\fsharp\src\FSharp.Core\async.fs:line 1514
at Program.results$cont@1048(ToolsPath toolsPath, FSharpOption`1 binlogPath, SeverityMappings severityMapping, FSharpChoice`2 exclInclFiles, FSharpList`1 properties, Client`2 client, FSharpList`1 scripts, FSharpList`1 projects, Unit unitVar) in /_//src/FSharp.Analyzers.Cli/Program.fs:line 1095
at Program.main(String[] argv) in /_//src/FSharp.Analyzers.Cli/Program.fs:line 1045
Metadata
Metadata
Assignees
Labels
No labels