Files
harbour-core/harbour/tests/testwarn.prg
Ron Pinkas 86e2384686 20000504-03:10 GMT-8 Ron Pinkas <Ron@Profit-Master.com>
* source/compiler/harbour.l
     + Added:
	"as bool array"      { return AS_LOGICAL_ARRAY; }
	"as boolean array"   { return AS_LOGICAL_ARRAY; }
	"as var"             { return AS_VARIANT; }
	"as variant"         { return AS_VARIANT; }
	"as num array"       { return AS_NUMERIC_ARRAY; }
	"as numeric array"   { return AS_NUMERIC_ARRAY; }
	"as char array"      { return AS_CHARACTER_ARRAY; }
	"as character array" { return AS_CHARACTER_ARRAY; }
	"as string array"    { return AS_CHARACTER_ARRAY; }
	"as logical array"   { return AS_LOGICAL_ARRAY; }
	"as bool array"      { return AS_LOGICAL_ARRAY; }
	"as boolean array"   { return AS_LOGICAL_ARRAY; }
	"as date array"      { return AS_DATE_ARRAY; }
	"as array array"     { return AS_ARRAY_ARRAY; }
	"as block array"     { return AS_BLOCK_ARRAY; }
	"as object array"    { return AS_OBJECT_ARRAY; }
	"as var array"       { return AS_VARIANT; }
	"as variant array"   { return AS_VARIANT; }

   * source/compiler/harbour.y
     + Added AsArray
     + Added : %token AS_NUMERIC_ARRAY AS_CHARACTER_ARRAY AS_LOGICAL_ARRAY AS_DATE_ARRAY AS_ARRAY_ARRAY AS_BLOCK_ARRAY AS_OBJECT_ARRAY AS_VARIANT_ARRAY
     + Added rules to support declarion of array elements type

   * source/compiler/harbour.c
     ! Minor fix to hb_compVariableGetPos() to signify var usage if warning level lower than 3

   * source/compiler/hbpcode.c
     + Added logic to hb_compStrongType() to support type checking of array elements declared type.

   * include/hberrors.h
     + Added #define HB_COMP_ARRAY_ASSIGN_TYPE

   * source/compiler/hbgenerr.c
     + Added : "3Incompatible type in assignment to declared array element expected: \'%s\'"

   * tests/testwarn.prg
     + Added code to demonstrate more warnings.

   * contrib/hbclip/hbclip.ch
     + Added additional strong typing compatibility translations
2000-05-04 10:26:57 +00:00

184 lines
2.9 KiB
Plaintext

//
// $Id$
//
// This file is OK to have warnings.
#ifdef __HARBOUR__
#pragma -es0
#else
#TRANSLATE AS CHAR ARRAY =>
#TRANSLATE AS CHARACTER ARRAY =>
#TRANSLATE AS STRING ARRAY =>
#TRANSLATE AS NUM ARRAY =>
#TRANSLATE AS NUMERIC ARRAY =>
#TRANSLATE AS DATE ARRAY =>
#TRANSLATE AS ARRAY ARRAY =>
#TRANSLATE AS BLOCK ARRAY =>
#TRANSLATE AS OBJECT ARRAY =>
#TRANSLATE AS BOOL ARRAY =>
#TRANSLATE AS BOOLEAN ARRAY =>
#TRANSLATE AS LOGICAL ARRAY =>
#TRANSLATE AS VAR ARRAY =>
#TRANSLATE AS VARIANT ARRAY =>
#TRANSLATE AS CHAR =>
#TRANSLATE AS CHARACTER =>
#TRANSLATE AS STRING =>
#TRANSLATE AS NUM =>
#TRANSLATE AS NUMERIC =>
#TRANSLATE AS DATE =>
#TRANSLATE AS ARRAY =>
#TRANSLATE AS BLOCK =>
#TRANSLATE AS OBJECT =>
#TRANSLATE AS BOOL =>
#TRANSLATE AS BOOLEAN =>
#TRANSLATE AS LOGICAL =>
#TRANSLATE AS VAR =>
#TRANSLATE AS VARIANT =>
#COMMAND DECLARE FUNCTION <*x*> =>
#endif
DECLARE FUNCTION nMyFunc( cVar AS STRING, nVar AS NUMERIC ) AS NUMERIC
DECLARE FUNCTION cOtherFunc( ) AS CHAR
DECLARE FUNCTION cOtherFunc( ) AS CHAR
DECLARE FUNCTION seconds() AS NUM
DECLARE FUNCTION int( n AS NUMERIC ) AS NUMERIC
DECLARE FUNCTION TEST AS NUMERIC
PROCEDURE MAIN( Param1 )
LOCAL cVar as char, a[2,3,4] AS BOOL ARRAY
LOCAL RPT, APARAMS
a[1] = 2
cVAr := a[1]
Rpt := IIF( Param1, 1 , 0 )
Rpt := Array( Len( AParams ) - 2 )
RETURN
PROC MAIN1()
PRIVATE OTHER, TEST AS CHAR
Var1 := M->TEST
Var2 := Test()
M->TEST := 1
M->TEST := "incorrect warning"
test[ 1 ][ 2 ] := "incorrect warning"
RETURN
Function Test()
return .t.
Function Main2()
Local n As Numeric, lVar AS LOGICAL
n := IIF( lVar, 'A', 3 )
n := 2
n := 'a'
n := seconds() + 2
n := int( seconds() + 2 )
Return( NIL )
FUNCTION Main3()
LOCAL n AS NUMERIC, cVar AS CHARACTER, a[5,5,5] AS CHARACTER ARRAY
cVar := a[1]
n := &SomeFun( 2, 3 )
n := ExtFun()
cVar := cOtherFunc( 3 )
n := nMyFunc( a, cVar ) + 3
n := &(cVar)
n := "&SomeVar"
n := &Var.1
n := V&SomeVar.1
n[2] := 4
cVar := {|nb AS NUMERIC , cb AS CHARACTER, db AS DATE| n := .F., nb := 'A', cb := 1, db := 0, n := 'wrong type', 0 }
? "This is a compiler test."
n := 'C is Wrong Type for n'
n := {1,2,3}
n := a
IIF( n, 2, 3 )
RETURN NIL
FUNCTION Hex2Dec( lVar AS LOGICAL )
LOCAL nVar AS NUMERIC, cVar AS CHARACTER, lVar2 AS LOGICAL, nNoType := 3
PRIVATE cMemVar1 AS CHARACTER
nVar := .T.
nVar := 1
nVar := 'A'
cVar := 2
cVar := 'B'
cVar := 2
lVar := .T.
lVar := nNoType
cVar := nVar
M->cMemVar1 := 2
NondDeclared := 2
cVar := {|n AS NUMERIC , c AS CHARACTER, d AS DATE| n := nMyFunc( n,c,d ), c := 2 }
nVar := 8 + cVar
IF 1
ENDIF
RETURN NIL
Function nMyFunc( nParam )
return nParam * 2