dotnet/roslyn
Compiler should report CS0208 - "Cannot declare pointer to a managed object" when managed object pointer is returned from IL with type inferrence
Aberta
#33.041 aberto em 1 de fev. de 2019
Area-CompilersBughelp wanted
Métricas do repositório
- Stars
- (20.414 estrelas)
- Métricas de merge de PR
- (Mesclagem média 6d 17h) (256 fundiu PRs em 30d)
Description
Version Used: C# 7.2
Steps to Reproduce:
- Have this IL and compile it
.method public hidebysig static !!0* GetPointer<T>(
!!0 'value'
) cil managed
{
ldarga 0
conv.u
ret
}
- Call it from C# as such
object obj = new object();
var objPtr = <something>.GetPointer(obj);
Expected Behavior: CS0208 - "Cannot declare pointer to a managed object"
[or, a bit more of a stretch, allow managed type pointers, such as Exception*]
Actual Behavior:
Compiles and behaves like an actual object reference pointer. So objPtr->GetType() is legal and runs
IMPORTANT: This only works with that type inferrence, Without var it doesn't compile