Commit Graph

1054 Commits

Author SHA1 Message Date
Ulf Hermann
ca22051303 QmlJS: Avoid infinite loop on empty list of import paths
Change-Id: I1b7bade71226e4181b2643cabb53f934930afc81
Reviewed-by: Marco Benelli <marco.benelli@qt.io>
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@theqtcompany.com>
2016-05-09 08:44:07 +00:00
Thomas Hartmann
cbc5f22b3b QmlJS: Allow version in parent module
Task-number: QTCREATORBUG-16145
Change-Id: I5ddbbab1c808f422ebcec1502f9b50a9bf0babb6
Reviewed-by: Marco Benelli <marco.benelli@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Alessandro Portale <alessandro.portale@theqtcompany.com>
2016-05-04 11:33:23 +00:00
Marco Benelli
cc80ba2a7e QmlJS: update importFile and importModule signature.
Update the signatures of importFile and importModule overridden methods
to match the new ones in parent class.

Change-Id: I8c5e7458935f848bc3952d4c388b5385dd9a5da5
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-05-04 08:22:01 +00:00
Marco Benelli
1556a707c3 QmlJs: search for version in parent modules.
Modules used to be searched by name with optionally an attached
version.  Now, if a module with version is not found, the version is
attached to the parent module.

Task-number: QTCREATORBUG-16145
Change-Id: Ie0f30d4df64d13b3ec4c5ee38e9ad9215ae56420
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@theqtcompany.com>
2016-05-04 08:08:15 +00:00
Wolfgang Bremer
2f301bc45b CMake: Update qmljs codemodel
With this patch it is possible to specify QML_IMPORT_PATH in
CMake projects and QtCreator will scan those paths.
One only has to make sure that the variable which is set in the
CMakeLists.txt is also added to the CMakeCache.txt

Task-number: QTCREATORBUG-11328
Change-Id: I11c7694806664d3203d855983e7db4a89fac267d
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@theqtcompany.com>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-04-29 09:08:05 +00:00
Tim Jenssen
c90a356be6 QMLJS: update to qmljsparser from Qt 5.6
Change-Id: I29a8e07b0b34aa5e8466021cbb71450687f7e11c
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
2016-04-29 09:07:58 +00:00
Thomas Hartmann
1ba0e5cdf9 QmlJS.PropertyReader: Allow access to raw ast value
Change-Id: I92f9f241c9780345dd03b931232c4a811356c216
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
2016-04-29 08:15:36 +00:00
Marco Benelli
a2fa0f76f8 qmljs: coding style.
Change-Id: Icd87c56077db1bc9be3e22e5e841ef849e81a3d2
Reviewed-by: hjk <hjk@theqtcompany.com>
2016-04-21 10:46:56 +00:00
Marco Benelli
22acc52d71 Qml code model: handle modules dependencies.
Fix the broken hierarchies between qml objects.

Change-Id: Id36c735cab0129af382fab7b9dd90c228304168c
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
Reviewed-by: Alessandro Portale <alessandro.portale@theqtcompany.com>
2016-04-19 11:18:21 +00:00
Eike Ziller
8a77eacf8d Merge remote-tracking branch 'origin/4.0'
Change-Id: Ied609608f6b12aa923c67777bc5a273c4d8fbcbb
2016-04-15 10:07:55 +02:00
Thomas Hartmann
354abe5ad8 QmlJS: Fix possible crash
For a valid AST id should be never empty.
A crash has been reported. though. Most likely the parser
injected a UiQualifiedId for an incomplete document.

Change-Id: Id2f1b25cf9d78982524d7aaff2b43210e1ae2a3b
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
2016-04-13 13:13:45 +00:00
Sune Vuorela
55bfa4401f Keep readonly qualifier
Let's not reformat readonly qualifiers away. They are likely there for a
reason.

