oops - care for the case, where the superclasses namespace
is different from mine (but not Smalltalk), when generating
a class definition (which is not a full-path definition)
--- a/Class.st Tue Mar 09 15:59:17 1999 +0100
+++ b/Class.st Tue Mar 09 22:44:58 1999 +0100
@@ -1760,65 +1760,73 @@
owner := self owningClass.
owner isNil ifTrue:[
- ns := self nameSpace.
+ ns := self nameSpace.
] ifFalse:[
- ns := self topOwningClass nameSpace
+ ns := self topOwningClass nameSpace
].
fullName := FileOutNameSpaceQuerySignal raise == true.
((owner isNil and:[fullName not])
or:[owner notNil and:[forceNameSpace and:[fullName not]]]) ifTrue:[
- (ns notNil and:[ns ~~ Smalltalk]) ifTrue:[
- nsName := ns name.
- (nsName includes:$:) ifTrue:[
- nsName := '''' , nsName , ''''
- ].
+ (ns notNil and:[ns ~~ Smalltalk]) ifTrue:[
+ nsName := ns name.
+ (nsName includes:$:) ifTrue:[
+ nsName := '''' , nsName , ''''
+ ].
"/ aStream nextPutLine:'"{ NameSpace: ' , nsName , ' }"'; cr.
- aStream nextPutAll:'"{ NameSpace: '.
- syntaxHilighting ifTrue:[aStream bold].
- aStream nextPutAll:nsName.
- syntaxHilighting ifTrue:[aStream normal].
- aStream nextPutAll:' }"'; cr; cr.
- ]
+ aStream nextPutAll:'"{ NameSpace: '.
+ syntaxHilighting ifTrue:[aStream bold].
+ aStream nextPutAll:nsName.
+ syntaxHilighting ifTrue:[aStream normal].
+ aStream nextPutAll:' }"'; cr; cr.
+ ]
].
"take care of nil-superclass"
superclass isNil ifTrue:[
- s := 'nil'
+ s := 'nil'
] ifFalse:[
- fullName ifTrue:[
- s := superclass name
- ] ifFalse:[
- (ns == superclass nameSpace
- and:[superclass owningClass isNil]) ifTrue:[
- s := superclass nameWithoutPrefix
- ] ifFalse:[
- "/ a very special (rare) situation:
- "/ my superclass resides in another nameSpace,
- "/ but there is something else named like this
- "/ to be found in my nameSpace (or a private class)
-
- superName := superclass nameWithoutNameSpacePrefix asSymbol.
- cls := self privateClassesAt:superName.
- cls isNil ifTrue:[
- (topOwner := self topOwningClass) isNil ifTrue:[
- ns := self nameSpace.
- ns notNil ifTrue:[
- cls := ns privateClassesAt:superName
- ] ifFalse:[
- "/ self error:'unexpected nil namespace'
- ]
- ] ifFalse:[
- cls := topOwner nameSpace at:superName.
- ]
- ].
- (cls notNil and:[cls ~~ superclass]) ifTrue:[
- s := superclass nameSpace name , '::' , superName
- ] ifFalse:[
- s := superName
- ]
- ]
- ]
+ fullName ifTrue:[
+ s := superclass name
+ ] ifFalse:[
+ (ns == superclass nameSpace
+ and:[superclass owningClass isNil]) ifTrue:[
+ s := superclass nameWithoutPrefix
+ ] ifFalse:[
+ "/ a very special (rare) situation:
+ "/ my superclass resides in another nameSpace,
+ "/ but there is something else named like this
+ "/ to be found in my nameSpace (or a private class)
+
+ superName := superclass nameWithoutNameSpacePrefix asSymbol.
+ cls := self privateClassesAt:superName.
+ cls isNil ifTrue:[
+ (topOwner := self topOwningClass) isNil ifTrue:[
+ ns := self nameSpace.
+ ns notNil ifTrue:[
+ cls := ns privateClassesAt:superName
+ ] ifFalse:[
+ "/ self error:'unexpected nil namespace'
+ ]
+ ] ifFalse:[
+ cls := topOwner nameSpace at:superName.
+ ]
+ ].
+ (cls notNil and:[cls ~~ superclass]) ifTrue:[
+ s := superclass nameSpace name , '::' , superName
+ ] ifFalse:[
+ "/ no class with that name found in my namespace ...
+ "/ if the superclass resides in Smalltalk,
+ "/ suppress prefix.
+ (superclass nameSpace notNil
+ and:[superclass nameSpace ~~ Smalltalk]) ifTrue:[
+ s := superclass nameSpace name , '::' , superName
+ ] ifFalse:[
+ s := superName
+ ]
+ ]
+ ]
+ ]
].
syntaxHilighting ifTrue:[aStream bold].
@@ -1828,16 +1836,16 @@
self basicFileOutInstvarTypeKeywordOn:aStream.
(fullName and:[owner isNil]) ifTrue:[
- aStream nextPutAll:'#'''.
- syntaxHilighting ifTrue:[aStream bold].
- aStream nextPutAll:(self name).
- syntaxHilighting ifTrue:[aStream normal].
- aStream nextPutAll:''''.
+ aStream nextPutAll:'#'''.
+ syntaxHilighting ifTrue:[aStream bold].
+ aStream nextPutAll:(self name).
+ syntaxHilighting ifTrue:[aStream normal].
+ aStream nextPutAll:''''.
] ifFalse:[
- aStream nextPut:$#.
- syntaxHilighting ifTrue:[aStream bold].
- aStream nextPutAll:(self nameWithoutPrefix).
- syntaxHilighting ifTrue:[aStream normal].
+ aStream nextPut:$#.
+ syntaxHilighting ifTrue:[aStream bold].
+ aStream nextPutAll:(self nameWithoutPrefix).
+ syntaxHilighting ifTrue:[aStream normal].
].
aStream crtab.
@@ -1859,25 +1867,25 @@
aStream crtab.
owner isNil ifTrue:[
- "/ a public class
- aStream nextPutAll:'category:'.
- category isNil ifTrue:[
- s := ''''''
- ] ifFalse:[
- s := category asString storeString
- ].
- aStream nextPutAll:s.
+ "/ a public class
+ aStream nextPutAll:'category:'.
+ category isNil ifTrue:[
+ s := ''''''
+ ] ifFalse:[
+ s := category asString storeString
+ ].
+ aStream nextPutAll:s.
] ifFalse:[
- "/ a private class
- aStream nextPutAll:'privateIn:'.
- syntaxHilighting ifTrue:[aStream bold].
- fullName ifTrue:[
- s := owner name.
- ] ifFalse:[
- s := owner nameWithoutNameSpacePrefix.
- ].
- aStream nextPutAll:s.
- syntaxHilighting ifTrue:[aStream normal].
+ "/ a private class
+ aStream nextPutAll:'privateIn:'.
+ syntaxHilighting ifTrue:[aStream bold].
+ fullName ifTrue:[
+ s := owner name.
+ ] ifFalse:[
+ s := owner nameWithoutNameSpacePrefix.
+ ].
+ aStream nextPutAll:s.
+ syntaxHilighting ifTrue:[aStream normal].
].
aStream cr
@@ -3907,5 +3915,5 @@
!Class class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.331 1999-03-03 21:31:49 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.332 1999-03-09 21:44:58 tm Exp $'
! !