diff --git a/ICSharpCode.NRefactory.CSharp/Refactoring/TypeSystemAstBuilder.cs b/ICSharpCode.NRefactory.CSharp/Refactoring/TypeSystemAstBuilder.cs index b514ee82b3..bf5bd3c8c8 100644 --- a/ICSharpCode.NRefactory.CSharp/Refactoring/TypeSystemAstBuilder.cs +++ b/ICSharpCode.NRefactory.CSharp/Refactoring/TypeSystemAstBuilder.cs @@ -187,18 +187,19 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring AddTypeArguments(shortResult, typeArguments, outerTypeParameterCount, typeDef.TypeParameterCount); return shortResult; } - MemberType result = new MemberType(); if (typeDef.DeclaringTypeDefinition != null) { // check if the declaring type is a nested type in the nested type hierarchy - var declaringType = resolver.CurrentTypeDefinition; - while (declaringType != null) { - if (typeDef.DeclaringTypeDefinition.Equals (declaringType)) { - var innerType = new SimpleType(typeDef.Name); - AddTypeArguments(innerType, typeArguments, outerTypeParameterCount, typeDef.TypeParameterCount); - return innerType; + if (resolver != null) { + var declaringType = resolver.CurrentTypeDefinition; + while (declaringType != null) { + if (typeDef.DeclaringTypeDefinition.Equals (declaringType)) { + var innerType = new SimpleType(typeDef.Name); + AddTypeArguments(innerType, typeArguments, outerTypeParameterCount, typeDef.TypeParameterCount); + return innerType; + } + declaringType = declaringType.DeclaringTypeDefinition; } - declaringType = declaringType.DeclaringTypeDefinition; } // Handle nested types diff --git a/ICSharpCode.NRefactory.Tests/CSharp/Refactoring/TypeSystemAstBuilderTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/Refactoring/TypeSystemAstBuilderTests.cs index 1d6ceba863..2b32f7e4b5 100644 --- a/ICSharpCode.NRefactory.Tests/CSharp/Refactoring/TypeSystemAstBuilderTests.cs +++ b/ICSharpCode.NRefactory.Tests/CSharp/Refactoring/TypeSystemAstBuilderTests.cs @@ -160,8 +160,8 @@ namespace OtherNS { { var type = new ParameterizedType(nestedClass, new[] { compilation.FindType(KnownTypeCode.Char), compilation.FindType(KnownTypeCode.String) }); Assert.AreEqual("Base.Nested", TypeToString(type)); - Assert.AreEqual("Base.Nested", TypeToString(type, baseClass)); - Assert.AreEqual("Base.Nested", TypeToString(type, nestedClass)); + Assert.AreEqual("Nested", TypeToString(type, baseClass)); + Assert.AreEqual("Nested", TypeToString(type, nestedClass)); Assert.AreEqual("Base.Nested", TypeToString(type, derivedClass)); }