void M<T>(T x)
{
if (x == null) throw null;
var y = Identity(x);
// currently we infer Identity<T!> (which you could not write explicitly), but should be Identity<T>
}
T Identity<T>(T z) => z;
The change should include inference of var and best type (new [] { x }). Those inferred types should be speakable too.
From LDM discussion 2018-05-12
FYI @AlekseyTs @cston