* hberrors.h
+added define WARN_ASSIGN_TYPE and WARN_ASSIGN_SUSPECTED
* compiler.h
+added struct STACK_VAL_TYPE *PSTAC_VAL_TYPE
* harbour.l
+added support for tokens AS NUMERIC, AS CHARACTER, AS LOGICAL, AS DATE, AS ARRAY, AS OBJECT
*modified iLine to initialize to 0 rather than 1
* harbour.y
+added support for extended variable declaration with strong typing
+added logic to support warnings on incompatible and suspecious variable assignments
* compiler.h
added member cType to struct VAR
* harbour.y
added { iVarScope = VS_MEMVAR; } to PRIVATE, PUBLIC, and PARAMETERS statements to avoid errounous error:
"declaration follows executable statement"
added: AliasExp '=' Expression Crlf { /* TODO */ GenPCode1( _POP ); }
to statement definition to avoid parse error on M->Var = "Value" statments.
the _POP will balance the stack but the assignment is not implemented yet.
changed --iLine to iLine in yyerror() to correct errornous line numbers in parase error messages.
added check for null pointer on few references to pVars->szName
* hbpp.c, hbpmain.c, hbpint.c
prefixed messages in all printf() with \n and postfixed with \n until modification to GenWarning() and GenError()
* compiler.h
added member iUsed to struct VAR
* hberrors.h
added define of codeblock parameter not used warning
* harbour.y
removed PDECLARED_VAR struct definition
removed code to maintain FunVars list
added code to GetVarPos() to reflect use of declared variable
added logic to FixReturns() and CodeBlockEnd() to generate warnings on non used decalred vaiables
removed previous version of nonused declared variables warnings from FunDedf() and {Main}
* source/compiler/harbour.y
Moved code to check non used declared variable from GenReturn() to FunDef()
Since Clipper function may have multiple RETURN statements
* include/hberrors.h
added WARN_VAR_NOT_USED
* source/compiler/harbour.y
added warning message "Variable \'%s\' declared but not used in function: %s"
added linked list FunVars to record the usage of declared variables
added logic to maintain FunVars
added logic to check usage as per FunVars in GenReturn()
* include/hberrors.h
added define WARN_AMBIGUOUS_VAR 1
added declaration for new function GenWarning()
* source/compiler/harbour.y
added _szWarnings[] to include parse warning messages
added function GenWarning()
added /w compiler switch to enable warnings
added warning message for ambiguous vars
Harbour.y -> modified pcode generation to move the push of the counter variable to the NEXT rather than the FOR
so loop code may manipulate the counter vaiable.
TEST/WORKING/TestFor.prg -> added this file
Harbour.l added support for "[String]" inside ARRAY INDEX expressions
Added "Sysntax error :" message for the macro operator (&)
when followed by a string delimiter.
Harbour.l modified {Array} and added {FunArray} and {ExpArray}.
To fix support of <INDEX> state to be recusive as well as support:
Function()[nIndex].
/TESTS/WORKING/ArrIndex.prg added this file.
/TESTS/BROKEN/FuncArr.prg added this file to show:
// This is NOT working?
QOut( aFunc()[1]
// But this IS working!
a := aFunc()
QOut( a[1] )
corrected problem with "[]" String Delimiters conflict with array names of reserved words (next, while, etc.)
Please note to check i_INDEX_STATE before a "BEGIN 0;" as in the followings:
if( iINDEX_STATE ) BEGIN INDEX; else BEGIN 0;