runtime icon indicating copy to clipboard operation
runtime copied to clipboard

Consider failing early when (de)serializing enum values that contain commas

Open layomia opened this issue 2 years ago • 6 comments

It is possible for enum identifiers to contain commas in IL, but the good news is that not even the Enum parser is able to handle that:

https://sharplab.io/#v2:DYLgZgzgNALiCWwA+B7ADgUwHYAIDKAnhDBgLYCwAUFQNoA8AYsAIYDmEAfALpUwGY4AsgQCiWAK6kcAXio4cSHAAMlAFQAWGAE4YA5BBzMcAYxSlSzKDni5SBHFmakMKmTgCMchcrWad+wxMzCysMADdsHD8XJTcAJi8qYAwYBycMNwAKYTFJADoVDW09AyNTc0trW3tHZ1ckBqFRCVIC32KAsuDK8MjolQBKPNUUPBgtG1ZMgaoAelmcMOZgNOcQHGIJrFY3ACIi/1KgiqsbHDtVjCsDksDykJxe3GjdqiSUnB0IcWBU6Rxcq0AArMLQQDB0HItDiZWoYGaUeb4IgkVoAQS0rEk2BgIgAHsYMGgYPAUFh1gAlDAAR3EGGIGAAJotlnScLobp1jg8zhc4ddolz7j0Is8OjgAO7MAxYFCpMAocRYRl5OYLeSGVKEBmtQHDLQEEFgjAAIQIADl0pkKUqSc5VPwMthJA7MFYqcxGQB5LDAAh4NDMLBKdws4B0qwmlAoZJB6ysWU6ADC0quOCjMYwcZg6i0KAlPoYzEQ4h0VgAqgBJLAwABsABYAGSfek/GAIpEa5halFkPJ61QGo3g6swADMcUB1tt8HtjseLVdaY93t9/sDwdDS3DadHE/ONmrxnDEHgESse7i52YeKPJ7PaYzsdw8ATKGTqcj0efOBzeYLWBFiWZY4EuSYoIyGR8G6OCXs2Xxth26ryN2yI6v2LT6oaoLgjQqiAlw1pZqufoBkGIZhhG6bflmL5vh+4Jfpm2a5vmhbFuGIH4S08Gtr8SEapqaGohh+SDthxp4QRmRjFsOzblRT60fGiYYCmjHUcxuB/mxgEcaWabcZIvHfPxaqCah2oiXqw4YFJLSEbJkyUY+NFxq+qnqfC5ldj26E2ThdlGaQjnjM5CneYiyFCXQYygjA4hoOBkEACQMHglYAPoAAzZe4ACsHB5GlGU5Xl+V5BYNgAALVdMVQ4EmIAADrluCYLNRg8AwBAoKBs1kERMAA1ylgKTNVoM7OAAtGAWYJToY7NRAWjGM1wDwAARlooLwPSzVWX2qgYHiMB5AAUhAZLLTAjI2CAG1jTgcT5T5KF+SJNo1rOGCCCk6gQQAEkGjLJHk1ZhCgADWv3/RBmReptABWGDGKkMCgqwKRWAAaig8CMgAVIThiYtiNbQPgHndgZGyvkxP7wBA4FYJs4ho++Am+cJfZUmAyRo6SWB5H9OYQRD0PaODWCQzDCPI6jqQoMjF41kC4wk5jlMmjYd3bEwbAGDYssYGiMDjAMQA===

We might want to store a flag indicating that the enum contains commas and fail early, rather than attempt to pass bogus tokens into the naming policy. (FWIW this is a very niche use case)

Originally posted by @eiriktsarpalis in https://github.com/dotnet/runtime/pull/73348#discussion_r938601437

layomia avatar Aug 10 '22 19:08 layomia

Tagging subscribers to this area: @dotnet/area-system-text-json, @gregsdennis See info in area-owners.md if you want to be subscribed.

Issue Details

It is possible for enum identifiers to contain commas in IL, but the good news is that not even the Enum parser is able to handle that:

