summaryrefslogtreecommitdiff
path: root/src/parsers
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-06-09 21:46:06 +0300
committerAndrei Karas <akaras@inbox.ru>2015-06-09 21:46:06 +0300
commit22efb5610234bff03675608a7a1a953864427343 (patch)
tree171f8a5e6b7615e9564848d0ee0d02555340bc1c /src/parsers
parent7744c07ec30e671a267929dde70277783a0447ed (diff)
downloadparanucker-22efb5610234bff03675608a7a1a953864427343.tar.gz
paranucker-22efb5610234bff03675608a7a1a953864427343.tar.bz2
paranucker-22efb5610234bff03675608a7a1a953864427343.tar.xz
paranucker-22efb5610234bff03675608a7a1a953864427343.zip
Add location detection for *_EXPR nodes.
Also fix line in warning for MODIFY_EXPR.
Diffstat (limited to 'src/parsers')
-rw-r--r--src/parsers/base/expr.cpp17
-rw-r--r--src/parsers/base/expr.h3
-rw-r--r--src/parsers/expr/addr_expr.cpp1
-rw-r--r--src/parsers/expr/bind_expr.cpp1
-rw-r--r--src/parsers/expr/call_expr.cpp1
-rw-r--r--src/parsers/expr/cleanuppoint_expr.cpp1
-rw-r--r--src/parsers/expr/cond_expr.cpp1
-rw-r--r--src/parsers/expr/convert_expr.cpp1
-rw-r--r--src/parsers/expr/decl_expr.cpp1
-rw-r--r--src/parsers/expr/eq_expr.cpp1
-rw-r--r--src/parsers/expr/ge_expr.cpp1
-rw-r--r--src/parsers/expr/gt_expr.cpp1
-rw-r--r--src/parsers/expr/indirect_ref.cpp1
-rw-r--r--src/parsers/expr/init_expr.cpp1
-rw-r--r--src/parsers/expr/le_expr.cpp1
-rw-r--r--src/parsers/expr/loop_expr.cpp1
-rw-r--r--src/parsers/expr/lt_expr.cpp1
-rw-r--r--src/parsers/expr/minus_expr.cpp1
-rw-r--r--src/parsers/expr/modify_expr.cpp1
-rw-r--r--src/parsers/expr/mult_expr.cpp1
-rw-r--r--src/parsers/expr/ne_expr.cpp1
-rw-r--r--src/parsers/expr/nop_expr.cpp1
-rw-r--r--src/parsers/expr/plus_expr.cpp1
-rw-r--r--src/parsers/expr/pointerplus_expr.cpp1
-rw-r--r--src/parsers/expr/return_expr.cpp1
25 files changed, 43 insertions, 0 deletions
diff --git a/src/parsers/base/expr.cpp b/src/parsers/base/expr.cpp
index 3432ec3..e458366 100644
--- a/src/parsers/base/expr.cpp
+++ b/src/parsers/base/expr.cpp
@@ -30,6 +30,23 @@
namespace Generic
{
+void fillExprLocation(Node *node)
+{
+ if (!node || node->gccNode == NULL_TREE)
+ {
+ return;
+ }
+
+ if (EXPR_HAS_LOCATION(node->gccNode))
+ {
+ location_t loc = EXPR_LOCATION(node->gccNode);
+ node->location = loc;
+ node->file = LOCATION_FILE(loc);
+ node->line = LOCATION_LINE(loc);
+ node->column = LOCATION_COLUMN(loc);
+ }
+}
+
void fillExprOperands(ExprNode *node)
{
if (!node || node->gccNode == NULL_TREE)
diff --git a/src/parsers/base/expr.h b/src/parsers/base/expr.h
index 6f1b124..9067133 100644
--- a/src/parsers/base/expr.h
+++ b/src/parsers/base/expr.h
@@ -21,9 +21,12 @@
#define PARSERS_BASE_EXPR_H
struct ExprNode;
+struct Node;
namespace Generic
{
+ void fillExprLocation(Node *node);
+
void fillExprOperands(ExprNode *node);
}
diff --git a/src/parsers/expr/addr_expr.cpp b/src/parsers/expr/addr_expr.cpp
index e1c2583..f831e4e 100644
--- a/src/parsers/expr/addr_expr.cpp
+++ b/src/parsers/expr/addr_expr.cpp
@@ -31,6 +31,7 @@ namespace Generic
void parseAddrExprNode(AddrExprNode *node)
{
fillType(node);
+ fillExprLocation(node);
Log::dump(node);
fillExprOperands(node);
diff --git a/src/parsers/expr/bind_expr.cpp b/src/parsers/expr/bind_expr.cpp
index 0c0e0ea..1157163 100644
--- a/src/parsers/expr/bind_expr.cpp
+++ b/src/parsers/expr/bind_expr.cpp
@@ -31,6 +31,7 @@ namespace Generic
void parseBindExprNode(BindExprNode *node)
{
fillType(node);
+ fillExprLocation(node);
Log::dump(node);
fillExprOperands(node);
diff --git a/src/parsers/expr/call_expr.cpp b/src/parsers/expr/call_expr.cpp
index 265da1a..f3072bf 100644
--- a/src/parsers/expr/call_expr.cpp
+++ b/src/parsers/expr/call_expr.cpp
@@ -33,6 +33,7 @@ namespace Generic
void parseCallExprNode(CallExprNode *node)
{
fillType(node);
+ fillExprLocation(node);
Log::dump(node);
// not recommended
diff --git a/src/parsers/expr/cleanuppoint_expr.cpp b/src/parsers/expr/cleanuppoint_expr.cpp
index 19d3686..b08b9e1 100644
--- a/src/parsers/expr/cleanuppoint_expr.cpp
+++ b/src/parsers/expr/cleanuppoint_expr.cpp
@@ -31,6 +31,7 @@ namespace Generic
void parseCleanupPointExprNode(CleanupPointExprNode *node)
{
fillType(node);
+ fillExprLocation(node);
Log::dump(node);
fillExprOperands(node);
diff --git a/src/parsers/expr/cond_expr.cpp b/src/parsers/expr/cond_expr.cpp
index a334a84..2129059 100644
--- a/src/parsers/expr/cond_expr.cpp
+++ b/src/parsers/expr/cond_expr.cpp
@@ -31,6 +31,7 @@ namespace Generic
void parseCondExprNode(CondExprNode *node)
{
fillType(node);
+ fillExprLocation(node);
Log::dump(node);
fillExprOperands(node);
diff --git a/src/parsers/expr/convert_expr.cpp b/src/parsers/expr/convert_expr.cpp
index 7680da0..bb74e24 100644
--- a/src/parsers/expr/convert_expr.cpp
+++ b/src/parsers/expr/convert_expr.cpp
@@ -31,6 +31,7 @@ namespace Generic
void parseConvertExprNode(ConvertExprNode *node)
{
fillType(node);
+ fillExprLocation(node);
Log::dump(node);
fillExprOperands(node);
diff --git a/src/parsers/expr/decl_expr.cpp b/src/parsers/expr/decl_expr.cpp
index b65226d..7a333f3 100644
--- a/src/parsers/expr/decl_expr.cpp
+++ b/src/parsers/expr/decl_expr.cpp
@@ -31,6 +31,7 @@ namespace Generic
void parseDeclExprNode(DeclExprNode *node)
{
fillType(node);
+ fillExprLocation(node);
Log::dump(node);
fillExprOperands(node);
diff --git a/src/parsers/expr/eq_expr.cpp b/src/parsers/expr/eq_expr.cpp
index 66668f1..7cf458c 100644
--- a/src/parsers/expr/eq_expr.cpp
+++ b/src/parsers/expr/eq_expr.cpp
@@ -31,6 +31,7 @@ namespace Generic
void parseEqExprNode(EqExprNode *node)
{
fillType(node);
+ fillExprLocation(node);
Log::dump(node);
fillExprOperands(node);
diff --git a/src/parsers/expr/ge_expr.cpp b/src/parsers/expr/ge_expr.cpp
index 39589af..96d536e 100644
--- a/src/parsers/expr/ge_expr.cpp
+++ b/src/parsers/expr/ge_expr.cpp
@@ -31,6 +31,7 @@ namespace Generic
void parseGeExprNode(GeExprNode *node)
{
fillType(node);
+ fillExprLocation(node);
Log::dump(node);
fillExprOperands(node);
diff --git a/src/parsers/expr/gt_expr.cpp b/src/parsers/expr/gt_expr.cpp
index 511f184..d0ef3bf 100644
--- a/src/parsers/expr/gt_expr.cpp
+++ b/src/parsers/expr/gt_expr.cpp
@@ -31,6 +31,7 @@ namespace Generic
void parseGtExprNode(GtExprNode *node)
{
fillType(node);
+ fillExprLocation(node);
Log::dump(node);
fillExprOperands(node);
diff --git a/src/parsers/expr/indirect_ref.cpp b/src/parsers/expr/indirect_ref.cpp
index 2f935b5..961050b 100644
--- a/src/parsers/expr/indirect_ref.cpp
+++ b/src/parsers/expr/indirect_ref.cpp
@@ -31,6 +31,7 @@ namespace Generic
void parseIndirectRefNode(IndirectRefNode *node)
{
fillType(node);
+ fillExprLocation(node);
Log::dump(node);
fillExprOperands(node);
diff --git a/src/parsers/expr/init_expr.cpp b/src/parsers/expr/init_expr.cpp
index a35b7bc..44baf51 100644
--- a/src/parsers/expr/init_expr.cpp
+++ b/src/parsers/expr/init_expr.cpp
@@ -31,6 +31,7 @@ namespace Generic
void parseInitExprNode(InitExprNode *node)
{
fillType(node);
+ fillExprLocation(node);
Log::dump(node);
fillExprOperands(node);
diff --git a/src/parsers/expr/le_expr.cpp b/src/parsers/expr/le_expr.cpp
index f3619f5..15e90a8 100644
--- a/src/parsers/expr/le_expr.cpp
+++ b/src/parsers/expr/le_expr.cpp
@@ -31,6 +31,7 @@ namespace Generic
void parseLeExprNode(LeExprNode *node)
{
fillType(node);
+ fillExprLocation(node);
Log::dump(node);
fillExprOperands(node);
diff --git a/src/parsers/expr/loop_expr.cpp b/src/parsers/expr/loop_expr.cpp
index e8558a5..78846f0 100644
--- a/src/parsers/expr/loop_expr.cpp
+++ b/src/parsers/expr/loop_expr.cpp
@@ -31,6 +31,7 @@ namespace Generic
void parseLoopExprNode(LoopExprNode *node)
{
fillType(node);
+ fillExprLocation(node);
Log::dump(node);
// fillExprOperands(node);
diff --git a/src/parsers/expr/lt_expr.cpp b/src/parsers/expr/lt_expr.cpp
index b0c833e..bf3f330 100644
--- a/src/parsers/expr/lt_expr.cpp
+++ b/src/parsers/expr/lt_expr.cpp
@@ -31,6 +31,7 @@ namespace Generic
void parseLtExprNode(LtExprNode *node)
{
fillType(node);
+ fillExprLocation(node);
Log::dump(node);
fillExprOperands(node);
diff --git a/src/parsers/expr/minus_expr.cpp b/src/parsers/expr/minus_expr.cpp
index 19a18c7..9922b8e 100644
--- a/src/parsers/expr/minus_expr.cpp
+++ b/src/parsers/expr/minus_expr.cpp
@@ -31,6 +31,7 @@ namespace Generic
void parseMinusExprNode(MinusExprNode *node)
{
fillType(node);
+ fillExprLocation(node);
Log::dump(node);
fillExprOperands(node);
diff --git a/src/parsers/expr/modify_expr.cpp b/src/parsers/expr/modify_expr.cpp
index 07552fa..af225e7 100644
--- a/src/parsers/expr/modify_expr.cpp
+++ b/src/parsers/expr/modify_expr.cpp
@@ -31,6 +31,7 @@ namespace Generic
void parseModifyExprNode(ModifyExprNode *node)
{
fillType(node);
+ fillExprLocation(node);
Log::dump(node);
fillExprOperands(node);
diff --git a/src/parsers/expr/mult_expr.cpp b/src/parsers/expr/mult_expr.cpp
index 4950737..e67b40c 100644
--- a/src/parsers/expr/mult_expr.cpp
+++ b/src/parsers/expr/mult_expr.cpp
@@ -31,6 +31,7 @@ namespace Generic
void parseMultExprNode(MultExprNode *node)
{
fillType(node);
+ fillExprLocation(node);
Log::dump(node);
fillExprOperands(node);
diff --git a/src/parsers/expr/ne_expr.cpp b/src/parsers/expr/ne_expr.cpp
index 22e9cc5..ba20614 100644
--- a/src/parsers/expr/ne_expr.cpp
+++ b/src/parsers/expr/ne_expr.cpp
@@ -31,6 +31,7 @@ namespace Generic
void parseNeExprNode(NeExprNode *node)
{
fillType(node);
+ fillExprLocation(node);
Log::dump(node);
fillExprOperands(node);
diff --git a/src/parsers/expr/nop_expr.cpp b/src/parsers/expr/nop_expr.cpp
index 8eba0c2..1efecc5 100644
--- a/src/parsers/expr/nop_expr.cpp
+++ b/src/parsers/expr/nop_expr.cpp
@@ -31,6 +31,7 @@ namespace Generic
void parseNopExprNode(NopExprNode *node)
{
fillType(node);
+ fillExprLocation(node);
Log::dump(node);
fillExprOperands(node);
diff --git a/src/parsers/expr/plus_expr.cpp b/src/parsers/expr/plus_expr.cpp
index 211a516..41dceaa 100644
--- a/src/parsers/expr/plus_expr.cpp
+++ b/src/parsers/expr/plus_expr.cpp
@@ -31,6 +31,7 @@ namespace Generic
void parsePlusExprNode(PlusExprNode *node)
{
fillType(node);
+ fillExprLocation(node);
Log::dump(node);
fillExprOperands(node);
diff --git a/src/parsers/expr/pointerplus_expr.cpp b/src/parsers/expr/pointerplus_expr.cpp
index 3dce95b..13963d7 100644
--- a/src/parsers/expr/pointerplus_expr.cpp
+++ b/src/parsers/expr/pointerplus_expr.cpp
@@ -31,6 +31,7 @@ namespace Generic
void parsePointerPlusExprNode(PointerPlusExprNode *node)
{
fillType(node);
+ fillExprLocation(node);
Log::dump(node);
fillExprOperands(node);
diff --git a/src/parsers/expr/return_expr.cpp b/src/parsers/expr/return_expr.cpp
index 76e36d0..b36993a 100644
--- a/src/parsers/expr/return_expr.cpp
+++ b/src/parsers/expr/return_expr.cpp
@@ -31,6 +31,7 @@ namespace Generic
void parseReturnExprNode(ReturnExprNode *node)
{
fillType(node);
+ fillExprLocation(node);
Log::dump(node);
fillExprOperands(node);