if method is marked as example- or ignoreInPreRequisite
authorClaus Gittinger <cg@exept.de>
Fri, 05 Sep 2008 19:32:15 +0200
changeset 11147 ea616118c5b6
parent 11146 553e658691d2
child 11148 77a021f1949b
if method is marked as example- or ignoreInPreRequisite resource, then ignore its globals when checking for preRequisites.
ProjectDefinition.st
--- a/ProjectDefinition.st	Wed Sep 03 10:58:19 2008 +0200
+++ b/ProjectDefinition.st	Fri Sep 05 19:32:15 2008 +0200
@@ -3151,46 +3151,6 @@
 
 !ProjectDefinition class methodsFor:'private'!
 
-addReferencesToClassesFromGlobalsIn:aSetOfClasses to:usedClassReasons
-    aSetOfClasses
-        do:[:aClass |
-            self
-                addReferencesToClassesFromGlobalsInMethods:
-                    (aClass theNonMetaclass methodDictionary values 
-                        select:[:m | m package = aClass package])
-                to:usedClassReasons.
-
-            self
-                addReferencesToClassesFromGlobalsInMethods:
-                    (aClass theMetaclass methodDictionary values 
-                        select:[:m | m package = aClass package])
-                to:usedClassReasons.
-        ].
-
-    "Modified: / 10-10-2006 / 23:03:45 / cg"
-!
-
-addReferencesToClassesFromGlobalsInMethods:someMethods to:usedClassReasons
-    someMethods do:[:method | 
-        method usedGlobals 
-            do:[:global | 
-                |globalsName usedClass|        
-
-                globalsName := global asSymbol.
-                usedClass := Smalltalk at:globalsName. 
-                (usedClass notNil and:[usedClass isClass and:[usedClass isNameSpace not]]) ifTrue:[
-                    usedClass name == globalsName ifTrue:[ "/ skip aliases
-                        (usedClassReasons at:usedClass ifAbsentPut:[Set new])
-                            add:(usedClass name, ' - referenced by ', method mclass name,'>>',method selector)
-                    ]
-                ]
-            ]
-    ]
-
-    "Created: / 10-10-2006 / 23:00:07 / cg"
-    "Modified: / 30-05-2007 / 12:48:30 / cg"
-!
-
 classNamesAndAttributesDo: aBlock
     self namesAndAttributesIn:(self classNamesAndAttributes) do: aBlock
 
@@ -3432,70 +3392,6 @@
     "Modified: / 12-10-2006 / 20:45:39 / cg"
 !
 
-searchForPreRequisites
-    "answer a Dictionary where the keys are the prerequisite package for this package
-     and the values are a Set of reasons, why each package is required"
-
-    |requiredClasses requiredPackageReasons usedClassesWithReasons ignoredPackages|
-
-    usedClassesWithReasons := Dictionary new.
-
-    "my classes are required"
-    requiredClasses := (self searchForClassesWithProject:self package) asSet.
-
-    "my subproject's classes are required"
-    self subProjects do:[:eachProjectName | 
-        requiredClasses addAll: (self searchForClassesWithProject:eachProjectName asSymbol)
-    ].
-
-    "all superclasses of my classes and my subProject's classes are required"
-    requiredClasses do:[:cls | 
-        cls allSuperclassesDo:[:eachSuperclass |    
-            (usedClassesWithReasons at: eachSuperclass ifAbsentPut:[Set new])
-                add: (eachSuperclass name, ' - superclass of ', cls name).
-        ]
-    ].
-
-    "all classes referenced by my classes or my subproject's classes
-     are required. But:
-         only search for locals refered to by my methods (assuming that superclasses'
-         prerequisites are specified in their package)."
-
-    self addReferencesToClassesFromGlobalsIn:requiredClasses to:usedClassesWithReasons.
-    self addReferencesToClassesFromGlobalsInMethods:(self searchForExtensionsWithProject:self package) to:usedClassesWithReasons.
-
-    "don't put classes from subProjects into the required list"
-    ignoredPackages := (self siblingsAreSubProjects
-                                ifTrue:[ self searchForSiblingProjects ]
-                                ifFalse:[ self searchForSubProjects ]) asSet.
-
-    ignoredPackages add:self package.
-    ignoredPackages add:Project noProjectID.
-
-    "now map classes to packages and collect the reasons"
-    requiredPackageReasons := Dictionary new.
-    usedClassesWithReasons keysAndValuesDo:[:usedClass :reasonsPerClass | |usedClassPackage|
-        usedClassPackage := usedClass package.
-        (ignoredPackages includes:usedClassPackage) ifFalse:[
-            (requiredPackageReasons at:usedClassPackage ifAbsentPut:[Set new])
-                            addAll:reasonsPerClass.
-        ].
-    ].
-
-    ^ requiredPackageReasons
-
-    "
-     self searchForPreRequisites
-     stx_libbasic3 searchForPreRequisites
-     bosch_dapasx_Application searchForPreRequisites
-     bosch_dapasx_pav_browser searchForPreRequisites
-    "
-
-    "Created: / 07-08-2006 / 20:42:39 / fm"
-    "Modified: / 07-08-2006 / 21:56:25 / fm"
-    "Modified: / 20-09-2006 / 17:29:59 / cg"
-!
-
 searchForProjectsWhichProvideHeaderFiles
     |addPackage myPackageID requiredPackages|
 