https://sharplab.io/#v2:DYLgZgzgNALiCWwA+B7ADgUwHYAIDKAnhDBgLYCwAUFQNoA8AYsAIYDmEAfALpUwGY4AsgQCiWAK6kcAXio4cSHAAMlAFQAWGAE4YA5BBzMcAYxSlSzKDni5SBHFmakMKmTgCMchcrWad+wxMzCysMADdsHD8XJTcAJi8qYAwYBycMNwAKYTFJADoVDW09AyNTc0trW3tHZ1ckBqFRCVIC32KAsuDK8MjolQBKPNUUPBgtG1ZMgaoAelmcMOZgNOcQHGIJrFY3ACIi/1KgiqsbHDtVjCsDksDykJxe3GjdqiSUnB0IcWBU6Rxcq0AArMLQQDB0HItDiZWoYGaUeb4IgkVoAQS0rEk2BgIgAHsYMGgYPAUFh1gAlDAAR3EGGIGAAJotlnScLobp1jg8zhc4ddolz7j0Is8OjgAO7MAxYFCpMAocRYRl5OYLeSGVKEBmtQHDLQEEFgjAAIQIADl0pkKUqSc5VPwMthJA7MFYqcxGQB5LDAAh4NDMLBKdws4B0qwmlAoZJB6ysWU6ADC0quOCjMYwcZg6i0KAlPoYzEQ4h0VgAqgBJLAwABsABYAGSfek/GAIpEa5halFkPJ61QGo3g6swADMcUB1tt8HtjseLVdaY93t9/sDwdDS3DadHE/ONmrxnDEHgESse7i52YeKPJ7PaYzsdw8ATKGTqcj0efOBzeYLWBFiWZY4EuSYoIyGR8G6OCXs2Xxth26ryN2yI6v2LT6oaoLgjQqiAlw1pZqufoBkGIZhhG6bflmL5vh+4Jfpm2a5vmhbFuGIH4S08Gtr8SEapqaGohh+SDthxp4QRmRjFsOzblRT60fGiYYCmjHUcxuB/mxgEcaWabcZIvHfPxaqCah2oiXqw4YFJLSEbJkyUY+NFxq+qnqfC5ldj26E2ThdlGaQjnjM5CneYiyFCXQYygjA4hoOBkEACQMHglYAPoAAzZe4ACsHB5GlGU5Xl+V5BYNgAALVdMVQ4EmIAADrluCYLNRg8AwBAoKBs1kERMAA1ylgKTNVoM7OAAtGAWYJToY7NRAWjGM1wDwAARlooLwPSzVWX2qgYHiMB5AAUhAZLLTAjI2CAG1jTgcT5T5KF+SJNo1rOGCCCk6gQQAEkGjLJHk1ZhCgADWv3/RBmReptABWGDGKkMCgqwKRWAAaig8CMgAVIThiYtiNbQPgHndgZGyvkxP7wBA4FYJs4ho++Am+cJfZUmAyRo6SWB5H9OYQRD0PaODWCQzDCPI6jqQoMjF41kC4wk5jlMmjYd3bEwbAGDYssYGiMDjAMQA===

We might want to store a flag indicating that the enum contains commas and fail early, rather than attempt to pass bogus tokens into the naming policy. (FWIW this is a very niche use case)

Originally posted by @eiriktsarpalis in https://github.com/dotnet/runtime/pull/73348#discussion_r938601437

Author: layomia
Assignees: -
Labels:

enhancement, area-System.Text.Json, easy, up-for-grabs

Milestone: 8.0.0

ghost avatar Aug 10 '22 19:08 ghost

Hi, @layomia Could I pick this issue as my first time contribution :blush:? I have finished set up work on my dev machine.

SilentCC avatar Aug 17 '22 10:08 SilentCC

@SilentCC, yup go for it!

layomia avatar Aug 17 '22 17:08 layomia

Hi @SilentCC, are you working on this?

Marusyk avatar Sep 04 '22 01:09 Marusyk

@Marusyk Really sorry for later reply. Yes. Actually, I have offline discussion with @eiriktsarpalis before. Writing F# unit test could be a challenge for me because I never use it before. I will focus on this after this week (hackathon week) ... Btw, is there any ETA on this issue?

SilentCC avatar Sep 20 '22 12:09 SilentCC

Btw, is there any ETA on this issue?

Not really, it's very low on our priority.

eiriktsarpalis avatar Sep 20 '22 12:09 eiriktsarpalis

@eiriktsarpalis It seems Enum could contains single quatation, comma, whitespace or other special characters in F#. Do you think we need check whether Enum values only contains letter, number or underscore and start with letter? Instead of just check whethe contains comma.

SilentCC avatar Sep 24 '22 03:09 SilentCC