From 1d209b9c3e6815f1f8d657f43472ecfef4d9f90b Mon Sep 17 00:00:00 2001
From: Orgad Shaneh <orgad.shaneh@audiocodes.com>
Date: Mon, 20 Aug 2012 15:36:26 +0300
Subject: [PATCH] Dumper: Respect dynamic type option for locals and references

Task-number: QTCREATORBUG-7504

Change-Id: Ib49b4189e84cd4d3539ec9bbbada373f306ca68d
Reviewed-by: hjk <qthjk@ovi.com>
---
 share/qtcreator/dumper/dumper.py | 25 +++++++++++++------------
 1 file changed, 13 insertions(+), 12 deletions(-)

diff --git a/share/qtcreator/dumper/dumper.py b/share/qtcreator/dumper/dumper.py
index d02ea77825d..f37a4af2d76 100644
--- a/share/qtcreator/dumper/dumper.py
+++ b/share/qtcreator/dumper/dumper.py
@@ -1054,7 +1054,7 @@ class Dumper:
                 pass
 
         for item in locals:
-            value = downcast(item.value)
+            value = downcast(item.value) if self.useDynamicType else item.value
             with OutputSafer(self):
                 self.anonNumber = -1
 
@@ -1370,17 +1370,18 @@ class Dumper:
             except:
                 pass
 
-            try:
-                # Dynamic references are not supported by gdb, see
-                # http://sourceware.org/bugzilla/show_bug.cgi?id=14077.
-                # Find the dynamic type manually using referenced_type.
-                value = value.referenced_value()
-                value = value.cast(value.dynamic_type)
-                self.putItem(value)
-                self.putBetterType("%s &" % value.type)
-                return
-            except:
-                pass
+            if tryDynamic:
+                try:
+                    # Dynamic references are not supported by gdb, see
+                    # http://sourceware.org/bugzilla/show_bug.cgi?id=14077.
+                    # Find the dynamic type manually using referenced_type.
+                    value = value.referenced_value()
+                    value = value.cast(value.dynamic_type)
+                    self.putItem(value)
+                    self.putBetterType("%s &" % value.type)
+                    return
+                except:
+                    pass
 
             try:
                 # FIXME: This throws "RuntimeError: Attempt to dereference a
-- 
GitLab