Browse Source

Fixed code completion on nullables.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@3785 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 17 years ago
parent
commit
195a4cac61
  1. 14
      src/Main/Base/Test/NRefactoryResolverTests.cs
  2. 5
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/TypeVisitor.cs

14
src/Main/Base/Test/NRefactoryResolverTests.cs

@ -2748,5 +2748,19 @@ class C : B { @@ -2748,5 +2748,19 @@ class C : B {
Assert.IsTrue(MemberExists(arr, "Y"));
Assert.IsFalse(MemberExists(arr, "Z"));
}
[Test]
public void NullableValue()
{
string program = @"using System;
class Test {
public static void M(int? a) {
}
}";
MemberResolveResult rr = Resolve<MemberResolveResult>(program, "a.Value", 4);
Assert.AreEqual("System.Nullable.Value", rr.ResolvedMember.FullyQualifiedName);
Assert.AreEqual("System.Int32", rr.ResolvedMember.ReturnType.FullyQualifiedName);
}
}
}

5
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/TypeVisitor.cs

@ -80,8 +80,9 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -80,8 +80,9 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
}
}
if (t == null) {
if (reference.IsKeyword) {
if (reference.IsKeyword && reference.GenericTypes.Count == 0) {
// keyword-type like void, int, string etc.
// check GenericTypes.Count to prevent use of this code path for nullables
IClass c = projectContent.GetClass(reference.Type, 0);
if (c != null)
t = c.DefaultReturnType;
@ -90,7 +91,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver @@ -90,7 +91,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
} else {
int typeParameterCount = reference.GenericTypes.Count;
if (useLazyReturnType || isBaseTypeReference) {
if (reference.IsGlobal) {
if (reference.IsGlobal || reference.IsKeyword) {
t = new GetClassReturnType(projectContent, reference.Type, typeParameterCount);
} else if (callingClass != null) {
SearchClassReturnType scrt = new SearchClassReturnType(projectContent, callingClass, caretLine, caretColumn, reference.Type, typeParameterCount);

Loading…
Cancel
Save