Task-number: QTCREATORBUG-15745
Change-Id: Iaab7a8edb47fccd0cf36759750500a93be45bbc2
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
Reviewed-by: Marco Benelli <marco.benelli@theqtcompany.com>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2016-04-13 07:59:44 +00:00
Eike Ziller
5c87432260 Merge remote-tracking branch 'origin/4.0'
Conflicts:
	src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp

Change-Id: I6ae2d37290643d69390f679a54f7596782f3d97f
2016-04-12 11:34:46 +02:00
Alessandro Portale
89ada77ea0 qmljs: Remove duplicated icons
This change makes qmljs reuse the equivalent icons from CPlusPlus.

Change-Id: I955fc0dd08282ed0556d804a59108a34e1212521
Reviewed-by: Marco Benelli <marco.benelli@theqtcompany.com>
Reviewed-by: Alessandro Portale <alessandro.portale@theqtcompany.com>
2016-04-07 15:43:46 +00:00
Eike Ziller
1ae483fc83 Merge remote-tracking branch 'origin/4.0'
Conflicts:
	src/libs/utils/tcpportsgatherer.h

Change-Id: I495f3e05789f09efb8b1e84827893423a5b5b60c
2016-04-05 14:11:47 +02:00
Tim Jenssen
3c9a893adc QmlJS: do file name checks with platform independent functions
this fix the polluted output while QtQuickDesigner is opened

Change-Id: Icba0d76ff25ae720b5e3b3ce8cc5cecc45181241
Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
2016-04-05 11:29:27 +00:00
Oswald Buddenhagen
e426d08e54 Merge remote-tracking branch 'origin/4.0'
Conflicts:
	qtcreator.pri
	qtcreator.qbs
	src/plugins/debugger/debuggerruncontrol.cpp

Change-Id: I81b43480a1369e3d7be60ae26e812dda6b962b0b
2016-04-01 17:31:39 +02:00
hjk
39a38d5679 Wholesale conversion to #pragma once
Kudos to cgmb and https://github.com/cgmb/guardonce

Change-Id: Ifa8970734b8d43fd08c9260c645bdb0228633791
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
2016-03-30 15:20:19 +00:00
Ulf Hermann
35bafd3952 QmlJS: Fix resolution of "alias" directives in qrc files
Previously qrc paths of QML/JS documents were not considered for
implicit imports. Only the path of the document in the file system
was considered. The QML engine, however, doesn't know the original
path at all and only uses the qrc paths for import resolution. This
created a mismatch between what the QML engine could recognize and
what the code model suggested.

Without alias directives, any files imported from a qrc file would
have to reside in the same directory as the one implicitly importing
them, so this arrangement happened to work, most of the time.

In order to support aliases we have to search the files in the same
qrc path to figure out the imports. To do that, we keep a reverse
map of qrc paths to files in the QrcParser and iterate that when
resolving imports.

Change-Id: I84baae6cbfbe96ddd5322c81494c1e4a3f473f3f
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
2016-03-29 11:20:57 +00:00
Eike Ziller
72af6b7834 runAsync: Remove ResultType template parameter.
It is now deduced from either the type of the
QFutureInterface<ResultType> function argument, or the return type.

Change-Id: Iddab3cc329206c649a6e55a44b2de2d406701dee
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
2016-02-10 10:58:55 +00:00
Friedemann Kleint
97af238656 Preferably use QStringRef::toInt().
Avoid allocations for converting to int.

Change-Id: Id8c79334f4809ec075ffe7e6b7635be4873eafd8
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2016-02-04 07:56:58 +00:00
Eike Ziller
9074a8c310 QmlJS: Change yet another call of QtConcurrent::run
Change-Id: I417c4dbdf8216e8372578775efe97a0510756520
Reviewed-by: Marco Benelli <marco.benelli@theqtcompany.com>
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2016-02-01 08:21:22 +00:00
Orgad Shaneh
a6e6c88ed8 Revert "QmlJS: Exchange unsafe meta calls with QTimer::singleShot"
QTimer::singleShot with a member function pointer or a lambda does
not schedule the invocation directly on the receivers event loop,
even if the timeout is 0. It actually creates a timer in the thread
where QTimer::singleShot is called, which requires an event dispatcher
to be available. Only the timer's timeout() signal then schedules the
invocation on the receivers thread.

