T subclass: #M
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'cocon-squeak'!
M subclass: #B
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'cocon-squeak'!
Object subclass: #U
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'cocon-squeak'!
!U methodsFor: 'services' stamp: 'ab 5/23/2001 14:14'! ctv: aB
"an attempt of contravariant definition !!"
Transcript show: 'ctv(B) in U';cr! !
!U methodsFor: 'services' stamp: 'ab 5/23/2001 14:13'! cv: aT
"an attempt of covariant definition !!"
Transcript show: 'cv(T) in U';cr! !
"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!
U class
instanceVariableNames: ''!
!U class methodsFor: 'testing' stamp: 'ab 5/23/2001 15:21'! test
"U test"
| u d t m b |
u := U new.
d := D new.
t := T new.
m := M new.
b := B new.
Transcript show: '-- first test suite';cr.
u cv: t.
u cv: m.
u cv: b.
u ctv: t.
u ctv: m.
u ctv: b.
Transcript show: '-- second test suite';cr.
d cv: t.
d cv: m.
d cv: b.
d ctv: t.
d ctv: m.
d ctv: b.
Transcript show: '-- third test suite';cr.
u := d.
u cv: t.
u cv: m.
u cv: b.
u ctv: t.
u ctv: m.
u ctv: b.
! !
U subclass: #D
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'cocon-squeak'!
!D methodsFor: 'services' stamp: 'ab 5/23/2001 15:22'! ctv: aM
"an attempt of contravariant redefinition !!"
Transcript show: 'ctv(M) in D';cr! !
!D methodsFor: 'services' stamp: 'ab 5/23/2001 15:22'! cv: aM
"an attempt of covariant redefinition !!"
Transcript show: 'cv(M) in D';cr! !
"run"
-- first test suite
cv(T) in U
cv(T) in U
cv(T) in U
ctv(B) in U
ctv(B) in U
ctv(B) in U
-- second test suite
cv(M) in D
cv(M) in D
cv(M) in D
ctv(M) in D
ctv(M) in D
ctv(M) in D
-- third test suite
cv(M) in D
cv(M) in D
cv(M) in D
ctv(M) in D
ctv(M) in D
ctv(M) in D