未验证 提交 510d40ce 编写于 作者: J Jared Parsons 提交者: GitHub

Merge pull request #24393 from jaredpar/fix-coreref

Move compiler core tests to use netstandard2.0 RTM
......@@ -28,7 +28,7 @@
<MicrosoftCodeAnalysisCSharpWorkspacesVersion>1.0.1</MicrosoftCodeAnalysisCSharpWorkspacesVersion>
<MicrosoftCodeAnalysisEditorFeaturesTextVersion>1.0.1</MicrosoftCodeAnalysisEditorFeaturesTextVersion>
<MicrosoftCodeAnalysisElfieVersion>0.10.6</MicrosoftCodeAnalysisElfieVersion>
<MicrosoftCodeAnalysisTestResourcesProprietaryVersion>2.0.0-pre-20170517</MicrosoftCodeAnalysisTestResourcesProprietaryVersion>
<MicrosoftCodeAnalysisTestResourcesProprietaryVersion>2.0.5</MicrosoftCodeAnalysisTestResourcesProprietaryVersion>
<MicrosoftCodeAnalysisVisualBasicVersion>1.0.1</MicrosoftCodeAnalysisVisualBasicVersion>
<MicrosoftCodeAnalysisVisualBasicWorkspacesVersion>1.0.1</MicrosoftCodeAnalysisVisualBasicWorkspacesVersion>
<MicrosoftCodeAnalysisWorkspacesCommonVersion>1.0.1</MicrosoftCodeAnalysisWorkspacesCommonVersion>
......
......@@ -18,34 +18,6 @@
<RuntimeIdentifier Condition="'$(TargetFramework)' == 'net461' AND '$(RuntimeIdentifier)' == '' AND '$(OS)' == 'Windows_NT'">$(RoslynDesktopRuntimeIdentifier)</RuntimeIdentifier>
</PropertyGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp2.0'">
<Content Include="$(NetStandard20RefPath)\netstandard.dll">
<Link>ref/%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Visible>false</Visible>
</Content>
<Content Include="$(NetStandard20RefPath)\mscorlib.dll">
<Link>ref/%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Visible>false</Visible>
</Content>
<Content Include="$(NetStandard20RefPath)\System.Runtime.dll">
<Link>ref/%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Visible>false</Visible>
</Content>
<Content Include="$(NetStandard20RefPath)\System.Dynamic.Runtime.dll">
<Link>ref/%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Visible>false</Visible>
</Content>
<Content Include="$(MicrosoftCSharpRefPath)\Microsoft.CSharp.dll">
<Link>ref/%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<Visible>false</Visible>
</Content>
</ItemGroup>
<Target Name="Test" DependsOnTargets="Build">
<MakeDir Directories="$(XUnitTestResultsDirectory)" />
......
......@@ -58,9 +58,6 @@
<IntermediateOutputPath>$(BaseIntermediateOutputPath)$(Configuration)</IntermediateOutputPath>
<ArtifactsSymStoreDirectory Condition="'$(DeveloperBuild)' != 'true' and '$(OS)' == 'Windows_NT'">$(BaseOutputPath)$(Configuration)\SymStore\</ArtifactsSymStoreDirectory>
<NetStandard20RefPath>$(NuGetPackageRoot)/netstandard.library/$(NETStandardLibraryFixedVersion)/build/netstandard2.0/ref/</NetStandard20RefPath>
<MicrosoftCSharpRefPath>$(NuGetPackageRoot)/microsoft.csharp/$(MicrosoftCSharpVersion)/ref/netstandard1.0/</MicrosoftCSharpRefPath>
<ToolsetPackagesSemaphore>$(ToolsetPackagesDir)toolsetpackages.semaphore</ToolsetPackagesSemaphore>
<ToolsetCompilerPackageName Condition="'$(MSBuildRuntimeType)' != 'Core'">Microsoft.Net.Compilers</ToolsetCompilerPackageName>
<ToolsetCompilerPackageName Condition="'$(MSBuildRuntimeType)' == 'Core'">Microsoft.NETCore.Compilers</ToolsetCompilerPackageName>
......
......@@ -2525,15 +2525,15 @@ public class P
public void MissingAssemblyResolution1()
{
// c - a -> b
var bRef = CreateStandardCompilation("public class B { }", assemblyName: "B").EmitToImageReference();
var aRef = CreateStandardCompilation("public class A : B { }", new[] { bRef }, assemblyName: "A").EmitToImageReference();
var bRef = CreateCompilationWithMscorlib46("public class B { }", assemblyName: "B").EmitToImageReference();
var aRef = CreateCompilationWithMscorlib46("public class A : B { }", new[] { bRef }, assemblyName: "A").EmitToImageReference();
var resolver = new TestMissingMetadataReferenceResolver(new Dictionary<string, MetadataReference>
{
{ "B", bRef }
});
var c = CreateStandardCompilation("public class C : A { }", new[] { aRef }, TestOptions.ReleaseDll.WithMetadataReferenceResolver(resolver));
var c = CreateCompilationWithMscorlib46("public class C : A { }", new[] { aRef }, TestOptions.ReleaseDll.WithMetadataReferenceResolver(resolver));
c.VerifyEmitDiagnostics();
......@@ -2547,15 +2547,15 @@ public void MissingAssemblyResolution1()
public void MissingAssemblyResolution_Aliases()
{
// c - a -> b with alias X
var bRef = CreateStandardCompilation("public class B { }", assemblyName: "B").EmitToImageReference();
var aRef = CreateStandardCompilation("public class A : B { }", new[] { bRef }, assemblyName: "A").EmitToImageReference();
var bRef = CreateCompilationWithMscorlib46("public class B { }", assemblyName: "B").EmitToImageReference();
var aRef = CreateCompilationWithMscorlib46("public class A : B { }", new[] { bRef }, assemblyName: "A").EmitToImageReference();
var resolver = new TestMissingMetadataReferenceResolver(new Dictionary<string, MetadataReference>
{
{ "B", bRef.WithAliases(ImmutableArray.Create("X")) }
});
var c = CreateStandardCompilation(@"
var c = CreateCompilationWithMscorlib46(@"
extern alias X;
public class C : A
......@@ -2701,12 +2701,12 @@ public void MissingAssemblyResolution_None()
{
// c - a -> d
// - d
var dRef = CreateStandardCompilation("public interface D { }", assemblyName: "D").EmitToImageReference();
var aRef = CreateStandardCompilation("public interface A : D { }", new[] { dRef }, assemblyName: "A").ToMetadataReference();
var dRef = CreateCompilationWithMscorlib46("public interface D { }", assemblyName: "D").EmitToImageReference();
var aRef = CreateCompilationWithMscorlib46("public interface A : D { }", new[] { dRef }, assemblyName: "A").ToMetadataReference();
var resolver = new TestMissingMetadataReferenceResolver(new Dictionary<string, MetadataReference>());
var c = CreateStandardCompilation("public interface C : A { }", new[] { aRef, dRef },
var c = CreateCompilationWithMscorlib46("public interface C : A { }", new[] { aRef, dRef },
TestOptions.ReleaseDll.WithMetadataReferenceResolver(resolver));
c.VerifyDiagnostics();
......@@ -2717,12 +2717,12 @@ public void MissingAssemblyResolution_None()
public void MissingAssemblyResolution_ActualMissing()
{
// c - a -> d
var dRef = CreateStandardCompilation("public interface D { }", assemblyName: "D").EmitToImageReference();
var aRef = CreateStandardCompilation("public interface A : D { }", new[] { dRef }, assemblyName: "A").ToMetadataReference();
var dRef = CreateCompilationWithMscorlib46("public interface D { }", assemblyName: "D").EmitToImageReference();
var aRef = CreateCompilationWithMscorlib46("public interface A : D { }", new[] { dRef }, assemblyName: "A").ToMetadataReference();
var resolver = new TestMissingMetadataReferenceResolver(new Dictionary<string, MetadataReference>());
var c = CreateStandardCompilation("public interface C : A { }", new[] { aRef },
var c = CreateCompilationWithMscorlib46("public interface C : A { }", new[] { aRef },
TestOptions.ReleaseDll.WithMetadataReferenceResolver(resolver));
c.VerifyDiagnostics(
......@@ -2740,17 +2740,17 @@ public void MissingAssemblyResolution_ActualMissing()
public void MissingAssemblyResolution_MissingDueToResolutionMismatch()
{
// c - a -> b
var bRef = CreateStandardCompilation("public interface D { }", assemblyName: "B").EmitToImageReference();
var aRef = CreateStandardCompilation("public interface A : D { }", new[] { bRef }, assemblyName: "A").ToMetadataReference();
var bRef = CreateCompilationWithMscorlib46("public interface D { }", assemblyName: "B").EmitToImageReference();
var aRef = CreateCompilationWithMscorlib46("public interface A : D { }", new[] { bRef }, assemblyName: "A").ToMetadataReference();
var eRef = CreateStandardCompilation("public interface E { }", assemblyName: "E").ToMetadataReference();
var eRef = CreateCompilationWithMscorlib46("public interface E { }", assemblyName: "E").ToMetadataReference();
var resolver = new TestMissingMetadataReferenceResolver(new Dictionary<string, MetadataReference>
{
{ "B, 1.0.0.0", eRef },
});
var c = CreateStandardCompilation(@"public interface C : A { }", new[] { aRef },
var c = CreateCompilationWithMscorlib46(@"public interface C : A { }", new[] { aRef },
TestOptions.ReleaseDll.WithMetadataReferenceResolver(resolver));
c.VerifyDiagnostics(
......@@ -2766,16 +2766,16 @@ public void MissingAssemblyResolution_Multiple()
{
// c - a -> d
// - b -> d
var dRef = CreateStandardCompilation("public interface D { }", assemblyName: "D").EmitToImageReference();
var aRef = CreateStandardCompilation("public interface A : D { }", new[] { dRef }, assemblyName: "A").ToMetadataReference();
var bRef = CreateStandardCompilation("public interface B : D { }", new[] { dRef }, assemblyName: "B").ToMetadataReference();
var dRef = CreateCompilationWithMscorlib46("public interface D { }", assemblyName: "D").EmitToImageReference();
var aRef = CreateCompilationWithMscorlib46("public interface A : D { }", new[] { dRef }, assemblyName: "A").ToMetadataReference();
var bRef = CreateCompilationWithMscorlib46("public interface B : D { }", new[] { dRef }, assemblyName: "B").ToMetadataReference();
var resolver = new TestMissingMetadataReferenceResolver(new Dictionary<string, MetadataReference>
{
{ "D", dRef }
});
var c = CreateStandardCompilation("public interface C : A, B { }", new[] { aRef, bRef },
var c = CreateCompilationWithMscorlib46("public interface C : A, B { }", new[] { aRef, bRef },
TestOptions.ReleaseDll.WithMetadataReferenceResolver(resolver));
c.VerifyEmitDiagnostics();
......@@ -2793,13 +2793,13 @@ public void MissingAssemblyResolution_Modules()
// - module(m) - b
// - module(n) - d
var bRef = CreateStandardCompilation("public interface B { }", assemblyName: "B").EmitToImageReference();
var dRef = CreateStandardCompilation("public interface D { }", assemblyName: "D").EmitToImageReference();
var bRef = CreateCompilationWithMscorlib46("public interface B { }", assemblyName: "B").EmitToImageReference();
var dRef = CreateCompilationWithMscorlib46("public interface D { }", assemblyName: "D").EmitToImageReference();
var mRef = CreateStandardCompilation("public interface M : B { }", new[] { bRef }, options: TestOptions.ReleaseModule.WithModuleName("M.netmodule")).EmitToImageReference();
var nRef = CreateStandardCompilation("public interface N : D { }", new[] { dRef }, options: TestOptions.ReleaseModule.WithModuleName("N.netmodule")).EmitToImageReference();
var mRef = CreateCompilationWithMscorlib46("public interface M : B { }", new[] { bRef }, options: TestOptions.ReleaseModule.WithModuleName("M.netmodule")).EmitToImageReference();
var nRef = CreateCompilationWithMscorlib46("public interface N : D { }", new[] { dRef }, options: TestOptions.ReleaseModule.WithModuleName("N.netmodule")).EmitToImageReference();
var aRef = CreateStandardCompilation("public interface A : D { }", new[] { dRef }, assemblyName: "A").EmitToImageReference();
var aRef = CreateCompilationWithMscorlib46("public interface A : D { }", new[] { dRef }, assemblyName: "A").EmitToImageReference();
var resolver = new TestMissingMetadataReferenceResolver(new Dictionary<string, MetadataReference>
{
......@@ -2807,7 +2807,7 @@ public void MissingAssemblyResolution_Modules()
{ "D", dRef },
});
var c = CreateStandardCompilation("public interface C : A { }", new[] { aRef, mRef, nRef },
var c = CreateCompilationWithMscorlib46("public interface C : A { }", new[] { aRef, mRef, nRef },
TestOptions.ReleaseDll.WithMetadataReferenceResolver(resolver));
c.VerifyEmitDiagnostics();
......@@ -2830,11 +2830,11 @@ public void MissingAssemblyResolution_BindingToForExplicitReference1()
// c - a -> "b,v1"
// - "b,v3"
//
var b1Ref = CreateStandardCompilation(@"[assembly: System.Reflection.AssemblyVersion(""1.0.0.0"")] public class B { }", options: s_signedDll, assemblyName: "B").EmitToImageReference();
var b2Ref = CreateStandardCompilation(@"[assembly: System.Reflection.AssemblyVersion(""2.0.0.0"")] public class B { }", options: s_signedDll, assemblyName: "B").EmitToImageReference();
var b3Ref = CreateStandardCompilation(@"[assembly: System.Reflection.AssemblyVersion(""3.0.0.0"")] public class B { }", options: s_signedDll, assemblyName: "B").EmitToImageReference();
var b1Ref = CreateCompilationWithMscorlib46(@"[assembly: System.Reflection.AssemblyVersion(""1.0.0.0"")] public class B { }", options: s_signedDll, assemblyName: "B").EmitToImageReference();
var b2Ref = CreateCompilationWithMscorlib46(@"[assembly: System.Reflection.AssemblyVersion(""2.0.0.0"")] public class B { }", options: s_signedDll, assemblyName: "B").EmitToImageReference();
var b3Ref = CreateCompilationWithMscorlib46(@"[assembly: System.Reflection.AssemblyVersion(""3.0.0.0"")] public class B { }", options: s_signedDll, assemblyName: "B").EmitToImageReference();
var aRef = CreateStandardCompilation(@"[assembly: System.Reflection.AssemblyVersion(""1.0.0.0"")] public class A : B { }", new[] { b1Ref }, options: s_signedDll, assemblyName: "A").EmitToImageReference();
var aRef = CreateCompilationWithMscorlib46(@"[assembly: System.Reflection.AssemblyVersion(""1.0.0.0"")] public class A : B { }", new[] { b1Ref }, options: s_signedDll, assemblyName: "A").EmitToImageReference();
var resolver = new TestMissingMetadataReferenceResolver(new Dictionary<string, MetadataReference>
{
......@@ -2842,7 +2842,7 @@ public void MissingAssemblyResolution_BindingToForExplicitReference1()
{ "B, 1.0.0.0", b2Ref }
});
var c = CreateStandardCompilation("public class C : A { }", new[] { aRef, b3Ref },
var c = CreateCompilationWithMscorlib46("public class C : A { }", new[] { aRef, b3Ref },
s_signedDll.WithMetadataReferenceResolver(resolver));
c.VerifyEmitDiagnostics(
......
......@@ -4966,7 +4966,7 @@ static void Main()
}
";
var compilation = CreateStandardCompilation(source);
var compilation = CreateCompilationWithMscorlib46(source);
compilation.VerifyDiagnostics(
// (6,31): error CS8179: Predefined type 'System.ValueTuple`2' is not defined or imported
// (short X, string Y) = (Alice: 1, Bob: null);
......
......@@ -4766,7 +4766,7 @@ class C
genericsOptions: SymbolDisplayGenericsOptions.IncludeTypeParameters,
memberOptions: SymbolDisplayMemberOptions.IncludeType,
miscellaneousOptions: SymbolDisplayMiscellaneousOptions.UseSpecialTypes);
var comp = CreateStandardCompilation(text, references: new[] { SystemRuntimeFacadeRef, ValueTupleRef });
var comp = CreateCompilationWithMscorlib46(text, references: new[] { SystemRuntimeFacadeRef, ValueTupleRef });
comp.VerifyDiagnostics();
var symbol = comp.GetMember("C.f");
......
......@@ -1393,7 +1393,7 @@ public class C
}
}
";
var comp = CreateStandardCompilation(source, options: TestOptions.ReleaseDll, assemblyName: "comp");
var comp = CreateCompilationWithMscorlib46(source, options: TestOptions.ReleaseDll, assemblyName: "comp");
comp.VerifyDiagnostics();
CompileAndVerify(comp);
......@@ -1439,7 +1439,7 @@ public class C
}
}
";
var comp = CreateStandardCompilation(source, options: TestOptions.ReleaseDll, assemblyName: "comp");
var comp = CreateCompilationWithMscorlib46(source, options: TestOptions.ReleaseDll, assemblyName: "comp");
comp.VerifyDiagnostics();
var assemblies1 = MetadataTestHelpers.GetSymbolsForReferences(
......
......@@ -502,16 +502,16 @@ public class C
[CLSCompliant(false)]
public class Bad { }
";
var libCompliant = CreateStandardCompilation(libCompliant_cs).EmitToImageReference();
var compCompliant = CreateStandardCompilation(source, new[] { libCompliant }, TestOptions.ReleaseDll);
var libCompliant = CreateCompilationWithMscorlib46(libCompliant_cs).EmitToImageReference();
var compCompliant = CreateCompilationWithMscorlib46(source, new[] { libCompliant }, TestOptions.ReleaseDll);
compCompliant.VerifyDiagnostics(
// (8,23): warning CS3002: Return type of 'C.Method2()' is not CLS-compliant
// public (Bad, Bad) Method2() { throw new Exception(); }
Diagnostic(ErrorCode.WRN_CLS_BadReturnType, "Method2").WithArguments("C.Method2()").WithLocation(8, 23)
);
var libNotCompliant = CreateStandardCompilation(libNotCompliant_cs).EmitToImageReference();
var compNotCompliant = CreateStandardCompilation(source, new[] { libNotCompliant }, TestOptions.ReleaseDll);
var libNotCompliant = CreateCompilationWithMscorlib46(libNotCompliant_cs).EmitToImageReference();
var compNotCompliant = CreateCompilationWithMscorlib46(source, new[] { libNotCompliant }, TestOptions.ReleaseDll);
compNotCompliant.VerifyDiagnostics(
// (8,23): warning CS3002: Return type of 'C.Method2()' is not CLS-compliant
// public (Bad, Bad) Method2() { throw new Exception(); }
......
......@@ -276,7 +276,7 @@ class A
";
// CONSIDER: Roslyn's cascading errors are much uglier than Dev10's.
CreateStandardCompilation(source, parseOptions: TestOptions.Regular).VerifyDiagnostics(
CreateCompilationWithMscorlib46(source, parseOptions: TestOptions.Regular).VerifyDiagnostics(
// (4,11): error CS1031: Type expected
// const delegate void D();
Diagnostic(ErrorCode.ERR_TypeExpected, "delegate").WithLocation(4, 11),
......@@ -344,7 +344,7 @@ class A
";
// CONSIDER: Roslyn's cascading errors are much uglier than Dev10's.
CreateStandardCompilation(Parse(source, options: TestOptions.Regular.WithLanguageVersion(LanguageVersion.CSharp6))).VerifyDiagnostics(
CreateCompilationWithMscorlib46(source, parseOptions: TestOptions.Regular.WithLanguageVersion(LanguageVersion.CSharp6)).VerifyDiagnostics(
// (4,11): error CS1031: Type expected
// const delegate void D();
Diagnostic(ErrorCode.ERR_TypeExpected, "delegate").WithLocation(4, 11),
......
......@@ -1040,7 +1040,7 @@ class C
}";
// Triage decision was made to have this be a parse error as the grammar specifies it as such.
// TODO: vsadov, the error recovery would be much nicer here if we consumed "int", bu tneed to consider other cases.
CreateStandardCompilation(text, parseOptions: TestOptions.Regular).VerifyDiagnostics(
CreateCompilationWithMscorlib46(text, parseOptions: TestOptions.Regular).VerifyDiagnostics(
// (5,11): error CS1001: Identifier expected
// int F<int>() { } // CS0081
Diagnostic(ErrorCode.ERR_IdentifierExpected, "int").WithLocation(5, 11),
......@@ -1091,7 +1091,7 @@ class C
}
}";
// Triage decision was made to have this be a parse error as the grammar specifies it as such.
CreateStandardCompilation(Parse(text, options: TestOptions.Regular.WithLanguageVersion(LanguageVersion.CSharp6))).VerifyDiagnostics(
CreateCompilationWithMscorlib46(text, parseOptions: TestOptions.Regular.WithLanguageVersion(LanguageVersion.CSharp6)).VerifyDiagnostics(
// (5,11): error CS1001: Identifier expected
// int F<int>() { } // CS0081
Diagnostic(ErrorCode.ERR_IdentifierExpected, "int").WithLocation(5, 11),
......@@ -4124,7 +4124,7 @@ static class S
internal static void E<T, U>(this object o) { }
}
";
CreateStandardCompilation(source, references: new[] { SystemCoreRef }).VerifyDiagnostics(
CreateCompilationWithMscorlib46(source).VerifyDiagnostics(
// (7,15): error CS0306: The type 'int*' may not be used as a type argument
// new C<int*>();
Diagnostic(ErrorCode.ERR_BadTypeArgument, "int*").WithArguments("int*"),
......@@ -4180,7 +4180,7 @@ static void M()
COfIntPtr.F<object>();
}
}";
CreateStandardCompilation(source).VerifyDiagnostics(
CreateCompilationWithMscorlib46(source).VerifyDiagnostics(
// (2,7): error CS0306: The type 'int*' may not be used as a type argument
Diagnostic(ErrorCode.ERR_BadTypeArgument, "COfIntPtr").WithArguments("int*").WithLocation(2, 7),
// (3,7): error CS0306: The type 'System.ArgIterator' may not be used as a type argument
......@@ -14430,7 +14430,7 @@ class C
}
}
";
CreateStandardCompilation(text).VerifyDiagnostics(
CreateCompilationWithMscorlib46(text).VerifyDiagnostics(
// (5,5): error CS1599: Method or delegate cannot return type 'System.ArgIterator'
// ArgIterator M(); // 1599
Diagnostic(ErrorCode.ERR_MethodReturnCantBeRefAny, "ArgIterator").WithArguments("System.ArgIterator"),
......@@ -14475,7 +14475,7 @@ class MyClass
MyClass(ref RuntimeArgumentHandle r5) {} // CS1601
}
";
CreateStandardCompilation(text).VerifyDiagnostics(
CreateCompilationWithMscorlib46(text).VerifyDiagnostics(
// (6,23): error CS1601: Cannot make reference to variable of type 'System.TypedReference'
// public void Test1(ref TypedReference t2, RuntimeArgumentHandle r3) // CS1601
Diagnostic(ErrorCode.ERR_MethodArgCantBeRefAny, "ref TypedReference t2").WithArguments("System.TypedReference"),
......
......@@ -2468,7 +2468,7 @@ public static void Main()
}
";
CreateStandardCompilation(text).VerifyDiagnostics(
CreateCompilationWithMscorlib46(text).VerifyDiagnostics(
// (7,26): error CS8124: Tuple must contain at least two elements.
// var e = new ();
Diagnostic(ErrorCode.ERR_TupleTooFewElements, ")").WithLocation(7, 26),
......@@ -2534,7 +2534,7 @@ public static void Main()
}
}
";
CreateStandardCompilation(text, parseOptions: TestOptions.Regular.WithLanguageVersion(LanguageVersion.CSharp6)).VerifyDiagnostics(
CreateCompilationWithMscorlib46(text, parseOptions: TestOptions.Regular.WithLanguageVersion(LanguageVersion.CSharp6)).VerifyDiagnostics(
// (7,25): error CS8059: Feature 'tuples' is not available in C# 6. Please use language version 7.0 or greater.
// var e = new ();
Diagnostic(ErrorCode.ERR_FeatureNotAvailableInVersion6, "()").WithArguments("tuples", "7.0").WithLocation(7, 25),
......@@ -2566,7 +2566,7 @@ public static void Main()
}
}
";
CreateStandardCompilation(text, parseOptions: TestOptions.Regular.WithLanguageVersion(LanguageVersion.CSharp7)).VerifyDiagnostics(
CreateCompilationWithMscorlib46(text, parseOptions: TestOptions.Regular.WithLanguageVersion(LanguageVersion.CSharp7)).VerifyDiagnostics(
// (7,26): error CS8124: Tuple must contain at least two elements.
// var e = new ();
Diagnostic(ErrorCode.ERR_TupleTooFewElements, ")"),
......
......@@ -122,7 +122,7 @@ public static void Sample(bool b, string s)
}
static void M(string s) {}
}";
CreateStandardCompilation(test).VerifyDiagnostics(
CreateCompilationWithMscorlib46(test).VerifyDiagnostics(
// (7,17): error CS1525: Invalid expression term 'throw'
// s = s + throw new NullReferenceException();
Diagnostic(ErrorCode.ERR_InvalidExprTerm, "throw new NullReferenceException()").WithArguments("throw").WithLocation(7, 17),
......
......@@ -99,13 +99,13 @@ private static void CheckForBadShared(List<string> arguments)
}
}
private static void ReferenceNetstandardDllIfCoreClr(List<string> arguments)
private static void ReferenceNetstandardDllIfCoreClr(TempDirectory currentDirectory, List<string> arguments)
{
#if NETCOREAPP2_0
var filePath = Path.Combine(currentDirectory.Path, "netstandard.dll");
File.WriteAllBytes(filePath, TestResources.NetFX.netstandard20.netstandard);
arguments.Add("/nostdlib");
var selfDir = Path.GetDirectoryName(typeof(CompilerServerUnitTests).Assembly.Location);
var arg = "/r:" + Path.Combine(selfDir, "ref", "netstandard.dll");
arguments.Add(arg);
arguments.Add("/r:netstandard.dll");
#endif
}
......@@ -187,7 +187,7 @@ private static (T Result, string Output) UseTextWriter<T>(Encoding encoding, Fun
bool shouldRunOnServer = true)
{
var arguments = new List<string>(argumentsSingle.Split(' '));
ReferenceNetstandardDllIfCoreClr(arguments);
ReferenceNetstandardDllIfCoreClr(currentDirectory, arguments);
CheckForBadShared(arguments);
CreateFiles(currentDirectory, filesInDirectory);
......
......@@ -232,22 +232,22 @@ public static class NetStandard13
public static class NetStandard20
{
private static readonly Lazy<PortableExecutableReference> s_netstandard = new Lazy<PortableExecutableReference>(
() => AssemblyMetadata.CreateFromFile(Path.Combine(AppContext.BaseDirectory, "ref/netstandard.dll")).GetReference(display: "netstandard.dll (netstandard 2.0 ref)"),
() => AssemblyMetadata.CreateFromImage(TestResources.NetFX.netstandard20.netstandard).GetReference(display: "netstandard.dll (netstandard 2.0 ref)"),
LazyThreadSafetyMode.PublicationOnly);
public static PortableExecutableReference NetStandard => s_netstandard.Value;
private static readonly Lazy<PortableExecutableReference> s_mscorlib = new Lazy<PortableExecutableReference>(
() => AssemblyMetadata.CreateFromFile(Path.Combine(AppContext.BaseDirectory, "ref/mscorlib.dll")).GetReference(display: "mscorlib.dll (netstandard 2.0 ref)"),
() => AssemblyMetadata.CreateFromImage(TestResources.NetFX.netstandard20.mscorlib).GetReference(display: "mscorlib.dll (netstandard 2.0 ref)"),
LazyThreadSafetyMode.PublicationOnly);
public static PortableExecutableReference MscorlibRef => s_mscorlib.Value;
private static readonly Lazy<PortableExecutableReference> s_systemRuntime = new Lazy<PortableExecutableReference>(
() => AssemblyMetadata.CreateFromFile(Path.Combine(AppContext.BaseDirectory, "ref/System.Runtime.dll")).GetReference(display: "System.Runtime.dll (netstandard 2.0 ref)"),
() => AssemblyMetadata.CreateFromImage(TestResources.NetFX.netstandard20.System_Runtime).GetReference(display: "System.Runtime.dll (netstandard 2.0 ref)"),
LazyThreadSafetyMode.PublicationOnly);
public static PortableExecutableReference SystemRuntimeRef => s_systemRuntime.Value;
private static readonly Lazy<PortableExecutableReference> s_systemDynamicRuntime = new Lazy<PortableExecutableReference>(
() => AssemblyMetadata.CreateFromFile(Path.Combine(AppContext.BaseDirectory, "ref/System.Dynamic.Runtime.dll")).GetReference(display: "System.Dynamic.Runtime.dll (netstandard 2.0 ref)"),
() => AssemblyMetadata.CreateFromImage(TestResources.NetFX.netstandard20.System_Dynamic_Runtime).GetReference(display: "System.Dynamic.Runtime.dll (netstandard 2.0 ref)"),
LazyThreadSafetyMode.PublicationOnly);
public static PortableExecutableReference SystemDynamicRuntimeRef => s_systemDynamicRuntime.Value;
}
......
......@@ -248,12 +248,12 @@ private static MetadataReference GetOrCreateMetadataReference(ref MetadataRefere
public static MetadataReference DesktopCSharpRef => s_desktopCSharpRef.Value;
private static readonly Lazy<MetadataReference> s_stdCSharpRef = new Lazy<MetadataReference>(
() => AssemblyMetadata.CreateFromFile(Path.Combine(AppContext.BaseDirectory, "ref/Microsoft.CSharp.dll")).GetReference(display: "Microsoft.CSharp.dll (netstandard 1.0 ref)"),
() => AssemblyMetadata.CreateFromImage(TestResources.NetFX.netstandard10.Microsoft_CSharp).GetReference(display: "Microsoft.CSharp.dll (netstandard 1.0 ref)"),
LazyThreadSafetyMode.PublicationOnly);
public static MetadataReference StandardCSharpRef => s_stdCSharpRef.Value;
private static readonly Lazy<MetadataReference> s_systemDynamicRuntimeRef = new Lazy<MetadataReference>(
() => AssemblyMetadata.CreateFromFile(Path.Combine(AppContext.BaseDirectory, "ref/System.Dynamic.Runtime.dll")).GetReference(display: "System.Dynamic.Runtime.dll (netstandard 1.3 ref)"),
() => AssemblyMetadata.CreateFromImage(TestResources.NetFX.netstandard13.System_Dynamic_Runtime).GetReference(display: "System.Dynamic.Runtime.dll (netstandard 1.3 ref)"),
LazyThreadSafetyMode.PublicationOnly);
public static MetadataReference SystemDynamicRuntimeRef => s_systemDynamicRuntimeRef.Value;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册