--- a/ProjectChecker.st Thu Jan 12 14:01:30 2012 +0100
+++ b/ProjectChecker.st Thu Jan 12 14:12:35 2012 +0100
@@ -155,6 +155,51 @@
].
"Created: / 11-01-2012 / 17:14:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+checkExtensionsListConsistency
+ "Checks whether all extensions listed in #extensionMethodNames are present
+ and if all extension methods are listed"
+
+ | extensionsListed extensionsPresent |
+
+ extensionsListed := OrderedCollection new.
+ packageDef extensionMethodNames pairWiseDo:[:cls :sel|
+ extensionsListed add: (Array with: cls with: sel)
+ ].
+ extensionsPresent := OrderedCollection new.
+ packageDef searchForExtensions do:[:each|
+ extensionsPresent add: (Array with: each mclass name with: each selector)
+ ].
+
+ (extensionsListed \ extensionsPresent) do:[:clsAndSel|
+ self problem: ('Missing %1>>%2 extension method' bindWith: clsAndSel first with: clsAndSel second)
+ description: ('An extension method %1>>%2 is listed in #extensionMethodNames but not present in image' bindWith: clsAndSel first with: clsAndSel second)
+ severity: #warning data: clsAndSel.
+ ].
+
+ (extensionsPresent \ extensionsListed) do:[:clsAndSel|
+ self problem: ('%1>>%2 extension method not in list' bindWith: clsAndSel first with: clsAndSel second)
+ description: ('An extension method %1>>%2 present in image but not listed in #extensionMethodNames' bindWith: clsAndSel first with: clsAndSel second)
+ severity: #warning data: clsAndSel.
+ ].
+
+ "Created: / 12-01-2012 / 12:31:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+checkExtensionsPrerequisites
+ "Checks whether packages of all extensions method classes are listed
+ in package prerequisites"
+
+ packageDef searchForExtensions do:[:mthd|
+ (packageDef preRequisites includes: mthd mclass package) ifFalse:[
+ self problem: ('%3 required by extension method but not in prerequisites' bindWith: mthd mclass package)
+ description: ('An extension method %1>>%2 extends class in package %3 but the package is not listed in package''s prerequisited. This leads into missing methods and strange bugs when application is compiled and run!!' bindWith: mthd class with: mthd selector with: mthd class package)
+ severity: #error data: mthd
+ ].
+ ]
+
+ "Created: / 12-01-2012 / 12:41:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!ProjectChecker methodsFor:'checks-private'!
@@ -181,9 +226,11 @@
^self
].
self checkClassListConsistency.
+ self checkExtensionsListConsistency.
+ self checkExtensionsPrerequisites.
+
"add more here..."
-
"Created: / 11-01-2012 / 16:55:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
@@ -245,12 +292,27 @@
severity := something.
! !
+!ProjectChecker::Problem methodsFor:'printing & storing'!
+
+printOn:aStream
+ "append a printed representation if the receiver to the argument, aStream"
+
+ super printOn:aStream.
+ aStream nextPut:$(.
+ severity printOn:aStream.
+ aStream nextPut:$:; space.
+ label printOn:aStream.
+ aStream nextPut:$).
+
+ "Modified: / 12-01-2012 / 13:09:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!ProjectChecker class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic3/ProjectChecker.st,v 1.2 2012-01-11 18:56:12 vrany Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/ProjectChecker.st,v 1.3 2012-01-12 13:12:35 vrany Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic3/ProjectChecker.st,v 1.2 2012-01-11 18:56:12 vrany Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/ProjectChecker.st,v 1.3 2012-01-12 13:12:35 vrany Exp $'
! !