-
Notifications
You must be signed in to change notification settings - Fork 4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MakeInvocationExpression
helper doesn't belong in SyntheticBoundNodeFactory
#74275
Labels
Area-Compilers
Concept-Design Debt
Engineering Debt, Design Debt, or poor product code quality
Resolution-Fixed
The bug has been fixed and/or the requested behavior has been implemented
Milestone
Comments
AlekseyTs
added
Area-Compilers
Concept-Design Debt
Engineering Debt, Design Debt, or poor product code quality
labels
Jul 5, 2024
dotnet-issue-labeler
bot
added
the
untriaged
Issues and PRs which have not yet been triaged by a lead
label
Jul 5, 2024
7 tasks
AlekseyTs
added a commit
to AlekseyTs/roslyn
that referenced
this issue
Oct 2, 2024
AlekseyTs
added a commit
that referenced
this issue
Oct 7, 2024
AlekseyTs
added a commit
to AlekseyTs/roslyn
that referenced
this issue
Oct 8, 2024
AlekseyTs
added a commit
to AlekseyTs/roslyn
that referenced
this issue
Oct 9, 2024
AlekseyTs
added a commit
that referenced
this issue
Oct 9, 2024
AlekseyTs
added a commit
to AlekseyTs/roslyn
that referenced
this issue
Oct 11, 2024
AlekseyTs
added a commit
that referenced
this issue
Oct 15, 2024
AlekseyTs
added a commit
that referenced
this issue
Oct 18, 2024
AlekseyTs
added
Resolution-Fixed
The bug has been fixed and/or the requested behavior has been implemented
and removed
3 - Working
untriaged
Issues and PRs which have not yet been triaged by a lead
labels
Oct 18, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
Area-Compilers
Concept-Design Debt
Engineering Debt, Design Debt, or poor product code quality
Resolution-Fixed
The bug has been fixed and/or the requested behavior has been implemented
Multiple helpers in
SyntheticBoundNodeFactory
make use ofMakeInvocationExpression
helper,which actually uses a
Binder
to bind an invocation expression (do overload resolution, apply necessaryconversions to the arguments, etc.). Therefore, there is no guarantee that it is going to produce a node in its lowered form, which we generally expect from
SyntheticBoundNodeFactory
to do. The helper is used indirectly in lowering and in the post lowering phases of the compiler. When the operation is performed against an unknown set of overloads (and that is how it is used today) the result is unpredictable in terms of what we might get back. For example, we might get back a node that is not going to passDiagnosticPass
checks with respect to operations allowed in an expression tree, resulting in a compiler crash (see, for example, #74163 caused by exactly that). Or we might get back a not lowered node in a post lowering phase, etc.I propose the following action:
SyntheticBoundNodeFactory
LocalRewriter
and be a subject toDiagnosticPass
checks. We have plenty examples of how to do that, just search for use of "placeholders" in bound nodes.The text was updated successfully, but these errors were encountered: