@ -76,12 +76,8 @@ namespace ICSharpCode.NRefactory.CSharp
{
{
Modifiers m = 0 ;
Modifiers m = 0 ;
foreach ( CSharpModifierToken t in node . GetChildrenByRole ( ModifierRole ) ) {
foreach ( CSharpModifierToken t in node . GetChildrenByRole ( ModifierRole ) ) {
if ( t . Modifier = = Modifiers . Internal & & m . HasFlag ( Modifiers . Protected ) ) {
m = ( m & ~ Modifiers . Protected ) | Modifiers . ProtectedAndInternal ;
} else {
m | = t . Modifier ;
m | = t . Modifier ;
}
}
}
return m ;
return m ;
}
}
@ -93,42 +89,21 @@ namespace ICSharpCode.NRefactory.CSharp
if ( ( m & newValue ) ! = 0 ) {
if ( ( m & newValue ) ! = 0 ) {
if ( ( m & oldValue ) = = 0 ) {
if ( ( m & oldValue ) = = 0 ) {
// Modifier was added
// Modifier was added
if ( m = = Modifiers . ProtectedAndInternal ) {
// This modifier is a special case - it consists out of 2 tokens.
// note that protected or internal is handled by the ordering of the AllModifiers array.
var newToken = new CSharpModifierToken ( TextLocation . Empty , Modifiers . Protected ) ;
node . InsertChildAfter ( insertionPos , newToken , ModifierRole ) ;
insertionPos = newToken ;
newToken = new CSharpModifierToken ( TextLocation . Empty , Modifiers . Internal ) ;
node . InsertChildAfter ( insertionPos , newToken , ModifierRole ) ;
insertionPos = newToken ;
} else {
var newToken = new CSharpModifierToken ( TextLocation . Empty , m ) ;
var newToken = new CSharpModifierToken ( TextLocation . Empty , m ) ;
node . InsertChildAfter ( insertionPos , newToken , ModifierRole ) ;
node . InsertChildAfter ( insertionPos , newToken , ModifierRole ) ;
insertionPos = newToken ;
insertionPos = newToken ;
}
} else {
} else {
// Modifier already exists
// Modifier already exists
if ( m = = Modifiers . ProtectedAndInternal ) {
insertionPos = node . GetChildrenByRole ( ModifierRole ) . First ( t = > t . Modifier = = Modifiers . Internal ) ;
} else {
insertionPos = node . GetChildrenByRole ( ModifierRole ) . First ( t = > t . Modifier = = m ) ;
insertionPos = node . GetChildrenByRole ( ModifierRole ) . First ( t = > t . Modifier = = m ) ;
}
}
}
} else {
} else {
if ( ( m & oldValue ) ! = 0 ) {
if ( ( m & oldValue ) ! = 0 ) {
// Modifier was removed
// Modifier was removed
if ( m = = Modifiers . ProtectedAndInternal ) {
node . GetChildrenByRole ( ModifierRole ) . First ( t = > t . Modifier = = Modifiers . Protected ) . Remove ( ) ;
node . GetChildrenByRole ( ModifierRole ) . First ( t = > t . Modifier = = Modifiers . Internal ) . Remove ( ) ;
} else {
node . GetChildrenByRole ( ModifierRole ) . First ( t = > t . Modifier = = m ) . Remove ( ) ;
node . GetChildrenByRole ( ModifierRole ) . First ( t = > t . Modifier = = m ) . Remove ( ) ;
}
}
}
}
}
}
}
}
}
protected bool MatchAttributesAndModifiers ( EntityDeclaration o , PatternMatching . Match match )
protected bool MatchAttributesAndModifiers ( EntityDeclaration o , PatternMatching . Match match )
{
{