aboutsummaryrefslogtreecommitdiff
path: root/tool/lemon.c
diff options
context:
space:
mode:
authoricculus <icculus@noemail.net>2010-03-03 16:54:58 +0000
committericculus <icculus@noemail.net>2010-03-03 16:54:58 +0000
commit05ac70ee0a1dd27eb3da888adff8c10f8ae8b6b4 (patch)
tree5664e787b95168b7aa80de98cdc5561ac6896397 /tool/lemon.c
parent866bf1e6a2c54f2ed44d44f52b0bd0c7cefa8549 (diff)
parent3bbe761c9b9bfcb3483c8d81025f666d51ed7cd9 (diff)
downloadsqlite-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.c20
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: