-
Notifications
You must be signed in to change notification settings - Fork 833
Description
During an update of our FCS fork a pair of our tests started failing with a very strange exception deep in the type checker:
Unexpected exception raised in compiler: The input list was empty. Parameter name: list (ArgumentException)
More exception info from the test output
TearDown : JetBrains.TestFramework.Utils.TestLoggerListener+TestWrapperException : 10 exceptions. Unexpected exception raised in compiler: The input list was empty. Parameter name: list (ArgumentException) FSharp.Compiler.DiagnosticsLogger+InternalError: The input list was empty. Parameter name: list (ArgumentException)
C:\Users\eugene.auduchinok\AppData\Local\Temp\JetBrains\Wygipiw\Qirymom\Type member - Virtual - Method 01.fs (11,0--11,7)
Unexpected exception seen in compiler: The input list was empty. Parameter name: list (ArgumentException) FSharp.Compiler.DiagnosticsLogger+InternalError: The input list was empty. Parameter name: list (ArgumentException)
C:\Users\eugene.auduchinok\AppData\Local\Temp\JetBrains\Wygipiw\Qirymom\Type member - Virtual - Method 01.fs (11,0--11,7) Unexpected exception raised in compiler: The input list was empty. Parameter name: list (ArgumentException) FSharp.Compiler.DiagnosticsLogger+InternalError: The input list was empty. Parameter name: list (ArgumentException)
C:\Users\eugene.auduchinok\AppData\Local\Temp\JetBrains\Wygipiw\Qirymom\Type member - Virtual - Method 01.fs (1,0--11,7) Unexpected exception seen in compiler: The input list was empty. Parameter name: list (ArgumentException) FSharp.Compiler.DiagnosticsLogger+InternalError: The input list was empty. Parameter name: list (ArgumentException)
C:\Users\eugene.auduchinok\AppData\Local\Temp\JetBrains\Wygipiw\Qirymom\Type member - Virtual - Method 01.fs (1,0--11,7) Unexpected exception seen in compiler: The input list was empty. Parameter name: list System.ArgumentException: The input list was empty. Parameter name: list
at Microsoft.FSharp.Collections.ListModule.Head[T](FSharpList`1 list) in D:\a\_work\1\s\src\fsharp\FSharp.Core\list.fs:line 120
at FSharp.Compiler.CheckExpressions.TcLookupItemThen(TcFileState cenv, OverallTy overallTy, TcEnv env, UnscopedTyparEnv tpenv, Range mObjExpr, Expr objExpr, TType objExprTy, FSharpList`1 delayed, Item item, Range mItem, FSharpList`1 rest, AfterResolution afterResolution) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckExpressions.fs:line 8925
at FSharp.Compiler.CheckExpressions.TcNonControlFlowExpr(TcEnv env, FSharpFunc`2 f) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckExpressions.fs:line 5397
at [email protected](Unit unitVar0) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckExpressions.fs:line 5071
at FSharp.Compiler.DiagnosticsLogger.DiagnosticsLoggerExtensions.ReraiseIfWatsonable(Exception exn) in C:\Developer\fsharp-rebase\src\Compiler\Facilities\DiagnosticsLogger.fs:line 403
at FSharp.Compiler.DiagnosticsLogger.DiagnosticsLoggerExtensions.DiagnosticsLogger.ErrorRecovery(DiagnosticsLogger x, Exception exn, Range m) in C:\Developer\fsharp-rebase\src\Compiler\Facilities\DiagnosticsLogger.fs:line 457
at FSharp.Compiler.DiagnosticsLogger.errorRecovery(Exception exn, Range m) in C:\Developer\fsharp-rebase\src\Compiler\Facilities\DiagnosticsLogger.fs:line 552
at [email protected](Unit unitVar0) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckExpressions.fs:line 5076
at FSharp.Compiler.DiagnosticsLogger.StackGuard.Guard[T](FSharpFunc`2 f) in C:\Developer\fsharp-rebase\src\Compiler\Facilities\DiagnosticsLogger.fs:line 837
at FSharp.Compiler.CheckExpressions.TcExpr(TcFileState cenv, OverallTy ty, TcEnv env, UnscopedTyparEnv tpenv, SynExpr synExpr) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckExpressions.fs:line 5065
at FSharp.Compiler.CheckExpressions.TcExprThatCantBeCtorBody(TcFileState cenv, OverallTy overallTy, TcEnv env, UnscopedTyparEnv tpenv, SynExpr synExpr) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckExpressions.fs:line 5126
at FSharp.Compiler.CheckExpressions.TcNormalizedBinding@10359-3.Invoke(Unit unitVar0) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckExpressions.fs:line 10386
at FSharp.Compiler.CheckExpressions.TcNormalizedBinding(DeclKind declKind, TcFileState cenv, TcEnv env, UnscopedTyparEnv tpenv, TType overallTy, FSharpOption`1 safeThisValOpt, SafeInitData safeInitInfo, FSharpList`1 enclosingDeclaredTypars, ExplicitTyparInfo explicitTyparInfo, NormalizedBinding bind) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckExpressions.fs:line 10359
at FSharp.Compiler.CheckExpressions.TcNonRecursiveBinding(DeclKind declKind, TcFileState cenv, TcEnv env, UnscopedTyparEnv tpenv, TType ty, SynBinding binding) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckExpressions.fs:line 10475
at [email protected](UnscopedTyparEnv tpenv, SynBinding b) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckExpressions.fs:line 10699
at Microsoft.FSharp.Primitives.Basics.List.mapFold[TState,T,TResult](FSharpFunc`2 f, TState acc, FSharpList`1 xs) in D:\a\_work\1\s\src\fsharp\FSharp.Core\local.fs:line 385
at Microsoft.FSharp.Collections.ListModule.MapFold[T,TState,TResult](FSharpFunc`2 mapping, TState state, FSharpList`1 list) in D:\a\_work\1\s\src\fsharp\FSharp.Core\list.fs:line 84
at FSharp.Compiler.CheckExpressions.TcLetBinding(TcFileState cenv, Boolean isUse, TcEnv env, ContainerInfo containerInfo, DeclKind declKind, UnscopedTyparEnv tpenv, FSharpList`1 synBinds, Range synBindsRange, Range scopem) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckExpressions.fs:line 10699
at FSharp.Compiler.CheckExpressions.TcLetBindings(TcFileState cenv, TcEnv env, ContainerInfo containerInfo, DeclKind declKind, UnscopedTyparEnv tpenv, FSharpList`1 binds, Range bindsm, Range scopem) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckExpressions.fs:line 10842
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElementNonMutRec@4632-1.Invoke(CancellationToken ct) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckDeclarations.fs:line 4681
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElementNonMutRec@4632-14.Invoke(CancellationToken ct)
at FSharp.Compiler.DiagnosticsLogger.DiagnosticsLoggerExtensions.ReraiseIfWatsonable(Exception exn) in C:\Developer\fsharp-rebase\src\Compiler\Facilities\DiagnosticsLogger.fs:line 403
at FSharp.Compiler.DiagnosticsLogger.DiagnosticsLoggerExtensions.DiagnosticsLogger.ErrorRecovery(DiagnosticsLogger x, Exception exn, Range m) in C:\Developer\fsharp-rebase\src\Compiler\Facilities\DiagnosticsLogger.fs:line 457
at FSharp.Compiler.DiagnosticsLogger.errorRecovery(Exception exn, Range m) in C:\Developer\fsharp-rebase\src\Compiler\Facilities\DiagnosticsLogger.fs:line 552
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElementNonMutRec@4632-14.Invoke(CancellationToken ct) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckDeclarations.fs:line 4818
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElementsNonMutRec@4832-1.Invoke(CancellationToken ct)
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElements@4961-5.Invoke(CancellationToken ct)
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElementNonMutRec@4726-11.Invoke(CancellationToken ct)
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElementNonMutRec@4632-14.Invoke(CancellationToken ct)
at FSharp.Compiler.DiagnosticsLogger.DiagnosticsLoggerExtensions.ReraiseIfWatsonable(Exception exn) in C:\Developer\fsharp-rebase\src\Compiler\Facilities\DiagnosticsLogger.fs:line 403
at FSharp.Compiler.DiagnosticsLogger.DiagnosticsLoggerExtensions.DiagnosticsLogger.ErrorRecovery(DiagnosticsLogger x, Exception exn, Range m) in C:\Developer\fsharp-rebase\src\Compiler\Facilities\DiagnosticsLogger.fs:line 457
at FSharp.Compiler.DiagnosticsLogger.errorRecovery(Exception exn, Range m) in C:\Developer\fsharp-rebase\src\Compiler\Facilities\DiagnosticsLogger.fs:line 552
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElementNonMutRec@4632-14.Invoke(CancellationToken ct) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckDeclarations.fs:line 4818
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElementsNonMutRec@4832-1.Invoke(CancellationToken ct)
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElements@4961-5.Invoke(CancellationToken ct)
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElementNonMutRec@4786-13.Invoke(CancellationToken ct)
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElementNonMutRec@4632-14.Invoke(CancellationToken ct)
at FSharp.Compiler.DiagnosticsLogger.DiagnosticsLoggerExtensions.ReraiseIfWatsonable(Exception exn) in C:\Developer\fsharp-rebase\src\Compiler\Facilities\DiagnosticsLogger.fs:line 403
at FSharp.Compiler.DiagnosticsLogger.DiagnosticsLoggerExtensions.DiagnosticsLogger.ErrorRecovery(DiagnosticsLogger x, Exception exn, Range m) in C:\Developer\fsharp-rebase\src\Compiler\Facilities\DiagnosticsLogger.fs:line 457
at FSharp.Compiler.DiagnosticsLogger.errorRecovery(Exception exn, Range m) in C:\Developer\fsharp-rebase\src\Compiler\Facilities\DiagnosticsLogger.fs:line 552
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElementNonMutRec@4632-14.Invoke(CancellationToken ct) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckDeclarations.fs:line 4818
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElementsNonMutRec@4832-1.Invoke(CancellationToken ct)
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElements@4961-5.Invoke(CancellationToken ct)
at [email protected](CancellationToken ct)
at [email protected](CancellationToken ct)
at [email protected](CancellationToken ct) Unexpected exception seen in compiler: The input list was empty. Parameter name: list System.ArgumentException: The input list was empty. Parameter name: list
at Microsoft.FSharp.Collections.ListModule.Head[T](FSharpList`1 list) in D:\a\_work\1\s\src\fsharp\FSharp.Core\list.fs:line 120
at FSharp.Compiler.CheckExpressions.TcLookupItemThen(TcFileState cenv, OverallTy overallTy, TcEnv env, UnscopedTyparEnv tpenv, Range mObjExpr, Expr objExpr, TType objExprTy, FSharpList`1 delayed, Item item, Range mItem, FSharpList`1 rest, AfterResolution afterResolution) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckExpressions.fs:line 8925
at FSharp.Compiler.CheckExpressions.TcNonControlFlowExpr(TcEnv env, FSharpFunc`2 f) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckExpressions.fs:line 5397
at [email protected](Unit unitVar0) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckExpressions.fs:line 5071
at FSharp.Compiler.DiagnosticsLogger.DiagnosticsLoggerExtensions.ReraiseIfWatsonable(Exception exn) in C:\Developer\fsharp-rebase\src\Compiler\Facilities\DiagnosticsLogger.fs:line 403
at FSharp.Compiler.DiagnosticsLogger.DiagnosticsLoggerExtensions.DiagnosticsLogger.ErrorRecovery(DiagnosticsLogger x, Exception exn, Range m) in C:\Developer\fsharp-rebase\src\Compiler\Facilities\DiagnosticsLogger.fs:line 457
at FSharp.Compiler.DiagnosticsLogger.errorRecovery(Exception exn, Range m) in C:\Developer\fsharp-rebase\src\Compiler\Facilities\DiagnosticsLogger.fs:line 552
at [email protected](Unit unitVar0) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckExpressions.fs:line 5076
at FSharp.Compiler.DiagnosticsLogger.StackGuard.Guard[T](FSharpFunc`2 f) in C:\Developer\fsharp-rebase\src\Compiler\Facilities\DiagnosticsLogger.fs:line 837
at FSharp.Compiler.CheckExpressions.TcExpr(TcFileState cenv, OverallTy ty, TcEnv env, UnscopedTyparEnv tpenv, SynExpr synExpr) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckExpressions.fs:line 5065
at FSharp.Compiler.CheckExpressions.TcExprThatCantBeCtorBody(TcFileState cenv, OverallTy overallTy, TcEnv env, UnscopedTyparEnv tpenv, SynExpr synExpr) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckExpressions.fs:line 5126
at FSharp.Compiler.CheckExpressions.TcNormalizedBinding@10359-3.Invoke(Unit unitVar0) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckExpressions.fs:line 10386
at FSharp.Compiler.CheckExpressions.TcNormalizedBinding(DeclKind declKind, TcFileState cenv, TcEnv env, UnscopedTyparEnv tpenv, TType overallTy, FSharpOption`1 safeThisValOpt, SafeInitData safeInitInfo, FSharpList`1 enclosingDeclaredTypars, ExplicitTyparInfo explicitTyparInfo, NormalizedBinding bind) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckExpressions.fs:line 10359
at FSharp.Compiler.CheckExpressions.TcNonRecursiveBinding(DeclKind declKind, TcFileState cenv, TcEnv env, UnscopedTyparEnv tpenv, TType ty, SynBinding binding) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckExpressions.fs:line 10475
at [email protected](UnscopedTyparEnv tpenv, SynBinding b) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckExpressions.fs:line 10699
at Microsoft.FSharp.Primitives.Basics.List.mapFold[TState,T,TResult](FSharpFunc`2 f, TState acc, FSharpList`1 xs) in D:\a\_work\1\s\src\fsharp\FSharp.Core\local.fs:line 385
at Microsoft.FSharp.Collections.ListModule.MapFold[T,TState,TResult](FSharpFunc`2 mapping, TState state, FSharpList`1 list) in D:\a\_work\1\s\src\fsharp\FSharp.Core\list.fs:line 84
at FSharp.Compiler.CheckExpressions.TcLetBinding(TcFileState cenv, Boolean isUse, TcEnv env, ContainerInfo containerInfo, DeclKind declKind, UnscopedTyparEnv tpenv, FSharpList`1 synBinds, Range synBindsRange, Range scopem) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckExpressions.fs:line 10699
at FSharp.Compiler.CheckExpressions.TcLetBindings(TcFileState cenv, TcEnv env, ContainerInfo containerInfo, DeclKind declKind, UnscopedTyparEnv tpenv, FSharpList`1 binds, Range bindsm, Range scopem) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckExpressions.fs:line 10842
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElementNonMutRec@4632-1.Invoke(CancellationToken ct) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckDeclarations.fs:line 4681
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElementNonMutRec@4632-14.Invoke(CancellationToken ct)
at FSharp.Compiler.DiagnosticsLogger.DiagnosticsLoggerExtensions.ReraiseIfWatsonable(Exception exn) in C:\Developer\fsharp-rebase\src\Compiler\Facilities\DiagnosticsLogger.fs:line 403
at FSharp.Compiler.DiagnosticsLogger.DiagnosticsLoggerExtensions.DiagnosticsLogger.ErrorRecovery(DiagnosticsLogger x, Exception exn, Range m) in C:\Developer\fsharp-rebase\src\Compiler\Facilities\DiagnosticsLogger.fs:line 457
at FSharp.Compiler.DiagnosticsLogger.errorRecovery(Exception exn, Range m) in C:\Developer\fsharp-rebase\src\Compiler\Facilities\DiagnosticsLogger.fs:line 552
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElementNonMutRec@4632-14.Invoke(CancellationToken ct) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckDeclarations.fs:line 4818
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElementsNonMutRec@4832-1.Invoke(CancellationToken ct)
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElements@4961-5.Invoke(CancellationToken ct)
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElementNonMutRec@4726-11.Invoke(CancellationToken ct)
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElementNonMutRec@4632-14.Invoke(CancellationToken ct)
at FSharp.Compiler.DiagnosticsLogger.DiagnosticsLoggerExtensions.ReraiseIfWatsonable(Exception exn) in C:\Developer\fsharp-rebase\src\Compiler\Facilities\DiagnosticsLogger.fs:line 403
at FSharp.Compiler.DiagnosticsLogger.DiagnosticsLoggerExtensions.DiagnosticsLogger.ErrorRecovery(DiagnosticsLogger x, Exception exn, Range m) in C:\Developer\fsharp-rebase\src\Compiler\Facilities\DiagnosticsLogger.fs:line 457
at FSharp.Compiler.DiagnosticsLogger.errorRecovery(Exception exn, Range m) in C:\Developer\fsharp-rebase\src\Compiler\Facilities\DiagnosticsLogger.fs:line 552
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElementNonMutRec@4632-14.Invoke(CancellationToken ct) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckDeclarations.fs:line 4818
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElementsNonMutRec@4832-1.Invoke(CancellationToken ct)
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElements@4961-5.Invoke(CancellationToken ct)
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElementNonMutRec@4786-13.Invoke(CancellationToken ct)
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElementNonMutRec@4632-14.Invoke(CancellationToken ct)
at FSharp.Compiler.DiagnosticsLogger.DiagnosticsLoggerExtensions.ReraiseIfWatsonable(Exception exn) in C:\Developer\fsharp-rebase\src\Compiler\Facilities\DiagnosticsLogger.fs:line 403
at FSharp.Compiler.DiagnosticsLogger.DiagnosticsLoggerExtensions.DiagnosticsLogger.ErrorRecovery(DiagnosticsLogger x, Exception exn, Range m) in C:\Developer\fsharp-rebase\src\Compiler\Facilities\DiagnosticsLogger.fs:line 457
at FSharp.Compiler.DiagnosticsLogger.errorRecovery(Exception exn, Range m) in C:\Developer\fsharp-rebase\src\Compiler\Facilities\DiagnosticsLogger.fs:line 552
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElementNonMutRec@4632-14.Invoke(CancellationToken ct) in C:\Developer\fsharp-rebase\src\Compiler\Checking\CheckDeclarations.fs:line 4818
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElementsNonMutRec@4832-1.Invoke(CancellationToken ct)
at FSharp.Compiler.CheckDeclarations.TcModuleOrNamespaceElements@4961-5.Invoke(CancellationToken ct)
at [email protected](CancellationToken ct)
at [email protected](CancellationToken ct)
at [email protected](CancellationToken ct)
at FSharp.Compiler.CodeAnalysis.ParseAndCheckFile.CheckOneFile@2613-7.Invoke(CancellationToken ct) in C:\Developer\fsharp-rebase\src\Compiler\Service\FSharpCheckerResults.fs:line 2616
at FSharp.Compiler.CodeAnalysis.ParseAndCheckFile.CheckOneFile@2603-9.Invoke(CancellationToken ct)
After the initial investigation I've discovered that the tests don't fail if I build FCS in Release configuration instead of Debug. My first thought here is it could probably been something to do with code generation and optimizations? Though, I'd expect more problems with optimizations applied than without them.
The repro steps for this issue are rather complicated but at least they seem very stable for me:
- checkout
net223branch or https://github.com/auduchinok/fsharp - call
./build.cmd -noVisualStudio - build FSharp.Compiler.Service.sln in Rider (or probably using
dotnet build) - checkout
net223-fcsUpdatebranch of https://github.com/JetBrains/resharper-fsharp - call
./gradlew prepareinrider-fsharpdirectory - restore packages in ReSharper.FSharp.sln (e.g. open the solution in Rider or probably using
dotnet restore) - take the previously built FCS dll and put it inside the restored NuGet JetBrains.FSharp.Compiler.Service package directory
- build ReSharper.FSharp solution
- try running the following tests:
[<Test>] member x.``Type member - Virtual - Method 01``() = x.DoNamedTest()
[<Test>] member x.``Type member - Virtual - Method 02``() = x.DoNamedTest()
The tests call ParseAndCheckFileInProject multiple times and at some point it makes the compiler fail with the exceptions from the above.
The SDK used to build FCS is this:
$ dotnet --version
7.0.100-preview.7.22377.5
Metadata
Metadata
Assignees
Labels
Type
Projects
Status