Skip to content

Commit

Permalink
Add a few missing tests (#69320)
Browse files Browse the repository at this point in the history
  • Loading branch information
tmat authored Aug 2, 2023
1 parent 637a13b commit 41044c4
Showing 1 changed file with 101 additions and 0 deletions.
101 changes: 101 additions & 0 deletions src/EditorFeatures/CSharpTest/EditAndContinue/TopLevelEditingTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2781,6 +2781,35 @@ public void Type_Move_MultiFile()

#region Records

[Fact]
public void Record_Insert()
{
var src1 = "";
var src2 = "record C;";

var edits = GetTopEdits(src1, src2);

edits.VerifyEdits(
"Insert [record C;]@0");

edits.VerifySemantics(
new[] { SemanticEdit(SemanticEditKind.Insert, c => c.GetMember("C")) },
capabilities: EditAndContinueCapabilities.NewTypeDefinition);
}

[Fact]
public void Record_Insert_WithParameters()
{
var src1 = "";
var src2 = "record C(int A);";

var edits = GetTopEdits(src1, src2);

edits.VerifySemantics(
new[] { SemanticEdit(SemanticEditKind.Insert, c => c.GetMember("C")) },
capabilities: EditAndContinueCapabilities.NewTypeDefinition);
}

[Fact]
public void Record_Name_Update()
{
Expand Down Expand Up @@ -18090,6 +18119,78 @@ readonly struct S
});
}

[Fact]
[WorkItem("https://github.com/dotnet/roslyn/issues/69317")]
public void Property_Rename_ShadowingPrimaryParameter()
{
var src1 = @"
class C(int A, int B)
{
public int B { get; init; }

public int F() => B;
}
";
var src2 = @"
class C(int A, int B)
{
public int D { get; init; }

public int F() => B;
}
";
var edits = GetTopEdits(src1, src2);

// TODO: https://github.com/dotnet/roslyn/issues/69317
// Update D getter/setter to use deleted B property

edits.VerifySemantics(
new[]
{
SemanticEdit(SemanticEditKind.Delete, c => c.GetMember("C.get_B"), deletedSymbolContainerProvider: c => c.GetMember("C")),
SemanticEdit(SemanticEditKind.Delete, c => c.GetMember("C.set_B"), deletedSymbolContainerProvider: c => c.GetMember("C")),
SemanticEdit(SemanticEditKind.Insert, c => c.GetMember("C.D")),
},
capabilities: EditAndContinueCapabilities.AddMethodToExistingType | EditAndContinueCapabilities.AddInstanceFieldToExistingType);
}

[Fact]
[WorkItem("https://github.com/dotnet/roslyn/issues/69317")]
[WorkItem("https://github.com/dotnet/roslyn/issues/69216")]
public void Property_Rename_ShadowingPrimaryParameter_WithInitializer()
{
var src1 = @"
class C(int A, int B)
{
public int B { get; init; } = B;

public int F() => B;
}
";
var src2 = @"
class C(int A, int B)
{
public int D { get; init; } = B;

public int F() => B;
}
";
var edits = GetTopEdits(src1, src2);

// TODO: https://github.com/dotnet/roslyn/issues/69317
// Update D getter/setter to use deleted B property

edits.VerifySemantics(
new[]
{
SemanticEdit(SemanticEditKind.Update, c => c.GetPrimaryConstructor("C"), preserveLocalVariables: true),
//SemanticEdit(SemanticEditKind.Delete, c => c.GetMember("C.get_B"), deletedSymbolContainerProvider: c => c.GetMember("C")),
//SemanticEdit(SemanticEditKind.Delete, c => c.GetMember("C.set_B"), deletedSymbolContainerProvider: c => c.GetMember("C")),
//SemanticEdit(SemanticEditKind.Insert, c => c.GetMember("C.D")),
},
capabilities: EditAndContinueCapabilities.AddMethodToExistingType | EditAndContinueCapabilities.AddInstanceFieldToExistingType);
}

#endregion

#region Indexers
Expand Down

0 comments on commit 41044c4

Please sign in to comment.