We do not want to actually run an event loop here until a timer fires.
Even if a timer with timeout 0 might directly schedule the timeout
event on the event dispatcher without involving actual timers, and
even if that event dispatcher makes sure all events are handled before
deleting itself, it would feel like relying on an implementation
detail.

This reverts commit a2e19ba1be.

Task-number: QTCREATORBUG-15681
Change-Id: I19846ce089d72c971d3cc5927c2ddf563e06de14
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2016-01-28 11:50:18 +00:00
Eike Ziller
acdfb09687 QmlJS: Use Utils::runAsync and add some more progress information
runAsync avoids the globally shared thread pool.
updateCppQmlTypes missed some kind of progress information.

Change-Id: I8739761326c2f2a5364c0c1552b3c43b00f1ff28
Reviewed-by: Marco Benelli <marco.benelli@theqtcompany.com>
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2016-01-27 12:27:59 +00:00
Eike Ziller
a2e19ba1be QmlJS: Exchange unsafe meta calls with QTimer::singleShot
Change-Id: I5596c3f506f1fb873536c03ed5b8f5df88f5ea06
Reviewed-by: Marco Benelli <marco.benelli@theqtcompany.com>
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2016-01-27 08:24:14 +00:00
Eike Ziller
265fa13bdb QmlJSModelManager: Use Utils::runAsync instead of QtConcurrent::run
To get rid of the shared thread pool (and to use the API with the less
ugly implementation).

Change-Id: Ia93977b8b394aff8e410d6d81446c23e32b7aed5
Reviewed-by: Marco Benelli <marco.benelli@theqtcompany.com>
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2016-01-22 13:34:57 +00:00
Eike Ziller
a30c1adc96 QmlJSModelManager: Cleanup uses of QFuture
- Use simple list instead of QFutureSynchronizer (no feature of that was
  used)
- Avoid duplicate code cleaning up the current list of running futures
- Clean list of running futures after waiting for them all to finish

Change-Id: Ia13ee25ab7835fc4f4970d23d20b16cfe6bf6dfb
Reviewed-by: Marco Benelli <marco.benelli@theqtcompany.com>
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2016-01-22 13:28:55 +00:00
Tim Jenssen
ebd7bcd643 qmljs: move running qmldump process to a method
Change-Id: Iaa129d2888d5b0d01e83014a2f520580d238149d
Reviewed-by: Marco Benelli <marco.benelli@theqtcompany.com>
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2016-01-21 10:28:54 +00:00
Tobias Hunger
f72370f20a Update License according to agreement with Free Qt Foundation
* Update remaining files in src

Change-Id: I1896f17fcf34f71c3310c87899fb5171b8e4afb1
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
2016-01-19 15:59:41 +00:00
Oswald Buddenhagen
5a7d3e78db Merge remote-tracking branch 'origin/3.6'
Conflicts:
	qtcreator.pri
	qtcreator.qbs

Change-Id: Ifbe181e86c161e082cc9a69a4bc7bd399f34ff47
2016-01-04 14:11:07 +01:00
Marco Benelli
64d2aab04a Removed qmltypes tooling-related warnings.
QtCreator is not currently handling dependencies written in qmltypes
files, that imports 'QtQuick.tooling 1.2', so it write several warnings
in 'General Messages' for each qmltypes file it reads.
Since dependencies are resolved anyway in the shipped qmltypes, these
warnings are useless and annoying.

