From c374d6f243ee4fc95115531b30b5e4ea5b4f55f0 Mon Sep 17 00:00:00 2001 From: Przemyslaw Czerpak Date: Sat, 13 Oct 2007 00:12:25 +0000 Subject: [PATCH] 2007-10-13 02:12 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/doc/destruct.txt * update description for multiple inherited destructors * harbour/source/compiler/complex.c * _HB_CLASS and _HB_MEMBER are not longer reserved words * harbour/include/hbclass.ch * harbour/include/hbexprop.h * harbour/include/hbexprb.c * harbour/source/macro/macro.y * harbour/source/compiler/harbour.y * formatting and minor code cleanup * harbour/source/compiler/hbusage.c * added missing information about -undef: switch to usage description * harbour/source/compiler/gencc.c ! fixed bug reported by Teo in code generated for SWITCH statement --- harbour/ChangeLog | 21 +++++++++++++++++++++ harbour/doc/destruct.txt | 10 +++------- harbour/include/hbclass.ch | 16 ++++++++-------- harbour/include/hbexprb.c | 30 ++++++++++++++---------------- harbour/include/hbexprop.h | 2 +- harbour/source/compiler/complex.c | 21 +++++++++++++++++---- harbour/source/compiler/gencc.c | 18 +++++++++++++----- harbour/source/compiler/harbour.y | 4 +++- harbour/source/compiler/hbusage.c | 1 + harbour/source/macro/macro.y | 2 ++ 10 files changed, 83 insertions(+), 42 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index b16ed6f000..dd0ee66930 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,27 @@ 2002-12-01 13:30 UTC+0100 Foo Bar */ +2007-10-13 02:12 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) + * harbour/doc/destruct.txt + * update description for multiple inherited destructors + + * harbour/source/compiler/complex.c + * _HB_CLASS and _HB_MEMBER are not longer reserved words + + * harbour/include/hbclass.ch + * harbour/include/hbexprop.h + * harbour/include/hbexprb.c + * harbour/source/macro/macro.y + * harbour/source/compiler/harbour.y + * formatting and minor code cleanup + + * harbour/source/compiler/hbusage.c + * added missing information about -undef: switch to usage + description + + * harbour/source/compiler/gencc.c + ! fixed bug reported by Teo in code generated for SWITCH statement + 2007-10-10 21:11 UTC+0300 Mindaugas Kavaliauskas (dbtopas/at/dbtopas.lt) * harbour/tests/multifnc/t0.prg * harbour/tests/multifnc/t1.prg diff --git a/harbour/doc/destruct.txt b/harbour/doc/destruct.txt index 0eacd0f4d8..b13064e2ee 100644 --- a/harbour/doc/destruct.txt +++ b/harbour/doc/destruct.txt @@ -105,13 +105,9 @@ overwrite the error object created before destructor. Inheritance ----------- -Destructors can be inherited from the first super class in the -same way as ON ERROR message. Defining destructor in class overwrites -the inherited ones so they will not be executed. -Maybe in some spare time I'll add support for executing all inherited -super destructors. - - +If class has more then one destructor inherited from other classes +then all destructors are executed in reverted order. First current +class destructor (if any) and then super class destructors. Defining destructors in CLASS definition code diff --git a/harbour/include/hbclass.ch b/harbour/include/hbclass.ch index 6d56f961c8..baad5f5620 100644 --- a/harbour/include/hbclass.ch +++ b/harbour/include/hbclass.ch @@ -157,7 +157,7 @@ /* should we inherit from HBObject class by default ? */ #ifdef HB_CLS_NOTOBJECT - #xtranslate __HB_CLS_PAR([]) => { [] } + #xtranslate __HB_CLS_PAR([]) => { } #else #xtranslate __HB_CLS_PAR([]) => iif( <.cls.>, { }, { @HBObject() } ) #endif @@ -204,7 +204,7 @@ DECLARE HBClass ; * bindings it casts object to class in which current method were defined. */ #translate @:([]) => ; - ::realclass:([]) + ::realclass:([ ]) /* Indirect super casting translation */ #xtranslate :Super( ): => :: @@ -216,11 +216,11 @@ DECLARE HBClass ; #xtranslate __HB_CLS_ASSTRING( ) => <(FuncName)> #xtranslate __HB_CLS_ASSTRING( ([]) ) => <(FuncName)> #xtranslate __HB_CLS_ASFUNC( ) => () -#xtranslate __HB_CLS_ASFUNC( ([]) ) => ([]) +#xtranslate __HB_CLS_ASFUNC( ([]) ) => ([ ]) #xtranslate __HB_CLS_ASID( ) => #xtranslate __HB_CLS_ASID( ([]) ) => #xtranslate __HB_CLS_ASARGS( ) => -#xtranslate __HB_CLS_ASARGS( ([]) ) => [] +#xtranslate __HB_CLS_ASARGS( ([]) ) => [ ] #xtranslate __HB_CLS_ASARGSOPT( ) => #xtranslate __HB_CLS_ASARGSOPT( ([]) ) => [, ] #xtranslate __HB_CLS_ISVAR( ) => __HB_CLS_VARERR() @@ -375,7 +375,7 @@ DECLARE HBClass ; MESSAGE [ AS ] BLOCK {|Self __HB_CLS_ASARGSOPT() [,]| __HB_CLS_SYMBOL_UNUSED(Self), } #xcommand MESSAGE [ AS ] [LOCAL ] INLINE [] [] [] [