* source/compiler/harbour.slx
* Changed storing of MACROTEXT from hb_compIdentifierNew() to hb_strdup().
* tests/tstasort.prg
! Fixed R/T Error resulting from comparing unrelated types in sorting codeblock.
66 lines
1.4 KiB
Plaintext
66 lines
1.4 KiB
Plaintext
//
|
|
// $Id$
|
|
//
|
|
|
|
function main()
|
|
|
|
local oError := ErrorNew()
|
|
|
|
local a := { 3, 2, 1 }
|
|
local b := { 10 }
|
|
local c := { 2, .T., "B", NIL, { 1 }, {|| b }, oError, Date(), 1, .F., "A", NIL, Date() - 1, { 0 }, {|| a }, oError }
|
|
local t
|
|
|
|
?
|
|
?
|
|
? "Original.....:", aDump( t := a )
|
|
? "Asort.c......:", aDump( aSort( t := aClone( a ) ) )
|
|
? "Asort.c.block:", aDump( aSort( t := aClone( a ), , , {| x, y | x < y } ) )
|
|
?
|
|
? "Original.....:", aDump( t := b )
|
|
? "Asort.c......:", aDump( aSort( t := aClone( b ) ) )
|
|
? "Asort.c.block:", aDump( aSort( t := aClone( b ), , , {| x, y | x < y } ) )
|
|
?
|
|
? "Original.....:", aDump( t := c )
|
|
? "Asort.c......:", aDump( aSort( t := aClone( c ) ) )
|
|
? "Asort.c.block:", aDump( aSort( t := aClone( c ), , , {| x, y | xToStr(x) < xToStr(y) } ) )
|
|
|
|
return nil
|
|
|
|
function aDump( a )
|
|
|
|
local cStr := ""
|
|
local n := len( a )
|
|
local i
|
|
|
|
for i := 1 to n
|
|
cStr += alltrim( xToStr( a[i] ) ) + " "
|
|
next
|
|
|
|
return cStr
|
|
|
|
function xToStr( xValue )
|
|
|
|
LOCAL cType := ValType( xValue )
|
|
|
|
do case
|
|
case cType == "C" .or. cType == "M"
|
|
return xValue
|
|
case cType == "N"
|
|
return AllTrim( Str( xValue ) )
|
|
case cType == "D"
|
|
return DToC( xValue )
|
|
case cType == "L"
|
|
return if( xValue, ".T.", ".F." )
|
|
case cType == "U"
|
|
return "NIL"
|
|
case cType == "A"
|
|
return "{.}"
|
|
case cType == "B"
|
|
return "{|| }"
|
|
case cType == "O"
|
|
return "[O]"
|
|
endcase
|
|
|
|
return xValue
|