@@ -3781,6 +3677,118 @@
     ]
 ! !
 
+!ProjectDefinition class methodsFor:'private-prerequisites'!
+
+addReferencesToClassesFromGlobalsIn:aSetOfClasses to:usedClassReasons
+    aSetOfClasses
+        do:[:aClass |
+            self
+                addReferencesToClassesFromGlobalsInMethods:
+                    (aClass theNonMetaclass methodDictionary values 
+                        select:[:m | m package = aClass package])
+                to:usedClassReasons.
+
+            self
+                addReferencesToClassesFromGlobalsInMethods:
+                    (aClass theMetaclass methodDictionary values 
+                        select:[:m | m package = aClass package])
+                to:usedClassReasons.
+        ].
+
+    "Modified: / 10-10-2006 / 23:03:45 / cg"
+!
+
+addReferencesToClassesFromGlobalsInMethods:someMethods to:usedClassReasons
+    someMethods do:[:method |
+        |resources|
+
+        resources := method resources.
+        ((resources includes:'ignoreInPrerequisites') 
+        and:[resources includes:'example']) ifFalse:[
+            method usedGlobals 
+                do:[:global | 
+                    |globalsName usedClass|        
+
+                    globalsName := global asSymbol.
+                    usedClass := Smalltalk at:globalsName. 
+                    (usedClass notNil and:[usedClass isClass and:[usedClass isNameSpace not]]) ifTrue:[
+                        usedClass name == globalsName ifTrue:[ "/ skip aliases
+                            (usedClassReasons at:usedClass ifAbsentPut:[Set new])
+                                add:(usedClass name, ' - referenced by ', method mclass name,'>>',method selector)
+                        ]
+                    ]
+                ]
+            ]
+    ]
+
+    "Created: / 10-10-2006 / 23:00:07 / cg"
+    "Modified: / 30-05-2007 / 12:48:30 / cg"
+!
+
+searchForPreRequisites
+    "answer a Dictionary where the keys are the prerequisite package for this package
+     and the values are a Set of reasons, why each package is required"
+
+    |requiredClasses requiredPackageReasons usedClassesWithReasons ignoredPackages|
+
+    usedClassesWithReasons := Dictionary new.
+
+    "my classes are required"
+    requiredClasses := (self searchForClassesWithProject:self package) asSet.
+
+    "my subproject's classes are required"
+    self subProjects do:[:eachProjectName | 
+        requiredClasses addAll: (self searchForClassesWithProject:eachProjectName asSymbol)
+    ].
+
+    "all superclasses of my classes and my subProject's classes are required"
+    requiredClasses do:[:cls | 
+        cls allSuperclassesDo:[:eachSuperclass |    
+            (usedClassesWithReasons at: eachSuperclass ifAbsentPut:[Set new])
+                add: (eachSuperclass name, ' - superclass of ', cls name).
+        ]
+    ].
+
+    "all classes referenced by my classes or my subproject's classes
+     are required. But:
+         only search for locals refered to by my methods (assuming that superclasses'
+         prerequisites are specified in their package)."
+
+    self addReferencesToClassesFromGlobalsIn:requiredClasses to:usedClassesWithReasons.
+    self addReferencesToClassesFromGlobalsInMethods:(self searchForExtensionsWithProject:self package) to:usedClassesWithReasons.
+
+    "don't put classes from subProjects into the required list"
+    ignoredPackages := (self siblingsAreSubProjects
+                                ifTrue:[ self searchForSiblingProjects ]
+                                ifFalse:[ self searchForSubProjects ]) asSet.
+
+    ignoredPackages add:self package.
+    ignoredPackages add:Project noProjectID.
+
+    "now map classes to packages and collect the reasons"
+    requiredPackageReasons := Dictionary new.
+    usedClassesWithReasons keysAndValuesDo:[:usedClass :reasonsPerClass | |usedClassPackage|
+        usedClassPackage := usedClass package.
+        (ignoredPackages includes:usedClassPackage) ifFalse:[
+            (requiredPackageReasons at:usedClassPackage ifAbsentPut:[Set new])
+                            addAll:reasonsPerClass.
+        ].
+    ].
+
+    ^ requiredPackageReasons
+
+    "
+     self searchForPreRequisites
+     stx_libbasic3 searchForPreRequisites
+     bosch_dapasx_Application searchForPreRequisites
+     bosch_dapasx_pav_browser searchForPreRequisites
+    "
+
+    "Created: / 07-08-2006 / 20:42:39 / fm"
+    "Modified: / 07-08-2006 / 21:56:25 / fm"
+    "Modified: / 20-09-2006 / 17:29:59 / cg"
+! !
+
 !ProjectDefinition class methodsFor:'queries'!
 
 definitionClassForPackage: aPackageID
@@ -4037,7 +4045,7 @@
 !ProjectDefinition class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.194 2008-07-29 12:35:42 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.195 2008-09-05 17:32:15 cg Exp $'
 ! !
 
 ProjectDefinition initialize!