--- a/ClassBuilder.st Fri Sep 07 11:49:18 2012 +0100
+++ b/ClassBuilder.st Fri Sep 07 13:46:06 2012 +0100
@@ -2026,7 +2026,20 @@
superClass isNil ifTrue:[
superFlags := 0
] ifFalse:[
- superFlags := superClass flags bitAnd:(Behavior maskIndexType bitInvert). "preserve other bits"
+ | flags |
+
+ "JV@2012-09-07: Certain classes define class method #flags which
+ returns something different than behavior's flag bits.
+ Obtaing superclass's flags by
+
+ superClass flags
+
+ won't then work as expected. Ask JV for details
+
+ Hence this hack :-(
+ "
+ flags := (Behavior compiledMethodAt: #flags) valueWithReceiver: superClass arguments: #().
+ superFlags := flags bitAnd:(Behavior maskIndexType bitInvert). "preserve other bits"
].
oldClass notNil ifTrue:[
@@ -2056,7 +2069,7 @@
newClass setClassVariableString:classVariableNames.
"Modified: / 18-01-2011 / 20:44:04 / cg"
- "Modified: / 13-05-2012 / 17:49:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 07-09-2012 / 13:44:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!ClassBuilder methodsFor:'checks'!
@@ -2364,7 +2377,7 @@
!ClassBuilder class methodsFor:'documentation'!
version
- ^ '$Id: ClassBuilder.st 10810 2012-05-13 17:32:24Z vranyj1 $'
+ ^ '$Id: ClassBuilder.st 10843 2012-09-07 12:46:06Z vranyj1 $'
!
version_CVS
@@ -2372,7 +2385,7 @@
!
version_SVN
- ^ '$Id: ClassBuilder.st 10810 2012-05-13 17:32:24Z vranyj1 $'
+ ^ '$Id: ClassBuilder.st 10843 2012-09-07 12:46:06Z vranyj1 $'
! !
ClassBuilder initialize!