Browse Source

Test that demonstrates that a generic method cannot be invoked with a nullable type argument.

newNRvisualizers
erikkallen 14 years ago
parent
commit
a00495c22b
  1. 48
      ICSharpCode.NRefactory.Tests/CSharp/Resolver/InvocationTests.cs

48
ICSharpCode.NRefactory.Tests/CSharp/Resolver/InvocationTests.cs

@ -635,5 +635,53 @@ class Test
Assert.AreEqual(OverloadResolutionErrors.MethodConstraintsNotSatisfied, rr.OverloadResolutionErrors); Assert.AreEqual(OverloadResolutionErrors.MethodConstraintsNotSatisfied, rr.OverloadResolutionErrors);
Assert.IsTrue(rr.IsError); Assert.IsTrue(rr.IsError);
} }
[Test]
public void MethodCanBeInvokedWithNullableTypeArgument1() {
string program = @"
public class C {
static T F<T>() {
return default(T);
}
void M() {
$F<int?>()$;
}
}";
var rr = Resolve<CSharpInvocationResolveResult>(program);
Assert.IsFalse(rr.IsError);
}
[Test]
public void MethodCanBeInvokedWithNullableTypeArgument2() {
string program = @"
public class C {
static T F<T>(T t) {
return default(T);
}
void M() {
$F((int?)null)$;
}
}";
var rr = Resolve<CSharpInvocationResolveResult>(program);
Assert.IsFalse(rr.IsError);
}
[Test]
public void CanConstructGenericTypeWithNullableTypeArgument() {
string program = @"
public class X<T> {}
public class C {
void M() {
$new X<int?>()$;
}
}";
var rr = Resolve<CSharpInvocationResolveResult>(program);
Assert.IsFalse(rr.IsError);
}
} }
} }

Loading…
Cancel
Save