@ -489,12 +489,15 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor
}
}
}
}
protected virtual void WriteModifiers ( IEnumerable < CSharp ModifierToken > modifierToken s )
protected virtual void WriteModifiers ( Modifiers modifiers )
{
{
foreach ( CSharpModifierToken modifier in modifierToken s)
foreach ( Modifiers modifier in CSharpModifierToken . AllModifier s)
{
{
modifier . AcceptVisitor ( this ) ;
if ( ( modifiers & modifier ) = = modifier )
Space ( ) ;
{
WriteKeyword ( CSharpModifierToken . GetModifierName ( modifier ) , EntityDeclaration . ModifierRole ) ;
Space ( ) ;
}
}
}
}
}
@ -1556,7 +1559,7 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor
{
{
StartNode ( delegateDeclaration ) ;
StartNode ( delegateDeclaration ) ;
WriteAttributes ( delegateDeclaration . Attributes ) ;
WriteAttributes ( delegateDeclaration . Attributes ) ;
WriteModifiers ( delegateDeclaration . ModifierToken s ) ;
WriteModifiers ( delegateDeclaration . Modifiers ) ;
WriteKeyword ( Roles . DelegateKeyword ) ;
WriteKeyword ( Roles . DelegateKeyword ) ;
delegateDeclaration . ReturnType . AcceptVisitor ( this ) ;
delegateDeclaration . ReturnType . AcceptVisitor ( this ) ;
Space ( ) ;
Space ( ) ;
@ -1604,7 +1607,7 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor
{
{
StartNode ( typeDeclaration ) ;
StartNode ( typeDeclaration ) ;
WriteAttributes ( typeDeclaration . Attributes ) ;
WriteAttributes ( typeDeclaration . Attributes ) ;
WriteModifiers ( typeDeclaration . ModifierToken s ) ;
WriteModifiers ( typeDeclaration . Modifiers ) ;
BraceStyle braceStyle ;
BraceStyle braceStyle ;
switch ( typeDeclaration . ClassType )
switch ( typeDeclaration . ClassType )
{
{
@ -2250,7 +2253,7 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor
public virtual void VisitVariableDeclarationStatement ( VariableDeclarationStatement variableDeclarationStatement )
public virtual void VisitVariableDeclarationStatement ( VariableDeclarationStatement variableDeclarationStatement )
{
{
StartNode ( variableDeclarationStatement ) ;
StartNode ( variableDeclarationStatement ) ;
WriteModifiers ( variableDeclarationStatement . GetChildrenByRole ( VariableDeclarationStatement . ModifierRole ) ) ;
WriteModifiers ( variableDeclarationStatement . Modifiers ) ;
variableDeclarationStatement . Type . AcceptVisitor ( this ) ;
variableDeclarationStatement . Type . AcceptVisitor ( this ) ;
Space ( ) ;
Space ( ) ;
WriteCommaSeparatedList ( variableDeclarationStatement . Variables ) ;
WriteCommaSeparatedList ( variableDeclarationStatement . Variables ) ;
@ -2306,7 +2309,7 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor
{
{
StartNode ( accessor ) ;
StartNode ( accessor ) ;
WriteAttributes ( accessor . Attributes ) ;
WriteAttributes ( accessor . Attributes ) ;
WriteModifiers ( accessor . ModifierToken s ) ;
WriteModifiers ( accessor . Modifiers ) ;
BraceStyle style = policy . StatementBraceStyle ;
BraceStyle style = policy . StatementBraceStyle ;
if ( accessor . Role = = PropertyDeclaration . GetterRole )
if ( accessor . Role = = PropertyDeclaration . GetterRole )
{
{
@ -2343,7 +2346,7 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor
{
{
StartNode ( constructorDeclaration ) ;
StartNode ( constructorDeclaration ) ;
WriteAttributes ( constructorDeclaration . Attributes ) ;
WriteAttributes ( constructorDeclaration . Attributes ) ;
WriteModifiers ( constructorDeclaration . ModifierToken s ) ;
WriteModifiers ( constructorDeclaration . Modifiers ) ;
TypeDeclaration type = constructorDeclaration . Parent as TypeDeclaration ;
TypeDeclaration type = constructorDeclaration . Parent as TypeDeclaration ;
if ( type ! = null & & type . Name ! = constructorDeclaration . Name )
if ( type ! = null & & type . Name ! = constructorDeclaration . Name )
WriteIdentifier ( ( Identifier ) type . NameToken . Clone ( ) ) ;
WriteIdentifier ( ( Identifier ) type . NameToken . Clone ( ) ) ;
@ -2384,8 +2387,8 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor
{
{
StartNode ( destructorDeclaration ) ;
StartNode ( destructorDeclaration ) ;
WriteAttributes ( destructorDeclaration . Attributes ) ;
WriteAttributes ( destructorDeclaration . Attributes ) ;
WriteModifiers ( destructorDeclaration . ModifierToken s ) ;
WriteModifiers ( destructorDeclaration . Modifiers ) ;
if ( destructorDeclaration . ModifierTokens . Any ( ) )
if ( destructorDeclaration . Modifiers ! = Modifiers . None )
{
{
Space ( ) ;
Space ( ) ;
}
}
@ -2406,7 +2409,7 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor
{
{
StartNode ( enumMemberDeclaration ) ;
StartNode ( enumMemberDeclaration ) ;
WriteAttributes ( enumMemberDeclaration . Attributes ) ;
WriteAttributes ( enumMemberDeclaration . Attributes ) ;
WriteModifiers ( enumMemberDeclaration . ModifierToken s ) ;
WriteModifiers ( enumMemberDeclaration . Modifiers ) ;
WriteIdentifier ( enumMemberDeclaration . NameToken ) ;
WriteIdentifier ( enumMemberDeclaration . NameToken ) ;
if ( ! enumMemberDeclaration . Initializer . IsNull )
if ( ! enumMemberDeclaration . Initializer . IsNull )
{
{
@ -2422,7 +2425,7 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor
{
{
StartNode ( extensionDeclaration ) ;
StartNode ( extensionDeclaration ) ;
WriteAttributes ( extensionDeclaration . Attributes ) ;
WriteAttributes ( extensionDeclaration . Attributes ) ;
WriteModifiers ( extensionDeclaration . ModifierToken s ) ;
WriteModifiers ( extensionDeclaration . Modifiers ) ;
WriteKeyword ( ExtensionDeclaration . ExtensionKeywordRole ) ;
WriteKeyword ( ExtensionDeclaration . ExtensionKeywordRole ) ;
WriteTypeParameters ( extensionDeclaration . TypeParameters ) ;
WriteTypeParameters ( extensionDeclaration . TypeParameters ) ;
Space ( policy . SpaceBeforeMethodDeclarationParentheses ) ;
Space ( policy . SpaceBeforeMethodDeclarationParentheses ) ;
@ -2452,7 +2455,7 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor
{
{
StartNode ( eventDeclaration ) ;
StartNode ( eventDeclaration ) ;
WriteAttributes ( eventDeclaration . Attributes ) ;
WriteAttributes ( eventDeclaration . Attributes ) ;
WriteModifiers ( eventDeclaration . ModifierToken s ) ;
WriteModifiers ( eventDeclaration . Modifiers ) ;
WriteKeyword ( EventDeclaration . EventKeywordRole ) ;
WriteKeyword ( EventDeclaration . EventKeywordRole ) ;
eventDeclaration . ReturnType . AcceptVisitor ( this ) ;
eventDeclaration . ReturnType . AcceptVisitor ( this ) ;
Space ( ) ;
Space ( ) ;
@ -2465,7 +2468,7 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor
{
{
StartNode ( customEventDeclaration ) ;
StartNode ( customEventDeclaration ) ;
WriteAttributes ( customEventDeclaration . Attributes ) ;
WriteAttributes ( customEventDeclaration . Attributes ) ;
WriteModifiers ( customEventDeclaration . ModifierToken s ) ;
WriteModifiers ( customEventDeclaration . Modifiers ) ;
WriteKeyword ( CustomEventDeclaration . EventKeywordRole ) ;
WriteKeyword ( CustomEventDeclaration . EventKeywordRole ) ;
customEventDeclaration . ReturnType . AcceptVisitor ( this ) ;
customEventDeclaration . ReturnType . AcceptVisitor ( this ) ;
Space ( ) ;
Space ( ) ;
@ -2489,7 +2492,7 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor
{
{
StartNode ( fieldDeclaration ) ;
StartNode ( fieldDeclaration ) ;
WriteAttributes ( fieldDeclaration . Attributes ) ;
WriteAttributes ( fieldDeclaration . Attributes ) ;
WriteModifiers ( fieldDeclaration . ModifierToken s ) ;
WriteModifiers ( fieldDeclaration . Modifiers ) ;
fieldDeclaration . ReturnType . AcceptVisitor ( this ) ;
fieldDeclaration . ReturnType . AcceptVisitor ( this ) ;
Space ( ) ;
Space ( ) ;
WriteCommaSeparatedList ( fieldDeclaration . Variables ) ;
WriteCommaSeparatedList ( fieldDeclaration . Variables ) ;
@ -2501,7 +2504,7 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor
{
{
StartNode ( fixedFieldDeclaration ) ;
StartNode ( fixedFieldDeclaration ) ;
WriteAttributes ( fixedFieldDeclaration . Attributes ) ;
WriteAttributes ( fixedFieldDeclaration . Attributes ) ;
WriteModifiers ( fixedFieldDeclaration . ModifierToken s ) ;
WriteModifiers ( fixedFieldDeclaration . Modifiers ) ;
WriteKeyword ( FixedFieldDeclaration . FixedKeywordRole ) ;
WriteKeyword ( FixedFieldDeclaration . FixedKeywordRole ) ;
Space ( ) ;
Space ( ) ;
fixedFieldDeclaration . ReturnType . AcceptVisitor ( this ) ;
fixedFieldDeclaration . ReturnType . AcceptVisitor ( this ) ;
@ -2530,7 +2533,7 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor
{
{
StartNode ( indexerDeclaration ) ;
StartNode ( indexerDeclaration ) ;
WriteAttributes ( indexerDeclaration . Attributes ) ;
WriteAttributes ( indexerDeclaration . Attributes ) ;
WriteModifiers ( indexerDeclaration . ModifierToken s ) ;
WriteModifiers ( indexerDeclaration . Modifiers ) ;
indexerDeclaration . ReturnType . AcceptVisitor ( this ) ;
indexerDeclaration . ReturnType . AcceptVisitor ( this ) ;
Space ( ) ;
Space ( ) ;
WritePrivateImplementationType ( indexerDeclaration . PrivateImplementationType ) ;
WritePrivateImplementationType ( indexerDeclaration . PrivateImplementationType ) ;
@ -2575,7 +2578,7 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor
{
{
StartNode ( methodDeclaration ) ;
StartNode ( methodDeclaration ) ;
WriteAttributes ( methodDeclaration . Attributes ) ;
WriteAttributes ( methodDeclaration . Attributes ) ;
WriteModifiers ( methodDeclaration . ModifierToken s ) ;
WriteModifiers ( methodDeclaration . Modifiers ) ;
methodDeclaration . ReturnType . AcceptVisitor ( this ) ;
methodDeclaration . ReturnType . AcceptVisitor ( this ) ;
Space ( ) ;
Space ( ) ;
WritePrivateImplementationType ( methodDeclaration . PrivateImplementationType ) ;
WritePrivateImplementationType ( methodDeclaration . PrivateImplementationType ) ;
@ -2595,7 +2598,7 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor
{
{
StartNode ( operatorDeclaration ) ;
StartNode ( operatorDeclaration ) ;
WriteAttributes ( operatorDeclaration . Attributes ) ;
WriteAttributes ( operatorDeclaration . Attributes ) ;
WriteModifiers ( operatorDeclaration . ModifierToken s ) ;
WriteModifiers ( operatorDeclaration . Modifiers ) ;
if ( operatorDeclaration . OperatorType = = OperatorType . Explicit | | operatorDeclaration . OperatorType = = OperatorType . CheckedExplicit )
if ( operatorDeclaration . OperatorType = = OperatorType . Explicit | | operatorDeclaration . OperatorType = = OperatorType . CheckedExplicit )
{
{
WriteKeyword ( OperatorDeclaration . ExplicitRole ) ;
WriteKeyword ( OperatorDeclaration . ExplicitRole ) ;
@ -2695,7 +2698,7 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor
{
{
StartNode ( propertyDeclaration ) ;
StartNode ( propertyDeclaration ) ;
WriteAttributes ( propertyDeclaration . Attributes ) ;
WriteAttributes ( propertyDeclaration . Attributes ) ;
WriteModifiers ( propertyDeclaration . ModifierToken s ) ;
WriteModifiers ( propertyDeclaration . Modifiers ) ;
propertyDeclaration . ReturnType . AcceptVisitor ( this ) ;
propertyDeclaration . ReturnType . AcceptVisitor ( this ) ;
Space ( ) ;
Space ( ) ;
WritePrivateImplementationType ( propertyDeclaration . PrivateImplementationType ) ;
WritePrivateImplementationType ( propertyDeclaration . PrivateImplementationType ) ;
@ -2901,7 +2904,7 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor
{
{
StartNode ( arraySpecifier ) ;
StartNode ( arraySpecifier ) ;
WriteToken ( Roles . LBracket ) ;
WriteToken ( Roles . LBracket ) ;
foreach ( var comma in arraySpecifier . GetChildrenByRole ( Roles . Comma ) )
for ( int i = 0 ; i < arraySpecifier . Dimensions - 1 ; i + + )
{
{
writer . WriteToken ( Roles . Comma , "," ) ;
writer . WriteToken ( Roles . Comma , "," ) ;
}
}