提交 dcdc9ae6 编写于 作者: T Tomas Matousek

Enc: async/iterator editing regression fix

上级 171c6190
......@@ -7856,6 +7856,76 @@ static async void F()
edits.VerifyRudeDiagnostics(active);
}
[Fact]
public void AsyncMethodEdit_Semantics()
{
string src1 = @"
using System;
using System.Threading.Tasks;
class C
{
static async Task<int> F()
{
Console.WriteLine(1);
return await Task.FromResult(1);
}
}
";
string src2 = @"
using System;
using System.Threading.Tasks;
class C
{
static async Task<int> F()
{
Console.WriteLine(2);
return await Task.FromResult(1);
}
}
";
var edits = GetTopEdits(src1, src2);
var active = GetActiveStatements(src1, src2);
edits.VerifySemanticDiagnostics();
}
[Fact]
public void IteratorMethodEdit_Semantics()
{
string src1 = @"
using System;
using System.Collections.Generic;
class C
{
static IEnumerable<int> F()
{
Console.WriteLine(1);
yield return 1;
}
}
";
string src2 = @"
using System;
using System.Collections.Generic;
class C
{
static IEnumerable<int> F()
{
Console.WriteLine(2);
yield return 2;
}
}
";
var edits = GetTopEdits(src1, src2);
var active = GetActiveStatements(src1, src2);
edits.VerifySemanticDiagnostics();
}
#endregion
#region Misplaced AS
......
......@@ -2312,7 +2312,7 @@ public ConstructorEdit(INamedTypeSymbol oldType)
{
var updatedMember = updatedMembers[updatedMemberIndex];
ReportStateMachineRudeEdits(updatedMember, oldSymbol, diagnostics);
ReportStateMachineRudeEdits(oldModel.Compilation, updatedMember, oldSymbol, diagnostics);
bool newBodyHasLambdas;
ReportLambdaAndClosureRudeEdits(
......@@ -3703,6 +3703,7 @@ private bool AreEquivalentClosureScopes(SyntaxNode oldScopeOpt, SyntaxNode newSc
#region State Machines
private void ReportStateMachineRudeEdits(
Compilation oldCompilation,
UpdatedMemberInfo updatedInfo,
ISymbol oldMember,
List<RudeEditDiagnostic> diagnostics)
......@@ -3719,7 +3720,7 @@ private bool AreEquivalentClosureScopes(SyntaxNode oldScopeOpt, SyntaxNode newSc
// We assume that the attributes, if exist, are well formed.
// If not an error will be reported during EnC delta emit.
if (oldMember.ContainingAssembly.GetTypeByMetadataName(stateMachineAttributeQualifiedName) == null)
if (oldCompilation.GetTypeByMetadataName(stateMachineAttributeQualifiedName) == null)
{
diagnostics.Add(new RudeEditDiagnostic(
RudeEditKind.UpdatingStateMachineMethodMissingAttribute,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册