summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2019-09-20 15:45:11 +0200
committerhjk <hjk@qt.io>2019-09-23 08:50:17 +0000
commit89a36c72322a61761e24d69e2645b0b1d5fd822c (patch)
tree226088c2de0465bf77af0c0568c13b8e02fdbac7
parent54e3d06c5e175d86c634b67a0504af6b1e78374f (diff)
downloadqt-creator-89a36c72322a61761e24d69e2645b0b1d5fd822c.tar.gz
Debugger: Show FORTRAN strings
Fixes: QTCREATORBUG-22976 Change-Id: Ib435b2692301fe2e2d3378623e99bbcf16e27e46 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
-rw-r--r--share/qtcreator/debugger/dumper.py4
-rw-r--r--tests/auto/debugger/tst_dumpers.cpp35
2 files changed, 37 insertions, 2 deletions
diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py
index 1401926858..aa351b7e7e 100644
--- a/share/qtcreator/debugger/dumper.py
+++ b/share/qtcreator/debugger/dumper.py
@@ -2837,8 +2837,8 @@ class DumperBase:
return
if typeobj.code == TypeCodeFortranString:
- data = self.value.data()
- self.putValue(data, 'latin1', 1)
+ self.putValue(self.hexencode(value.data()), 'latin1')
+ self.putNumChild(0)
self.putType(typeobj)
if typeName.endswith('[]'):
diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp
index 5f8dc1e4f4..99b7f2ef2b 100644
--- a/tests/auto/debugger/tst_dumpers.cpp
+++ b/tests/auto/debugger/tst_dumpers.cpp
@@ -7262,6 +7262,41 @@ void tst_Dumpers::dumper_data()
+ Check("f1", "1", "@QSqlField (qlonglong)")
+ Check("f2", "\"qt-logo.png\"", "@QSqlField (QString)")
+ Check("f3", "(invalid)", "@QSqlField (invalid)");
+
+
+ Data f90data;
+ f90data.configTest = "which f95";
+ f90data.allProfile =
+ "CONFIG -= qt\n"
+ "SOURCES += main.f90\n"
+ "# Prevents linking\n"
+ "TARGET=\n"
+ "# Overwrites qmake-generated 'all' target.\n"
+ "all.commands = f95 -g -o doit main.f90\n"
+ "all.depends = main.f90\n"
+ "all.CONFIG = phony\n\n"
+ "QMAKE_EXTRA_TARGETS += all\n";
+
+ f90data.allCode =
+ "program test_fortran\n\n"
+ " implicit none\n\n"
+ " character(8) :: c8\n"
+ " integer(8) :: i8\n\n"
+ " i8 = 1337\n"
+ " c8 = 'c_____a_'\n"
+ " ! write (*,*) c8\n"
+ " i8 = i8 / 0\n"
+ "end program\n";
+
+ f90data.mainFile = "main.f90";
+
+ QTest::newRow("F90")
+ << f90data
+ + GdbEngine
+ + Check("c8", "\"c_____a_\"", "character *8")
+ + Check("i8", "1337", "integer(kind=8)");
+
+
#if 0
#ifdef Q_OS_LINUX
// Hint: To open a failing test in Creator, do: