From 9e2788dc573872d3096913f041a068ba3428b882 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 7 Jun 2015 17:34:43 +0300 Subject: Not allow return wrong node type after node creation. --- src/parsers/generic.cpp | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) (limited to 'src/parsers/generic.cpp') 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(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(node)); \ + break; +#include "includes/nodeshandling.inc" + default: + break; } } return node; -- cgit v1.2.3-70-g09d2