Browse Source

do not print method bodies in Interfaces

newNRvisualizers
Siegfried Pammer 14 years ago
parent
commit
1e2bce63a4
  1. 47
      ICSharpCode.NRefactory.VB/OutputVisitor/OutputVisitor.cs
  2. 41
      ICSharpCode.NRefactory.VB/Visitors/CSharpToVBConverterVisitor.cs

47
ICSharpCode.NRefactory.VB/OutputVisitor/OutputVisitor.cs

@ -526,15 +526,17 @@ namespace ICSharpCode.NRefactory.VB
} }
WriteHandlesClause(methodDeclaration.HandlesClause); WriteHandlesClause(methodDeclaration.HandlesClause);
WriteImplementsClause(methodDeclaration.ImplementsClause); WriteImplementsClause(methodDeclaration.ImplementsClause);
NewLine(); if (!methodDeclaration.Body.IsNull) {
Indent(); NewLine();
WriteBlock(methodDeclaration.Body); Indent();
Unindent(); WriteBlock(methodDeclaration.Body);
WriteKeyword("End"); Unindent();
if (methodDeclaration.IsSub) WriteKeyword("End");
WriteKeyword("Sub"); if (methodDeclaration.IsSub)
else WriteKeyword("Sub");
WriteKeyword("Function"); else
WriteKeyword("Function");
}
NewLine(); NewLine();
return EndNode(methodDeclaration); return EndNode(methodDeclaration);
@ -1317,20 +1319,25 @@ namespace ICSharpCode.NRefactory.VB
WriteAttributes(propertyDeclaration.ReturnTypeAttributes); WriteAttributes(propertyDeclaration.ReturnTypeAttributes);
propertyDeclaration.ReturnType.AcceptVisitor(this, data); propertyDeclaration.ReturnType.AcceptVisitor(this, data);
} }
NewLine();
Indent();
if (!propertyDeclaration.Getter.IsNull) { bool needsBody = !propertyDeclaration.Getter.Body.IsNull || !propertyDeclaration.Setter.Body.IsNull;
propertyDeclaration.Getter.AcceptVisitor(this, data);
}
if (!propertyDeclaration.Setter.IsNull) { if (needsBody) {
propertyDeclaration.Setter.AcceptVisitor(this, data); NewLine();
Indent();
if (!propertyDeclaration.Getter.Body.IsNull) {
propertyDeclaration.Getter.AcceptVisitor(this, data);
}
if (!propertyDeclaration.Setter.Body.IsNull) {
propertyDeclaration.Setter.AcceptVisitor(this, data);
}
Unindent();
WriteKeyword("End");
WriteKeyword("Property");
} }
Unindent();
WriteKeyword("End");
WriteKeyword("Property");
NewLine(); NewLine();
return EndNode(propertyDeclaration); return EndNode(propertyDeclaration);

41
ICSharpCode.NRefactory.VB/Visitors/CSharpToVBConverterVisitor.cs

@ -272,7 +272,7 @@ namespace ICSharpCode.NRefactory.VB.Visitors
var expr = new ObjectCreationExpression((AstType)objectCreateExpression.Type.AcceptVisitor(this, data)); var expr = new ObjectCreationExpression((AstType)objectCreateExpression.Type.AcceptVisitor(this, data));
ConvertNodes(objectCreateExpression.Arguments, expr.Arguments); ConvertNodes(objectCreateExpression.Arguments, expr.Arguments);
if (!objectCreateExpression.Initializer.IsNull) if (!objectCreateExpression.Initializer.IsNull)
expr.Initializer = (ArrayInitializerExpression)objectCreateExpression.Initializer.AcceptVisitor(this, data); expr.Initializer = (ArrayInitializerExpression)objectCreateExpression.Initializer.AcceptVisitor(this, data);
return EndNode(objectCreateExpression, expr); return EndNode(objectCreateExpression, expr);
} }
@ -1101,10 +1101,49 @@ namespace ICSharpCode.NRefactory.VB.Visitors
mod |= Modifiers.Friend; mod |= Modifiers.Friend;
if ((modifier & CSharp.Modifiers.Private) == CSharp.Modifiers.Private) if ((modifier & CSharp.Modifiers.Private) == CSharp.Modifiers.Private)
mod |= Modifiers.Private; mod |= Modifiers.Private;
if (container is CSharp.IndexerDeclaration)
mod |= Modifiers.Default;
bool writeable = IsWriteableProperty(container);
bool readable = IsReadableProperty(container);
if (writeable && !readable)
mod |= Modifiers.WriteOnly;
if (readable && !writeable)
mod |= Modifiers.ReadOnly;
return mod; return mod;
} }
bool IsReadableProperty(ICSharpCode.NRefactory.CSharp.AstNode container)
{
if (container is CSharp.IndexerDeclaration) {
var i = container as CSharp.IndexerDeclaration;
return !i.Getter.IsNull;
}
if (container is CSharp.PropertyDeclaration) {
var p = container as CSharp.PropertyDeclaration;
return !p.Getter.IsNull;
}
return false;
}
bool IsWriteableProperty(ICSharpCode.NRefactory.CSharp.AstNode container)
{
if (container is CSharp.IndexerDeclaration) {
var i = container as CSharp.IndexerDeclaration;
return !i.Setter.IsNull;
}
if (container is CSharp.PropertyDeclaration) {
var p = container as CSharp.PropertyDeclaration;
return !p.Setter.IsNull;
}
return false;
}
public AstNode VisitIdentifier(CSharp.Identifier identifier, object data) public AstNode VisitIdentifier(CSharp.Identifier identifier, object data)
{ {
var ident = new Identifier(identifier.Name, ConvertLocation(identifier.StartLocation)); var ident = new Identifier(identifier.Name, ConvertLocation(identifier.StartLocation));

Loading…
Cancel
Save