* include/hbvmpub.h
+ Added: #define HB_FS_FIRST ( ( HB_SYMBOLSCOPE ) 0x40 )
* source/compiler/genc.c
+ Added logic to add | HB_FS_FIRST to first defined symbol in a prg.
* source/vm/hvm.c
* Modified hb_vmProcessSymbols() to llok for HB_FS_FIRST for startup procedure instead of any first symbol.
* source/compiler/harbour.y
* Minor consilidation in AsType
*** I am aware of 6 reduce conflicts resulting from previous removal of FROM_CLASS, and am looking into it. ***
* tests/testwarn.prg
! Corrected the #translate to reflect latest syntax
* include/hbcomp.h
+ Added member pParamClasses to COMDECLARED
* Changed hb_comp_szClass to hb_comp_szFromClass
* source/compiler/harbour.y
* Changed hb_comp_szClass to hb_comp_szFromClass
* source/compiler/harbour.c
+ Added support for declared parameters of Functions/Methods AS Object FROM CLASS ...
* source/compiler/hbpcode.c
+ Added Strong Type checking for declared parameters of Functions/Methods AS Object FROM CLASS ...
* tests/testwarn.prg
+ Added code to demonstrate warnings for declared parameters of Functions/Methods AS Object FROM CLASS ...
* include/hbcomp.h
! Consoldated COMDECLARED and COMMETHOD into COMDECLARED
+ Added member pClass to COMDECLARED
+ Added member pLast to COMCLASS
* source/compiler/harbour.y
+ Added support for Methods/Datas of type Object of a declared Class.
* source/compiler/harbour.c
! Fixed bug in hb_compMethodAdd()
* source/compiler/hbpcode.c
+ Added Strong Type Checking to Objects syntax.
* include/hberrors.h
+ Added : "HB_COMP_WARN_MESSAGE_NOT_FOUND"
* source/compiler/hbgenerr.c
+ Added : "3Message \'%s\' not known in Class \'%s\'"
* tests/testwarn.prg
+ Added code to demonstrate syntax and warnings for OO Strong Type Checking.
* include/hbcomp.h
+ Added new structures COMCLASS and COMMETHOD
+ Added new element pClass to structure VAR
+ Added:
extern PCOMCLASS hb_compClassAdd( char * );
extern PCOMCLASS hb_compClassFind( char * );
extern PCOMMETHOD hb_compMethodAdd( PCOMCLASS pClass, char * );
extern PCOMMETHOD hb_compMethodFind( PCOMCLASS pClass, char * );
* source/compiler/harbour.c
+ Added:
PCOMCLASS hb_compClassAdd( char * );
PCOMCLASS hb_compClassFind( char * );
PCOMMETHOD hb_compMethodAdd( PCOMCLASS pClass, char * );
PCOMMETHOD hb_compMethodFind( PCOMCLASS pClass, char * );
* Modified hb_compVariableAdd() to process params of declared class methods.
* source/compiler/harbour.l
+ Added tokens CLASSMETHOD CLASSDATA and FROMCLASS
* source/compiler/harbour.y
+ Added support for class declaration syntax:
DECLARE CLASS ClassName HAS Method MethodName( ... ) As ... HAS Data PropertyName ...
+ Added support for declaration of Object of a sdeclared class sysntax:
DECLARE oObjectVar AS Object FROM ClassName
* source/compiler/hbpcode.c
+ Started support for object methods and properties type checking.
* tests/testwarn.prg
+ Added code to demonstrate declarion of classes and objects of a declared class.
* source/compiler/harbour.l
- Removed un used token DECLARE_
* source/compiler/harbour.y
! Fixed warning about conflict
! Verified all calls to hb_compVariableAdd() to use hb_comp_cVarType (and VT_OFFSET_* constants) as 2nd parameter
+ Added rules to support syntax of declartion of variable by reference parameter.
* include/hbcomp.h
+ Added :
#define VT_OFFSET_BYREF 60
#define VT_OFFSET_VARIANT 90
#define VT_OFFSET_OPTIONAL 90
* source/compiler/harbour.c
* Minor cleanup in hb_compVariableAdd()
* source/compiler/hbpcode.c
* Modified hb_compStrongType() to use VT_OFFSET_* constants.
* source/compiler/hbgenerr.c
* Changed "number" to "#" in HB_COMP_WARN_PARAM_TYPE message.
* tests/testwarn.prg
+ Added code to demonstrate new "Declared Refernced Paramater" syntax:
DECLARE FRead( nHandle As Num, @cBufferVar As Char, nBytes As Num ) AS Num
* include/hberrors.h
+ Added : #define HB_COMP_WARN_VAL_NOT_USED 20
* source/compiler/harbour.c
+ Added logic to hb_compOptimizeFrames() to warn about invalid statics usage.
* source/compiler/hbgenerr.c
+ Added: "3Value of Variable \'%s\' never used"
* source/compiler/hbpcode.c
* Enhanced support for statics
* tests/testwarn.prg
+ Added more code to demonstrate more warnings.
* include/hbpcomp.c
+ Added pPrivates to structure FUNCTION.
* source/compiler/harbour.c
+ Added logic to maintain linked list pPrivates of pFunc.
* source/compiler/harbour.y
+ Added support for MEMVAR AS ... syntax.
* source/compiler/hbpcode.c
+ Added support for FIELD AS ... and MEMVAR AS both local and global.
! More refinments
* tests/testwarn.prg
+ Added code to demonstrate "Adaptive Type Checking".
* include/hbcomp.h
+ Added #define VS_NONE 0
* source/compiler/harbour.c
! Fixed bug in hb_compVariableAdd() was never adding new var to pFunc->pMemvars because
hb_comp_iVarScope was tested with == rather & VS_MEMVAR
* source/compiler/harbour.y
+ Added hb_comp_iVarScope = VS_NONE to reset it after PRIVATE PUBLIC and PARAMETERS statements.
* source/compiler/hbpcode.c
+ Added logic to reset type of privates (need to check publics) after calls to functions or procedures which might affect them.
! Many fixes and consolodiations
* source/compiler/hbpcode.c
+ Added logic to hb_compStrongType() to support object methods and properties.
* Enhanced logic of array checks.
* include/hberrors.h
! Added #define HB_COMP_WARN_ARRAY_ASSIGN_SUSPECT
* source/compiler/hbgenerr.c
* Added : 4Suspicious type in assignment to declared array element expected: \'%s\'"
* source/compiler/harbour.c
- Removed static qualifier from hb_compVariableGetPos() so it can be called from hb_compStrongType()
* source/compiler/hbpcode.c
+ Added logic to hb_compStrongType() to allow assigment of NIL to any type variable.
+ Added "Adaptive Type Checking" to control type mismatch in undeclared variables.
* include/hberrors.h
! Added #define HB_COMP_ARRAY_ASSIGN_TYPE to HB_COMP_WARN_ARRAY_ASSIGN_TYPE
* source/compiler/hbgenerr.c
* Added : Moved "Suspecious ..." to level w4
* tests/testwarn.prg
+ Added code to demonstrate "Adaptive Type Checking".
* include/hbcomp.h
+ Added:
#define VU_NOT_USED 0
#define VU_INITIALIZED 1
#define VU_USED 2
* source/compiler/harbour.c
* Modified refrences to pVar->iUsed to use new VU_* constants.
* source/compiler/hbpcode.c
* Enhanced hb_compStrongType() to check and set pVar->iUsed with new VU_*constants.
* include/hbcomp.h
- Removed members cParamTypes and iParamCount from COMSYMBOL
+ Added member USHORT iStackSize to FUNCTION structure
* Modified member pStack of FUNCTION to not pre allocate any memory.
+ Added new structure COMDECLARED
+ Added: extern PCOMDECLARED hb_compDeclaredAdd( char * ) and extern PCOMDECLARED hb_compDeclaredFind( char * );
+ Adede: extern PCOMDECLARED hb_comp_pFirstDeclared and extern PCOMDECLARED hb_comp_pLastDeclared
* include/hberrors.h
+ Added:
#define HB_COMP_DUP_DECLARATION 17
#define HB_COMP_DECLARATION_CONFLICT 18
* source/compiler/genc.c
* Modified hb_compGenCCode() to free the Declared Function linked list.
* source/compiler/harbour.c
+ Added: PCOMDECLARED hb_compDeclaredAdd( char * ) and PCOMDECLARED hb_compDeclaredFind( char * );
+ Adede: PCOMDECLARED hb_comp_pFirstDeclared and PCOMDECLARED hb_comp_pLastDeclared
* source/compiler/harbour.y
* Modified parsing of DECLARE FUNCTION to use new PCOMDECLARED rather than PCOMSYMBOL
* source/compiler/hbgenerr.c
+ Added:
"3Duplicate Declaration of Function %s"
"3Function \'%s\' conflicting with its declaration"
* source/compiler/hbpcode.c
* Modifief hb_compStrongType() to utilize PCOMDECLARED rather than PCOMSYMBOL
* Modifief hb_compStrongType() to increase the pFunc->pStack as needed.
* tests/testwarn.prg
+ Added code to demonstrate more warnings.
* include/hbcomp.h
+ Added to COMSYMBOL :
BYTE * cParamTypes;
int iParamCount;
+ Added :
extern char * hb_comp_szDeclaredFun
* source/compiler/harbour.y
* Enhanced DECLARE FUNCTION parsing to properly maintain number and type of declared function parameters.
* source/compiler/harbour.c
+ Added char * hb_comp_szDeclaredFun
* Modified hb_compVariableAdd() to support dummy parameter vars in Function Decleration.
* source/compiler/hbpcode.c
* Enhancements to hb_compStrongType() to support parameter checks of declared function.
* tests/testwarn.prg
+ Added code to demonstrate more warnings.
* include/hberrors.h
+ Added :
#define HB_COMP_PARAM_COUNT 15
#define HB_COMP_PARAM_TYPE 16
* source/compiler/hbgenerr.c
+ added :
"3Invalid number of parameters: \'%s\' expected: \'%s\'"
"3Incompatible parameter # %s expected: \'%s\'"
* source/compiler/harbour.c
- Removed refrence to pFunc->iFunctionIndex.
* source/compiler/hbpcode.c
* Enhancements to hb_compStrongType()
* tests/testwarn.prg
+ Added code to demonstrate more warnings.
* include/hberrors.h
- Removed pFunctionCalls and iFunctionIndex members of _FUNC structure.