提交 67a5b653 编写于 作者: C Charles Stoner

Use .NET4.5 for Script tests

上级 9d029add
......@@ -3,12 +3,8 @@
using System;
using System.Collections.Immutable;
using System.Linq;
using Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE;
using Microsoft.CodeAnalysis.CSharp.Symbols;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.CSharp.Test.Utilities;
using Microsoft.CodeAnalysis.CSharp.UnitTests.Emit;
using Microsoft.CodeAnalysis.Text;
using Microsoft.CodeAnalysis.Test.Utilities;
using Roslyn.Test.Utilities;
using Roslyn.Utilities;
......@@ -815,7 +811,9 @@ public void CS1980ERR_DynamicAttributeMissing()
Diagnostic(ErrorCode.ERR_DynamicAttributeMissing, "dynamic").WithArguments("System.Runtime.CompilerServices.DynamicAttribute"));
}
private static readonly string s_noCS1980String = @"
private static string GetNoCS1980String(string typeName)
{
const string noCS1980String = @"
[Attr(typeof(%TYPENAME%))] // No CS1980
public class Gen<T>
{
......@@ -835,9 +833,7 @@ class Attr: System.Attribute
public Attr(object x) {}
}
";
private static string GetNoCS1980String(string typeName)
{
return s_noCS1980String.Replace("%TYPENAME%", typeName);
return noCS1980String.Replace("%TYPENAME%", typeName);
}
[Fact]
......@@ -856,7 +852,7 @@ public void TestNoCS1980WhenNotInContextWhichNeedsDynamicAttribute()
private void TestNoCS1980WhenNotInContextWhichNeedsDynamicAttributeHelper(CSharpParseOptions parseOptions)
{
var source = GetNoCS1980String(typeName: @"dynamic");
var comp = CreateCompilationWithMscorlib(source, parseOptions: parseOptions);
var comp = CreateCompilationWithMscorlib45(source, parseOptions: parseOptions);
comp.VerifyDiagnostics(
// (4,7): error CS1962: The typeof operator cannot be used on the dynamic type
// [Attr(typeof(dynamic))] // No CS1980
......@@ -917,7 +913,7 @@ public class Gen2<T> : X // CS1980
set {}
}
}";
comp = CreateCompilationWithMscorlib(source2, parseOptions: parseOptions);
comp = CreateCompilationWithMscorlib45(source2, parseOptions: parseOptions);
comp.VerifyDiagnostics(
// (21,24): error CS1980: Cannot define a class or member that utilizes 'dynamic' because the compiler required type 'System.Runtime.CompilerServices.DynamicAttribute' cannot be found. Are you missing a reference?
// public class Gen2<T> : X // CS1980
......@@ -955,19 +951,19 @@ public void TestDynamicAttributeForSubmissionField()
private void TestDynamicAttributeForSubmissionFieldHelper(CSharpParseOptions parseOptions)
{
string source = GetNoCS1980String(typeName: @"Gen<dynamic>");
var comp = CreateCompilationWithMscorlib(source, parseOptions: parseOptions);
var comp = CreateCompilationWithMscorlib45(source, parseOptions: parseOptions);
comp.VerifyDiagnostics();
// Dynamic type field
string source2 = @"
dynamic x = 0;";
comp = CreateCompilationWithMscorlibAndSystemCore(source2, parseOptions: parseOptions);
comp = CreateCompilationWithMscorlib45(source2, parseOptions: parseOptions, references: new[] { SystemCoreRef });
comp.VerifyDiagnostics();
var implicitField = comp.ScriptClass.GetMember<FieldSymbol>("x");
DynamicAttributeValidator.ValidateDynamicAttribute(implicitField, comp, expectedDynamicAttribute: true);
// No reference to System.Core, generates CS1980
comp = CreateCompilationWithMscorlib(source2, parseOptions: parseOptions);
comp = CreateCompilationWithMscorlib45(source2, parseOptions: parseOptions);
comp.VerifyDiagnostics(
// (2,1): error CS1980: Cannot define a class or member that utilizes 'dynamic' because the compiler required type 'System.Runtime.CompilerServices.DynamicAttribute' cannot be found. Are you missing a reference?
// dynamic x = 0;
......@@ -977,14 +973,14 @@ private void TestDynamicAttributeForSubmissionFieldHelper(CSharpParseOptions par
// Field type is constructed generic type with dynamic type argument
source2 = source + @"
Gen<dynamic> x = null;";
comp = CreateCompilationWithMscorlibAndSystemCore(source2, parseOptions: parseOptions);
comp = CreateCompilationWithMscorlib45(source2, parseOptions: parseOptions, references: new[] { SystemCoreRef });
comp.VerifyDiagnostics();
implicitField = comp.ScriptClass.GetMember<FieldSymbol>("x");
var expectedTransformsFlags = new bool[] { false, true };
DynamicAttributeValidator.ValidateDynamicAttribute(implicitField, comp, expectedDynamicAttribute: true, expectedTransformFlags: expectedTransformsFlags);
// No reference to System.Core, generates CS1980
comp = CreateCompilationWithMscorlib(source2, parseOptions: parseOptions);
comp = CreateCompilationWithMscorlib45(source2, parseOptions: parseOptions);
comp.VerifyDiagnostics(
// (20,5): error CS1980: Cannot define a class or member that utilizes 'dynamic' because the compiler required type 'System.Runtime.CompilerServices.DynamicAttribute' cannot be found. Are you missing a reference?
// Gen<dynamic> x = null;
......@@ -995,13 +991,13 @@ private void TestDynamicAttributeForSubmissionFieldHelper(CSharpParseOptions par
string aliasDecl = @"using X = Gen<dynamic>; // No CS1980";
source2 = aliasDecl + source + @"
X x = null;";
comp = CreateCompilationWithMscorlibAndSystemCore(source2, parseOptions: parseOptions);
comp = CreateCompilationWithMscorlib45(source2, parseOptions: parseOptions, references: new[] { SystemCoreRef });
comp.VerifyDiagnostics();
implicitField = comp.ScriptClass.GetMember<FieldSymbol>("x");
DynamicAttributeValidator.ValidateDynamicAttribute(implicitField, comp, expectedDynamicAttribute: true, expectedTransformFlags: expectedTransformsFlags);
// No reference to System.Core, generates CS1980
comp = CreateCompilationWithMscorlib(source2, parseOptions: parseOptions);
comp = CreateCompilationWithMscorlib45(source2, parseOptions: parseOptions);
comp.VerifyDiagnostics(
// (20,1): error CS1980: Cannot define a class or member that utilizes 'dynamic' because the compiler required type 'System.Runtime.CompilerServices.DynamicAttribute' cannot be found. Are you missing a reference?
// X x = null;
......@@ -1027,7 +1023,7 @@ private void TestDynamicAttributeForSubmissionGlobalStatementHelper(CSharpParseO
System.Console.WriteLine(typeof(dynamic));
System.Console.WriteLine(typeof(Gen<dynamic>));
System.Console.WriteLine(typeof(X));";
var comp = CreateCompilationWithMscorlib(source2, parseOptions: parseOptions);
var comp = CreateCompilationWithMscorlib45(source2, parseOptions: parseOptions);
comp.VerifyDiagnostics(
// (20,26): error CS1962: The typeof operator cannot be used on the dynamic type
// System.Console.WriteLine(typeof(dynamic));
......
......@@ -7198,9 +7198,10 @@ public class Color
var verifier = CompileAndVerify(script);
verifier.VerifyIL("<<Initialize>>d__0.System.Runtime.CompilerServices.IAsyncStateMachine.MoveNext()",
@"{
// Code size 158 (0x9e)
// Code size 161 (0xa1)
.maxstack 10
.locals init (System.Exception V_0)
.locals init (object V_0,
System.Exception V_1)
.try
{
IL_0000: ldarg.0
......@@ -7239,27 +7240,30 @@ .locals init (System.Exception V_0)
IL_0062: box ""int""
IL_0067: callvirt ""object System.Func<System.Runtime.CompilerServices.CallSite, Color, object, object>.Invoke(System.Runtime.CompilerServices.CallSite, Color, object)""
IL_006c: stfld ""dynamic Script.x""
IL_0071: leave.s IL_008a
IL_0071: ldnull
IL_0072: stloc.0
IL_0073: leave.s IL_008c
}
catch System.Exception
{
IL_0073: stloc.0
IL_0074: ldarg.0
IL_0075: ldc.i4.s -2
IL_0077: stfld ""int Script.<<Initialize>>d__0.<>1__state""
IL_007c: ldarg.0
IL_007d: ldflda ""System.Runtime.CompilerServices.AsyncVoidMethodBuilder Script.<<Initialize>>d__0.<>t__builder""
IL_0082: ldloc.0
IL_0083: call ""void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.SetException(System.Exception)""
IL_0088: leave.s IL_009d
IL_0075: stloc.1
IL_0076: ldarg.0
IL_0077: ldc.i4.s -2
IL_0079: stfld ""int Script.<<Initialize>>d__0.<>1__state""
IL_007e: ldarg.0
IL_007f: ldflda ""System.Runtime.CompilerServices.AsyncTaskMethodBuilder<object> Script.<<Initialize>>d__0.<>t__builder""
IL_0084: ldloc.1
IL_0085: call ""void System.Runtime.CompilerServices.AsyncTaskMethodBuilder<object>.SetException(System.Exception)""
IL_008a: leave.s IL_00a0
}
IL_008a: ldarg.0
IL_008b: ldc.i4.s -2
IL_008d: stfld ""int Script.<<Initialize>>d__0.<>1__state""
IL_0092: ldarg.0
IL_0093: ldflda ""System.Runtime.CompilerServices.AsyncVoidMethodBuilder Script.<<Initialize>>d__0.<>t__builder""
IL_0098: call ""void System.Runtime.CompilerServices.AsyncVoidMethodBuilder.SetResult()""
IL_009d: ret
IL_008c: ldarg.0
IL_008d: ldc.i4.s -2
IL_008f: stfld ""int Script.<<Initialize>>d__0.<>1__state""
IL_0094: ldarg.0
IL_0095: ldflda ""System.Runtime.CompilerServices.AsyncTaskMethodBuilder<object> Script.<<Initialize>>d__0.<>t__builder""
IL_009a: ldloc.0
IL_009b: call ""void System.Runtime.CompilerServices.AsyncTaskMethodBuilder<object>.SetResult(object)""
IL_00a0: ret
}", realIL: true);
}
......
......@@ -20,11 +20,10 @@ public void AnonymousTypes_TopLevelVar()
var tree = SyntaxFactory.ParseSyntaxTree(test, options: TestOptions.Script);
CompileAndVerify(
CSharpCompilation.Create(
assemblyName: "Test",
CreateCompilationWithMscorlib45(
new[] { tree },
options: TestOptions.ReleaseExe.WithScriptClassName("Script"),
references: new[] { MscorlibRef_v4_0_30316_17626, SystemCoreRef },
syntaxTrees: new[] { tree }),
references: new[] { SystemCoreRef }),
expectedOutput: "{ a = 1 }"
);
}
......@@ -40,11 +39,10 @@ public void AnonymousTypes_TopLevel_Object()
var tree = SyntaxFactory.ParseSyntaxTree(test, options: TestOptions.Script);
CompileAndVerify(
CSharpCompilation.Create(
assemblyName: "Test",
CreateCompilationWithMscorlib45(
new[] { tree },
options: TestOptions.ReleaseExe.WithScriptClassName("Script"),
references: new[] { MscorlibRef_v4_0_30316_17626, SystemCoreRef },
syntaxTrees: new[] { tree }),
references: new[] { SystemCoreRef }),
expectedOutput: "{ a = 1 }"
);
}
......@@ -59,11 +57,10 @@ public void AnonymousTypes_TopLevel_NoLocal()
var tree = SyntaxFactory.ParseSyntaxTree(test, options: TestOptions.Script);
CompileAndVerify(
CSharpCompilation.Create(
assemblyName: "Test",
CreateCompilationWithMscorlib45(
new[] { tree },
options: TestOptions.ReleaseExe.WithScriptClassName("Script"),
references: new[] { MscorlibRef_v4_0_30316_17626, SystemCoreRef },
syntaxTrees: new[] { tree }),
references: new[] { SystemCoreRef }),
expectedOutput: "{ a = 1 }"
);
}
......@@ -86,11 +83,10 @@ public void M()
var tree = SyntaxFactory.ParseSyntaxTree(test, options: TestOptions.Script);
CompileAndVerify(
CSharpCompilation.Create(
assemblyName: "Test",
CreateCompilationWithMscorlib45(
new[] { tree },
options: TestOptions.ReleaseExe.WithScriptClassName("Script"),
references: new[] { MscorlibRef_v4_0_30316_17626, SystemCoreRef },
syntaxTrees: new[] { tree }),
references: new[] { SystemCoreRef }),
expectedOutput: "{ a = 1 }"
);
}
......@@ -111,11 +107,9 @@ public void M(object p = new { a = 1 })
";
var tree = SyntaxFactory.ParseSyntaxTree(test, options: TestOptions.Script);
var compilation = CSharpCompilation.Create(
assemblyName: "Test",
options: TestOptions.ReleaseExe.WithScriptClassName("Script"),
references: new[] { MscorlibRef },
syntaxTrees: new[] { tree });
var compilation = CreateCompilationWithMscorlib45(
new[] { tree },
options: TestOptions.ReleaseExe.WithScriptClassName("Script"));
compilation.VerifyDiagnostics(
// (5,30): error CS1736: Default parameter value for 'p' must be a compile-time constant
......@@ -138,11 +132,9 @@ public void M(object p = new { a = 1 })
";
var tree = SyntaxFactory.ParseSyntaxTree(test, options: TestOptions.Script);
var compilation = CSharpCompilation.Create(
assemblyName: "Test",
options: TestOptions.ReleaseExe.WithScriptClassName("Script"),
references: new[] { MscorlibRef },
syntaxTrees: new[] { tree });
var compilation = CreateCompilationWithMscorlib45(
new[] { tree },
options: TestOptions.ReleaseExe.WithScriptClassName("Script"));
compilation.VerifyDiagnostics(
// (4,26): error CS1736: Default parameter value for 'p' must be a compile-time constant
......@@ -171,11 +163,9 @@ public void M()
";
var tree = SyntaxFactory.ParseSyntaxTree(test, options: TestOptions.Script);
var compilation = CSharpCompilation.Create(
assemblyName: "Test",
options: TestOptions.ReleaseExe.WithScriptClassName("Script"),
references: new[] { MscorlibRef },
syntaxTrees: new[] { tree });
var compilation = CreateCompilationWithMscorlib45(
new[] { tree },
options: TestOptions.ReleaseExe.WithScriptClassName("Script"));
compilation.VerifyDiagnostics(
// (9,8): error CS0182: An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type
......@@ -201,11 +191,9 @@ class CLS
";
var tree = SyntaxFactory.ParseSyntaxTree(test, options: TestOptions.Script);
var compilation = CSharpCompilation.Create(
assemblyName: "Test",
options: TestOptions.ReleaseExe.WithScriptClassName("Script"),
references: new[] { MscorlibRef },
syntaxTrees: new[] { tree });
var compilation = CreateCompilationWithMscorlib45(
new[] { tree },
options: TestOptions.ReleaseExe.WithScriptClassName("Script"));
compilation.VerifyDiagnostics(
// (9,8): error CS0836: Cannot use anonymous type in a constant expression
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using Microsoft.CodeAnalysis.CSharp.Symbols;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.CSharp.Test.Utilities;
using Microsoft.CodeAnalysis.Test.Utilities;
using Roslyn.Test.Utilities;
......@@ -121,7 +119,7 @@ public class C
}
";
var compilation = CreateCompilationWithMscorlib(
var compilation = CreateCompilationWithMscorlib45(
new[]
{
Parse(csx, options: TestOptions.Script),
......@@ -768,7 +766,7 @@ class C
}
";
var compilation = CreateCompilationWithMscorlib(
var compilation = CreateCompilationWithMscorlib45(
new[]
{
SyntaxFactory.ParseSyntaxTree(csx, options: TestOptions.Script),
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using Microsoft.CodeAnalysis.CSharp.Symbols;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.CSharp.Test.Utilities;
using Microsoft.CodeAnalysis.Text;
using Roslyn.Test.Utilities;
using Xunit;
......@@ -50,7 +48,7 @@ public void ImplicitlyTypedVariableAssignedArrayInitializer()
string text = @"
var array = { 1, 2 };
";
CreateCompilationWithMscorlib(text, parseOptions: TestOptions.Script).VerifyDiagnostics(
CreateCompilationWithMscorlib45(text, parseOptions: TestOptions.Script).VerifyDiagnostics(
// (2,5): error CS0820: Cannot initialize an implicitly-typed variable with an array initializer
// var array = { 1, 2 };
Diagnostic(ErrorCode.ERR_ImplicitlyTypedVariableAssignedArrayInitializer, "array = { 1, 2 }"));
......
......@@ -23,7 +23,7 @@ public void ThisIndexerAccessInScript()
string test = @"
this[1]
";
var compilation = CreateCompilationWithMscorlib(test, parseOptions: TestOptions.Interactive);
var compilation = CreateCompilationWithMscorlib45(test, parseOptions: TestOptions.Interactive);
var tree = compilation.SyntaxTrees.Single();
var model = compilation.GetSemanticModel(tree);
......@@ -53,7 +53,7 @@ public void MainInScript2()
var tree = SyntaxFactory.ParseSyntaxTree(text, options: TestOptions.Script);
var compilation = CreateCompilationWithMscorlib(tree, options: TestOptions.ReleaseExe.WithScriptClassName("Script"));
var compilation = CreateCompilationWithMscorlib45(new[] { tree }, options: TestOptions.ReleaseExe.WithScriptClassName("Script"));
compilation.VerifyDiagnostics(
// (1,13): warning CS7022: The entry point of the program is global script code; ignoring 'Main()' entry point.
......@@ -76,7 +76,7 @@ public void MainInScript1()
var tree = SyntaxFactory.ParseSyntaxTree(text, options: TestOptions.Script);
var compilation = CreateCompilationWithMscorlib(tree, options: TestOptions.ReleaseExe.WithScriptClassName("Script"));
var compilation = CreateCompilationWithMscorlib45(new[] { tree }, options: TestOptions.ReleaseExe.WithScriptClassName("Script"));
compilation.VerifyDiagnostics(
// (1,13): warning CS7022: The entry point of the program is global script code; ignoring 'Main()' entry point.
......@@ -230,10 +230,9 @@ enum F { }
";
var tree = SyntaxFactory.ParseSyntaxTree(test, options: TestOptions.Script);
var compilation = CSharpCompilation.Create(
assemblyName: "Test",
options: TestOptions.ReleaseExe.WithScriptClassName("Script"),
syntaxTrees: new[] { tree });
var compilation = CreateCompilationWithMscorlib45(
new[] { tree },
options: TestOptions.ReleaseExe.WithScriptClassName("Script"));
var global = compilation.GlobalNamespace;
ImmutableArray<NamedTypeSymbol> members;
......@@ -273,11 +272,9 @@ public void UsingStaticClass()
";
var tree = SyntaxFactory.ParseSyntaxTree(test, options: TestOptions.Script.WithLanguageVersion(LanguageVersion.CSharp6));
var compilation = CSharpCompilation.Create(
assemblyName: "Test",
options: TestOptions.ReleaseExe.WithScriptClassName("Script"),
syntaxTrees: new[] { tree },
references: new[] { MscorlibRef });
var compilation = CreateCompilationWithMscorlib45(
new[] { tree },
options: TestOptions.ReleaseExe.WithScriptClassName("Script"));
var expr = (((tree.
GetCompilationUnitRoot() as CompilationUnitSyntax).
......@@ -383,7 +380,7 @@ public void CheckedDecimalAddition()
decimal d = checked(2M + 1M);
";
var compilation = CreateCompilationWithMscorlib(Parse(source, options: TestOptions.Script));
var compilation = CreateCompilationWithMscorlib45(new[] { Parse(source, options: TestOptions.Script) });
compilation.VerifyDiagnostics();
}
......@@ -396,7 +393,7 @@ public void CheckedEnumAddition()
FileAccess fa = checked(FileAccess.Read + 1);
";
var compilation = CreateCompilationWithMscorlib(Parse(source, options: TestOptions.Script));
var compilation = CreateCompilationWithMscorlib45(new[] { Parse(source, options: TestOptions.Script) });
compilation.VerifyDiagnostics();
}
......@@ -408,7 +405,7 @@ public void DelegateAddition()
System.Action a = null;
a += null;
";
var compilation = CreateCompilationWithMscorlib(Parse(source, options: TestOptions.Script));
var compilation = CreateCompilationWithMscorlib45(new[] { Parse(source, options: TestOptions.Script) });
compilation.VerifyDiagnostics();
}
......
......@@ -1354,12 +1354,8 @@ void foo()
this.foo();
}
}";
var comp = CSharpCompilation.Create(
"Test",
new[] { SyntaxFactory.ParseSyntaxTree(text, options: TestOptions.Script) },
new[] { MscorlibRef });
var comp = CreateCompilationWithMscorlib45(
new[] { SyntaxFactory.ParseSyntaxTree(text, options: TestOptions.Script) });
comp.VerifyDiagnostics(
// (4,9): error CS0027: Keyword 'this' is not available in the current context
Diagnostic(ErrorCode.ERR_ThisInBadContext, "this"),
......@@ -10681,7 +10677,7 @@ class C
[Fact]
public void CS0670ERR_FieldCantHaveVoidType_Var()
{
CreateCompilationWithMscorlib(@"
CreateCompilationWithMscorlib45(@"
var x = default(void);
", parseOptions: TestOptions.Script).VerifyDiagnostics(
// (2,17): error CS1547: Keyword 'void' cannot be used in this context
......@@ -10835,7 +10831,7 @@ static void N(object o)
[Fact]
public void CS0723ERR_VarDeclIsStaticClass_Fields()
{
CreateCompilationWithMscorlib(@"
CreateCompilationWithMscorlib45(@"
static class SC {}
var sc2 = new SC();
......@@ -11065,7 +11061,7 @@ public static void Main()
[Fact]
public void CS0815ERR_ImplicitlyTypedVariableAssignedBadValue_Field()
{
CreateCompilationWithMscorlib(@"
CreateCompilationWithMscorlib45(@"
static void M() {}
var m = M;
......@@ -11115,7 +11111,7 @@ public static int Main()
[Fact]
public void CS0818ERR_ImplicitlyTypedVariableWithNoInitializer_Fields()
{
CreateCompilationWithMscorlib(@"
CreateCompilationWithMscorlib45(@"
var a; // CS0818
", parseOptions: TestOptions.Script).VerifyDiagnostics(
// (1,5): error CS0818: Implicitly-typed variables must be initialized
......@@ -11150,7 +11146,7 @@ public static int Main()
[Fact]
public void CS0819ERR_ImplicitlyTypedVariableMultipleDeclarator_Fields()
{
CreateCompilationWithMscorlib(@"
CreateCompilationWithMscorlib45(@"
var foo = 4, bar = 4.5;
", parseOptions: TestOptions.Script).VerifyDiagnostics(
// (2,1): error CS0819: Implicitly-typed fields cannot have multiple declarators
......@@ -11182,7 +11178,7 @@ public static int Main()
[Fact]
public void CS0820ERR_ImplicitlyTypedVariableAssignedArrayInitializer_Fields()
{
CreateCompilationWithMscorlib(@"
CreateCompilationWithMscorlib45(@"
var y = { 1, 2, 3 };
", parseOptions: TestOptions.Script).VerifyDiagnostics(
// (1,5): error CS0820: Cannot initialize an implicitly-typed variable with an array initializer
......@@ -11247,7 +11243,7 @@ public static void Main()
[Fact]
public void CS0822ERR_ImplicitlyTypedVariableCannotBeConst_Fields()
{
CreateCompilationWithMscorlib(@"
CreateCompilationWithMscorlib45(@"
const var x = 0; // CS0822.cs
", parseOptions: TestOptions.Script).VerifyDiagnostics(
// (2,7): error CS0822: Implicitly-typed variables cannot be constant
......@@ -11257,20 +11253,20 @@ public void CS0822ERR_ImplicitlyTypedVariableCannotBeConst_Fields()
[Fact]
public void CS0825ERR_ImplicitlyTypedVariableCannotBeUsedAsTheTypeOfAParameter_Fields()
{
CreateCompilationWithMscorlib(@"
CreateCompilationWithMscorlib45(@"
void foo(var arg) { }
var foo(int arg) { return 2; }
", parseOptions: TestOptions.Script).VerifyDiagnostics(
// (1,10): error CS0825: The contextual keyword 'var' may only appear within a local variable declaration or in script code
// (2,1): error CS0825: The contextual keyword 'var' may only appear within a local variable declaration or in script code
Diagnostic(ErrorCode.ERR_TypeVarNotFound, "var"),
// (2,1): error CS0825: The contextual keyword 'var' may only appear within a local variable declaration or in script code
Diagnostic(ErrorCode.ERR_TypeVarNotFound, "var"));
}
[Fact]
public void CS0825ERR_ImplicitlyTypedVariableCannotBeUsedAsTheTypeOfAParameter_Fields2()
{
CreateCompilationWithMscorlib(@"
CreateCompilationWithMscorlib45(@"
T foo<T>() { return default(T); }
foo<var>();
", parseOptions: TestOptions.Script).VerifyDiagnostics(
......
......@@ -2126,7 +2126,7 @@ public void SwitchFallOut_Script()
case 2:
Console.WriteLine(2);
}";
var compilation = CreateCompilationWithMscorlib(source, references: new[] { SystemCoreRef }, parseOptions: TestOptions.Script);
var compilation = CreateCompilationWithMscorlib45(source, references: new[] { SystemCoreRef }, parseOptions: TestOptions.Script);
compilation.VerifyDiagnostics(
// (4,5): error CS0163: Control cannot fall through from one case label ('default:') to another
// default:
......
......@@ -7592,7 +7592,7 @@ public void StackAllocNotExpression_GlobalDeclaration()
var text = @"
unsafe int* p = stackalloc int[1];
";
CreateCompilationWithMscorlib(text, options: TestOptions.UnsafeReleaseDll, parseOptions: TestOptions.Script).VerifyDiagnostics(
CreateCompilationWithMscorlib45(text, options: TestOptions.UnsafeReleaseDll, parseOptions: TestOptions.Script).VerifyDiagnostics(
// (4,14): error CS1525: Invalid expression term 'stackalloc'
// int* p = stackalloc int[1];
Diagnostic(ErrorCode.ERR_InvalidExprTerm, "stackalloc").WithArguments("stackalloc"));
......
......@@ -10,13 +10,10 @@
using System.Reflection.PortableExecutable;
using System.Text;
using System.Threading;
using System.Xml.Linq;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Symbols;
using Microsoft.CodeAnalysis.CSharp.Test.Utilities;
using Microsoft.CodeAnalysis.Emit;
using Microsoft.CodeAnalysis.Test.Utilities;
using Microsoft.CodeAnalysis.Text;
using Roslyn.Test.Utilities;
using Roslyn.Utilities;
using Xunit;
......@@ -1345,7 +1342,7 @@ class A
public void GetEntryPoint_Script()
{
var source = @"System.Console.WriteLine(1);";
var compilation = CreateCompilationWithMscorlib(source, options: TestOptions.ReleaseExe, parseOptions: TestOptions.Script);
var compilation = CreateCompilationWithMscorlib45(source, options: TestOptions.ReleaseExe, parseOptions: TestOptions.Script);
compilation.VerifyDiagnostics();
var scriptMethod = compilation.GetMember<MethodSymbol>("Script.<Main>");
......@@ -1366,7 +1363,7 @@ class A
static void Main() { }
}
";
var compilation = CreateCompilationWithMscorlib(source, parseOptions: TestOptions.Script);
var compilation = CreateCompilationWithMscorlib45(source, parseOptions: TestOptions.Script);
compilation.VerifyDiagnostics(
// (4,17): warning CS7022: The entry point of the program is global script code; ignoring 'A.Main()' entry point.
// static void Main() { }
......
......@@ -34,7 +34,6 @@ void Foo()
Diagnostic(ErrorCode.HDN_UnusedUsingDirective, "using System;"));
}
[WorkItem(865627, "DevDiv")]
[Fact]
public void TestUnusedExtensionMarksImportsAsUsed()
......@@ -69,7 +68,6 @@ public static void Method1(this Class1 arg0, string arg1)
}";
var classLib2 = CreateCompilationWithMscorlib(text: class2Source, assemblyName: "ClassLibrary2", references: new[] { SystemRef, SystemCoreRef, classLib1.ToMetadataReference() });
string consoleApplicationSource = @"using ClassLibrary2;
using ClassLibrary1;
......@@ -141,7 +139,6 @@ static void Main(string[] args)
Diagnostic(ErrorCode.HDN_UnusedUsingDirective, "using System.Threading.Tasks;")
);
comp = comp.WithReferences(comp.References.Concat(SystemCoreRef));
comp.VerifyDiagnostics(
// (2,1): info CS8019: Unnecessary using directive.
......@@ -372,7 +369,7 @@ public void UnusedUsingInteractive()
public void UnusedUsingScript()
{
var tree = Parse("using System;", options: TestOptions.Script);
var comp = CreateCompilationWithMscorlib(tree);
var comp = CreateCompilationWithMscorlib45(new[] { tree });
comp.VerifyDiagnostics(
// (2,1): info CS8019: Unnecessary using directive.
......
......@@ -10,38 +10,41 @@ namespace Microsoft.CodeAnalysis.CSharp.UnitTests
public class LoadDirectiveTests : CSharpTestBase
{
[Fact]
void EmptyFile()
public void EmptyFile()
{
var code = "#load \"\"";
var compilation = CreateCompilation(code);
var options = TestOptions.DebugDll.WithSourceReferenceResolver(TestSourceReferenceResolver.Default);
var compilation = CreateCompilationWithMscorlib45(code, options: options, parseOptions: TestOptions.Interactive);
Assert.Single(compilation.SyntaxTrees);
compilation.GetDiagnostics().Verify(
compilation.VerifyDiagnostics(
// error CS1504: Source file '' could not be opened -- Could not find file.
Diagnostic(ErrorCode.ERR_NoSourceFile, "\"\"").WithArguments("", CSharpResources.CouldNotFindFile).WithLocation(1, 7));
}
[Fact]
void MissingFile()
public void MissingFile()
{
var code = "#load \"missing\"";
var compilation = CreateCompilation(code);
var options = TestOptions.DebugDll.WithSourceReferenceResolver(TestSourceReferenceResolver.Default);
var compilation = CreateCompilationWithMscorlib45(code, options: options, parseOptions: TestOptions.Interactive);
Assert.Single(compilation.SyntaxTrees);
compilation.GetDiagnostics().Verify(
compilation.VerifyDiagnostics(
// error CS1504: Source file 'missing' could not be opened -- Could not find file.
Diagnostic(ErrorCode.ERR_NoSourceFile, "\"missing\"").WithArguments("missing", CSharpResources.CouldNotFindFile).WithLocation(1, 7));
}
[Fact]
void FileWithErrors()
public void FileWithErrors()
{
var code = "#load \"a.csx\"";
var resolver = CreateResolver(
Script("a.csx", @"
#load ""b.csx""
asdf();"));
var compilation = CreateCompilation(code, resolver);
var options = TestOptions.DebugDll.WithSourceReferenceResolver(resolver);
var compilation = CreateCompilationWithMscorlib45(code, options: options, parseOptions: TestOptions.Script);
Assert.Equal(2, compilation.SyntaxTrees.Length);
compilation.GetParseDiagnostics().Verify(
......@@ -58,27 +61,18 @@ void FileWithErrors()
}
[Fact]
void NoSourceReferenceResolver()
public void NoSourceReferenceResolver()
{
var code = "#load \"test\"";
var compilation = CreateCompilationWithMscorlib(code, parseOptions: TestOptions.Script);
var compilation = CreateCompilationWithMscorlib45(code, parseOptions: TestOptions.Script);
Assert.Single(compilation.SyntaxTrees);
compilation.GetDiagnostics().Verify(
compilation.VerifyDiagnostics(
// (1,1): error CS8099: Source file references are not supported.
// #load "test"
Diagnostic(ErrorCode.ERR_SourceFileReferencesNotSupported, @"#load ""test""").WithLocation(1, 1));
}
private static CSharpCompilation CreateCompilation(string code, SourceReferenceResolver sourceReferenceResolver = null)
{
var options = new CSharpCompilationOptions(
OutputKind.DynamicallyLinkedLibrary,
sourceReferenceResolver: sourceReferenceResolver ?? TestSourceReferenceResolver.Default);
var parseOptions = new CSharpParseOptions(kind: SourceCodeKind.Interactive);
return CreateCompilationWithMscorlib(code, options: options, parseOptions: parseOptions);
}
private static SourceReferenceResolver CreateResolver(params KeyValuePair<string, string>[] scripts)
{
var sources = new Dictionary<string, string>();
......
......@@ -867,7 +867,7 @@ public void DuplicateAssemblyReferences_EquivalentPath()
t2 = Parse($"#r \"{p3}\"", options: TestOptions.Script),
t3 = Parse("#r \"Lib\"", options: TestOptions.Script),
},
references: new MetadataReference[] { MscorlibRef, r1, r2 },
references: new MetadataReference[] { MscorlibRef_v4_0_30316_17626, r1, r2 },
options: TestOptions.ReleaseDll.WithMetadataReferenceResolver(
new TestMetadataReferenceResolver(
assemblyNames: new Dictionary<string, PortableExecutableReference> { { "Lib", r3 } },
......@@ -879,7 +879,7 @@ public void DuplicateAssemblyReferences_EquivalentPath()
var refs = compilation.ExternalReferences;
Assert.Equal(3, refs.Length);
Assert.Equal(MscorlibRef, refs[0]);
Assert.Equal(MscorlibRef_v4_0_30316_17626, refs[0]);
Assert.Equal(r1, refs[1]);
Assert.Equal(r2, refs[2]);
......
......@@ -2684,9 +2684,8 @@ public void CompilationWithReferenceDirectives()
", options: TestOptions.Script)
};
var compilation = CSharpCompilation.Create("foo",
syntaxTrees: trees,
references: new[] { MscorlibRef },
var compilation = CreateCompilationWithMscorlib45(
trees,
options: TestOptions.ReleaseDll.WithMetadataReferenceResolver(new Resolver(data, core, system)));
compilation.VerifyDiagnostics();
......@@ -2721,9 +2720,8 @@ public void CompilationWithReferenceDirectives_Errors()
")
};
var compilation = CSharpCompilation.Create("foo",
syntaxTrees: trees,
references: new[] { MscorlibRef },
var compilation = CreateCompilationWithMscorlib45(
trees,
options: TestOptions.ReleaseDll.WithMetadataReferenceResolver(new Resolver(data, core, system)));
compilation.VerifyDiagnostics(
......@@ -2768,11 +2766,8 @@ public void MetadataReferenceProvider()
#r """ + csInterfaces01 + @"""
class C : Metadata.ICSPropImpl { }";
var compilation = CSharpCompilation.Create("foo",
syntaxTrees: new[]
{
Parse(source, options: TestOptions.Script)
},
var compilation = CreateCompilationWithMscorlib45(
new[] { Parse(source, options: TestOptions.Script) },
options: TestOptions.ReleaseDll.WithMetadataReferenceResolver(new DummyReferenceResolver(csClasses01)));
compilation.VerifyDiagnostics();
......@@ -2781,10 +2776,9 @@ class C : Metadata.ICSPropImpl { }";
[Fact]
public void CompilationWithReferenceDirective_NoResolver()
{
var compilation = CSharpCompilation.Create("foo",
var compilation = CreateCompilationWithMscorlib45(
new[] { SyntaxFactory.ParseSyntaxTree(@"#r ""bar""", TestOptions.Script, "a.csx", Encoding.UTF8) },
new[] { MscorlibRef },
TestOptions.ReleaseDll.WithMetadataReferenceResolver(null));
options: TestOptions.ReleaseDll.WithMetadataReferenceResolver(null));
compilation.VerifyDiagnostics(
// a.csx(1,1): error CS7099: Metadata references not supported.
......@@ -2809,11 +2803,9 @@ class C
")
};
var compilation = CSharpCompilation.Create(
"foo",
options: TestOptions.ReleaseDll.WithUsings(ImmutableArray.Create("System.Console", "System")),
syntaxTrees: trees,
references: new[] { MscorlibRef });
var compilation = CreateCompilationWithMscorlib45(
trees,
options: TestOptions.ReleaseDll.WithUsings(ImmutableArray.Create("System.Console", "System")));
var diagnostics = compilation.GetDiagnostics().ToArray();
......@@ -2833,11 +2825,9 @@ public void GlobalUsings_Errors()
", options: TestOptions.Script)
};
var compilation = CSharpCompilation.Create(
"foo",
options: TestOptions.ReleaseDll.WithUsings("System.Console!", "Blah"),
syntaxTrees: trees,
references: new[] { MscorlibRef });
var compilation = CreateCompilationWithMscorlib45(
trees,
options: TestOptions.ReleaseDll.WithUsings("System.Console!", "Blah"));
compilation.VerifyDiagnostics(
// error CS0234: The type or namespace name 'Console!' does not exist in the namespace 'System' (are you missing an assembly reference?)
......
......@@ -3682,7 +3682,7 @@ class C
}
var o = new object();
o.F();";
var compilation = CreateCompilationWithMscorlib(source, references: new[] { SystemCoreRef }, parseOptions: TestOptions.Script);
var compilation = CreateCompilationWithMscorlib45(source, parseOptions: TestOptions.Script);
compilation.VerifyDiagnostics();
}
......
......@@ -4,7 +4,6 @@
using Microsoft.CodeAnalysis.CSharp.Symbols;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.CSharp.Test.Utilities;
using Microsoft.CodeAnalysis.Text;
using Roslyn.Test.Utilities;
using Xunit;
......@@ -58,7 +57,7 @@ void Foo()
[Fact, WorkItem(531535, "DevDiv")]
public void Events()
{
var c = CreateCompilationWithMscorlib(@"
var c = CreateCompilationWithMscorlib45(@"
event System.Action e;
", parseOptions: TestOptions.Script);
......
......@@ -93,7 +93,7 @@ public void ExternAliasInScript()
extern alias Bar;
Bar::NS.Foo d = new Bar::NS.Foo();
";
var comp = CreateCompilationWithMscorlib(src, options: new CSharpCompilationOptions(OutputKind.ConsoleApplication), parseOptions: TestOptions.Script);
var comp = CreateCompilationWithMscorlib45(src, options: new CSharpCompilationOptions(OutputKind.ConsoleApplication), parseOptions: TestOptions.Script);
comp = comp.AddReferences(Foo1, Foo2);
comp.VerifyDiagnostics();
}
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Immutable;
using System.Linq;
using Microsoft.CodeAnalysis.CSharp.Symbols;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.CSharp.Test.Utilities;
using Microsoft.CodeAnalysis.Text;
using Roslyn.Test.Utilities;
using Xunit;
using System.Collections.Immutable;
namespace Microsoft.CodeAnalysis.CSharp.UnitTests
{
......@@ -106,7 +103,7 @@ public void InScript()
";
foreach (var options in new[] { TestOptions.Script, TestOptions.Interactive })
{
var comp = CreateCompilationWithMscorlib(text, parseOptions: options);
var comp = CreateCompilationWithMscorlib45(text, parseOptions: options);
var script = comp.ScriptClass;
var m1 = script.GetMembers("M1").Single() as MethodSymbol;
Assert.Equal(Accessibility.Private, m1.DeclaredAccessibility);
......
......@@ -15627,8 +15627,8 @@ class A { public int Foo() { return 2; }}
Diagnostic(ErrorCode.ERR_NamespaceNotAllowedInScript, "namespace").WithLocation(2, 1)
};
CreateCompilationWithMscorlib(Parse(text, options: TestOptions.Script)).VerifyDiagnostics(expectedDiagnostics);
CreateCompilationWithMscorlib(Parse(text, options: TestOptions.Interactive)).VerifyDiagnostics(expectedDiagnostics);
CreateCompilationWithMscorlib45(new[] { Parse(text, options: TestOptions.Script) }).VerifyDiagnostics(expectedDiagnostics);
CreateCompilationWithMscorlib45(new[] { Parse(text, options: TestOptions.Interactive) }).VerifyDiagnostics(expectedDiagnostics);
}
[Fact]
......
......@@ -59,19 +59,16 @@ System.Console.WriteLine(1+1)
Diagnostic(ERRID.ERR_ExecutableAsDeclaration, "System.Console.WriteLine(1+1)"))
End Sub
<Fact>
Public Sub ReturnStatement()
Dim source = <text>
Return Foo
Return 1
</text>.Value
Dim tree = VisualBasicSyntaxTree.ParseText(source, options:=TestOptions.Script)
Dim c = VisualBasicCompilation.Create("Test", {tree}, LatestVbReferences)
Dim c = CreateCompilationWithMscorlib45({tree})
c.VerifyDiagnostics(
Diagnostic(ERRID.ERR_ReturnFromNonFunction, "Return Foo").WithLocation(2, 1),
Diagnostic(ERRID.ERR_NameNotDeclared1, "Foo").WithArguments("Foo").WithLocation(2, 8))
c.VerifyDiagnostics()
End Sub
<Fact>
......
......@@ -1288,7 +1288,7 @@ End Class
<Fact()>
Public Sub GetEntryPoint_Script()
Dim source = <![CDATA[System.Console.WriteLine(1)]]>
Dim compilation = CreateCompilationWithMscorlib({VisualBasicSyntaxTree.ParseText(source.Value, options:=TestOptions.Script)}, options:=TestOptions.ReleaseDll)
Dim compilation = CreateCompilationWithMscorlib45({VisualBasicSyntaxTree.ParseText(source.Value, options:=TestOptions.Script)}, options:=TestOptions.ReleaseDll)
compilation.VerifyDiagnostics()
Dim scriptMethod = compilation.GetMember("Script.<Main>")
......@@ -1308,7 +1308,7 @@ End Class
End Sub
End Class
]]>
Dim compilation = CreateCompilationWithMscorlib({VisualBasicSyntaxTree.ParseText(source.Value, options:=TestOptions.Script)}, options:=TestOptions.ReleaseDll)
Dim compilation = CreateCompilationWithMscorlib45({VisualBasicSyntaxTree.ParseText(source.Value, options:=TestOptions.Script)}, options:=TestOptions.ReleaseDll)
compilation.VerifyDiagnostics(Diagnostic(ERRID.WRN_MainIgnored, "Main").WithArguments("Public Shared Sub Main()").WithLocation(3, 20))
Dim scriptMethod = compilation.GetMember("Script.<Main>")
......
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis
Imports Microsoft.CodeAnalysis.Test.Utilities
Imports Microsoft.CodeAnalysis.Text
Imports Microsoft.CodeAnalysis.VisualBasic
Imports Microsoft.CodeAnalysis.VisualBasic.Symbols
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Imports Roslyn.Test.Utilities
Namespace Microsoft.CodeAnalysis.VisualBasic.UnitTests.Semantics
......@@ -311,7 +306,7 @@ Imports System
<Fact()>
Public Sub UnusedImportScript()
Dim tree = Parse("Imports System", options:=TestOptions.Script)
Dim compilation = CreateCompilationWithMscorlib(tree)
Dim compilation = CreateCompilationWithMscorlib45({tree})
compilation.AssertTheseDiagnostics(
<errors>
BC50001: Unused import statement.
......
......@@ -2433,19 +2433,16 @@ End Module
<Fact>
Public Sub ScriptExtensionMethods()
Dim comp = CreateCompilationWithMscorlib(
<compilation>
<file name="a.vbx"><![CDATA[
Dim source = <![CDATA[
Imports System.Runtime.CompilerServices
<Extension>
Shared Function F(o As Object) As Object
Return Nothing
End Function
Dim o As New Object()
o.F()]]></file>
</compilation>,
parseOptions:=TestOptions.Script,
references:={MscorlibRef, SystemCoreRef})
o.F()]]>
Dim comp = CreateCompilationWithMscorlib45(
{VisualBasicSyntaxTree.ParseText(source.Value, TestOptions.Script)})
comp.VerifyDiagnostics()
Assert.True(comp.SourceAssembly.MightContainExtensionMethods)
End Sub
......
......@@ -23675,15 +23675,13 @@ Imports GlobEnumsClass
<Fact>
Public Sub MustOverrideInScript()
Dim comp = CreateCompilationWithMscorlib(
<compilation>
<file name="a.vbx"><![CDATA[
Dim source = <![CDATA[
Friend MustOverride Function F() As Object
Friend MustOverride ReadOnly Property P
]]></file>
</compilation>,
parseOptions:=TestOptions.Script,
references:={MscorlibRef, SystemCoreRef})
]]>
Dim comp = CreateCompilationWithMscorlib45(
{VisualBasicSyntaxTree.ParseText(source.Value, TestOptions.Script)},
references:={SystemCoreRef})
comp.AssertTheseDiagnostics(<expected>
BC30607: 'NotInheritable' classes cannot have members declared 'MustOverride'.
Friend MustOverride Function F() As Object
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册