ProjectDefinition.st
changeset 10144 89b932dbdacc
parent 10140 154f52dd6821
child 10146 2033c6cea524
--- a/ProjectDefinition.st	Wed Oct 25 15:40:20 2006 +0200
+++ b/ProjectDefinition.st	Wed Oct 25 16:17:49 2006 +0200
@@ -2524,7 +2524,9 @@
 generateDependencies:whichArchitecture 
     ^ String 
         streamContents:[:s | 
-            |classNames classesLoaded classesSorted classNamesSorted putDependencyForClass archClassNames archClassesLoaded putSingleClassDependencyEntry putDependencyForExtensions|
+            |classNames classesPresent classesLoaded classesSorted classNamesSorted putDependencyForClass 
+             archClassNames archClassesLoaded 
+             putSingleClassDependencyEntry putDependencyForExtensions|
 
             putSingleClassDependencyEntry := [:cls | 
                     |sclsBaseName|
@@ -2538,6 +2540,7 @@
                                 architecture:whichArchitecture).
                     s nextPutAll:'.$(H)'.
                 ].
+
             putDependencyForClass := [:cls | 
                     |clsBaseName already|
 
@@ -2551,31 +2554,33 @@
                     s nextPutAll:': '.
                     s nextPutAll:clsBaseName.
                     s nextPutAll:'.st'.
-                    already := Set new.
-                    cls 
-                        allSuperclassesDo:[:scls | 
-                            putSingleClassDependencyEntry value:scls.
-                            already add:scls.
-                        ].
-                    cls 
-                        privateClassesDo:[:eachPrivateClass | 
-                            eachPrivateClass 
-                                allSuperclassesDo:[:scls | 
-                                    |sclsBaseName|
-
-                                    scls ~~ cls ifTrue:[
-                                        scls isPrivate ifFalse:[
-                                            (already includes:scls) ifFalse:[
-                                                putSingleClassDependencyEntry value:scls.
-                                                already add:scls.
+                    cls isLoaded ifTrue:[
+                        already := Set new.
+                        cls 
+                            allSuperclassesDo:[:scls | 
+                                putSingleClassDependencyEntry value:scls.
+                                already add:scls.
+                            ].
+                        cls 
+                            privateClassesDo:[:eachPrivateClass | 
+                                eachPrivateClass 
+                                    allSuperclassesDo:[:scls | 
+                                        |sclsBaseName|
+
+                                        scls ~~ cls ifTrue:[
+                                            scls isPrivate ifFalse:[
+                                                (already includes:scls) ifFalse:[
+                                                    putSingleClassDependencyEntry value:scls.
+                                                    already add:scls.
+                                                ].
                                             ].
                                         ].
-                                    ].
-                                ]
-                        ].
-                    s nextPutAll:' $(STCHDR)'.
-                    s cr.
+                                    ]
+                            ].
+                    ].
+                    s nextPutLine:' $(STCHDR)'.
                 ].
+
             putDependencyForExtensions := [
                     |already|
 
@@ -2600,16 +2605,20 @@
                                         ].
                                     ].
                         ].
-                    s nextPutAll:' $(STCHDR)'.
-                    s cr.
+                    s nextPutLine:' $(STCHDR)'.
                 ].
+
             classNames := self compiled_classNames_common.
-            classesLoaded := classNames 
+            classesPresent := classNames 
                         collect:[:className | Smalltalk classNamed:className]
-                        thenSelect:[:cls | cls notNil and:[cls isLoaded]].
+                        thenSelect:[:cls | cls notNil].
+            classesLoaded := classesPresent 
+                        select:[:cls | cls isLoaded].
 
             classesSorted := Class classesSortedByLoadOrder:classesLoaded.
             classesSorted do:putDependencyForClass.
+            (classesPresent select:[:cls | cls isLoaded not]) do:putDependencyForClass.
+
             self namesAndAttributesIn:(self additionalClassNamesAndAttributes)
                 do:[:className :attr | 
                     |cls|
@@ -2638,7 +2647,7 @@
 
     "Modified: / 16-08-2006 / 18:52:10 / User"
     "Created: / 14-09-2006 / 12:38:57 / cg"
-    "Modified: / 09-10-2006 / 14:23:16 / cg"
+    "Modified: / 25-10-2006 / 16:01:13 / cg"
 !
 
 generateDependencies_unix
@@ -3356,7 +3365,23 @@
     "Modified: / 23-08-2006 / 13:49:27 / cg"
 !
 
+hasAllClassesFullyLoaded
+    "return true, if all classes are present and loaded"
+
+    ^ self hasAllClassesLoaded:true
+
+    "Created: / 25-10-2006 / 16:08:25 / cg"
+!
+
 hasAllClassesLoaded
+    "return true, if all classes are present (athough, some might be autoloaded)"
+
+    ^ self hasAllClassesLoaded:false
+
+    "Modified: / 25-10-2006 / 16:08:11 / cg"
+!
+
+hasAllClassesLoaded:checkIfFullyLoaded
     |checkLoaded|
 
     checkLoaded := [:eachClassName |
@@ -3367,6 +3392,12 @@
                 Transcript showCR:(self name,' missing class: "',eachClassName,'".').
                 ^ false 
             ].
+            checkIfFullyLoaded ifTrue:[
+                cls isLoaded ifFalse:[
+                    Transcript showCR:(self name,' unloaded class: "',eachClassName,'".').
+                    ^ false 
+                ]
+            ].
         ].
 
     (self classNamesForWhich:[:nm :attr | (attr includes:#autoload)
@@ -3375,8 +3406,7 @@
 
     ^ true.
 
-    "Created: / 17-08-2006 / 00:50:01 / cg"
-    "Modified: / 25-10-2006 / 00:04:06 / cg"
+    "Created: / 25-10-2006 / 16:06:05 / cg"
 !
 
 hasAllExtensionsLoaded
@@ -3488,7 +3518,7 @@
 !ProjectDefinition class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.111 2006-10-24 22:04:24 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ProjectDefinition.st,v 1.112 2006-10-25 14:17:49 cg Exp $'
 ! !
 
 ProjectDefinition initialize!