Mark tokens with the file position from where they're read. Restore this

position for tokens read from a token list. This means that line info does
now show the actual point of definition. This is an improvement but needs to
be refined.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4911 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
uz
2011-01-20 20:54:30 +00:00
parent ddb7296b6c
commit 3b59a8ca6f
8 changed files with 67 additions and 58 deletions

View File

@@ -331,7 +331,7 @@ void MacDef (unsigned Style)
/* Parse a macro definition */
{
Macro* M;
TokNode* T;
TokNode* N;
int HaveParams;
/* We expect a macro name here */
@@ -489,7 +489,7 @@ void MacDef (unsigned Style)
}
/* Create a token node for the current token */
T = NewTokNode ();
N = NewTokNode ();
/* If the token is an ident, check if it is a local parameter */
if (CurTok.Tok == TOK_IDENT) {
@@ -498,8 +498,8 @@ void MacDef (unsigned Style)
while (I) {
if (SB_Compare (&I->Id, &CurTok.SVal) == 0) {
/* Local param name, replace it */
T->Tok = TOK_MACPARAM;
T->IVal = Count;
N->T.Tok = TOK_MACPARAM;
N->T.IVal = Count;
break;
}
++Count;
@@ -510,11 +510,11 @@ void MacDef (unsigned Style)
/* Insert the new token in the list */
if (M->TokCount == 0) {
/* First token */
M->TokRoot = M->TokLast = T;
M->TokRoot = M->TokLast = N;
} else {
/* We have already tokens */
M->TokLast->Next = T;
M->TokLast = T;
M->TokLast->Next = N;
M->TokLast = N;
}
++M->TokCount;