2012-10-24 20:31 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* harbour/src/compiler/complex.c
! fixed lexer to correctly recognize ::msg as FOR iterator
* harbour/include/hbexprb.c
! fixed compile time GPF in code like:
QOut( @1-VAR )
This commit is contained in:
@@ -16,6 +16,14 @@
|
||||
The license applies to all entries newer than 2009-04-28.
|
||||
*/
|
||||
|
||||
2012-10-24 20:31 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
|
||||
* harbour/src/compiler/complex.c
|
||||
! fixed lexer to correctly recognize ::msg as FOR iterator
|
||||
|
||||
* harbour/include/hbexprb.c
|
||||
! fixed compile time GPF in code like:
|
||||
QOut( @1-VAR )
|
||||
|
||||
2012-10-24 18:50 UTC+0200 Viktor Szakats (harbour syenar.net)
|
||||
* utils/hbmk2/hbmk2.1
|
||||
* utils/hbmk2/hbmk2.es_PE.po
|
||||
|
||||
@@ -859,6 +859,7 @@ static HB_EXPR_FUNC( hb_compExprUseRef )
|
||||
else if( pExp->ExprType == HB_ET_ALIASVAR )
|
||||
{
|
||||
if( pExp->value.asAlias.pVar->ExprType == HB_ET_VARIABLE &&
|
||||
pExp->value.asAlias.pAlias->ExprType == HB_ET_ALIAS &&
|
||||
hb_compExprIsMemvarAlias( pExp->value.asAlias.pAlias->value.asSymbol.name ) )
|
||||
{ /* @M-> @MEMVAR-> or @MEMVA-> or @MEMV-> */
|
||||
HB_GEN_FUNC1( PushMemvarRef, pExp->value.asAlias.pVar->value.asSymbol.name );
|
||||
@@ -1426,6 +1427,7 @@ static HB_EXPR_FUNC( hb_compExprUseArrayAt )
|
||||
}
|
||||
else if( pList->ExprType == HB_ET_ALIASVAR &&
|
||||
pList->value.asAlias.pVar->ExprType == HB_ET_VARIABLE &&
|
||||
pList->value.asAlias.pAlias->ExprType == HB_ET_ALIAS &&
|
||||
hb_compExprIsMemvarAlias( pList->value.asAlias.pAlias->value.asSymbol.name ) )
|
||||
{
|
||||
HB_GEN_FUNC1( PushMemvarRef, pList->value.asAlias.pVar->value.asSymbol.name );
|
||||
@@ -1507,6 +1509,7 @@ static HB_EXPR_FUNC( hb_compExprUseArrayAt )
|
||||
}
|
||||
else if( pList->ExprType == HB_ET_ALIASVAR &&
|
||||
pList->value.asAlias.pVar->ExprType == HB_ET_VARIABLE &&
|
||||
pList->value.asAlias.pAlias->ExprType == HB_ET_ALIAS &&
|
||||
hb_compExprIsMemvarAlias( pList->value.asAlias.pAlias->value.asSymbol.name ) )
|
||||
{
|
||||
HB_GEN_FUNC1( PushMemvarRef, pList->value.asAlias.pVar->value.asSymbol.name );
|
||||
|
||||
@@ -1038,23 +1038,26 @@ int hb_comp_yylex( YYSTYPE *yylval_ptr, HB_COMP_DECL )
|
||||
|
||||
case FOR:
|
||||
if( pLex->iState == LOOKUP &&
|
||||
!HB_PP_TOKEN_ISEOC( pToken->pNext ) &&
|
||||
( HB_PP_TOKEN_TYPE( pToken->pNext->type ) == HB_PP_TOKEN_KEYWORD ||
|
||||
/* Clipper always assume FOR (somevar):=1 TO ... here */
|
||||
HB_PP_TOKEN_TYPE( pToken->pNext->type ) == HB_PP_TOKEN_LEFT_PB ) )
|
||||
!HB_PP_TOKEN_ISEOC( pToken->pNext ) )
|
||||
{
|
||||
if( pToken->pNext->pNext &&
|
||||
HB_PP_TOKEN_TYPE( pToken->pNext->pNext->type ) != HB_PP_TOKEN_ASSIGN &&
|
||||
HB_PP_TOKEN_TYPE( pToken->pNext->pNext->type ) != HB_PP_TOKEN_EQ &&
|
||||
HB_PP_TOKEN_TYPE( pToken->pNext->type ) == HB_PP_TOKEN_KEYWORD &&
|
||||
hb_stricmp( "EACH", pToken->pNext->value ) == 0 )
|
||||
PHB_PP_TOKEN pNext = pToken->pNext;
|
||||
|
||||
if( HB_PP_TOKEN_TYPE( pNext->type ) == HB_PP_TOKEN_KEYWORD &&
|
||||
pNext->pNext &&
|
||||
HB_PP_TOKEN_TYPE( pNext->pNext->type ) == HB_PP_TOKEN_KEYWORD &&
|
||||
hb_stricmp( "EACH", pNext->value ) == 0 )
|
||||
{
|
||||
hb_pp_tokenGet( pLex->pPP );
|
||||
pLex->iState = FOREACH;
|
||||
return FOREACH;
|
||||
}
|
||||
pLex->iState = FOR;
|
||||
return FOR;
|
||||
if( !hb_pp_tokenNextExp( &pNext ) && pNext &&
|
||||
HB_PP_TOKEN_TYPE( pNext->type ) == HB_PP_TOKEN_KEYWORD &&
|
||||
hb_stricmp( "TO", pNext->value ) == 0 )
|
||||
{
|
||||
pLex->iState = FOR;
|
||||
return FOR;
|
||||
}
|
||||
}
|
||||
iType = IDENTIFIER;
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user