Browse Source

Fixed AST builder.

newNRvisualizers
Mike Krüger 14 years ago
parent
commit
6a85f2a5e3
  1. 11
      ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs
  2. 13
      ICSharpCode.NRefactory.CSharp/Refactoring/TypeSystemAstBuilder.cs
  3. 4
      ICSharpCode.NRefactory.Tests/CSharp/Refactoring/TypeSystemAstBuilderTests.cs

11
ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs

@ -1706,6 +1706,17 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -1706,6 +1706,17 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
string GetShortType (IType type, CSharpResolver state)
{
var builder = new TypeSystemAstBuilder (state);
var dt = state.CurrentTypeDefinition;
var declaring = type.DeclaringType != null ? type.DeclaringType.GetDefinition () : null;
if (declaring != null) {
while (dt != null) {
if (dt.Equals (declaring)) {
builder.AlwaysUseShortTypeNames = true;
break;
}
dt = dt.DeclaringTypeDefinition;
}
}
var shortType = builder.ConvertType (type);
using (var w = new System.IO.StringWriter ()) {
var visitor = new CSharpOutputVisitor (w, FormattingPolicy);

13
ICSharpCode.NRefactory.CSharp/Refactoring/TypeSystemAstBuilder.cs

@ -189,19 +189,6 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -189,19 +189,6 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
}
MemberType result = new MemberType();
if (typeDef.DeclaringTypeDefinition != null) {
// check if the declaring type is a nested type in the nested type hierarchy
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;
}
}
// Handle nested types
result.Target = ConvertTypeHelper(typeDef.DeclaringTypeDefinition, typeArguments);
} else {

4
ICSharpCode.NRefactory.Tests/CSharp/Refactoring/TypeSystemAstBuilderTests.cs

@ -160,8 +160,8 @@ namespace OtherNS { @@ -160,8 +160,8 @@ namespace OtherNS {
{
var type = new ParameterizedType(nestedClass, new[] { compilation.FindType(KnownTypeCode.Char), compilation.FindType(KnownTypeCode.String) });
Assert.AreEqual("Base<char>.Nested<string>", TypeToString(type));
Assert.AreEqual("Nested<string>", TypeToString(type, baseClass));
Assert.AreEqual("Nested<string>", TypeToString(type, nestedClass));
Assert.AreEqual("Base<char>.Nested<string>", TypeToString(type, baseClass));
Assert.AreEqual("Base<char>.Nested<string>", TypeToString(type, nestedClass));
Assert.AreEqual("Base<char>.Nested<string>", TypeToString(type, derivedClass));
}

Loading…
Cancel
Save