Change-Id: Ie209ca4164381990feda12fb4c7a9e332e4a632d
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
2015-12-18 14:01:46 +00:00
Takumi ASAKI
44bb3cb4c3 QmlDesigner: Adding qsTrId() support
Task-number: QTBUG-48850
Change-Id: I16a0612ec29b552a3d46f2563fdc2a043b9dec7e
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@theqtcompany.com>
2015-12-15 00:34:57 +00:00
Ulf Hermann
2aff7963b4 Don't use qSNaN()
signalling NaNs are generally undesirable as they with trigger a signal
on any further arithmetics operation done to them.

Change-Id: Icebae3d4eb22c8294b11da234a2ba5c7e31b9733
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
2015-12-10 14:12:20 +00:00
hjk
33651877d8 Move QmlConsole to Debugger
Now it is closer to its only user and possibly reusable for no-QML uses
there.  We also drop the QML/JS syntax checker. The application being
debugged can already tell us about syntax errors. There is no need to
duplicate that functionality.

Change-Id: I2ba151f9f4c854c6119ba5462c21be40bddcebf9
Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
Reviewed-by: hjk <hjk@theqtcompany.com>
2015-12-09 12:06:26 +00:00
Nikolai Kosjar
0498fb68ff C++: Revert lookup to 3.4.2
...which was least buggy.

The bugs fixed by the changes we revert here (highlighting/completion
for code involving templates) were minor compared to ones we currently
have. Those bugs will be addressed by the clang code model anyway.

Relevant commits were collected via:

  $ cd ${QTC}/src/libs/cplusplus
  $ git log \
   --no-merges \
   --format=oneline \
   v3.4.2..HEAD \
   -- LookupContext.* ResolveExpression.* TypeResolver.* TypeOfExpression.* \
      ../../plugins/cpptools/cppcompletion_test.cpp

From this list the following were skipped due to irrelevance:

  88c5b47e53 # CppTools: Minor cleanup in completion tests
  e5255a1f5c # CppTools: Add a test for ObjC not replacing dot with arrow
  5b12c8d63a # CppTools: Support ObjC in member access operator tests
  9fef4fb9ca # CPlusPlus: Fix warnings about overriding visit(...) methods

There were only minor conflicts while reverting those.

This changes touches so many files because there were quite some
cleanups and renames after the 3.4.2 release.

Task-number: QTCREATORBUG-14889
Task-number: QTCREATORBUG-15211
Task-number: QTCREATORBUG-15213
Task-number: QTCREATORBUG-15257
Task-number: QTCREATORBUG-15264
Task-number: QTCREATORBUG-15291
Task-number: QTCREATORBUG-15329
Change-Id: I01f759f8f35ecb4228928a4f22086e279c1a5435
Reviewed-by: Marco Bubke <marco.bubke@theqtcompany.com>
2015-11-19 14:48:38 +00:00
BogDan Vatra
9db8adec7d Export explicitly instantiate templates.
LLVM & MSVC needs to explicitly export the instantiate templates.

Change-Id: I51562750415400bfa561fd6e759211f2b4b10650
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
2015-11-17 11:35:44 +00:00
Marco Benelli
a8d1df2c0c QmlJs: fixed a regression in reformatter.
The commit b26920c3a3 introduced a bug
in reformatting properties lacking an object initializer.

Change-Id: I30f9c9c8a005660e7af4a6c97d0b1ff1be461548
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2015-11-02 14:26:40 +00:00
Marco Benelli
b26920c3a3 Fixed bug in reformatting QML code (duplicated property name).
Change-Id: I1af68aa979fbbc38edd0255c346b9df371c8fd26
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
2015-10-30 10:03:36 +00:00
Leena Miettinen
330ef13d76 QML JS: fix UI text
Change-Id: I5d1235fc7c86b12127b4b7c6392a24a4f4de84c2
Reviewed-by: hjk <hjk@theqtcompany.com>
2015-10-26 08:37:54 +00:00
Aleix Pol
b899684a89 Don't put QString in static attributes
It crashed in some places on our code-base due to the so-called "static
initialization order fiasco".
As a solution, it turns the variable into a function. This shouldn't have
a penalty due to QStringLiteral.

