Smalltalk.st
branchjv
changeset 17971 cd3a53fb927c
parent 17966 8b5df02e171f
child 17976 50c2416f962a
--- a/Smalltalk.st	Fri Sep 14 22:44:58 2012 +0100
+++ b/Smalltalk.st	Tue Sep 25 17:09:50 2012 +0100
@@ -6217,19 +6217,27 @@
     "return a actual or expected (or most wanted) filename for aClassOrClassName
      - only the base name (without directory part) and without suffix."
 
-    |cls nonMetaclass nm nameWithPrefix nameWithoutPrefix|
+    |cls nonMetaclass nm nameWithPrefix nameWithoutPrefix compatQuery |
 
 "/  This was added as an extension of libsvn - should be no longer needed
-"/    compatQuery := Smalltalk classNamed: 'SVN::CompatModeQuery'.
-"/    (compatQuery notNil
-"/      and:[compatQuery isLoaded
-"/        and:[compatQuery query not]]) ifTrue:[
-"/            nm := aClassOrClassName isBehavior
-"/                ifTrue:[aClassOrClassName name]
-"/                ifFalse:[aClassOrClassName].
-"/            nm := nm copyReplaceAll:$: with:$_.
-"/            ^nm
-"/    ].
+"/  JV@2012-09-25: but it actually is. The problem is that class filename
+"/  is stored in the class itself and used to generate abbrev.stc and
+"/  prerequisites in makefiles. But if you renamed such a stc-compiled class,
+"/  the filename remains the same, but SVN __ALWAYS__ keep container name
+"/  and class name in sync. Therefore build files gets messed up. Indeed, this
+"/  should be fixed in code that files-out the package and generates build files. 
+"/  Certainly a hack, but do not remove this until fixed elsewhere
+
+    compatQuery := Smalltalk classNamed: 'SVN::CompatModeQuery'.
+    (compatQuery notNil
+      and:[compatQuery isLoaded
+        and:[compatQuery query not]]) ifTrue:[
+            nm := aClassOrClassName isBehavior
+                ifTrue:[aClassOrClassName name]
+                ifFalse:[aClassOrClassName].
+            nm := nm copyReplaceAll:$: with:$_.
+            ^nm
+    ].
 
     aClassOrClassName isBehavior ifTrue:[
 	cls := aClassOrClassName.