@@ -659,7 +659,7 @@ private static void ShowNewVarList(FoundDeclaration found)
659659 known . Add ( new GeneratorItem ( label , GeneratorJobType . Constant , found . member , found . inClass ) ) ;
660660 }
661661
662- bool genProtectedDecl = ASContext . Context . Features . protectedKey != null && ASContext . CommonSettings . GenerateProtectedDeclarations ;
662+ bool genProtectedDecl = GetDefaultVisibility ( found . inClass ) == Visibility . Protected ;
663663 if ( exprAtCursor == null && exprLeft == null )
664664 {
665665 if ( genProtectedDecl ) label = TextHelper . GetString ( "ASCompletion.Label.GenerateProtectedVar" ) ;
@@ -711,7 +711,7 @@ private static void ShowNewMethodList(FoundDeclaration found)
711711 bool isInterface = ( inClass . Flags & FlagType . Interface ) > 0 ;
712712 if ( ! isInterface && result == null )
713713 {
714- if ( ASContext . Context . Features . protectedKey != null && ASContext . CommonSettings . GenerateProtectedDeclarations )
714+ if ( GetDefaultVisibility ( found . inClass ) == Visibility . Protected )
715715 label = TextHelper . GetString ( "ASCompletion.Label.GenerateProtectedFunction" ) ;
716716 else label = TextHelper . GetString ( "ASCompletion.Label.GeneratePrivateFunction" ) ;
717717 known . Add ( new GeneratorItem ( label , GeneratorJobType . Function , found . member , found . inClass ) ) ;
@@ -770,9 +770,9 @@ private static void ShowFieldFromParameter(FoundDeclaration found)
770770 if ( GetLangIsValid ( ) )
771771 {
772772 Hashtable parameters = new Hashtable ( ) ;
773- parameters [ "scope" ] = GetDefaultVisibility ( ) ;
773+ parameters [ "scope" ] = GetDefaultVisibility ( found . inClass ) ;
774774 string label ;
775- if ( ASContext . Context . Features . protectedKey != null && ASContext . CommonSettings . GenerateProtectedDeclarations )
775+ if ( GetDefaultVisibility ( found . inClass ) == Visibility . Protected )
776776 label = TextHelper . GetString ( "ASCompletion.Label.GenerateProtectedFieldFromParameter" ) ;
777777 else label = TextHelper . GetString ( "ASCompletion.Label.GeneratePrivateFieldFromParameter" ) ;
778778 known . Add ( new GeneratorItem ( label , GeneratorJobType . FieldFromPatameter , found . member , found . inClass , parameters ) ) ;
@@ -892,7 +892,7 @@ static public void GenerateJob(GeneratorJobType job, MemberModel member, ClassMo
892892 if ( latest == null )
893893 {
894894 if ( ASContext . CommonSettings . MethodsGenerationLocations == MethodsGenerationLocations . AfterSimilarAccessorMethod )
895- latest = GetLatestMemberForFunction ( inClass , GetDefaultVisibility ( ) , member ) ;
895+ latest = GetLatestMemberForFunction ( inClass , GetDefaultVisibility ( inClass ) , member ) ;
896896 if ( latest == null )
897897 latest = member ;
898898 }
@@ -902,13 +902,13 @@ static public void GenerateJob(GeneratorJobType job, MemberModel member, ClassMo
902902 string type = contextParam ;
903903 if ( job == GeneratorJobType . BasicEvent )
904904 if ( itemLabel . IndexOf ( "DataEvent" ) >= 0 ) type = "DataEvent" ; else type = "Event" ;
905- GenerateEventHandler ( contextToken , type , member , position ) ;
905+ GenerateEventHandler ( contextToken , type , member , position , inClass ) ;
906906 break ;
907907
908908 case GeneratorJobType . Delegate :
909909 position = Sci . PositionFromLine ( member . LineTo + 1 ) - ( ( Sci . EOLMode == 0 ) ? 2 : 1 ) ;
910910 Sci . SetSel ( position , position ) ;
911- GenerateDelegateMethod ( contextToken , member , position ) ;
911+ GenerateDelegateMethod ( contextToken , member , position , inClass ) ;
912912 break ;
913913
914914 case GeneratorJobType . Constant :
@@ -988,7 +988,7 @@ static public void GenerateJob(GeneratorJobType job, MemberModel member, ClassMo
988988 {
989989 if ( ! RemoveLocalDeclaration ( Sci , contextMember ) ) return ;
990990
991- latest = GetLatestMemberForVariable ( GeneratorJobType . Variable , inClass , GetDefaultVisibility ( ) , member ) ;
991+ latest = GetLatestMemberForVariable ( GeneratorJobType . Variable , inClass , GetDefaultVisibility ( inClass ) , member ) ;
992992 if ( latest == null ) return ;
993993
994994 position = FindNewVarPosition ( Sci , inClass , latest ) ;
@@ -998,7 +998,7 @@ static public void GenerateJob(GeneratorJobType job, MemberModel member, ClassMo
998998 contextMember . Flags -= FlagType . LocalVar ;
999999 if ( ( member . Flags & FlagType . Static ) > 0 )
10001000 contextMember . Flags |= FlagType . Static ;
1001- contextMember . Access = GetDefaultVisibility ( ) ;
1001+ contextMember . Access = GetDefaultVisibility ( inClass ) ;
10021002 GenerateVariable ( contextMember , position , detach ) ;
10031003
10041004 Sci . SetSel ( lookupPosition , lookupPosition ) ;
@@ -1190,7 +1190,7 @@ private static void GenerateProperty(GeneratorJobType job, MemberModel member, C
11901190 {
11911191 if ( ( member . Access & Visibility . Public ) > 0 ) // hide member
11921192 {
1193- MakePrivate ( Sci , member ) ;
1193+ MakePrivate ( Sci , member , inClass ) ;
11941194 }
11951195 if ( name == null ) // rename var with starting underscore
11961196 {
@@ -1412,7 +1412,7 @@ private static void ConvertToConst(ClassModel inClass, ScintillaControl Sci, Mem
14121412 Sci . SetSel ( position , position ) ;
14131413 }
14141414
1415- MemberModel m = NewMember ( suggestion , member , FlagType . Variable | FlagType . Constant | FlagType . Static ) ;
1415+ MemberModel m = NewMember ( suggestion , member , FlagType . Variable | FlagType . Constant | FlagType . Static , GetDefaultVisibility ( inClass ) ) ;
14161416
14171417 var features = ASContext . Context . Features ;
14181418
@@ -1812,7 +1812,7 @@ private static void GenerateFieldFromParameter(ScintillaControl Sci, MemberModel
18121812 if ( classMember . Name . Equals ( varName ) )
18131813 return ;
18141814
1815- MemberModel latest = GetLatestMemberForVariable ( GeneratorJobType . Variable , inClass , GetDefaultVisibility ( ) , new MemberModel ( ) ) ;
1815+ MemberModel latest = GetLatestMemberForVariable ( GeneratorJobType . Variable , inClass , GetDefaultVisibility ( inClass ) , new MemberModel ( ) ) ;
18161816 if ( latest == null ) return ;
18171817
18181818 int position = FindNewVarPosition ( Sci , inClass , latest ) ;
@@ -1956,7 +1956,7 @@ private static void GenerateVariableJob(GeneratorJobType job, ScintillaControl S
19561956 MemberModel latest = null ;
19571957 bool isOtherClass = false ;
19581958
1959- Visibility varVisi = job . Equals ( GeneratorJobType . Variable ) ? GetDefaultVisibility ( ) : Visibility . Public ;
1959+ Visibility varVisi = job . Equals ( GeneratorJobType . Variable ) ? GetDefaultVisibility ( inClass ) : Visibility . Public ;
19601960 FlagType ft = job . Equals ( GeneratorJobType . Constant ) ? FlagType . Constant : FlagType . Variable ;
19611961
19621962 // evaluate, if the variable (or constant) should be generated in other class
@@ -2443,7 +2443,7 @@ private static void GenerateFunctionJob(GeneratorJobType job, ScintillaControl S
24432443 MemberModel latest = null ;
24442444 bool isOtherClass = false ;
24452445
2446- Visibility funcVisi = job . Equals ( GeneratorJobType . FunctionPublic ) ? Visibility . Public : GetDefaultVisibility ( ) ;
2446+ Visibility funcVisi = job . Equals ( GeneratorJobType . FunctionPublic ) ? Visibility . Public : GetDefaultVisibility ( inClass ) ;
24472447 int wordPos = Sci . WordEndPosition ( Sci . CurrentPos , true ) ;
24482448 List < FunctionParameter > functionParameters = ParseFunctionParameters ( Sci , wordPos ) ;
24492449
@@ -2767,7 +2767,7 @@ public static void GenerateExtractMethod(ScintillaControl Sci, string NewName)
27672767 MemberModel latest = TemplateUtils . GetTemplateBlockMember ( Sci , TemplateUtils . GetBoundary ( "PrivateMethods" ) ) ;
27682768
27692769 if ( latest == null )
2770- latest = GetLatestMemberForFunction ( found . inClass , GetDefaultVisibility ( ) , found . member ) ;
2770+ latest = GetLatestMemberForFunction ( found . inClass , GetDefaultVisibility ( found . inClass ) , found . member ) ;
27712771
27722772 if ( latest == null )
27732773 latest = found . member ;
@@ -2781,7 +2781,7 @@ public static void GenerateExtractMethod(ScintillaControl Sci, string NewName)
27812781 flags |= FlagType . Static ;
27822782 }
27832783
2784- MemberModel m = new MemberModel ( NewName , context . Features . voidKey , flags , GetDefaultVisibility ( ) ) ;
2784+ MemberModel m = new MemberModel ( NewName , context . Features . voidKey , flags , GetDefaultVisibility ( found . inClass ) ) ;
27852785
27862786 template = NewLine + TemplateUtils . GetTemplate ( "Function" ) ;
27872787 template = TemplateUtils . ToDeclarationWithModifiersString ( m , template ) ;
@@ -3181,19 +3181,16 @@ private static MemberModel NewMember(string contextToken, MemberModel calledFrom
31813181 return new MemberModel ( contextToken , type , kind , visi ) ;
31823182 }
31833183
3184- private static MemberModel NewMember ( string contextToken , MemberModel calledFrom , FlagType kind )
3185- {
3186- return NewMember ( contextToken , calledFrom , kind , GetDefaultVisibility ( ) ) ;
3187- }
3188-
31893184 /// <summary>
31903185 /// Get Visibility.Private or Visibility.Protected, depending on user setting forcing the use of protected.
31913186 /// </summary>
3192- public static Visibility GetDefaultVisibility ( )
3193- {
3194- if ( ASContext . Context . Features . protectedKey != null && ASContext . CommonSettings . GenerateProtectedDeclarations )
3195- return Visibility . Protected ;
3196- else return Visibility . Private ;
3187+ private static Visibility GetDefaultVisibility ( ClassModel model )
3188+ {
3189+ if ( ASContext . Context . Features . protectedKey != null
3190+ && ASContext . CommonSettings . GenerateProtectedDeclarations
3191+ && ( model . Flags & FlagType . Final ) == 0 )
3192+ return Visibility . Protected ;
3193+ return Visibility . Private ;
31973194 }
31983195
31993196 private static void GenerateFunction ( MemberModel member , int position , bool detach , ClassModel inClass )
@@ -3248,10 +3245,10 @@ private static void GenerateVariable(MemberModel member, int position, bool deta
32483245 InsertCode ( position , result ) ;
32493246 }
32503247
3251- public static bool MakePrivate ( ScintillaControl Sci , MemberModel member )
3248+ public static bool MakePrivate ( ScintillaControl Sci , MemberModel member , ClassModel inClass )
32523249 {
32533250 ContextFeatures features = ASContext . Context . Features ;
3254- string visibility = GetPrivateKeyword ( ) ;
3251+ string visibility = GetPrivateKeyword ( inClass ) ;
32553252 if ( features . publicKey == null || visibility == null ) return false ;
32563253 Regex rePublic = new Regex ( String . Format ( @"\s*({0})\s+" , features . publicKey ) ) ;
32573254
@@ -3374,11 +3371,11 @@ private static string GetNewPropertyNameFor(MemberModel member)
33743371 return "_" + member . Name ;
33753372 }
33763373
3377- private static void GenerateDelegateMethod ( string name , MemberModel afterMethod , int position )
3374+ private static void GenerateDelegateMethod ( string name , MemberModel afterMethod , int position , ClassModel inClass )
33783375 {
33793376 ContextFeatures features = ASContext . Context . Features ;
33803377
3381- string acc = GetPrivateAccessor ( afterMethod ) ;
3378+ string acc = GetPrivateAccessor ( afterMethod , inClass ) ;
33823379 string template = TemplateUtils . GetTemplate ( "Delegate" ) ;
33833380 string args = null ;
33843381 string type = features . voidKey ;
@@ -3396,15 +3393,16 @@ private static void GenerateDelegateMethod(string name, MemberModel afterMethod,
33963393 InsertCode ( position , decl ) ;
33973394 }
33983395
3399- private static void GenerateEventHandler ( string name , string type , MemberModel afterMethod , int position )
3396+ private static void GenerateEventHandler ( string name , string type , MemberModel afterMethod , int position , ClassModel inClass )
34003397 {
34013398 ScintillaControl Sci = ASContext . CurSciControl ;
34023399 Sci . BeginUndoAction ( ) ;
34033400 try
34043401 {
34053402 int delta = 0 ;
34063403 ClassModel eventClass = ASContext . Context . ResolveType ( type , ASContext . Context . CurrentModel ) ;
3407- if ( eventClass . IsVoid ( ) )
3404+ if ( eventClass . IsVoid ( ) )
3405+ {
34083406 if ( type == "Event" )
34093407 {
34103408 List < string > typesUsed = new List < string > ( ) ;
@@ -3420,9 +3418,10 @@ private static void GenerateEventHandler(string name, string type, MemberModel a
34203418 delta = AddImportsByName ( typesUsed , Sci . LineFromPosition ( position ) ) ;
34213419 position += delta ;
34223420 Sci . SetSel ( position , position ) ;
3423- }
3421+ }
3422+ }
34243423 lookupPosition += delta ;
3425- string acc = GetPrivateAccessor ( afterMethod ) ;
3424+ string acc = GetPrivateAccessor ( afterMethod , inClass ) ;
34263425 string template = TemplateUtils . GetTemplate ( "EventHandler" ) ;
34273426 string decl = NewLine + TemplateUtils . ReplaceTemplateVariable ( template , "Modifiers" , acc ) ;
34283427 decl = TemplateUtils . ReplaceTemplateVariable ( decl , "Name" , name ) ;
@@ -3530,16 +3529,16 @@ private static string GetStaticKeyword(MemberModel member)
35303529 return string . Empty ;
35313530 }
35323531
3533- private static string GetPrivateAccessor ( MemberModel member )
3532+ private static string GetPrivateAccessor ( MemberModel member , ClassModel inClass )
35343533 {
35353534 string acc = GetStaticKeyword ( member ) ;
35363535 if ( ! string . IsNullOrEmpty ( acc ) ) acc += " " ;
3537- return acc + GetPrivateKeyword ( ) ;
3536+ return acc + GetPrivateKeyword ( inClass ) ;
35383537 }
35393538
3540- private static string GetPrivateKeyword ( )
3539+ private static string GetPrivateKeyword ( ClassModel inClass )
35413540 {
3542- if ( GetDefaultVisibility ( ) == Visibility . Protected ) return ASContext . Context . Features . protectedKey ?? "protected" ;
3541+ if ( GetDefaultVisibility ( inClass ) == Visibility . Protected ) return ASContext . Context . Features . protectedKey ?? "protected" ;
35433542 return ASContext . Context . Features . privateKey ?? "private" ;
35443543 }
35453544
0 commit comments