Change-Id: I9f8a955afdff878dc2f0db16fec861d81250c243
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
2015-10-09 17:09:45 +00:00
Eike Ziller
0ba4781bfc Merge remote-tracking branch 'origin/3.5'
Change-Id: I889b93611d1762121548fb71d1d3493e4adba313
2015-09-25 10:35:42 +02:00
Marco Benelli
e69bb933e3 qmljs: set cpp object to the latest version exported
m_objectsByQualifiedName did not prefer the latest meta object
revision, as consequence at type exported both anonymously and with a
name, would pick up one version randomly.

Change-Id: I91baf2729d0a0bda61205a62d9a38d04b4da058e
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
2015-09-17 10:59:59 +00:00
Ulf Hermann
7dd898a1b1 QmlJSTools: Fix glitches in QML console
Half of the widget height is a particularly bad estimate for the
default height of a console item. Focusing editable items should be
done by explicitly transferring focus. Also, this only "worked" if
an editable or formerly editable row was the very first line in the
view, which rarely happens.

By default, if no settings are present, all log categories are enabled
now. Otherwise we might miss the error messages resulting from failed
evaluations.

Repeatedly setting the filter regexp to the same thing doesn't signal
a filter change, which is what we actually want when changing the
filter.

Change-Id: Ibe33b0438d92e777bdceaf9af032fc5117ba4041
Reviewed-by: hjk <hjk@theqtcompany.com>
2015-08-25 14:59:17 +00:00
Ulf Hermann
b5717a5315 QmlJS: Lazy-load console items to allow for recursion
Using Utils:TreeView automatically gives us the capability for loading
item as they are expanded. This way we can show recursive structure in
the console as well as load data from the debug server on demand.

Also, properly print error messages received from unsuccessful
command evaluations.

Task-number: QTCREATORBUG-14931
Change-Id: I66d440eedd9723b04670169b27db1ee18f3f2891
Reviewed-by: hjk <hjk@theqtcompany.com>
2015-08-25 14:42:22 +00:00
Christian Kandeler
f89eab60e1 QmlJs: Add missing override modifier.
Change-Id: Ia6ac2afd84342a72e50eaaf833960a618c88bda6
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2015-08-21 12:01:49 +00:00
Thiago Macieira
5113713128 Remove unused function
Found by ICC
qmljsreformatter.cpp(410): warning #177: function "<unnamed>::Rewriter::firstOnLine" was declared but never referenced

Change-Id: I7de033f80b0e4431b7f1ffff13fa77233116f0cb
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Marco Benelli <marco.benelli@theqtcompany.com>
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2015-08-17 16:25:58 +00:00
Christian Kandeler
7b970a3a04 QbsProjectManager: Support an equivalent of QML_IMPORT_PATH.
Task-number: QTCREATORBUG-14849
Change-Id: I26f69b5c6c421b5eb965c96d75df15d16e960237
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-08-04 14:43:15 +00:00
Tobias Hunger
76a071757d QmlJs: More override changes
Change-Id: Ia2ea4d8ced3a23b38911517d1015b20d3412554e
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2015-06-04 13:32:46 +00:00
Tobias Hunger
9da6ac9022 libs/qmljs: s/Q_DECL_OVERRIDE/override/g
Change-Id: I86a5b56ee8587240a03551c0d23edcbd5230494b
Reviewed-by: Marco Benelli <marco.benelli@theqtcompany.com>
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
2015-06-04 08:32:08 +00:00
Daniel Teske
26059dbb1e Make every operator bool() explicit
operator bool() is a trap, but with explicit it's far safer,
and we can use that now.

Change-Id: I4e58631c94e87c00256c3ab3cff4fd2c5f632713
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
2015-06-02 16:06:22 +00:00