Files
harbour-core/tests/clsscope.prg
Viktor Szakats 58faf91453 2016-01-14 19:17 UTC+0100 Viktor Szakats (vszakats users.noreply.github.com)
* *
    % remove brandings and homepage [1] from copyright header. Pass 1 - using script.
      [1] nobody has access to it anymore AFAIK - and it's also just
          a redirect since long
    ! update url in copyright header
    ; this should make the diff between 3.4 and 3.2 easier to manage
2016-01-14 19:18:17 +01:00

1007 lines
34 KiB
Plaintext

/*
* demonstration/test code for class method scoping
*
* Copyright 2006 Przemyslaw Czerpak <druzus / at / priv.onet.pl>
*
*/
#command ? => OUTSTD(hb_eol())
#xtranslate QOUT(<x,...>) => OUTSTD(hb_eol(),<x>)
#include "hbclass.ch"
#xcommand MAKE_TEST(<obj>,<v>) ;
=> begin sequence ;;
? " hVar:= ", <obj>:hVar:=<v> ;;
end sequence ;;
begin sequence ;;
? " hVar ", <obj>:hVar ;;
end sequence ;;
begin sequence ;;
? " hrVar:=", <obj>:hrVar:=<v> ;;
end sequence ;;
begin sequence ;;
? " hrVar ", <obj>:hrVar ;;
end sequence ;;
begin sequence ;;
? " pVar:= ", <obj>:pVar:=<v> ;;
end sequence ;;
begin sequence ;;
? " pVar ", <obj>:pVar ;;
end sequence ;;
begin sequence ;;
? " prVar:=", <obj>:prVar:=<v> ;;
end sequence ;;
begin sequence ;;
? " prVar ", <obj>:prVar ;;
end sequence ;;
begin sequence ;;
? " eVar:= ", <obj>:eVar:=<v> ;;
end sequence ;;
begin sequence ;;
? " eVar ", <obj>:eVar ;;
end sequence ;;
begin sequence ;;
? " erVar:=", <obj>:erVar:=<v> ;;
end sequence ;;
begin sequence ;;
? " erVar ", <obj>:erVar ;;
end sequence
#xcommand MAKE_TESTBLOCK(<fn>,<o>,<v>) ;
=> begin sequence ;;
<fn>({| self | qout(" hVar:= ", ::hVar:=<v>)},<o>) ;;
end sequence ;;
begin sequence ;;
<fn>({| self | qout(" hrVar:=", ::hrVar:=<v>)},<o>) ;;
end sequence ;;
begin sequence ;;
<fn>({| self | qout(" pVar:= ", ::pVar:=<v>)},<o>) ;;
end sequence ;;
begin sequence ;;
<fn>({| self | qout(" prVar:=", ::prVar:=<v>)},<o>) ;;
end sequence ;;
begin sequence ;;
<fn>({| self | qout(" eVar:= ", ::eVar:=<v>)},<o>) ;;
end sequence ;;
begin sequence ;;
<fn>({| self | qout(" erVar:=", ::erVar:=<v>)},<o>) ;;
end sequence
#xcommand MAKE_TESTINLINE(<obj>,<mPref>) ;
=> begin sequence ;;
? " hVar:= ", <obj>:<mPref>hVar ;;
end sequence ;;
begin sequence ;;
? " hrVar:=", <obj>:<mPref>hrVar ;;
end sequence ;;
begin sequence ;;
? " pVar:= ", <obj>:<mPref>pVar ;;
end sequence ;;
begin sequence ;;
? " prVar:=", <obj>:<mPref>prVar ;;
end sequence ;;
begin sequence ;;
? " eVar:= ", <obj>:<mPref>eVar ;;
end sequence ;;
begin sequence ;;
? " erVar:=", <obj>:<mPref>erVar ;;
end sequence
/* Clipper preprocessor does not support concatenation
We need separate definitions for MAKE_TESTINLINE */
#xcommand MAKE_TESTINLINE0(<obj>[,<mPref>]) ;
=> begin sequence ;;
? " hVar:= ", <obj>:b0hVar ;;
end sequence ;;
begin sequence ;;
? " hrVar:=", <obj>:b0hrVar ;;
end sequence ;;
begin sequence ;;
? " pVar:= ", <obj>:b0pVar ;;
end sequence ;;
begin sequence ;;
? " prVar:=", <obj>:b0prVar ;;
end sequence ;;
begin sequence ;;
? " eVar:= ", <obj>:b0eVar ;;
end sequence ;;
begin sequence ;;
? " erVar:=", <obj>:b0erVar ;;
end sequence
#xcommand MAKE_TESTINLINE1(<obj>[,<mPref>]) ;
=> begin sequence ;;
? " hVar:= ", <obj>:b1hVar ;;
end sequence ;;
begin sequence ;;
? " hrVar:=", <obj>:b1hrVar ;;
end sequence ;;
begin sequence ;;
? " pVar:= ", <obj>:b1pVar ;;
end sequence ;;
begin sequence ;;
? " prVar:=", <obj>:b1prVar ;;
end sequence ;;
begin sequence ;;
? " eVar:= ", <obj>:b1eVar ;;
end sequence ;;
begin sequence ;;
? " erVar:=", <obj>:b1erVar ;;
end sequence
#xcommand MAKE_TESTINLINE2(<obj>[,<mPref>]) ;
=> begin sequence ;;
? " hVar:= ", <obj>:b2hVar ;;
end sequence ;;
begin sequence ;;
? " hrVar:=", <obj>:b2hrVar ;;
end sequence ;;
begin sequence ;;
? " pVar:= ", <obj>:b2pVar ;;
end sequence ;;
begin sequence ;;
? " prVar:=", <obj>:b2prVar ;;
end sequence ;;
begin sequence ;;
? " eVar:= ", <obj>:b2eVar ;;
end sequence ;;
begin sequence ;;
? " erVar:=", <obj>:b2erVar ;;
end sequence
proc main()
LOCAL cbErr, self, o
? DATE(), TIME(), VERSION(), OS()
?
o:=clsX():new()
self:=cls2():new()
cbErr := errorBlock( {| oErr | errHandler( oErr ) } )
/***************************************************************/
? "Class Access:"
self:TEST1()
?
? "Parent Class Access:"
self:TEST0()
?
? "Subclass Access:"
self:TEST2()
?
? "Subclass Super Access:"
self:TEST3()
?
? "Foreign Class Access:"
o:TESTX(self)
?
? "Extern Access:"
MAKE_TEST(self,"extr")
?
/***************************************************************/
?
? "Inline Class Access:"
MAKE_TESTINLINE1(self,b1)
?
? "Inline Parent Class Access:"
MAKE_TESTINLINE0(self,b0)
?
? "Inline Subclass Access:"
MAKE_TESTINLINE2(self,b2)
?
/***************************************************************/
?
? "Access from class method by"
? "eval() with block created in class method:"
self:CBINT1()
?
? "Access from subclass method by"
? "eval() with block created in subclass method:"
self:CBINT2()
?
? "Access from parent class method by"
? "eval() with block created in parent class method:"
self:CBINT0()
?
? "Access from foreign class method by"
? "eval() with block created in foreign class method:"
o:CBINTX(self)
/***************************************************************/
?
? "Access from function executed from class method by"
? "eval() block created in class method:"
self:CBEVL1()
?
? "Access from function executed from subclass method by"
? "eval() with block created in subclass method:"
self:CBEVL2()
?
? "Access from function executed from parent class method by"
? "eval() with block created in parent class method:"
self:CBEVL0()
/***************************************************************/
?
? "Access from foreign object method executed from class method by"
? "eval() block created in class method:"
self:CBFEVL1(o)
?
? "Access from foreign object method executed from subclass method by"
? "eval() with block created in subclass method:"
self:CBFEVL2(o)
?
? "Access from foreign object method executed from parent class method by"
? "eval() with block created in parent class method:"
self:CBFEVL0(o)
/***************************************************************/
?
? "External block executed from class method"
MAKE_TESTBLOCK(self:cbeval1,self,::classname()+":"+procname())
?
? "External block executed from subclass method"
MAKE_TESTBLOCK(self:cbeval2,self,::classname()+":"+procname())
?
? "External block executed from parent class method"
MAKE_TESTBLOCK(self:cbeval0,self,::classname()+":"+procname())
?
? "External block access"
MAKE_TESTBLOCK(eval,self,::classname()+":"+procname())
/***************************************************************/
?
? "External block executed from function called from class method"
MAKE_TESTBLOCK(self:cbeval1,self,::classname()+":"+procname())
?
? "External block executed from function called from subclass method"
MAKE_TESTBLOCK(self:cbeval2,self,::classname()+":"+procname())
?
? "External block executed from function called from parent class method"
MAKE_TESTBLOCK(self:cbeval0,self,::classname()+":"+procname())
?
/***************************************************************/
errorBlock(cbErr)
RETURN
FUNC errHandler( oErr )
? "[ Error:", ltrim(str(oErr:gencode)), "/", ltrim(str(oErr:subcode)), ;
oErr:description, oErr:operation, "]"
break( oErr )
RETURN NIL
PROC EXTEVAL( cb, o )
EXTEVAL1( cb, o )
RETURN
PROC EXTEVAL1( cb, o )
EXTEVAL2( cb, o )
RETURN
PROC EXTEVAL2( cb, o )
EXTEVAL3( cb, o )
RETURN
PROC EXTEVAL3( cb, o )
EVAL( cb, o )
RETURN
CREATE CLASS CLSX
EXPORTED:
METHOD TESTX
METHOD CBINTX
METHOD CBEVALX
METHOD CBXEVALX
ENDCLASS
METHOD TESTX( o )
MAKE_TEST( o, "clsx" )
RETURN self
METHOD CBINTX( o )
MAKE_TESTBLOCK(eval,o,::classname()+":"+procname())
RETURN self
METHOD CBEVALX( cb, o )
EVAL( cb, o )
RETURN self
METHOD CBXEVALX( cb, o )
EXTEVAL( cb, o )
RETURN self
CREATE CLASS CLS0
EXPORTED:
METHOD TEST0
METHOD CBINT0
METHOD CBEVL0
METHOD CBFEVL0
METHOD CBEVAL0
METHOD CBXEVAL0
MESSAGE b0hVar INLINE ::hVar := ::classname()+":"+procname()
MESSAGE b0hrVar INLINE ::hrVar := ::classname()+":"+procname()
MESSAGE b0pVar INLINE ::pVar := ::classname()+":"+procname()
MESSAGE b0prVar INLINE ::prVar := ::classname()+":"+procname()
MESSAGE b0eVar INLINE ::eVar := ::classname()+":"+procname()
MESSAGE b0erVar INLINE ::erVar := ::classname()+":"+procname()
ENDCLASS
METHOD TEST0
MAKE_TEST(self,"cls0")
RETURN self
METHOD CBINT0
MAKE_TESTBLOCK(eval,self,::classname()+":"+procname())
RETURN self
METHOD CBEVL0()
MAKE_TESTBLOCK(exteval,self,::classname()+":"+procname())
RETURN self
METHOD CBFEVL0(o)
MAKE_TESTBLOCK(o:cbevalx,self,::classname()+":"+procname())
RETURN self
METHOD CBEVAL0( cb, o )
EVAL( cb, o )
RETURN self
METHOD CBXEVAL0( cb, o )
EXTEVAL( cb, o )
RETURN self
CREATE CLASS CLS1 FROM CLS0
HIDDEN:
VAR hVar
VAR hrVar READONLY
PROTECTED:
VAR pVar
VAR prVar READONLY
EXPORTED:
VAR eVar
VAR erVar READONLY
METHOD TEST1
METHOD CBINT1
METHOD CBEVL1
METHOD CBFEVL1
METHOD CBEVAL1
METHOD CBXEVAL1
MESSAGE b1hVar INLINE ::hVar := ::classname()+":"+procname()
MESSAGE b1hrVar INLINE ::hrVar := ::classname()+":"+procname()
MESSAGE b1pVar INLINE ::pVar := ::classname()+":"+procname()
MESSAGE b1prVar INLINE ::prVar := ::classname()+":"+procname()
MESSAGE b1eVar INLINE ::eVar := ::classname()+":"+procname()
MESSAGE b1erVar INLINE ::erVar := ::classname()+":"+procname()
ENDCLASS
METHOD TEST1
MAKE_TEST(self,"cls1")
RETURN self
METHOD CBINT1
MAKE_TESTBLOCK(eval,self,::classname()+":"+procname())
RETURN self
METHOD CBEVL1()
MAKE_TESTBLOCK(exteval,self,::classname()+":"+procname())
RETURN self
METHOD CBFEVL1(o)
MAKE_TESTBLOCK(o:cbevalx,self,::classname()+":"+procname())
RETURN self
METHOD CBEVAL1( cb, o )
EVAL( cb, o )
RETURN self
METHOD CBXEVAL1( cb, o )
EXTEVAL( cb, o )
RETURN self
CREATE CLASS CLS2 FROM CLS1
EXPORTED:
METHOD TEST2
METHOD TEST3
METHOD CBINT2
METHOD CBEVL2
METHOD CBFEVL2
METHOD CBEVAL2
METHOD CBXEVAL2
MESSAGE b2hVar INLINE ::hVar := ::classname()+":"+procname()
MESSAGE b2hrVar INLINE ::hrVar := ::classname()+":"+procname()
MESSAGE b2pVar INLINE ::pVar := ::classname()+":"+procname()
MESSAGE b2prVar INLINE ::prVar := ::classname()+":"+procname()
MESSAGE b2eVar INLINE ::eVar := ::classname()+":"+procname()
MESSAGE b2erVar INLINE ::erVar := ::classname()+":"+procname()
ENDCLASS
METHOD TEST2
MAKE_TEST(self,"cls2")
RETURN self
METHOD TEST3
LOCAL oSuper := self:super
MAKE_TEST(oSuper,"supr")
RETURN self
METHOD CBINT2
MAKE_TESTBLOCK(eval,self,::classname()+":"+procname())
RETURN self
METHOD CBEVL2()
MAKE_TESTBLOCK(exteval,self,::classname()+":"+procname())
RETURN self
METHOD CBFEVL2(o)
MAKE_TESTBLOCK(o:cbevalx,self,::classname()+":"+procname())
RETURN self
METHOD CBEVAL2( cb, o )
EVAL( cb, o )
RETURN self
METHOD CBXEVAL2( cb, o )
EXTEVAL( cb, o )
RETURN self
/*
*************************************************************************
Below are results Harbour when compiled with -DHB_CLASSY_BLOCK_SCOPE
They are exactly the same as from Class(y).
Tested with:
2006-09-16 23:20 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
=========================================================================
2006-09-16 23:17:33 Harbour Alpha build 46.2 Intl. (Flex) Linux 2.6.15 i686
Class Access:
hVar:= cls1
hVar cls1
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
hrVar NIL
pVar:= cls1
pVar cls1
prVar:= cls1
prVar cls1
eVar:= cls1
eVar cls1
erVar:= cls1
erVar cls1
Parent Class Access:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:HRVAR ]
pVar:= cls0
pVar cls0
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
prVar cls1
eVar:= cls0
eVar cls0
erVar:= cls0
erVar cls0
Subclass Access:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:HRVAR ]
pVar:= cls2
pVar cls2
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
prVar cls1
eVar:= cls2
eVar cls2
erVar:= cls2
erVar cls2
Subclass Super Access:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:HRVAR ]
pVar:= supr
pVar supr
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
prVar cls1
eVar:= supr
eVar supr
erVar:= supr
erVar supr
Foreign Class Access:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:HRVAR ]
[ Error: 13 / 42 Scope violation (protected) CLS2:_PVAR ]
[ Error: 13 / 42 Scope violation (protected) CLS2:PVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
[ Error: 13 / 42 Scope violation (protected) CLS2:PRVAR ]
eVar:= clsx
eVar clsx
[ Error: 13 / 42 Scope violation (protected) CLS2:_ERVAR ]
erVar supr
Extern Access:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:HRVAR ]
[ Error: 13 / 42 Scope violation (protected) CLS2:_PVAR ]
[ Error: 13 / 42 Scope violation (protected) CLS2:PVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
[ Error: 13 / 42 Scope violation (protected) CLS2:PRVAR ]
eVar:= extr
eVar extr
[ Error: 13 / 42 Scope violation (protected) CLS2:_ERVAR ]
erVar supr
Inline Class Access:
hVar:= CLS2:(b)CLS1
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
pVar:= CLS2:(b)CLS1
prVar:= CLS2:(b)CLS1
eVar:= CLS2:(b)CLS1
erVar:= CLS2:(b)CLS1
Inline Parent Class Access:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
pVar:= CLS2:(b)CLS0
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)CLS0
erVar:= CLS2:(b)CLS0
Inline Subclass Access:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
pVar:= CLS2:(b)CLS2
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)CLS2
erVar:= CLS2:(b)CLS2
Access from class method by
eval() with block created in class method:
hVar:= CLS2:(b)CBINT1
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
pVar:= CLS2:(b)CBINT1
prVar:= CLS2:(b)CBINT1
eVar:= CLS2:(b)CBINT1
erVar:= CLS2:(b)CBINT1
Access from subclass method by
eval() with block created in subclass method:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
pVar:= CLS2:(b)CBINT2
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)CBINT2
erVar:= CLS2:(b)CBINT2
Access from parent class method by
eval() with block created in parent class method:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
pVar:= CLS2:(b)CBINT0
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)CBINT0
erVar:= CLS2:(b)CBINT0
Access from foreign class method by
eval() with block created in foreign class method:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
[ Error: 13 / 42 Scope violation (protected) CLS2:_PVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)CBINTX
[ Error: 13 / 42 Scope violation (protected) CLS2:_ERVAR ]
Access from function executed from class method by
eval() block created in class method:
hVar:= CLS2:(b)CBEVL1
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
pVar:= CLS2:(b)CBEVL1
prVar:= CLS2:(b)CBEVL1
eVar:= CLS2:(b)CBEVL1
erVar:= CLS2:(b)CBEVL1
Access from function executed from subclass method by
eval() with block created in subclass method:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
pVar:= CLS2:(b)CBEVL2
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)CBEVL2
erVar:= CLS2:(b)CBEVL2
Access from function executed from parent class method by
eval() with block created in parent class method:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
pVar:= CLS2:(b)CBEVL0
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)CBEVL0
erVar:= CLS2:(b)CBEVL0
Access from foreign object method executed from class method by
eval() block created in class method:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
[ Error: 13 / 42 Scope violation (protected) CLS2:_PVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)CBFEVL1
[ Error: 13 / 42 Scope violation (protected) CLS2:_ERVAR ]
Access from foreign object method executed from subclass method by
eval() with block created in subclass method:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
[ Error: 13 / 42 Scope violation (protected) CLS2:_PVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)CBFEVL2
[ Error: 13 / 42 Scope violation (protected) CLS2:_ERVAR ]
Access from foreign object method executed from parent class method by
eval() with block created in parent class method:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
[ Error: 13 / 42 Scope violation (protected) CLS2:_PVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)CBFEVL0
[ Error: 13 / 42 Scope violation (protected) CLS2:_ERVAR ]
External block executed from class method
hVar:= CLS2:(b)MAIN
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
pVar:= CLS2:(b)MAIN
prVar:= CLS2:(b)MAIN
eVar:= CLS2:(b)MAIN
erVar:= CLS2:(b)MAIN
External block executed from subclass method
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
pVar:= CLS2:(b)MAIN
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)MAIN
erVar:= CLS2:(b)MAIN
External block executed from parent class method
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
pVar:= CLS2:(b)MAIN
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)MAIN
erVar:= CLS2:(b)MAIN
External block access
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
[ Error: 13 / 42 Scope violation (protected) CLS2:_PVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)MAIN
[ Error: 13 / 42 Scope violation (protected) CLS2:_ERVAR ]
External block executed from function called from class method
hVar:= CLS2:(b)MAIN
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
pVar:= CLS2:(b)MAIN
prVar:= CLS2:(b)MAIN
eVar:= CLS2:(b)MAIN
erVar:= CLS2:(b)MAIN
External block executed from function called from subclass method
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
pVar:= CLS2:(b)MAIN
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)MAIN
erVar:= CLS2:(b)MAIN
External block executed from function called from parent class method
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
pVar:= CLS2:(b)MAIN
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)MAIN
erVar:= CLS2:(b)MAIN
*************************************************************************
And now Harbour results when compiled with -DHB_REAL_BLOCK_SCOPE.
Tested with:
2006-09-16 23:20 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
=========================================================================
2006-09-16 23:18:59 Harbour Alpha build 46.2 Intl. (Flex) Linux 2.6.15 i686
Class Access:
hVar:= cls1
hVar cls1
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
hrVar NIL
pVar:= cls1
pVar cls1
prVar:= cls1
prVar cls1
eVar:= cls1
eVar cls1
erVar:= cls1
erVar cls1
Parent Class Access:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:HRVAR ]
pVar:= cls0
pVar cls0
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
prVar cls1
eVar:= cls0
eVar cls0
erVar:= cls0
erVar cls0
Subclass Access:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:HRVAR ]
pVar:= cls2
pVar cls2
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
prVar cls1
eVar:= cls2
eVar cls2
erVar:= cls2
erVar cls2
Subclass Super Access:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:HRVAR ]
pVar:= supr
pVar supr
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
prVar cls1
eVar:= supr
eVar supr
erVar:= supr
erVar supr
Foreign Class Access:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:HRVAR ]
[ Error: 13 / 42 Scope violation (protected) CLS2:_PVAR ]
[ Error: 13 / 42 Scope violation (protected) CLS2:PVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
[ Error: 13 / 42 Scope violation (protected) CLS2:PRVAR ]
eVar:= clsx
eVar clsx
[ Error: 13 / 42 Scope violation (protected) CLS2:_ERVAR ]
erVar supr
Extern Access:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:HRVAR ]
[ Error: 13 / 42 Scope violation (protected) CLS2:_PVAR ]
[ Error: 13 / 42 Scope violation (protected) CLS2:PVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
[ Error: 13 / 42 Scope violation (protected) CLS2:PRVAR ]
eVar:= extr
eVar extr
[ Error: 13 / 42 Scope violation (protected) CLS2:_ERVAR ]
erVar supr
Inline Class Access:
hVar:= CLS2:(b)CLS1
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
pVar:= CLS2:(b)CLS1
prVar:= CLS2:(b)CLS1
eVar:= CLS2:(b)CLS1
erVar:= CLS2:(b)CLS1
Inline Parent Class Access:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
pVar:= CLS2:(b)CLS0
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)CLS0
erVar:= CLS2:(b)CLS0
Inline Subclass Access:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
pVar:= CLS2:(b)CLS2
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)CLS2
erVar:= CLS2:(b)CLS2
Access from class method by
eval() with block created in class method:
hVar:= CLS2:(b)CBINT1
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
pVar:= CLS2:(b)CBINT1
prVar:= CLS2:(b)CBINT1
eVar:= CLS2:(b)CBINT1
erVar:= CLS2:(b)CBINT1
Access from subclass method by
eval() with block created in subclass method:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
pVar:= CLS2:(b)CBINT2
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)CBINT2
erVar:= CLS2:(b)CBINT2
Access from parent class method by
eval() with block created in parent class method:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
pVar:= CLS2:(b)CBINT0
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)CBINT0
erVar:= CLS2:(b)CBINT0
Access from foreign class method by
eval() with block created in foreign class method:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
[ Error: 13 / 42 Scope violation (protected) CLS2:_PVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)CBINTX
[ Error: 13 / 42 Scope violation (protected) CLS2:_ERVAR ]
Access from function executed from class method by
eval() block created in class method:
hVar:= CLS2:(b)CBEVL1
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
pVar:= CLS2:(b)CBEVL1
prVar:= CLS2:(b)CBEVL1
eVar:= CLS2:(b)CBEVL1
erVar:= CLS2:(b)CBEVL1
Access from function executed from subclass method by
eval() with block created in subclass method:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
pVar:= CLS2:(b)CBEVL2
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)CBEVL2
erVar:= CLS2:(b)CBEVL2
Access from function executed from parent class method by
eval() with block created in parent class method:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
pVar:= CLS2:(b)CBEVL0
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)CBEVL0
erVar:= CLS2:(b)CBEVL0
Access from foreign object method executed from class method by
eval() block created in class method:
hVar:= CLS2:(b)CBFEVL1
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
pVar:= CLS2:(b)CBFEVL1
prVar:= CLS2:(b)CBFEVL1
eVar:= CLS2:(b)CBFEVL1
erVar:= CLS2:(b)CBFEVL1
Access from foreign object method executed from subclass method by
eval() with block created in subclass method:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
pVar:= CLS2:(b)CBFEVL2
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)CBFEVL2
erVar:= CLS2:(b)CBFEVL2
Access from foreign object method executed from parent class method by
eval() with block created in parent class method:
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
pVar:= CLS2:(b)CBFEVL0
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)CBFEVL0
erVar:= CLS2:(b)CBFEVL0
External block executed from class method
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
[ Error: 13 / 42 Scope violation (protected) CLS2:_PVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)MAIN
[ Error: 13 / 42 Scope violation (protected) CLS2:_ERVAR ]
External block executed from subclass method
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
[ Error: 13 / 42 Scope violation (protected) CLS2:_PVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)MAIN
[ Error: 13 / 42 Scope violation (protected) CLS2:_ERVAR ]
External block executed from parent class method
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
[ Error: 13 / 42 Scope violation (protected) CLS2:_PVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)MAIN
[ Error: 13 / 42 Scope violation (protected) CLS2:_ERVAR ]
External block access
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
[ Error: 13 / 42 Scope violation (protected) CLS2:_PVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)MAIN
[ Error: 13 / 42 Scope violation (protected) CLS2:_ERVAR ]
External block executed from function called from class method
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
[ Error: 13 / 42 Scope violation (protected) CLS2:_PVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)MAIN
[ Error: 13 / 42 Scope violation (protected) CLS2:_ERVAR ]
External block executed from function called from subclass method
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
[ Error: 13 / 42 Scope violation (protected) CLS2:_PVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)MAIN
[ Error: 13 / 42 Scope violation (protected) CLS2:_ERVAR ]
External block executed from function called from parent class method
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_HRVAR ]
[ Error: 13 / 42 Scope violation (protected) CLS2:_PVAR ]
[ Error: 13 / 41 Scope violation (hidden) CLS2:_PRVAR ]
eVar:= CLS2:(b)MAIN
[ Error: 13 / 42 Scope violation (protected) CLS2:_ERVAR ]
*/