Fix detection of labels with a typedef name
commit15f4ac2b1a4453b73904bb2ff4441498d5911a64
authorMichael Matz <matz@suse.de>
Sun, 15 Apr 2012 20:17:51 +0000 (15 22:17 +0200)
committerMichael Matz <matz@suse.de>
Wed, 18 Apr 2012 18:57:13 +0000 (18 20:57 +0200)
tree4907f114145ae9ef8be7a6a34bad1cca8728e6a7
parent1d0a5c251553d8d9199ad18d4780bf356f456298
Fix detection of labels with a typedef name

This needs to be accepted:
  typedef int foo;
  void f (void) { foo: return; }
namespaces for labels and types are different.  The problem is that
the block parser always tries to find a decl first and that routine
doesn't peek enough to detect this case.  Needs some adjustments
to unget_tok() so that we can call it even when we already called
it once, but next() didn't come around restoring the buffer yet.
(It lazily does so not when the buffer becomes empty, but rather
when the next call detects that the buffer is empty, i.e. it requires
two next() calls until the unget buffer gets switched back).
tccgen.c
tccpp.c
tests/tcctest.c