提交 e9942c99 编写于 作者: C Charles Stoner

Fix tests

上级 4e82fb1b
......@@ -608,6 +608,10 @@ private static void PartialMethodChecks(SourceOrdinaryMethodSymbol definition, S
checkNullableMethodOverride = false;
diagnostics.Add(ErrorCode.ERR_PartialMethodReturnTypeDifference, implementation.Locations[0]);
}
else if (definition.RefKind != implementation.RefKind)
{
diagnostics.Add(ErrorCode.ERR_PartialMethodRefReturnDifference, implementation.Locations[0]);
}
else if (MemberSignatureComparer.ConsideringTupleNamesCreatesDifference(definition, implementation))
{
diagnostics.Add(ErrorCode.ERR_PartialMethodInconsistentTupleNames, implementation.Locations[0], definition, implementation);
......@@ -619,10 +623,6 @@ private static void PartialMethodChecks(SourceOrdinaryMethodSymbol definition, S
static FormattedSymbol getFormattedSymbol(Symbol symbol) => new FormattedSymbol(symbol, SymbolDisplayFormat.MinimallyQualifiedFormat);
}
if (definition.RefKind != implementation.RefKind)
{
diagnostics.Add(ErrorCode.ERR_PartialMethodRefReturnDifference, implementation.Locations[0]);
}
if (definition.IsStatic != implementation.IsStatic)
{
......
......@@ -3305,6 +3305,7 @@ class C2 : IA, IB
}
[Fact]
[WorkItem(45519, "https://github.com/dotnet/roslyn/issues/45519")]
public void Partial_01()
{
var source =
......@@ -3316,7 +3317,13 @@ public void Partial_01()
static partial void F2(nuint x);
}";
var comp = CreateCompilation(source, parseOptions: TestOptions.Regular9);
comp.VerifyDiagnostics();
comp.VerifyDiagnostics(
// (4,25): error CS8824: Partial method declarations 'void Program.F2(nuint x)' and 'void Program.F2(UIntPtr x)' must have identical parameter types and identical return types.
// static partial void F2(System.UIntPtr x) { }
Diagnostic(ErrorCode.ERR_PartialMethodSignatureDifference, "F2").WithArguments("void Program.F2(nuint x)", "void Program.F2(UIntPtr x)").WithLocation(4, 25),
// (5,25): error CS8824: Partial method declarations 'void Program.F1(IntPtr x)' and 'void Program.F1(nint x)' must have identical parameter types and identical return types.
// static partial void F1(nint x) { }
Diagnostic(ErrorCode.ERR_PartialMethodSignatureDifference, "F1").WithArguments("void Program.F1(IntPtr x)", "void Program.F1(nint x)").WithLocation(5, 25));
}
[Fact]
......
......@@ -2957,9 +2957,9 @@ partial class C
}";
var comp = CreateCompilation(source, parseOptions: TestOptions.RegularWithExtendedPartialMethods);
comp.VerifyDiagnostics(
// (4,35): error CS8142: Both partial method declarations, 'C.M1()' and 'C.M1()', must use the same tuple element names.
// public partial (int x, int y) M1();
Diagnostic(ErrorCode.ERR_PartialMethodInconsistentTupleNames, "M1").WithArguments("C.M1()", "C.M1()").WithLocation(4, 35));
// (5,37): error CS8142: Both partial method declarations, 'C.M1()' and 'C.M1()', must use the same tuple element names.
// public partial (int x1, int y1) M1() => default; // 1
Diagnostic(ErrorCode.ERR_PartialMethodInconsistentTupleNames, "M1").WithArguments("C.M1()", "C.M1()").WithLocation(5, 37));
}
[Fact, WorkItem(44930, "https://github.com/dotnet/roslyn/issues/44930")]
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册