diff options
Diffstat (limited to 'src/parsers/generic.cpp')
-rw-r--r-- | src/parsers/generic.cpp | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/src/parsers/generic.cpp b/src/parsers/generic.cpp index a296e58..c2b02ca 100644 --- a/src/parsers/generic.cpp +++ b/src/parsers/generic.cpp @@ -82,19 +82,8 @@ Node *createParseNode(Node *parent, node->tag = tag; } - switch (TREE_CODE(node->gccNode)) - { -#undef handleNodeType -#define handleNodeType(code, type) \ - case code: \ - parse##type##Node(static_cast<type##Node*>(node)); \ - break; -#include "includes/nodeshandling.inc" - default: - break; - } if (wantType != ERROR_MARK && - node->nodeType != get_tree_code_name(wantType)) + TREE_CODE(node->gccNode) != wantType) { if (tag.empty()) { @@ -111,6 +100,19 @@ Node *createParseNode(Node *parent, node->nodeType.c_str(), tag.c_str()); } + return nullptr; + } + + switch (TREE_CODE(node->gccNode)) + { +#undef handleNodeType +#define handleNodeType(code, type) \ + case code: \ + parse##type##Node(static_cast<type##Node*>(node)); \ + break; +#include "includes/nodeshandling.inc" + default: + break; } } return node; |