未验证 提交 87b5fed1 编写于 作者: I Ivan Basov 提交者: GitHub

Editing tests for support nullable in ENC (#36770)

上级 5725782e
......@@ -4083,6 +4083,41 @@ static unsafe void Main(string[] args)
Diagnostic(RudeEditKind.UpdateAroundActiveStatement, "foreach (var a in G(a => a))", CSharpFeaturesResources.foreach_statement));
}
[Fact]
public void ForEach_Update_Nullable()
{
string src1 = @"
class C
{
static void F()
{
var arr = new int?[] { 0 };
foreach (var s in arr)
{
<AS:0>Console.WriteLine(1);</AS:0>
}
}
}
";
string src2 = @"
class C
{
static void F()
{
var arr = new int[] { 0 };
foreach (var s in arr)
{
<AS:0>Console.WriteLine(1);</AS:0>
}
}
}
";
var edits = GetTopEdits(src1, src2);
var active = GetActiveStatements(src1, src2);
edits.VerifyRudeDiagnostics(active);
}
#endregion
#region For Statement
......@@ -8942,6 +8977,64 @@ static void F(object o1, object o2)
#endregion
#region Nullable
[Fact]
public void ChangeLocalNullableToNonNullable()
{
string src1 = @"
class C
{
static void F()
{
<AS:0>string? s = ""a"";</AS:0>
}
}
";
string src2 = @"
class C
{
static void F()
{
<AS:0>string s = ""a"";</AS:0>
}
}
";
var edits = GetTopEdits(src1, src2);
var active = GetActiveStatements(src1, src2);
edits.VerifyRudeDiagnostics(active);
}
[Fact]
public void ChangeLocalNonNullableToNullable()
{
string src1 = @"
class C
{
static void F()
{
<AS:0>string s = ""a"";</AS:0>
}
}
";
string src2 = @"
class C
{
static void F()
{
<AS:0>string? s = ""a"";</AS:0>
}
}
";
var edits = GetTopEdits(src1, src2);
var active = GetActiveStatements(src1, src2);
edits.VerifyRudeDiagnostics(active);
}
#endregion
#region Misc
[Fact]
......
......@@ -2598,6 +2598,61 @@ static void Main(string[] b)
Diagnostic(RudeEditKind.Renamed, "string[] b", FeaturesResources.parameter));
}
[Fact]
public void MethodUpdate_UpdateParameterToNullable()
{
string src1 = @"
class C
{
static void M(string s)
{
}
}";
string src2 = @"
class C
{
static void M(string? s)
{
}
}";
var edits = GetTopEdits(src1, src2);
edits.VerifyEdits(
"Update [string s]@32 -> [string? s]@32");
edits.VerifyRudeDiagnostics(
Diagnostic(RudeEditKind.TypeUpdate, "string? s", FeaturesResources.parameter));
}
[Fact]
public void MethodUpdate_UpdateParameterToNonNullable()
{
string src1 = @"
class C
{
static void M(string? s)
{
}
}";
string src2 = @"
class C
{
static void M(string s)
{
}
}";
var edits = GetTopEdits(src1, src2);
edits.VerifyEdits(
"Update [string? s]@32 -> [string s]@32");
edits.VerifyRudeDiagnostics(
Diagnostic(RudeEditKind.TypeUpdate, "string s", FeaturesResources.parameter));
}
[Fact]
public void MethodUpdate_RenameMethodName()
{
......@@ -6933,6 +6988,20 @@ public void FieldTypeUpdateNullable()
Diagnostic(RudeEditKind.TypeUpdate, "int? left", FeaturesResources.field));
}
[Fact]
public void FieldTypeUpdateNonNullable()
{
var src1 = "class C { int? left; }";
var src2 = "class C { int left; }";
var edits = GetTopEdits(src1, src2);
edits.VerifyEdits("Update [int? left]@10 -> [int left]@10");
edits.VerifyRudeDiagnostics(
Diagnostic(RudeEditKind.TypeUpdate, "int left", FeaturesResources.field));
}
[Fact]
public void EventFieldReorder()
{
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册