An unexpected exception is thrown by System.Linq.Expressions.Expression.ValidateUserDefinedConditionalLogicOperator when nullable value types are involved
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 25/100
Research direction
Start with System.Linq.Expressions.Expression.ValidateUserDefinedConditionalLogicOperator and the AndAlso and OrElse factory paths, then review the linked Roslyn issue for the nullable value type reproduction. Determine the required behavior for creating, interpreting, and compiling these trees, including the proposed True/False operator handling; done means the reproduction succeeds without the unexpected exception.
Written by the indexing model from the issue text.
Description
Description
See:
- https://github.com/dotnet/roslyn/issues/78609#issuecomment-2887721096
- https://github.com/dotnet/roslyn/issues/78609#issuecomment-2887732408
- https://github.com/dotnet/roslyn/issues/78609#issuecomment-2887740979
I assume both AndAlso and OrElse factories are affected.
It is quite possible that if creation of such trees will be allowed, expression trees interpretation and compilation might need fixing as well.
Reproduction Steps
See above
Expected behavior
It should be possible to create, interpret and compile+execute such trees
Actual behavior
System.ArgumentException: The user-defined operator method 'op_BitwiseAnd' for operator 'AndAlso' must have associated boolean True and False operators.
at System.Linq.Expressions.Expression.ValidateUserDefinedConditionalLogicOperator(ExpressionType nodeType, Type left, Type right, MethodInfo method)
at System.Linq.Expressions.Expression.AndAlso(Expression left, Expression right, MethodInfo method)
Regression?
Unlikely
Known Workarounds
None known at the moment
Configuration
No response
Other information
I think it will be good to add an overload that explicitly takes MethodInfo for boolean True/False operator. And having a conversion lambda for the argument wouldn't hurt, that is if we would want to support extension operators.
- Dominant language
- C#
- Stars
- 18.3k
- Forks
- 5.6k
- PR merge metrics
- PR metrics pending
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from dotnet/runtime
-
agentic-workflows untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
area-System.Reflection blocking-clean-ci-optional Known Build Error os-mac-os-x untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
area-CodeGen-coreclr untriaged
Difficulty 1/5 Under an hour Newbie friendliness 92/100
-
agentic-workflows untriaged
Difficulty 1/5 Under an hour Newbie friendliness 78/100
-
area-VM-meta-mono untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
-
:watch: Not Triaged 11.0 fundamentals/subsvc
Difficulty 2/5 1-3 hours Newbie friendliness 92/100
dotnet/AspNetCore.Docs#37699 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
SubtitleEdit/subtitleedit#15108 · 1 comment ·
-
area/docs-content Bug pulumi/docs
Difficulty 1/5 1-3 hours Newbie friendliness 94/100
-
Create parent directories only after the containment check in InstallHelper.TryExtractToDirectory Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
PowerShell/PSResourceGet#2056 ·