Project.st
changeset 4747 b642ad29477a
parent 4743 11f9e45976cb
child 4755 2d866f87d1da
--- a/Project.st	Fri Sep 17 13:36:14 1999 +0200
+++ b/Project.st	Fri Sep 17 13:36:46 1999 +0200
@@ -102,7 +102,7 @@
 
     |packages anyUnloaded|
 
-    packages := IdentitySet new.
+    packages := Dictionary new.
 
     AllProjects isNil ifTrue:[
         AllProjects := OrderedCollection new.
@@ -116,8 +116,7 @@
         aClass isMeta ifFalse:[
             (aClass isNamespace not or:[aClass == Smalltalk]) ifTrue:[
                 packageID := aClass package asSymbol.
-                (packages includes:packageID) ifFalse:[
-                    packages add:packageID.
+                (packages includesKey:packageID) ifFalse:[
 
                     "/ a new one ...
 
@@ -152,6 +151,7 @@
                         
                     prj name:nm.
                     AllProjects add:prj.
+                    packages at:packageID put:prj.
                 ].
             ].
         ].
@@ -160,11 +160,9 @@
         |packageID prj who mthdClass|
 
         packageID := aMethod package asSymbol.
-        (packages includes:packageID) ifFalse:[
+        (packages includesKey:packageID) ifFalse:[
             who := aMethod who.
             who notNil ifTrue:[ "/ skip unbound methods ...
-                packages add:packageID.
-
                 "/ a new one ...
                 prj := self new.
         "/            prj name:libName.
@@ -175,9 +173,32 @@
                 prj repositoryDirectory:'???'.
                 prj isLoaded:true.
                 AllProjects add:prj.
+                packages at:packageID put:prj.
             ]
         ]
     ].
+
+    "/ walk over binary modules, to find out directory names ...
+
+    ObjectFileLoader loadedObjectHandles do:[:h |
+        |cls prj mDir|
+
+        cls := h classes firstIfEmpty:nil.
+        cls notNil ifTrue:[
+            prj := packages at:cls package ifAbsent:nil.
+            prj notNil ifTrue:[
+                mDir := h pathName asFilename directory pathName.
+                prj directory = '???' ifTrue:[
+                    prj directory:mDir
+                ] ifFalse:[
+                    prj directory ~= mDir ifTrue:[
+                        ('Project [warning]: conflicting project directories for ' , cls package) infoPrintCR.
+                    ]
+                ]
+            ]
+        ].
+    ].
+
     self changed:#allProjects
 
 "/    |stx p|
@@ -2098,6 +2119,6 @@
 !Project class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Project.st,v 1.93 1999-09-17 10:58:30 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Project.st,v 1.94 1999-09-17 11:36:46 cg Exp $'
 ! !
 Project initialize!