Browse Source

finish InsertSpecialsVisitor

newNRILSpyDebugger
Siegfried Pammer 13 years ago
parent
commit
2a785892ca
  1. 26
      src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp/Ast/Expressions/PrimitiveExpression.cs
  2. 4
      src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp/OutputVisitor/CSharpAmbience.cs
  3. 27
      src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp/OutputVisitor/CSharpOutputVisitor.cs
  4. 2
      src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/UseStringFormatAction.cs

26
src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp/Ast/Expressions/PrimitiveExpression.cs

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
//
// PrimitiveExpression.cs
//
//
// Author:
// Mike Krüger <mkrueger@novell.com>
//
@ -58,20 +58,24 @@ namespace ICSharpCode.NRefactory.CSharp @@ -58,20 +58,24 @@ namespace ICSharpCode.NRefactory.CSharp
public object Value {
get { return this.value; }
set {
ThrowIfFrozen();
set {
ThrowIfFrozen();
this.value = value;
literalValue = null;
}
}
public string LiteralValue {
get { return literalValue; }
set {
if (value == null)
throw new ArgumentNullException();
ThrowIfFrozen();
literalValue = value;
}
}
public void SetValue(object value, string literalValue)
{
if (value == null)
throw new ArgumentNullException();
ThrowIfFrozen();
this.value = value;
this.literalValue = literalValue;
}
public PrimitiveExpression (object value)
@ -97,7 +101,7 @@ namespace ICSharpCode.NRefactory.CSharp @@ -97,7 +101,7 @@ namespace ICSharpCode.NRefactory.CSharp
{
visitor.VisitPrimitiveExpression (this);
}
public override T AcceptVisitor<T> (IAstVisitor<T> visitor)
{
return visitor.VisitPrimitiveExpression (this);
@ -119,7 +123,7 @@ namespace ICSharpCode.NRefactory.CSharp @@ -119,7 +123,7 @@ namespace ICSharpCode.NRefactory.CSharp
switch (*p) {
case '\r':
char* nextp = p + 1;
if (nextp < endPtr && *nextp == '\n')
if (nextp < endPtr && *nextp == '\n')
p++;
goto case '\n';
case '\n':

4
src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp/OutputVisitor/CSharpAmbience.cs

@ -163,7 +163,7 @@ namespace ICSharpCode.NRefactory.CSharp @@ -163,7 +163,7 @@ namespace ICSharpCode.NRefactory.CSharp
void WriteTypeDeclarationName(ITypeDefinition typeDef, ITokenWriter writer, CSharpFormattingOptions formattingPolicy)
{
TypeSystemAstBuilder astBuilder = CreateAstBuilder();
TypeDeclaration node = (TypeDeclaration)astBuilder.ConvertEntity(typeDef);
EntityDeclaration node = astBuilder.ConvertEntity(typeDef);
if (typeDef.DeclaringTypeDefinition != null) {
WriteTypeDeclarationName(typeDef.DeclaringTypeDefinition, writer, formattingPolicy);
writer.WriteToken(Roles.Dot, ".");
@ -226,7 +226,7 @@ namespace ICSharpCode.NRefactory.CSharp @@ -226,7 +226,7 @@ namespace ICSharpCode.NRefactory.CSharp
}
break;
default:
writer.WriteIdentifier(node.NameToken);
writer.WriteIdentifier(Identifier.Create(member.Name));
break;
}
if ((ConversionFlags & ConversionFlags.ShowTypeParameterList) == ConversionFlags.ShowTypeParameterList && member.SymbolKind == SymbolKind.Method) {

27
src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp/OutputVisitor/CSharpOutputVisitor.cs

@ -46,7 +46,7 @@ namespace ICSharpCode.NRefactory.CSharp @@ -46,7 +46,7 @@ namespace ICSharpCode.NRefactory.CSharp
if (formattingPolicy == null) {
throw new ArgumentNullException ("formattingPolicy");
}
this.writer = new InsertRequiredSpacesDecorator(new TextWriterTokenWriter(textWriter));
this.writer = new InsertSpecialsDecorator(new InsertRequiredSpacesDecorator(new TextWriterTokenWriter(textWriter)));
this.policy = formattingPolicy;
}
@ -58,7 +58,7 @@ namespace ICSharpCode.NRefactory.CSharp @@ -58,7 +58,7 @@ namespace ICSharpCode.NRefactory.CSharp
if (formattingPolicy == null) {
throw new ArgumentNullException ("formattingPolicy");
}
this.writer = new InsertRequiredSpacesDecorator(writer);
this.writer = new InsertSpecialsDecorator(new InsertRequiredSpacesDecorator(writer));
this.policy = formattingPolicy;
}
@ -907,7 +907,7 @@ namespace ICSharpCode.NRefactory.CSharp @@ -907,7 +907,7 @@ namespace ICSharpCode.NRefactory.CSharp
if (!string.IsNullOrEmpty(primitiveExpression.LiteralValue)) {
writer.WriteToken(primitiveExpression.Role, primitiveExpression.LiteralValue);
} else {
TextWriterTokenWriter.PrintPrimitiveValue(primitiveExpression.Value);
writer.WritePrimitiveValue(primitiveExpression.Value);
}
EndNode(primitiveExpression);
}
@ -2480,6 +2480,7 @@ namespace ICSharpCode.NRefactory.CSharp @@ -2480,6 +2480,7 @@ namespace ICSharpCode.NRefactory.CSharp
class InsertSpecialsDecorator : DecoratingTokenWriter
{
readonly Stack<AstNode> positionStack = new Stack<AstNode>();
int visitorWroteNewLine = 0;
public InsertSpecialsDecorator(ITokenWriter writer)
: base(writer)
@ -2523,6 +2524,13 @@ namespace ICSharpCode.NRefactory.CSharp @@ -2523,6 +2524,13 @@ namespace ICSharpCode.NRefactory.CSharp
base.WriteToken(role, token);
}
public override void NewLine()
{
if (visitorWroteNewLine >= 0)
base.NewLine();
visitorWroteNewLine++;
}
#region WriteSpecials
/// <summary>
/// Writes all specials from start to end (exclusive). Does not touch the positionStack.
@ -2532,14 +2540,17 @@ namespace ICSharpCode.NRefactory.CSharp @@ -2532,14 +2540,17 @@ namespace ICSharpCode.NRefactory.CSharp
for (AstNode pos = start; pos != end; pos = pos.NextSibling) {
if (pos.Role == Roles.Comment) {
var node = (Comment)pos;
WriteComment(node.CommentType, node.Content);
}
if (pos.Role == Roles.NewLine) {
NewLine();
base.WriteComment(node.CommentType, node.Content);
}
// see CSharpOutputVisitor.VisitNewLine()
// if (pos.Role == Roles.NewLine) {
// if (visitorWroteNewLine <= 0)
// base.NewLine();
// visitorWroteNewLine--;
// }
if (pos.Role == Roles.PreProcessorDirective) {
var node = (PreProcessorDirective)pos;
WritePreProcessorDirective(node.Type, node.Argument);
base.WritePreProcessorDirective(node.Type, node.Argument);
}
}
}

2
src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/UseStringFormatAction.cs

@ -94,7 +94,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -94,7 +94,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
format.Append ('"');
if (verbatim)
format.Insert (0, '@');
formatLiteral.LiteralValue = format.ToString ();
formatLiteral.SetValue(format.ToString(), format.ToString());
script.Replace (expr, formatInvocation);
}, node);
}

Loading…
Cancel
Save