runtime
runtime copied to clipboard
Consider failing early when (de)serializing enum values that contain commas
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
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: |
|
Milestone: | 8.0.0 |
Hi, @layomia Could I pick this issue as my first time contribution :blush:? I have finished set up work on my dev machine.
@SilentCC, yup go for it!
Hi @SilentCC, are you working on this?
@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?
Btw, is there any ETA on this issue?
Not really, it's very low on our priority.
@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.