...as it may detach. Fix the following clazy warning:
Don't call QList::first() on temporary [clazy-detaching-temporary].
Change-Id: I667c122c42ccfc1344508154466d9c1dc6ae6166
Reviewed-by: hjk <hjk@qt.io>
* parser side support for annotations, inline components, new UiVersion
and all the things included in QT 5.15 parser
* SourceLocation moved from QmlJS:AST to QmlJS
* Visitors now need to handle throwRecursionDepthError
* BaseVisitor for visitors that want to override all visit
Task-number: QTCREATORBUG-23591
Change-Id: I682a30d0b08b6c929739fd0e339ef6fbde3eb630
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Qt Creator extracts file names from the output of external processes in
various places, for instance from compilers during the build. It often
happens that such file names are not absolute, so they cannot be
directly opened in an editor when the user clicks on their
representation in some widget. That's why they are processed by the
FileInProjectFinder facility first.
This patch enhances the FileInProjectFinder to be able to return more
than one candidate for a relative file path, and allows the user to
choose between these candidates where possible. This way, we won't open
a random file anymore when a project contains more than one file with
the same name.
Fixes: QTCREATORBUG-13623
Change-Id: Id19c9eace3e6b3dbde89f6528e6d02b55872d747
Reviewed-by: hjk <hjk@qt.io>
The FileInProjectFinder has its own cache. We don't need to duplicate
it.
Change-Id: I90450ac734953e3747e55cb74505dd48e5f22f6e
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This populates a file finder so that it is best able to find QML files,
prioritizing the given project/target. Some of it would also apply to a
non QML file finder, but as we don't use FileInProjectFinder for other
file types we keep the code here, for now.
Change-Id: I14e2ac63e699afe27d2f3af8ca3d57dfe732da8c
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
We check that qmake property in many different places.
Change-Id: Ifd5efe4ad2831385493bd3afe8538929578e8fb4
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This enables us to find QML files that are part of Qt, also if they are
not in the same location on the host and target systems.
Change-Id: Idcd0be8ae4301000c4123e39edeb04b43efb4659
Reviewed-by: hjk <hjk@qt.io>
The RunConfiguration we were using previously only served to retrieve a
target.
Change-Id: I30628197de3025511a03a53d3119083b980762c8
Reviewed-by: hjk <hjk@qt.io>
We want to examine the current list of projects, also if we don't have a
specific runConfiguration. Also, after repopulating the file finder, we
need to clear the cache of file mappings, as they might have changed.
Change-Id: I351789fe999009d443ca5ade9b365bfd490e0e23
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Take care of possible integer overflows and apply coding style.
Change-Id: Ib3922f30c102575ab773f7708864886fc0b53d15
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This is the place where we need it most. In addition, this allows us to
use the DetailsRewriter's cache also on gotoSourceLocation.
Change-Id: I14e0f11ba7c8a2a3888b2e8439a375068b36e29a
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
No need to invent a new name for the same thing.
Change-Id: I370ec7be9c762642ae35e4f7a60ff9f5eb8ae3fe
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
There is not need to constantly loop all the requests. We can simply
hash them by file name. Also, we only need one container for file names
and requests, and we don't need to construct a QTextStream, just to do
QString::mid(), and the connecting and disconnecting to/from the QML
code model needs to be centralized.
Change-Id: I6a887f3375f0534e4b8fab6613882038ea4ddf43
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
It's internal, so we don't need to hide it behind a d pointer.
Change-Id: Ib5b7ac790a1c143414a7ed11e06a5d8a9464de55
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
You should not change them independently as that is error-prone.
Change-Id: I07890a29b045492fe804b9537094dea763bc1b8d
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
These file were not used anywhere else and had no business to be in
qmldebug to begin with. Moving them allows us to drop a number of
namespace qualifications and forces us to rename a few local symbols
in other classes in order to avoid name clashes.
Change-Id: I658ed455eec027cbaddacf2980d2ea6827ae6205
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
Otherwise i had a problem where we were waiting for
/usr/share/unity8//Dash/DashPageHeader.qml
but then on QmlProfilerDetailsRewriter::documentReady we got
/usr/share/unity8/Dash/DashPageHeader.qml
and since it's not the same qstring we didn't realize it was the same file
Task-number: QTCREATORBUG-16020
Change-Id: I3b07450438d98734fbbff9f8b7a3d9d851ed4e5d
Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
It's not clear what they're supposed to tell us.
Change-Id: I62f4fb1265396b8d61df0ce6e3409f0eda677170
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Language::Enum -> QmlDialect
* class instead of enum
* moved Language specific operations to it (from Document)
* nicer handling
QStringList -> PathsAndLanguages
* store language along with path, to perform a correct scan and improve
path handling
Change-Id: If69d35c63cfeb48aa670b51870916cd0c40f1916
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
The file lookup is the single most expensive operation when loading
events from a profiled application, in particular because so far we're
doing one lookup per source location, many of which are actually in the
same files. Caching those lookups for a short time dramatically
increases performance.
Change-Id: Iaa47327aca3f34cbad194757d3ba152205788682
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* better support qbs and similar non QtQuick qml languages
* begin to clean and migrate things from ModelManager to
ModelManagerInterface
Change-Id: Ifa39dc1e4c568e9e21307f4913dcb5989e80420f
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
#!/usr/bin/env ruby
Dir.glob('**/*.cpp') { |file|
# skip ast (excluding paste, astpath, and canv'ast'imer)
next if file =~ /ast[^eip]|keywords\.|qualifiers|preprocessor|names.cpp/i
s = File.read(file)
next if s.include?('qlalr')
orig = s.dup
s.gsub!(/\n *if [^\n]*{\n[^\n]*\n\s+}(\s+else if [^\n]* {\n[^\n]*\n\s+})*(\s+else {\n[^\n]*\n\s+})?\n/m) { |m|
res = $&
if res =~ /^\s*(\/\/|[A-Z_]{3,})/ # C++ comment or macro (Q_UNUSED, SDEBUG), do not touch braces
res
else
res.gsub!('} else', 'else')
res.gsub!(/\n +} *\n/m, "\n")
res.gsub(/ *{$/, '')
end
}
s.gsub!(/ *$/, '')
File.open(file, 'wb').write(s) if s != orig
}
Change-Id: I3b30ee60df0986f66c02132c65fc38a3fbb6bbdc
Reviewed-by: hjk <qthjk@ovi.com>
Rename the QmlJSDebugClient lib to QmlDebug (shorter names, easier differentiation with the shared/qmljsdebug lib).
Also rename
- QDeclarativeDebug* classes to QmlDebug*
- QDeclarativeOutputParser class to QmlOutputParser
To clarify the features,
- Debugger::QmlDebuggerClient is now Debugger::BaseQmlDebuggerClient
- QmlEngineDebugClient is now BaseEngineDebugClient
- QmlDebuggerClient is now QmlEngineDebugClient
- QDeclarativeEngineDebugClient is now DeclarativeEngineDebugClient
Change-Id: Ie15713730a614c8ab4b637fad0924f95b54e633f
Reviewed-by: Aurindam Jana <aurindam.jana@nokia.com>