-
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
Test Plan for "Ref Struct Interfaces" feature #72124
Comments
dotnet-issue-labeler
bot
added
the
untriaged
Issues and PRs which have not yet been triaged by a lead
label
Feb 15, 2024
AlekseyTs
added
New Feature - RefStructInterfaces
and removed
untriaged
Issues and PRs which have not yet been triaged by a lead
labels
Feb 15, 2024
ToddGrun
added a commit
that referenced
this issue
May 21, 2024
The method extraction code uses ITypeParameterSymbol's constraints to generate the new method's text. This codepath had not yet been modified to support ITypeParameterSymbol.AllowsRefLikeType This is in support of the "allows ref struct" on interfaces feature outlined here: #72124 This ref structs for interfaces feature was merged via this PR: #73567
ToddGrun
added a commit
to ToddGrun/roslyn
that referenced
this issue
May 21, 2024
The description building code for method constraints in the object browser had not yet been modified to support ITypeParameterSymbol.AllowsRefLikeType This is in support of the "allows ref struct" on interfaces feature outlined here: dotnet#72124 This ref structs for interfaces feature was merged via this PR: dotnet#73567
ToddGrun
added a commit
to ToddGrun/roslyn
that referenced
this issue
May 22, 2024
The selected display part building code for method constraints in signature help had not yet been modified to support ITypeParameterSymbol.AllowsRefLikeType This is in support of the "allows ref struct" on interfaces feature outlined here: dotnet#72124 This ref structs for interfaces feature was merged via this PR: dotnet#73567
ToddGrun
added a commit
that referenced
this issue
May 22, 2024
* Add extract method support for ref struct interfaces The method extraction code uses ITypeParameterSymbol's constraints to generate the new method's text. This codepath had not yet been modified to support ITypeParameterSymbol.AllowsRefLikeType This is in support of the "allows ref struct" on interfaces feature outlined here: #72124 This ref structs for interfaces feature was merged via this PR: #73567
ToddGrun
added a commit
that referenced
this issue
May 22, 2024
The selected display part building code for method constraints in signature help had not yet been modified to support ITypeParameterSymbol.AllowsRefLikeType This is in support of the "allows ref struct" on interfaces feature outlined here: #72124 This ref structs for interfaces feature was merged via this PR: #73567
ToddGrun
added a commit
that referenced
this issue
May 22, 2024
* Add object browser support for ref struct interfaces The description building code for method constraints in the object browser had not yet been modified to support ITypeParameterSymbol.AllowsRefLikeType This is in support of the "allows ref struct" on interfaces feature outlined here: #72124 This ref structs for interfaces feature was merged via this PR: #73567
AlekseyTs
added a commit
to AlekseyTs/roslyn
that referenced
this issue
Jul 15, 2024
AlekseyTs
added a commit
that referenced
this issue
Jul 18, 2024
This was referenced Jul 30, 2024
jcouv
changed the title
Test Plan for "Ref Struct Interfaces" feature
Test Plan for "Ref Struct Interfaces" feature (VS 17.11, .NET 9)
Sep 17, 2024
jcouv
changed the title
Test Plan for "Ref Struct Interfaces" feature (VS 17.11, .NET 9)
Test Plan for "Ref Struct Interfaces" feature
Sep 17, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Championed proposal: dotnet/csharplang#7608
Speclet: https://github.com/dotnet/csharplang/blob/main/proposals/csharp-13.0/ref-struct-interfaces.md
Feature branch: https://github.com/dotnet/roslyn/tree/features/RefStructInterfaces
Compiler
allows ref struct
using
,foreach
, etc. with ref like type interface implementationRuntimeFeature.ByRefLikeGenerics
allows ref struct
ref struct
interface implementationvirtual
/sealed
modifiers (see*_DefaultImplementation
)allows ref struct
constraint (seeAllowsConstraint_*
)struct
,class
,new()
,unmanaged
,notnull
,default
, interface, classpartial
type / methodallows ref struct
System.Object
methodsref struct
allows ref struct
, with/withoutstruct
constraintSystem.Object
ref struct
allows ref struct
, with/withoutstruct
constraintallows ref struct
, with/withoutstruct
constraint, with implemented interface constraintallows ref struct
, with/withoutstruct
constraint, with unimplemented interface constraintallows ref struct
, with/withoutstruct
constraint,where T : U
/where
U : T`is
operator:value is Type
(seeIsOperator_*
)ref struct
with/without interface implementationallows ref struct
, with/withoutstruct
constraint, with/without interface constraintref struct
allows ref struct
, with/withoutstruct
constraint, with/without interface constraintclass
constraint, with/without interface constraint (Fill some gaps in Test Plan for "Ref Struct Interfaces" feature #74389, IsOperator_05, IsOperator_07)allows ref struct
, with/withoutstruct
constraint,where T : U
/where
U : T`is
pattern:value is Type t
(seeIsPattern_*
)is
operator aboveas
operator:value as Type
(seeAsOperator_*
)is
operator aboveref struct
substituted for type parameterallows ref struct
allows ref struct
allows ref struct
substituted for type parameter (Fill some gaps in Test Plan for "Ref Struct Interfaces" feature #74389, ImplementAnInterface_03)allows ref struct
substituted for type parameter (ConstraintsCheck_04)delegate
type variance (...?)allows ref struct
ref struct
(allowed)struct
,class
(disallowed)static
field / auto-property (disallowed)record
primary constructor parameter (disallowed)ref struct
primary constructor parameter (disallowed)allows ref struct
(extendIsRefLikeType
checks)makeref
(disallowed)ref
field (disallowed)async
parameter type (disallowed)?.
result type, withstruct
constraint (disallowed)?.
receiver type, withoutstruct
constraintdynamic
call (disallowed)dynamic
call (disallowed)T?
whenwhere T : struct, allows ref struct
(ConstraintsCheck_06)allows ref struct
(extendIsRefLikeType
checks)new T()
instancescoped T
instancestatic
field (Field, AutoProperty ?)T[]
(InArrayType_01)Return*
)MethodArgumentsMustMatch_*
)null
checking with value of type parameter withallows ref struct
(seeNullCheck_*
)value == null
,value != null
,!(value == null)
,!(value != null)
value is null
,value is not null
,!(value is null)
,!(value is not null)
value == null
when type parameter hasstruct
constraintnew T()
(seeObjectCreation_*
)struct
constraintActivator.CreateInstance<T>()
with/withoutallows ref struct
(seeSystemActivatorCreateInstance_*
)scoped
with type parameter withallows ref struct
params T
implicitlyscoped
scoped
mismatch inoverride
scoped
mismatch inpartial
method (Fill some gaps in Test Plan for "Ref Struct Interfaces" feature #74389, ScopedTypeParameter_03)scoped
mismatch in delegate (Fill some gaps in Test Plan for "Ref Struct Interfaces" feature #74389, ScopedTypeParameter_04)[UnscopedRef]
on interface members (seeUnscopedRefIn*
)[UnscopedRef]
on interface members, interface implementationsabstract
,virtual
,sealed
class
,struct
,ref struct
,interface
[UnscopedRef]
(UnscopedRefInImplementation_*)[UnscopedRef]
mismatch with implicit implementationstruct
(seeMethodArgumentsMustMatch_*
, etc. cloned from RefFieldTests.cs)struct
(seeDefensiveCopy_*
)using
: implementingIDisposable
and/or patternDispose()
(seeUsing_*
)ref struct
implementing interface with/without patternallows ref struct
implementing interface and/or pattern, with/withoutstruct
constraintforeach
(seeForeach_*
)IEnumerable
: see cases inusing
aboveIEnumerable<T>
: see cases inusing
aboveIEnumerator
: see cases inusing
aboveIEnumerator<T>
: see cases inusing
aboveIDisposable
: see cases inusing
aboveawait using
(seeAwaitUsing_*
)IAsyncDisposable
: see cases inusing
aboveawait foreach
(seeAwaitForeach_*
)IAsyncEnumerable<T>
: see cases inusing
aboveIAsyncEnumerator<T>
: see cases inusing
above (is explicit implementation only tested?) (AwaitForeach_IAsyncEnumerableT_03?)IAsyncDisposable
: see cases inusing
aboveAnonymousDelegateType_*
)ref struct
parameter typesallows ref struct
parameter typesSystem.Func<>
andSystem.Action<>
with/withoutallows ref struct
constraintsallows ref struct
constraint if needed-langversion:12
and earlier: consuming generic types and methods with type parameters withallows ref struct
ref struct
(ConstraintsCheck_07)ref struct
(ConstraintsCheck_02)ITypeParameterSymbol.AllowsRefLikeType
RuntimeCapability.ByRefLikeGenerics
allows ref struct
ref struct
(AllowsConstraint_01)ref struct
(AllowsConstraint_01)allows ref struct
allows
orallow
?Productivity
allows ref struct
allows ref struct
allows
(with AddAllowsKeywordRecommender
toKeywordCompletionProvider
#73608 in place)ref
struct
allows ref struct
(tracked byF1
help forallows ref struct
constraint #74604)allows
(doesn't work at the moment)ref
(goes to a wrong page at the moment)struct
(goes to a wrong page at the moment)ref struct
ref struct
ref struct
ref struct
ref struct
ref struct
goes to the interfaceref struct
goes to the method in the interfaceoverride
of generic method withallows ref struct
constraint is offered and generates correct codeallows ref struct
constraint finds an overrideallows ref struct
constraint finds a call siteallows ref struct
constraintallows ref struct
constraintallows ref struct
constraint at the moment) (tracked by Implement generic interface method withallows ref struct
constraint #74605)allows ref struct
constraint finds an explicit/implicit implementationallows ref struct
constraint finds an explicit/implicit implementationallows ref struct
constraintThe text was updated successfully, but these errors were encountered: