Browse Source

[CodeAction] Moved GetDefaultValueExpression to BaseRefactoringContext

newNRvisualizers
Mansheng Yang 14 years ago
parent
commit
5c1418ee2e
  1. 38
      ICSharpCode.NRefactory.CSharp/Refactoring/BaseRefactoringContext.cs
  2. 34
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/CreateOverloadWithoutParameterAction.cs

38
ICSharpCode.NRefactory.CSharp/Refactoring/BaseRefactoringContext.cs

@ -162,6 +162,44 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -162,6 +162,44 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
return str;
}
public Expression GetDefaultValueExpression (AstType astType)
{
var type = ResolveType (astType);
if ((type.IsReferenceType ?? false) || type.Kind == TypeKind.Dynamic)
return new NullReferenceExpression ();
var typeDefinition = type.GetDefinition ();
if (typeDefinition != null) {
switch (typeDefinition.KnownTypeCode) {
case KnownTypeCode.Boolean:
return new PrimitiveExpression (false);
case KnownTypeCode.Char:
return new PrimitiveExpression ('\0');
case KnownTypeCode.SByte:
case KnownTypeCode.Byte:
case KnownTypeCode.Int16:
case KnownTypeCode.UInt16:
case KnownTypeCode.Int32:
case KnownTypeCode.UInt32:
case KnownTypeCode.Int64:
case KnownTypeCode.UInt64:
case KnownTypeCode.Single:
case KnownTypeCode.Double:
case KnownTypeCode.Decimal:
return new PrimitiveExpression (0);
case KnownTypeCode.NullableOfT:
return new NullReferenceExpression ();
}
if (type.Kind == TypeKind.Struct)
return new ObjectCreateExpression (astType.Clone ());
}
return new DefaultValueExpression (astType.Clone ());
}
#region IServiceProvider implementation
readonly ServiceContainer services = new ServiceContainer();

34
ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/CreateOverloadWithoutParameterAction.cs

@ -103,39 +103,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -103,39 +103,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
return astType.Member(members[0].Name);
}
// reference, dynamic
if ((type.IsReferenceType ?? false) || type.Kind == TypeKind.Dynamic)
return new NullReferenceExpression ();
var typeDefinition = type.GetDefinition ();
if (typeDefinition != null) {
switch (typeDefinition.KnownTypeCode) {
case KnownTypeCode.Boolean:
return new PrimitiveExpression (false);
case KnownTypeCode.Char:
return new PrimitiveExpression ('\0');
case KnownTypeCode.SByte:
case KnownTypeCode.Byte:
case KnownTypeCode.Int16:
case KnownTypeCode.UInt16:
case KnownTypeCode.Int32:
case KnownTypeCode.UInt32:
case KnownTypeCode.Int64:
case KnownTypeCode.UInt64:
case KnownTypeCode.Single:
case KnownTypeCode.Double:
case KnownTypeCode.Decimal:
return new PrimitiveExpression (0);
case KnownTypeCode.NullableOfT:
return new NullReferenceExpression ();
}
if (type.Kind == TypeKind.Struct)
return new ObjectCreateExpression (astType.Clone ());
}
return new DefaultValueExpression (astType.Clone ());
return context.GetDefaultValueExpression (astType);
}
}
}

Loading…
Cancel
Save