Error Message: System.InvalidOperationException : ref-returning a temp?
Stack Trace:
at Microsoft.CodeAnalysis.ThrowingTraceListener.Fail(String message, String detailMessage) in /_/src/Compilers/Shared/ThrowingTraceListener.cs:line 14
at System.Diagnostics.TraceInternal.Fail(String message, String detailMessage)
at System.Diagnostics.Debug.Fail(String message, String detailMessage)
at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitReturnStatement(BoundReturnStatement boundReturnStatement) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 884
at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatement(BoundStatement statement) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 68
at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatementAndCountInstructions(BoundStatement statement) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 121
at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitSequencePointStatement(BoundSequencePoint node) in /_/src/Compilers/CSharp/Portable/CodeGen/CodeGenerator.cs:line 406
at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatement(BoundStatement statement) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 40
at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatements(ImmutableArray`1 statements) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 798
at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitUninstrumentedBlock(BoundBlock block) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 767
at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitBlock(BoundBlock block) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 674
at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatement(BoundStatement statement) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 32
at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatementList(BoundStatementList list) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 129
at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.EmitStatement(BoundStatement statement) in /_/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs:line 64
at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.GenerateImpl() in /_/src/Compilers/CSharp/Portable/CodeGen/CodeGenerator.cs:line 296
at Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.Generate(Boolean& hasStackalloc) in /_/src/Compilers/CSharp/Portable/CodeGen/CodeGenerator.cs:line 225
at Microsoft.CodeAnalysis.CSharp.MethodCompiler.GenerateMethodBody(PEModuleBuilder moduleBuilder, MethodSymbol method, Int32 methodOrdinal, BoundStatement block, ImmutableArray`1 lambdaDebugInfo, ImmutableArray`1 orderedLambdaRuntime
RudeEdits, ImmutableArray`1 closureDebugInfo, ImmutableArray`1 stateMachineStateDebugInfos, StateMachineTypeSymbol stateMachineTypeOpt, VariableSlotAllocator variableSlotAllocatorOpt, BindingDiagnosticBag diagnostics, DebugDocumentProvi
der debugDocumentProvider, ImportChain importChainOpt, Boolean emittingPdb, ImmutableArray`1 codeCoverageSpans, AsyncForwardEntryPoint entryPointOpt) in /_/src/Compilers/CSharp/Portable/Compiler/MethodCompiler.cs:line 1717
at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethod(MethodSymbol methodSymbol, Int32 methodOrdinal, ProcessedFieldInitializers& processedInitializers, SynthesizedSubmissionFields previousSubmissionFields, TypeCompilationSta
te compilationState) in /_/src/Compilers/CSharp/Portable/Compiler/MethodCompiler.cs:line 1372
at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamedType(NamedTypeSymbol containingType) in /_/src/Compilers/CSharp/Portable/Compiler/MethodCompiler.cs:line 561
at Microsoft.CodeAnalysis.CSharp.MethodCompiler.<>c__DisplayClass25_0.<CompileNamedTypeAsync>b__0() in /_/src/Compilers/CSharp/Portable/Compiler/MethodCompiler.cs:line 446
at Roslyn.Utilities.UICultureUtilities.<>c__DisplayClass0_0.<WithCurrentUICulture>b__0() in /_/src/Compilers/Core/Portable/InternalUtilities/UICultureUtilities.cs:line 32
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
at Microsoft.CodeAnalysis.CSharp.MethodCompiler.WaitForWorkers() in /_/src/Compilers/CSharp/Portable/Compiler/MethodCompiler.cs:line 345
at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethodBodies(CSharpCompilation compilation, PEModuleBuilder moduleBeingBuiltOpt, Boolean emittingPdb, Boolean hasDeclarationErrors, Boolean emitMethodBodies, BindingDiagnosticBag
diagnostics, Predicate`1 filterOpt, CancellationToken cancellationToken) in /_/src/Compilers/CSharp/Portable/Compiler/MethodCompiler.cs:line 160
at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.CompileMethods(CommonPEModuleBuilder moduleBuilder, Boolean emittingPdb, DiagnosticBag diagnostics, Predicate`1 filterOpt, CancellationToken cancellationToken) in /_/src/Compilers/CS
harp/Portable/Compilation/CSharpCompilation.cs:line 3722
at Microsoft.CodeAnalysis.Compilation.Emit(Stream peStream, Stream metadataPEStream, Stream pdbStream, Stream xmlDocumentationStream, Stream win32Resources, IEnumerable`1 manifestResources, EmitOptions options, IMethodSymbol debugEnt
ryPoint, Stream sourceLinkStream, IEnumerable`1 embeddedTexts, RebuildData rebuildData, CompilationTestData testData, CancellationToken cancellationToken) in /_/src/Compilers/Core/Portable/Compilation/Compilation.cs:line 2977
at Microsoft.CodeAnalysis.Compilation.Emit(Stream peStream, Stream pdbStream, Stream xmlDocumentationStream, Stream win32Resources, IEnumerable`1 manifestResources, EmitOptions options, IMethodSymbol debugEntryPoint, Stream sourceLin
kStream, IEnumerable`1 embeddedTexts, Stream metadataPEStream, RebuildData rebuildData, CancellationToken cancellationToken) in /_/src/Compilers/Core/Portable/Compilation/Compilation.cs:line 2918
at Microsoft.CodeAnalysis.Compilation.Emit(Stream peStream, Stream pdbStream, Stream xmlDocumentationStream, Stream win32Resources, IEnumerable`1 manifestResources, EmitOptions options, IMethodSymbol debugEntryPoint, Stream sourceLin
kStream, IEnumerable`1 embeddedTexts, Stream metadataPEStream, CancellationToken cancellationToken) in /_/src/Compilers/Core/Portable/Compilation/Compilation.cs:line 2806
at Microsoft.CodeAnalysis.DiagnosticExtensions.GetEmitDiagnostics[TCompilation](TCompilation c, EmitOptions options, IEnumerable`1 manifestResources) in /_/src/Compilers/Test/Core/Diagnostics/DiagnosticExtensions.cs:line 367
at Microsoft.CodeAnalysis.DiagnosticExtensions.GetEmitDiagnostics[TCompilation](TCompilation c) in /_/src/Compilers/Test/Core/Diagnostics/DiagnosticExtensions.cs:line 379
at Microsoft.CodeAnalysis.CSharp.UnitTests.Semantics.UnsafeEvolutionTests.UnsafeContext_RefAnalysis() in /_/src/Compilers/CSharp/Test/CSharp15/UnsafeEvolutionTests.cs:line 38
at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
Version Used:
main(3d098b3)Steps to Reproduce:
Expected Behavior: Succeeds. I think asserts shouldn't fire even if the code being compiled is "unsafe".
Actual Behavior: Debug.Assert fails.