diff options
author | icculus <icculus@noemail.net> | 2010-03-03 16:54:58 +0000 |
---|---|---|
committer | icculus <icculus@noemail.net> | 2010-03-03 16:54:58 +0000 |
commit | 05ac70ee0a1dd27eb3da888adff8c10f8ae8b6b4 (patch) | |
tree | 5664e787b95168b7aa80de98cdc5561ac6896397 /tool/lemon.c | |
parent | 866bf1e6a2c54f2ed44d44f52b0bd0c7cefa8549 (diff) | |
parent | 3bbe761c9b9bfcb3483c8d81025f666d51ed7cd9 (diff) | |
download | sqlite-05ac70ee0a1dd27eb3da888adff8c10f8ae8b6b4.tar.gz sqlite-05ac70ee0a1dd27eb3da888adff8c10f8ae8b6b4.zip |
Merged trunk to lemon-update-2010 branch.
FossilOrigin-Name: 88b466bae47d006c48eff42ab271f05ff56d5ed1
Diffstat (limited to 'tool/lemon.c')
-rw-r--r-- | tool/lemon.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/tool/lemon.c b/tool/lemon.c index f05e9e6ce..8946f1455 100644 --- a/tool/lemon.c +++ b/tool/lemon.c @@ -2285,11 +2285,21 @@ to follow the previous rule."); psp->errorcnt++; psp->state = RESYNC_AFTER_DECL_ERROR; }else{ - struct symbol *sp = Symbol_new(x); - psp->declargslot = &sp->destructor; - psp->decllinenoslot = &sp->destLineno; - psp->insertLineMacro = 1; - psp->state = WAITING_FOR_DECL_ARG; + struct symbol *sp = Symbol_find(x); + if((sp) && (sp->datatype)){ + ErrorMsg(psp->filename,psp->tokenlineno, + "Symbol %%destructor \"%s\" already defined", x); + psp->errorcnt++; + psp->state = RESYNC_AFTER_DECL_ERROR; + }else{ + if (!sp){ + sp = Symbol_new(x); + } + psp->declargslot = &sp->destructor; + psp->decllinenoslot = &sp->destLineno; + psp->insertLineMacro = 1; + psp->state = WAITING_FOR_DECL_ARG; + } } break; case WAITING_FOR_DATATYPE_SYMBOL: |