Tools_MethodCategoryList.st
changeset 8931 8c8ce24dadb2
parent 8867 c926be235b4b
child 8961 37e61f2e4cf1
--- a/Tools_MethodCategoryList.st	Sat Oct 10 08:01:44 2009 +0200
+++ b/Tools_MethodCategoryList.st	Sat Oct 10 08:02:02 2009 +0200
@@ -28,7 +28,8 @@
 Object subclass:#CachedMethodInfo
 	instanceVariableNames:'flags'
 	classVariableNames:'FlagObsolete FlagSendsSuper FlagIsUncommented
-		FlagIsDocumentationMethod FlagIsLongMethod'
+		FlagIsDocumentationMethod FlagIsLongMethod FlagIsExtension
+		FlagIsOverride'
 	poolDictionaries:''
 	privateIn:MethodCategoryList
 !
@@ -797,7 +798,7 @@
         on:[:whatToDo |
             |protocols 
              allProtocols superSendProtocols uncommentedProtocols obsoleteProtocols 
-             documentationProtocols longProtocols
+             documentationProtocols longProtocols extensionProtocols overrideProtocols
              noCat static notStatic classSelectorPairsAlreadyDone
              packages remainingClasses remainingCategories classesAlreadyDone noPackage|
 
@@ -818,6 +819,8 @@
                 obsoleteProtocols := protocols includes:(self class nameListEntryForObsolete).
                 documentationProtocols := protocols includes:(self class nameListEntryForDocumentation).
                 longProtocols := protocols includes:(self class nameListEntryForLong).
+                extensionProtocols := protocols includes:(self class nameListEntryForExtensions).
+                overrideProtocols := protocols includes:(self class nameListEntryForOverride).
 
 "/                packages := packageFilter value value.
 "/                (packages notNil and:[packages includes:(self class nameListEntryForALL)]) ifTrue:[
@@ -881,6 +884,14 @@
                                         longProtocols ifTrue:[
                                             info isNil ifTrue:[ info := self methodInfoFor:mthd ].
                                             includeIt := info isLongMethod ]].
+                                    includeIt ifFalse:[ 
+                                        extensionProtocols ifTrue:[
+                                            info isNil ifTrue:[ info := self methodInfoFor:mthd ].
+                                            includeIt := info isExtensionMethod ]].
+                                    includeIt ifFalse:[ 
+                                        overrideProtocols ifTrue:[
+                                            info isNil ifTrue:[ info := self methodInfoFor:mthd ].
+                                            includeIt := info isOverride ]].
 
                                     includeIt ifTrue:[
                                         (methodVisibilityHolder value == #class) ifTrue:[
@@ -1005,7 +1016,8 @@
      itemsInChangeSet itemsInRemoteChangeSet
      packageFilterOnInput packageFilter nameListEntryForALL changeSet 
      emphasizedPlus emphasisForRef emphasisForMod
-     numObsolete numSuper numUncommented numDocumentation numLong|
+     numObsolete numSuper numUncommented numDocumentation numLong numOverride
+     numExtension|
 
     generator := inGeneratorHolder value.
     generator isNil ifTrue:[ ^ #() ].
@@ -1034,6 +1046,7 @@
     variablesToHighlight := variableFilter value.
     classVarsToHighLight := filterClassVars value.
     numObsolete := numSuper := numUncommented := numDocumentation := numLong := 0.
+    numOverride := numExtension := 0.
 
     generator do:[:clsIn :catIn | 
                         |emptyProtocols clsName doHighLight doHighLightRed suppress|
@@ -1087,6 +1100,8 @@
                                                     info isUncommented ifTrue:[ numUncommented := numUncommented + 1 ].
                                                     info isDocumentationMethod ifTrue:[ numDocumentation := numDocumentation + 1 ].
                                                     info isLongMethod ifTrue:[ numLong := numLong + 1 ].
+                                                    info isExtensionMethod ifTrue:[ numExtension := numExtension + 1 ].
+                                                    info isOverride ifTrue:[ numOverride := numOverride + 1 ].
                                                 ]
                                             ].
                                         ].
@@ -1244,6 +1259,14 @@
                 categoryList add:((self class nameListEntryForObsolete bindWith:numObsolete) asText allItalic).
                 rawProtocolList add:self class nameListEntryForObsolete.
             ].
+            numExtension > 0 ifTrue:[
+                categoryList add:((self class nameListEntryForExtensions bindWith:numExtension) asText allItalic).
+                rawProtocolList add:self class nameListEntryForExtensions.
+            ].
+            numOverride > 0 ifTrue:[
+                categoryList add:((self class nameListEntryForOverride bindWith:numOverride) asText allItalic).
+                rawProtocolList add:self class nameListEntryForOverride.
+            ].
         ].
     ].
     ^ categoryList
@@ -1280,6 +1303,8 @@
                     info isUncommented:(aMethod comment isEmptyOrNil and:[aMethod isVersionMethod not]).
                     info isDocumentationMethod:( aMethod isDocumentationMethod).
                     info isLongMethod:( aMethod source asCollectionOfLines size > UserPreferences current numberOfLinesForLongMethod ).
+                    info isExtensionMethod:( aMethod package ~= aMethod mclass package ).
+                    info isOverride:( aMethod mclass superclass respondsTo:aMethod selector ).
                 ].
                 info
             ]
@@ -1452,6 +1477,8 @@
     FlagIsUncommented := 4.
     FlagIsDocumentationMethod := 8.
     FlagIsLongMethod := 16.
+    FlagIsExtension := 32.
+    FlagIsOverride := 64.
 ! !
 
 !MethodCategoryList::CachedMethodInfo class methodsFor:'instance creation'!
@@ -1476,6 +1503,16 @@
                 ifFalse:[ flags bitClear: FlagIsDocumentationMethod]
 !
 
+isExtensionMethod
+    ^ (flags ? 0) bitTest: FlagIsExtension
+!
+
+isExtensionMethod:aBoolean
+    flags := aBoolean
+                ifTrue:[ flags bitOr: FlagIsExtension ]
+                ifFalse:[ flags bitClear: FlagIsExtension]
+!
+
 isLongMethod
     ^ (flags ? 0) bitTest: FlagIsLongMethod
 !
@@ -1496,6 +1533,16 @@
                 ifFalse:[ flags bitClear: FlagObsolete]
 !
 
+isOverride
+    ^ (flags ? 0) bitTest: FlagIsOverride
+!
+
+isOverride:aBoolean
+    flags := aBoolean
+                ifTrue:[ flags bitOr: FlagIsOverride ]
+                ifFalse:[ flags bitClear: FlagIsOverride]
+!
+
 isUncommented
     ^ (flags ? 0) bitTest: FlagIsUncommented
 !
@@ -1519,11 +1566,11 @@
 !MethodCategoryList class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools_MethodCategoryList.st,v 1.34 2009-10-04 15:08:55 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools_MethodCategoryList.st,v 1.35 2009-10-10 06:02:02 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools_MethodCategoryList.st,v 1.34 2009-10-04 15:08:55 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools_MethodCategoryList.st,v 1.35 2009-10-10 06:02:02 cg Exp $'
 ! !
 
 MethodCategoryList initialize!