#include statements inside Type blocks cause undefined behaviour: They're processed as usual by a recursive cProgram() call, breaking the Type parser's assumption about being non-recursive, and allowing many more constructs than allowed by hTypeBody().
Either #includes need to be disallowed inside such special nested blocks, or the #include expansion must be transparent to the parser.