Check constraints on lifted operator types#57050
Merged
333fred merged 5 commits intodotnet:mainfrom Nov 15, 2021
Merged
Conversation
We weren't validating constraints on lifted operators, which allowed us to generate types such as `Nullable<int*>` in operator binding without reporting any errors. Fixes dotnet#56646.
Member
Author
|
@dotnet/roslyn-compiler for review. |
1 similar comment
Member
Author
|
@dotnet/roslyn-compiler for review. |
AlekseyTs
reviewed
Oct 11, 2021
AlekseyTs
reviewed
Oct 11, 2021
AlekseyTs
reviewed
Oct 11, 2021
Contributor
|
I think that under umbrella of this fix we should audit all the places where compiler constructs Nullable types. For example, stand alone conditional access comes to mind, etc. It also feels that, long term, it would be better to keep validity checks close to the code that constructs the types. In reply to: 940228217 |
Contributor
|
Done with review pass (commit 1) |
…operators when lifting would cause invalid type arguments to be supplied to Nullable<T>, rather than erroring after creation. In addition, we now do this for lifted conversions as well, As a part of this, I found and corrected an implementation bug that caused code successfully emitted by the native compiler to emit bad code in Roslyn: we were treating pointer types like value types for the purposes of creating nullable value types, rather than treating them like reference types.
AlekseyTs
reviewed
Oct 18, 2021
src/Compilers/CSharp/Portable/Binder/Semantics/Conversions/UserDefinedExplicitConversions.cs
Outdated
Show resolved
Hide resolved
AlekseyTs
reviewed
Oct 18, 2021
src/Compilers/CSharp/Portable/Lowering/LocalRewriter/LocalRewriter_Conversion.cs
Outdated
Show resolved
Hide resolved
Contributor
|
Done with review pass (commit 2). Tests in UserDefinedConversionTests are not looked at. |
…-struct * upstream/main: (829 commits) Re-enable BuildWithCommandLine test (dotnet#57584) Fix expected formatting in tests Simplify PR feedback Don't crash Use ExpressionBody on local functions in top level statements (dotnet#57571) Less linq Revert Update src/Features/VisualBasic/Portable/NavigationBar/VisualBasicNavigationBarItemService.vb Add test Simplify WIP Install .NET SDK in PR Validation pipeline Revert to VS2019 for PR Validation Update dependencies from https://github.com/dotnet/roslyn build 20211103.8 Validate the checksum of source on disk (dotnet#57541) Clean up VsCodeWindowManager (dotnet#57582) Update VS editor package version Revert to VS2019 for official build Revert to VS2019 for official build StackFrame Parser/Lexer as EmbeddedLanguage (dotnet#56957) ...
Member
Author
|
@AlekseyTs addressed feedback. In reply to: 946068806 |
AlekseyTs
reviewed
Nov 9, 2021
src/Compilers/CSharp/Test/Semantic/Semantics/UserDefinedConversionTests.cs
Show resolved
Hide resolved
AlekseyTs
reviewed
Nov 9, 2021
src/Compilers/CSharp/Test/Semantic/Semantics/UserDefinedConversionTests.cs
Show resolved
Hide resolved
AlekseyTs
reviewed
Nov 9, 2021
src/Compilers/CSharp/Test/Semantic/Semantics/UserDefinedConversionTests.cs
Outdated
Show resolved
Hide resolved
Contributor
|
Done with review pass (commit 4) |
Member
Author
|
@dotnet/roslyn-compiler for a second review. |
1 similar comment
Member
Author
|
@dotnet/roslyn-compiler for a second review. |
RikkiGibson
reviewed
Nov 11, 2021
RikkiGibson
approved these changes
Nov 11, 2021
Member
Author
|
/azp run |
|
Azure Pipelines successfully started running 4 pipeline(s). |
333fred
added a commit
to 333fred/roslyn
that referenced
this pull request
Nov 17, 2021
…rations * upstream/main: (3387 commits) Fix ValueTracking for index parameters (dotnet#57727) Avoid accessing current assembly identity while reporting an accessibility diagnostics for an inaccessible internal symbol. (dotnet#57783) Include a type for NoneOperations in VB, print the type in tests (dotnet#57664) Don't throw exceptions for file changes after a project is unloaded Check up front for being called to remove more than once Fix C# language name in spec (dotnet#57427) Add test Fix null ref in navbars Ensure that getting the checksum for a project cone is resilient to its project references being missing Check constraints on lifted operator types (dotnet#57050) Adjust tests for Windows 11 changes (dotnet#57678) Add comment Load SVsShellDebugger before calling IVsSolution.CreateSolution Remove extra EnsureEditableDocuments calls (dotnet#57725) Don't show nullable annotation in completion items of static field/property Don't analyze local function bodies as though they are top level code (dotnet#57623) update error code to fix main break (dotnet#57739) Error when ref is used on a parameter or return type of an UnmanagedCallersOnly method (dotnet#57043) Simplify code from review Fix featureflag name for .net 6 host in UI ...
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
We weren't validating constraints on lifted operators, which allowed us to generate types such as
Nullable<int*>in operator binding without reporting any errors. Fixes #56646. The repro test case for that issue also hit an assert inBinder.ValueCheck.cs, where we were not expecting to run into aBoundConditionalReceivernode. I added it to the list of possible error scenario nodes.