You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add .GetEmitDiagnostics(); at the end of the Microsoft.CodeAnalysis.CSharp.UnitTests.Semantics.RefLocalsAndReturnsTests.BadIteratorReturnInRefReturningMethod unit-test and run it.
Observed:
Roslyn.Test.Utilities.dll!Microsoft.CodeAnalysis.ThrowingTraceListener.Fail(string message, string detailMessage) Line 24 C#
System.dll!System.Diagnostics.TraceListener.Fail(string message) Line 181 C#
System.dll!System.Diagnostics.TraceInternal.Fail(string message) Line 225 C#
System.dll!System.Diagnostics.Debug.Assert(bool condition) Line 100 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory.Return(Microsoft.CodeAnalysis.CSharp.BoundExpression expression) Line 468 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.IteratorRewriter.GenerateEnumeratorImplementation() Line 231 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.IteratorRewriter.GenerateMethodImplementations() Line 179 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.StateMachineRewriter.Rewrite() Line 120 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.IteratorRewriter.Rewrite(Microsoft.CodeAnalysis.CSharp.BoundStatement body, Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol method, int methodOrdinal, Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator slotAllocatorOpt, Microsoft.CodeAnalysis.CSharp.TypeCompilationState compilationState, Microsoft.CodeAnalysis.DiagnosticBag diagnostics, out Microsoft.CodeAnalysis.CSharp.IteratorStateMachine stateMachineType) Line 84 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.LowerBodyOrInitializer(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol method, int methodOrdinal, Microsoft.CodeAnalysis.CSharp.BoundStatement body, Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields previousSubmissionFields, Microsoft.CodeAnalysis.CSharp.TypeCompilationState compilationState, bool instrumentForDynamicAnalysis, Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider debugDocumentProvider, ref System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.CodeGen.SourceSpan> dynamicAnalysisSpans, Microsoft.CodeAnalysis.DiagnosticBag diagnostics, ref Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator lazyVariableSlotAllocator, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder<Microsoft.CodeAnalysis.CodeGen.LambdaDebugInfo> lambdaDebugInfoBuilder, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder<Microsoft.CodeAnalysis.CodeGen.ClosureDebugInfo> closureDebugInfoBuilder, out Microsoft.CodeAnalysis.CSharp.StateMachineTypeSymbol stateMachineTypeOpt) Line 1380 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol methodSymbol, int methodOrdinal, ref Microsoft.CodeAnalysis.CSharp.Binder.ProcessedFieldInitializers processedInitializers, Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields previousSubmissionFields, Microsoft.CodeAnalysis.CSharp.TypeCompilationState compilationState) Line 1138 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol containingType) Line 518 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.VisitNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol symbol, Microsoft.CodeAnalysis.CSharp.TypeCompilationState arg) Line 396 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol.Accept<Microsoft.CodeAnalysis.CSharp.TypeCompilationState, object>(Microsoft.CodeAnalysis.CSharp.CSharpSymbolVisitor<Microsoft.CodeAnalysis.CSharp.TypeCompilationState, object> visitor, Microsoft.CodeAnalysis.CSharp.TypeCompilationState argument) Line 572 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamespace(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol symbol) Line 375 C#
Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethodBodies(Microsoft.CodeAnalysis.CSharp.CSharpCompilation compilation, Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder moduleBeingBuiltOpt, bool emittingPdb, bool emitTestCoverageData, bool hasDeclarationErrors, bool emitMethodBodies, Microsoft.CodeAnalysis.DiagnosticBag diagnostics, System.Predicate<Microsoft.CodeAnalysis.CSharp.Symbol> filterOpt, System.Threading.CancellationToken cancellationToken) Line 156 C#
> Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CSharpCompilation.CompileMethods(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder moduleBuilder, bool emittingPdb, bool emitMetadataOnly, bool emitTestCoverageData, Microsoft.CodeAnalysis.DiagnosticBag diagnostics, System.Predicate<Microsoft.CodeAnalysis.Symbols.ISymbolInternal> filterOpt, System.Threading.CancellationToken cancellationToken) Line 2771 C#
Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.Compilation.Emit(System.IO.Stream peStream, System.IO.Stream metadataPEStream, System.IO.Stream pdbStream, System.IO.Stream xmlDocumentationStream, System.IO.Stream win32Resources, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.ResourceDescription> manifestResources, Microsoft.CodeAnalysis.Emit.EmitOptions options, Microsoft.CodeAnalysis.IMethodSymbol debugEntryPoint, System.IO.Stream sourceLinkStream, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.EmbeddedText> embeddedTexts, Microsoft.CodeAnalysis.CodeGen.CompilationTestData testData, System.Threading.CancellationToken cancellationToken) Line 2497 C#
Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.Compilation.Emit(System.IO.Stream peStream, System.IO.Stream pdbStream, System.IO.Stream xmlDocumentationStream, System.IO.Stream win32Resources, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.ResourceDescription> manifestResources, Microsoft.CodeAnalysis.Emit.EmitOptions options, Microsoft.CodeAnalysis.IMethodSymbol debugEntryPoint, System.IO.Stream sourceLinkStream, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.EmbeddedText> embeddedTexts, System.IO.Stream metadataPEStream, System.Threading.CancellationToken cancellationToken) Line 2441 C#
Roslyn.Test.Utilities.dll!Microsoft.CodeAnalysis.DiagnosticExtensions.GetEmitDiagnostics<Microsoft.CodeAnalysis.CSharp.CSharpCompilation>(Microsoft.CodeAnalysis.CSharp.CSharpCompilation c, Microsoft.CodeAnalysis.Emit.EmitOptions options, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.ResourceDescription> manifestResources) Line 376 C#
Roslyn.Test.Utilities.dll!Microsoft.CodeAnalysis.DiagnosticExtensions.GetEmitDiagnostics<Microsoft.CodeAnalysis.CSharp.CSharpCompilation>(Microsoft.CodeAnalysis.CSharp.CSharpCompilation c) Line 388 C#
Microsoft.CodeAnalysis.CSharp.Test.Utilities.dll!Microsoft.CodeAnalysis.CSharp.Test.Utilities.CSharpTestBase.VerifyUsedAssemblyReferences(System.Func<Microsoft.CodeAnalysis.CSharp.CSharpCompilation> createCompilationLambda) Line 1061 C#
Microsoft.CodeAnalysis.CSharp.Test.Utilities.dll!Microsoft.CodeAnalysis.CSharp.Test.Utilities.CSharpTestBase.CreateCompilationCore(Microsoft.CodeAnalysis.CSharp.Test.Utilities.CSharpTestSource source, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.MetadataReference> references, Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions options, Microsoft.CodeAnalysis.CSharp.CSharpParseOptions parseOptions, string assemblyName, string sourceFileName, bool skipUsesIsNullable, Microsoft.CodeAnalysis.CSharp.MessageID? experimentalFeature) Line 1050 C#
Microsoft.CodeAnalysis.CSharp.Test.Utilities.dll!Microsoft.CodeAnalysis.CSharp.Test.Utilities.CSharpTestBase.CreateEmptyCompilation(Microsoft.CodeAnalysis.CSharp.Test.Utilities.CSharpTestSource source, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.MetadataReference> references, Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions options, Microsoft.CodeAnalysis.CSharp.CSharpParseOptions parseOptions, string assemblyName, string sourceFileName, bool skipUsesIsNullable) Line 1008 C#
Microsoft.CodeAnalysis.CSharp.Test.Utilities.dll!Microsoft.CodeAnalysis.CSharp.Test.Utilities.CSharpTestBase.CreateCompilation(Microsoft.CodeAnalysis.CSharp.Test.Utilities.CSharpTestSource source, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.MetadataReference> references, Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions options, Microsoft.CodeAnalysis.CSharp.CSharpParseOptions parseOptions, Roslyn.Test.Utilities.TargetFramework targetFramework, string assemblyName, string sourceFileName, bool skipUsesIsNullable) Line 999 C#
Microsoft.CodeAnalysis.CSharp.Test.Utilities.dll!Microsoft.CodeAnalysis.CSharp.Test.Utilities.CSharpTestBase.CreateCompilationWithMscorlib46(Microsoft.CodeAnalysis.CSharp.Test.Utilities.CSharpTestSource source, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.MetadataReference> references, Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions options, Microsoft.CodeAnalysis.CSharp.CSharpParseOptions parseOptions, string assemblyName, string sourceFileName) Line 904 C#
Microsoft.CodeAnalysis.CSharp.Semantic.UnitTests.dll!Microsoft.CodeAnalysis.CSharp.UnitTests.Semantics.RefLocalsAndReturnsTests.BadIteratorReturnInRefReturningMethod() Line 3468 C#
We probably shouldn't do lowering in this scenario since we have rather serious binding errors:
// (7,28): error CS8089: The body of 'C.ObjEnumerator()' cannot be an iterator block because 'C.ObjEnumerator()' returns by reference
// public ref IEnumerator ObjEnumerator()
Diagnostic(ErrorCode.ERR_BadIteratorReturnRef, "ObjEnumerator").WithArguments("C.ObjEnumerator()").WithLocation(7, 28),
// (12,28): error CS8089: The body of 'C.ObjEnumerable()' cannot be an iterator block because 'C.ObjEnumerable()' returns by reference
// public ref IEnumerable ObjEnumerable()
Diagnostic(ErrorCode.ERR_BadIteratorReturnRef, "ObjEnumerable").WithArguments("C.ObjEnumerable()").WithLocation(12, 28),
// (17,33): error CS8089: The body of 'C.GenEnumerator()' cannot be an iterator block because 'C.GenEnumerator()' returns by reference
// public ref IEnumerator<int> GenEnumerator()
Diagnostic(ErrorCode.ERR_BadIteratorReturnRef, "GenEnumerator").WithArguments("C.GenEnumerator()").WithLocation(17, 33),
// (22,33): error CS8089: The body of 'C.GenEnumerable()' cannot be an iterator block because 'C.GenEnumerable()' returns by reference
// public ref IEnumerable<int> GenEnumerable()
Diagnostic(ErrorCode.ERR_BadIteratorReturnRef, "GenEnumerable").WithArguments("C.GenEnumerable()").WithLocation(22, 33));
The text was updated successfully, but these errors were encountered:
Add
.GetEmitDiagnostics();
at the end of theMicrosoft.CodeAnalysis.CSharp.UnitTests.Semantics.RefLocalsAndReturnsTests.BadIteratorReturnInRefReturningMethod
unit-test and run it.Observed:
We probably shouldn't do lowering in this scenario since we have rather serious binding errors:
The text was updated successfully, but these errors were encountered: