提交 d76c6cab 编写于 作者: D dpen2000

Fix CS7036 and CS1501 errors showing instead of CS0012 when calling methods...

Fix CS7036 and CS1501 errors showing instead of CS0012 when calling methods taking params parameters that

take in or return types defined in unreferenced assemblies. Fixes #5043
上级 9e6cb00a
......@@ -547,6 +547,7 @@ private static bool PreferExpandedFormOverNormalForm(MemberAnalysisResult normal
case MemberResolutionKind.TypeInferenceExtensionInstanceArgument:
case MemberResolutionKind.ConstructedParameterFailedConstraintCheck:
case MemberResolutionKind.NoCorrespondingNamedParameter:
case MemberResolutionKind.UseSiteError:
return true;
}
break;
......
......@@ -1933,6 +1933,51 @@ static void Main()
Diagnostic(ErrorCode.ERR_NoTypeDef, @"c[null, ""A""]").WithArguments("Missing", "Missing, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"));
}
[Fact]
public void OverloadResolutionWithUseSiteErrors_WithParamsArguments_ReturnsUseSiteErrors()
{
var missingSource = @"
public class Missing { }
";
var libSource = @"
public class C
{
public static Missing GetMissing(params int[] args) { return null; }
public static void SetMissing(params Missing[] args) { }
public static Missing GetMissing(string firstArgument, params int[] args) { return null; }
public static void SetMissing(string firstArgument, params Missing[] args) { }
}
";
var testSource = @"
class Test
{
static void Main()
{
C.GetMissing();
C.GetMissing(1, 1);
C.SetMissing();
C.GetMissing(string.Empty);
C.GetMissing(string.Empty, 1, 1);
C.SetMissing(string.Empty);
}
}
";
var missingRef = CreateCompilationWithMscorlib(missingSource, assemblyName: "Missing").EmitToImageReference();
var libRef = CreateCompilationWithMscorlib(libSource, new[] { missingRef }).EmitToImageReference();
CreateCompilationWithMscorlib(testSource, new[] { libRef, missingRef }).VerifyDiagnostics();
var getMissingDiagnostic = Diagnostic(ErrorCode.ERR_NoTypeDef, @"C.GetMissing").WithArguments("Missing", "Missing, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null");
var setMissingDiagnostic = Diagnostic(ErrorCode.ERR_NoTypeDef, @"C.SetMissing").WithArguments("Missing", "Missing, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null");
CreateCompilationWithMscorlib(testSource, new[] { libRef /* and not missingRef */ }).VerifyDiagnostics(
getMissingDiagnostic,
getMissingDiagnostic,
setMissingDiagnostic,
getMissingDiagnostic,
getMissingDiagnostic,
setMissingDiagnostic);
}
[WorkItem(708169, "DevDiv")]
[ClrOnlyFact(ClrOnlyReason.Ilasm)]
public void OverloadResolutionWithUnsupportedMetadata_UnsupportedMetadata_SupportedExists()
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册