From 89a36c72322a61761e24d69e2645b0b1d5fd822c Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 20 Sep 2019 15:45:11 +0200 Subject: Debugger: Show FORTRAN strings Fixes: QTCREATORBUG-22976 Change-Id: Ib435b2692301fe2e2d3378623e99bbcf16e27e46 Reviewed-by: Christian Stenger --- share/qtcreator/debugger/dumper.py | 4 ++-- tests/auto/debugger/tst_dumpers.cpp | 35 +++++++++++++++++++++++++++++++++++ 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: -- cgit v1.2.1