From e629899766e77dd26e077ee3b5bd74533fe2cc4a Mon Sep 17 00:00:00 2001
From: hjk <qthjk@ovi.com>
Date: Thu, 10 Jan 2013 17:28:51 +0100
Subject: [PATCH] Debugger: always prepend '::' to types when constructing
 expressions

Traditionally, this would have been exactly the wrong thing to do as the
colons confused gdb's command line parser. Now that the general C++
awareness has improved, the parser accepts :: but gets confused by name
lookups, see http://sourceware.org/bugzilla/show_bug.cgi?id=15008

Change-Id: I01e46643a5179ecef26fcc11eab7bab84c359ec6
Reviewed-by: hjk <qthjk@ovi.com>
---
 share/qtcreator/dumper/dumper.py | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/share/qtcreator/dumper/dumper.py b/share/qtcreator/dumper/dumper.py
index ae576bd683d..8b76b7aa658 100644
--- a/share/qtcreator/dumper/dumper.py
+++ b/share/qtcreator/dumper/dumper.py
@@ -660,9 +660,7 @@ def call(value, func, *args):
     return call2(value, func, args)
 
 def makeValue(type, init):
-    type = stripClassTag(type)
-    if type.find(":") >= 0:
-        type = "'" + type + "'"
+    type = "::" + stripClassTag(str(type));
     # Avoid malloc symbol clash with QVector.
     gdb.execute("set $d = (%s*)calloc(sizeof(%s), 1)" % (type, type))
     gdb.execute("set *$d = {%s}" % init)
@@ -685,9 +683,7 @@ def makeStdString(init):
 
 
 def makeExpression(value):
-    type = stripClassTag(str(value.type))
-    if type.find(":") >= 0:
-        type = "'" + type + "'"
+    type = "::" + stripClassTag(str(value.type))
     #warn("  TYPE: %s" % type)
     #exp = "(*(%s*)(&%s))" % (type, value.address)
     exp = "(*(%s*)(%s))" % (type, value.address)
-- 
GitLab