Skip to content

Commit d67d0b7

Browse files
committed
Fix named floating point JSON serialization
1 parent 7be9aa5 commit d67d0b7

File tree

4 files changed

+7
-2
lines changed

4 files changed

+7
-2
lines changed

CSharpRepl.Tests/EvalTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ public EvalTests(ITestOutputHelper outputHelper)
7272
[InlineData("typeof(int)", "System.Int32, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e", "RuntimeType")]
7373
[InlineData("Assembly.GetExecutingAssembly()", true, "RuntimeAssembly")]
7474
[InlineData("TimeSpan.FromSeconds(2310293892)", "26739.12:18:12", "TimeSpan")]
75+
[InlineData("float.PositiveInfinity", "Infinity", "float")]
7576
public async Task Eval_WellFormattedCodeExecutes(string expr, object expected, string type)
7677
{
7778
var (result, statusCode) = await Execute(expr);

CSharpRepl/Eval/DisassemblyService.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public string GetIl(string code)
6565
6666
namespace Eval
6767
{{
68-
public class Code
68+
public unsafe class Code
6969
{{
7070
public object Main()
7171
{{
@@ -82,7 +82,8 @@ public object Main()
8282
var scriptSyntaxTree = CSharpSyntaxTree.ParseText(toExecute, opts);
8383
var compOpts = new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary)
8484
.WithOptimizationLevel(OptimizationLevel.Debug)
85-
.WithAllowUnsafe(true).WithPlatform(Platform.AnyCpu);
85+
.WithAllowUnsafe(true)
86+
.WithPlatform(Platform.AnyCpu);
8687

8788
var compilation = CSharpCompilation.Create(Guid.NewGuid().ToString(), options: compOpts, references: References)
8889
.AddSyntaxTrees(scriptSyntaxTree);

CSharpRepl/Eval/ResultModels/EvalResult.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ public override string ToString()
8787
IncludeFields = true,
8888
PropertyNameCaseInsensitive = true,
8989
ReferenceHandler = ReferenceHandler.IgnoreCycles,
90+
NumberHandling = JsonNumberHandling.AllowNamedFloatingPointLiterals,
9091
Converters = {
9192
new TypeJsonConverter(), new TypeInfoJsonConverter(),
9293
new RuntimeTypeHandleJsonConverter(), new TypeJsonConverterFactory(), new AssemblyJsonConverter(),

CSharpRepl/Startup.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public void ConfigureServices(IServiceCollection services)
3636
IncludeFields = true,
3737
PropertyNameCaseInsensitive = true,
3838
ReferenceHandler = ReferenceHandler.IgnoreCycles,
39+
NumberHandling = JsonNumberHandling.AllowNamedFloatingPointLiterals,
3940
Converters = {
4041
new TypeJsonConverter(), new TypeInfoJsonConverter(),
4142
new RuntimeTypeHandleJsonConverter(), new TypeJsonConverterFactory(), new AssemblyJsonConverter(),
@@ -57,6 +58,7 @@ public void ConfigureServices(IServiceCollection services)
5758
o.JsonSerializerOptions.IncludeFields = true;
5859
o.JsonSerializerOptions.PropertyNameCaseInsensitive = true;
5960
o.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles;
61+
o.JsonSerializerOptions.NumberHandling |= JsonNumberHandling.AllowNamedFloatingPointLiterals;
6062
o.JsonSerializerOptions.Converters.Add(new TypeJsonConverter());
6163
o.JsonSerializerOptions.Converters.Add(new TypeInfoJsonConverter());
6264
o.JsonSerializerOptions.Converters.Add(new RuntimeTypeHandleJsonConverter());

0 commit comments

Comments
 (0)