public async Task LoadedFileWithReturnAndGoto() { var resolver = TestSourceReferenceResolver.Create( KeyValuePair.Create("a.csx", @" goto EOF; NEXT: return 1; EOF:; 2")); var options = ScriptOptions.Default.WithSourceResolver(resolver); var script = CSharpScript.Create(@" #load ""a.csx"" goto NEXT; return 3; NEXT:;", options); var result = await script.EvaluateAsync(); Assert.Null(result); script = CSharpScript.Create(@" #load ""a.csx"" L1: goto EOF; L2: return 3; EOF: EOF2: ; 4", options); result = await script.EvaluateAsync(); Assert.Equal(4, result); }
public async Task LoadedFileWithVoidReturn() { var resolver = TestSourceReferenceResolver.Create( KeyValuePair.Create("a.csx", @" var i = 42; return; i = -1;")); var options = ScriptOptions.Default.WithSourceResolver(resolver); var script = CSharpScript.Create <int>(@" #load ""a.csx"" i", options); var result = await script.EvaluateAsync(); Assert.Equal(0, result); }
public void GetEffectiveDiagnostics() { var c = CSharpCompilation.Create("c", options: new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary). WithSpecificDiagnosticOptions( new[] { KeyValuePair.Create($"CS{(int)ErrorCode.WRN_AlwaysNull:D4}", ReportDiagnostic.Suppress) })); var d1 = SimpleDiagnostic.Create(MessageProvider.Instance, (int)ErrorCode.WRN_AlignmentMagnitude); var d2 = SimpleDiagnostic.Create(MessageProvider.Instance, (int)ErrorCode.WRN_AlwaysNull); var ds = new[] { default(Diagnostic), d1, d2 }; var filtered = CompilationWithAnalyzers.GetEffectiveDiagnostics(ds, c); // overwrite the original value to test eagerness: ds[1] = default(Diagnostic); AssertEx.Equal(new[] { d1 }, filtered); }
public async Task ReturnInLoadedFile() { var resolver = TestSourceReferenceResolver.Create( KeyValuePair.Create("a.csx", "return 42;")); var options = ScriptOptions.Default.WithSourceResolver(resolver); var script = CSharpScript.Create("#load \"a.csx\"", options); var result = await script.EvaluateAsync(); Assert.Equal(42, result); script = CSharpScript.Create(@" #load ""a.csx"" -1", options); result = await script.EvaluateAsync(); Assert.Equal(42, result); }
public void ReturnInLoadedFileTrailingVoidExpression() { var resolver = TestSourceReferenceResolver.Create( KeyValuePair.Create("a.csx", @" if (false) { return 1; } System.Console.WriteLine(42)")); var options = ScriptOptions.Default.WithSourceResolver(resolver); var script = CSharpScript.Create("#load \"a.csx\"", options); var result = ScriptingTestHelpers.EvaluateScriptWithOutput(script, "42"); Assert.Null(result); script = CSharpScript.Create(@" #load ""a.csx"" 2", options); result = ScriptingTestHelpers.EvaluateScriptWithOutput(script, "42"); Assert.Equal(2, result); }
public async Task ReturnInLoadedFileTrailingExpression() { var resolver = TestSourceReferenceResolver.Create( KeyValuePair.Create("a.csx", @" if (false) { return 42; } 1")); var options = ScriptOptions.Default.WithSourceResolver(resolver); var script = CSharpScript.Create("#load \"a.csx\"", options); var result = await script.EvaluateAsync(); Assert.Null(result); script = CSharpScript.Create(@" #load ""a.csx"" 2", options); result = await script.EvaluateAsync(); Assert.Equal(2, result); }
public async Task MultipleLoadedFilesWithReturnAndTrailingExpression() { var resolver = TestSourceReferenceResolver.Create( KeyValuePair.Create("a.csx", "return 1;"), KeyValuePair.Create("b.csx", @" #load ""a.csx"" 2")); var options = ScriptOptions.Default.WithSourceResolver(resolver); var script = CSharpScript.Create("#load \"b.csx\"", options); var result = await script.EvaluateAsync(); Assert.Equal(1, result); resolver = TestSourceReferenceResolver.Create( KeyValuePair.Create("a.csx", "return 1;"), KeyValuePair.Create("b.csx", "2")); options = ScriptOptions.Default.WithSourceResolver(resolver); script = CSharpScript.Create(@" #load ""a.csx"" #load ""b.csx""", options); result = await script.EvaluateAsync(); Assert.Equal(1, result); resolver = TestSourceReferenceResolver.Create( KeyValuePair.Create("a.csx", "return 1;"), KeyValuePair.Create("b.csx", "2")); options = ScriptOptions.Default.WithSourceResolver(resolver); script = CSharpScript.Create(@" #load ""a.csx"" #load ""b.csx"" return 3;", options); result = await script.EvaluateAsync(); Assert.Equal(1, result); }