@@ -6,27 +6,27 @@ namespace Xamarin.SourceWriter
66{
77 public class FieldWriter : ISourceWriter
88 {
9- private Visibility visibility ;
9+ Visibility visibility ;
1010
1111 public string Name { get ; set ; }
1212 public TypeReferenceWriter Type { get ; set ; }
1313 public List < string > Comments { get ; } = new List < string > ( ) ;
1414 public List < AttributeWriter > Attributes { get ; } = new List < AttributeWriter > ( ) ;
15- public bool IsPublic { get => visibility == Visibility . Public ; set => visibility = value ? Visibility . Public : Visibility . Default ; }
15+ public bool IsPublic { get => visibility . HasFlag ( Visibility . Public ) ; set => visibility = value ? Visibility . Public : Visibility . Default ; }
1616 public bool UseExplicitPrivateKeyword { get ; set ; }
17- public bool IsInternal { get => visibility == Visibility . Internal ; set => visibility = value ? Visibility . Internal : Visibility . Default ; }
17+ public bool IsInternal { get => visibility . HasFlag ( Visibility . Internal ) ; set => visibility = value ? Visibility . Internal : Visibility . Default ; }
1818 public bool IsConst { get ; set ; }
1919 public string Value { get ; set ; }
2020 public bool IsStatic { get ; set ; }
2121 public bool IsReadonly { get ; set ; }
22- public bool IsPrivate { get => visibility == Visibility . Private ; set => visibility = value ? Visibility . Private : Visibility . Default ; }
23- public bool IsProtected { get => visibility == Visibility . Protected ; set => visibility = value ? Visibility . Protected : Visibility . Default ; }
22+ public bool IsPrivate { get => visibility . HasFlag ( Visibility . Private ) ; set => visibility = value ? Visibility . Private : Visibility . Default ; }
23+ public bool IsProtected { get => visibility . HasFlag ( Visibility . Protected ) ; set => visibility = value ? Visibility . Protected : Visibility . Default ; }
2424 public int Priority { get ; set ; }
2525 public bool IsShadow { get ; set ; }
2626
2727 public void SetVisibility ( string visibility )
2828 {
29- switch ( visibility ? . ToLowerInvariant ( ) ) {
29+ switch ( visibility ? . ToLowerInvariant ( ) . Trim ( ) ) {
3030 case "public" :
3131 IsPublic = true ;
3232 break ;
@@ -39,6 +39,9 @@ public void SetVisibility (string visibility)
3939 case "private" :
4040 IsPrivate = true ;
4141 break ;
42+ default :
43+ Console . WriteLine ( $ "Unrecognized field visibility: `{ visibility } `") ;
44+ break ;
4245 }
4346 }
4447
@@ -65,6 +68,8 @@ public virtual void WriteSignature (CodeWriter writer)
6568 {
6669 if ( IsPublic )
6770 writer . Write ( "public " ) ;
71+ else if ( IsProtected )
72+ writer . Write ( "protected " ) ;
6873 else if ( IsInternal )
6974 writer . Write ( "internal " ) ;
7075 else if ( IsPrivate )
0 commit comments