-
-
Notifications
You must be signed in to change notification settings - Fork 754
Closed
Description
Bug description
A stack overflow error occurs in the source generator, preventing compilation.
Stack overflow.
Repeat 905 times:
--------------------------------
at System.Linq.Enumerable+SelectArrayIterator`2[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].ToArray()
at System.Linq.Enumerable.ToArray[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.Collections.Generic.IEnumerable`1<System.__Canon>)
at MessagePack.SourceGenerator.ImmutableEquatableArray`1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]..ctor(System.Collections.Generic.IEnumerable`1<System.__Canon>)
at MessagePack.SourceGenerator.ImmutableEquatableArray.ToImmutableEquatableArray[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.Collections.Generic.IEnumerable`1<System.__Canon>)
at MessagePack.SourceGenerator.CodeAnalysis.GenericTypeParameterInfo..ctor(Microsoft.CodeAnalysis.ITypeParameterSymbol, System.Collections.Immutable.ImmutableStack`1<MessagePack.SourceGenerator.CodeAnalysis.GenericTypeParameterInfo>)
at MessagePack.SourceGenerator.CodeAnalysis.GenericTypeParameterInfo.Create(Microsoft.CodeAnalysis.ITypeParameterSymbol, System.Collections.Immutable.ImmutableStack`1<MessagePack.SourceGenerator.CodeAnalysis.GenericTypeParameterInfo>)
at MessagePack.SourceGenerator.CodeAnalysis.CodeAnalysisUtilities+<>c__DisplayClass9_0.<GetTypeParameters>b__0(Microsoft.CodeAnalysis.ITypeParameterSymbol)
at System.Linq.Enumerable+SelectArrayIterator`2[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].ToArray()
at System.Linq.Enumerable.ToArray[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.Collections.Generic.IEnumerable`1<System.__Canon>)
at System.Collections.Immutable.ImmutableArray.CreateRange[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.Collections.Generic.IEnumerable`1<System.__Canon>)
at System.Collections.Immutable.ImmutableArray.ToImmutableArray[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.Collections.Generic.IEnumerable`1<System.__Canon>)
at MessagePack.SourceGenerator.CodeAnalysis.CodeAnalysisUtilities.GetTypeParameters(Microsoft.CodeAnalysis.ITypeSymbol, System.Collections.Immutable.ImmutableStack`1<MessagePack.SourceGenerator.CodeAnalysis.GenericTypeParameterInfo>)
at MessagePack.SourceGenerator.CodeAnalysis.QualifiedNamedTypeName..ctor(Microsoft.CodeAnalysis.INamedTypeSymbol, System.Collections.Immutable.ImmutableStack`1<MessagePack.SourceGenerator.CodeAnalysis.GenericTypeParameterInfo>)
at MessagePack.SourceGenerator.CodeAnalysis.QualifiedNamedTypeName..ctor(Microsoft.CodeAnalysis.INamedTypeSymbol, System.Collections.Immutable.ImmutableStack`1<MessagePack.SourceGenerator.CodeAnalysis.GenericTypeParameterInfo>)
at MessagePack.SourceGenerator.CodeAnalysis.QualifiedTypeName.Create(Microsoft.CodeAnalysis.ITypeSymbol, System.Collections.Immutable.ImmutableStack`1<MessagePack.SourceGenerator.CodeAnalysis.GenericTypeParameterInfo>)
at MessagePack.SourceGenerator.CodeAnalysis.GenericTypeParameterInfo+<>c__DisplayClass8_0.<.ctor>b__0(Microsoft.CodeAnalysis.ITypeSymbol)
--------------------------------
at System.Linq.Enumerable+SelectArrayIterator`2[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].ToArray()
at System.Linq.Enumerable.ToArray[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.Collections.Generic.IEnumerable`1<System.__Canon>)
at MessagePack.SourceGenerator.ImmutableEquatableArray`1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]..ctor(System.Collections.Generic.IEnumerable`1<System.__Canon>)
at MessagePack.SourceGenerator.ImmutableEquatableArray.ToImmutableEquatableArray[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.Collections.Generic.IEnumerable`1<System.__Canon>)
at MessagePack.SourceGenerator.CodeAnalysis.GenericTypeParameterInfo..ctor(Microsoft.CodeAnalysis.ITypeParameterSymbol, System.Collections.Immutable.ImmutableStack`1<MessagePack.SourceGenerator.CodeAnalysis.GenericTypeParameterInfo>)
at MessagePack.SourceGenerator.CodeAnalysis.GenericTypeParameterInfo.Create(Microsoft.CodeAnalysis.ITypeParameterSymbol, System.Collections.Immutable.ImmutableStack`1<MessagePack.SourceGenerator.CodeAnalysis.GenericTypeParameterInfo>)
at MessagePack.SourceGenerator.CodeAnalysis.CodeAnalysisUtilities+<>c__DisplayClass9_0.<GetTypeParameters>b__0(Microsoft.CodeAnalysis.ITypeParameterSymbol)
at System.Linq.Enumerable+SelectArrayIterator`2[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].ToArray()
at System.Linq.Enumerable.ToArray[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.Collections.Generic.IEnumerable`1<System.__Canon>)
at System.Collections.Immutable.ImmutableArray.CreateRange[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.Collections.Generic.IEnumerable`1<System.__Canon>)
at System.Collections.Immutable.ImmutableArray.ToImmutableArray[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.Collections.Generic.IEnumerable`1<System.__Canon>)
at MessagePack.SourceGenerator.CodeAnalysis.CodeAnalysisUtilities.GetTypeParameters(Microsoft.CodeAnalysis.ITypeSymbol, System.Collections.Immutable.ImmutableStack`1<MessagePack.SourceGenerator.CodeAnalysis.GenericTypeParameterInfo>)
at MessagePack.SourceGenerator.CodeAnalysis.QualifiedNamedTypeName..ctor(Microsoft.CodeAnalysis.INamedTypeSymbol, System.Collections.Immutable.ImmutableStack`1<MessagePack.SourceGenerator.CodeAnalysis.GenericTypeParameterInfo>)
at MessagePack.SourceGenerator.Analyzers.MsgPack00xMessagePackAnalyzer.SymbolStartAction(Microsoft.CodeAnalysis.Diagnostics.SymbolStartAnalysisContext, MessagePack.SourceGenerator.CodeAnalysis.ReferenceSymbols, MessagePack.SourceGenerator.CodeAnalysis.AnalyzerOptions)
at MessagePack.SourceGenerator.Analyzers.MsgPack00xMessagePackAnalyzer+<>c__DisplayClass55_0.<Initialize>b__2(Microsoft.CodeAnalysis.Diagnostics.SymbolStartAnalysisContext)
at Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor+<>c.<ExecuteSymbolStartActions>b__45_0(System.ValueTuple`2<System.Action`1<Microsoft.CodeAnalysis.Diagnostics.SymbolStartAnalysisContext>,Microsoft.CodeAnalysis.Diagnostics.AnalyzerSymbolStartAnalysisContext>)
at Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor.ExecuteAndCatchIfThrows_NoLock[[System.ValueTuple`2[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer, System.Action`1<System.ValueTuple`2<System.__Canon,System.__Canon>>, System.ValueTuple`2<System.__Canon,System.__Canon>, System.Nullable`1<Microsoft.CodeAnalysis.Diagnostics.AnalysisContextInfo>)
at Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor.ExecuteAndCatchIfThrows[[System.ValueTuple`2[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer, System.Action`1<System.ValueTuple`2<System.__Canon,System.__Canon>>, System.ValueTuple`2<System.__Canon,System.__Canon>, System.Nullable`1<Microsoft.CodeAnalysis.Diagnostics.AnalysisContextInfo>)
at Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor.ExecuteSymbolStartActions(Microsoft.CodeAnalysis.ISymbol, Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer, System.Collections.Immutable.ImmutableArray`1<Microsoft.CodeAnalysis.Diagnostics.SymbolStartAnalyzerAction>, Microsoft.CodeAnalysis.Diagnostics.HostSymbolStartAnalysisScope)
at Microsoft.CodeAnalysis.Diagnostics.AnalyzerManager+AnalyzerExecutionContext+<>c__DisplayClass14_0.<GetSymbolAnalysisScopeAsync>g__getSymbolAnalysisScopeCore|2()
at Microsoft.CodeAnalysis.Diagnostics.AnalyzerManager+AnalyzerExecutionContext+<>c__DisplayClass14_0.<GetSymbolAnalysisScopeAsync>b__1()
at System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].InnerInvoke()
at System.Threading.Tasks.Task+<>c.<.cctor>b__272_0(System.Object)
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(System.Threading.Thread, System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef, System.Threading.Thread)
at System.Threading.Tasks.Task.ExecuteEntryUnsafe(System.Threading.Thread)
at System.Threading.Tasks.Task.ExecuteFromThreadPool(System.Threading.Thread)
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading.PortableThreadPool+WorkerThread.WorkerThreadStart()
at System.Threading.Thread.StartCallback()
Repro steps
Compiling with these two classes will produce the bug.
public class ClassA<T> where T : ClassA<T>.ClassB
{
public class ClassB
{
}
}
Expected behavior
Compiles without error. I do not want to serialize these types with MessagePack. They are simply part of my game's code.
Environment Used
- MessagePack version: 3.1.2
- Unity 6000.0.33f1
- Scripting Backend: Mono
- API Compatiblity Level: .NET Standard 2.1
- Fresh project with no user code, except for the code mentioned above.
Metadata
Metadata
Assignees
Labels
No labels