Commit Graph

1054 Commits

Author SHA1 Message Date
Thomas Hartmann
95366d25e0 QmlJS: Fix crash in QML reformatter
This fixes a tack overflow caused by an exponential
number of combination tested.

We try to find the optimal solution for line breaks by brute force.
Unfortunately this leads to a stack overflow, if two many
line breaks are possible.

This patch limits the number of possible line break positions to 11.
If there are more possible line breaks we remove every second one.

This seems to be a reasonable enough heuristic and we deal with
a corner case anyway.

Task-number: QTCREATORBUG-17331
Change-Id: I1b80fc3eaa0e148aec30fc57ac75824181f2d883
Reviewed-by: Marco Benelli <marco.benelli@qt.io>
2016-11-30 08:30:29 +00:00
Orgad Shaneh
971292a044 Remove last nokia references in comments
Change-Id: Ic5b815061212f66af5e36396b9a2b94cfbdfbe52
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2016-11-24 08:35:05 +00:00
Thomas Hartmann
6890e4e131 QmlJSCheck: Allow Math. function in ui.qml files
The Math. function like Math.max() are quite useful
to define more complex layouts. Therefore we allow them.

Change-Id: Ia95dcbcc1b8e96c117650dc8643da4a9de0ecdba
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
Reviewed-by: Marco Benelli <marco.benelli@qt.io>
2016-11-17 10:34:56 +00:00
Dmitry V. Tchoomak
10954e07a5 QMlJSCheck: Add missed types of State changes
Change-Id: I08ed689dfa92477e35961b7b0b1d407f0c974979
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@theqtcompany.com>
2016-11-09 08:19:43 +00:00
Thomas Hartmann
062512a246 QmlJSCheck: Adding more unsupported in designer types
Using initializer lists looks much better.

Change-Id: I314d846a9d383dbda432cd67010d79b492f40915
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-08 16:14:18 +00:00
Leena Miettinen
8ab3d91afd QML JS: Add missing space in UI text
Change-Id: I25e525216bb6ad07c5491c7e9660c7d9becad1d4
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-04 08:36:10 +00:00
Oswald Buddenhagen
424639ecac make resource file handling able to deal with QMakeProject's VFS
resources.prf may create virtual qrc files when RESOURCES contains
non-qrc files.

Change-Id: If591de9b32b775059d67e94bc3cb06d23ee44b08
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-11-01 17:34:55 +00:00
Denis Klychkov
1872cff611 QmlJS: Fix auto-indent after an opening brace placed on a new line
Left brace wasn't handled in the expression_maybe_continuation state
of qml/js code formatter. It led to expression_or_objectdefinition
could not be continued on a new line.

Task-number: QTCREATORBUG-12326
Change-Id: Id8fcaa586000008fce72c7c0c03ed1739b1c7aa1
Reviewed-by: Marco Benelli <marco.benelli@qt.io>
2016-11-01 15:43:42 +00:00
Thomas Hartmann
3673ced26e QmlJS: Get version numbers from components
If we have a pure QML plugin with a qmldir file,
then the code model ends up without a version number.
This is bad, since the version is required for graphical tooling.

What we can do is to take the highest version number from all
components that are defined in the plugin.

Change-Id: Idb4206201efac91250100740e287676031d3016a
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-11-01 14:43:48 +00:00
Thomas Hartmann
2cab55ea1a QmlDesigner: Allow JavaScrip blocks in Connections in .ui.qml
Inside a Connections item JavaScript blocks should be allowed.

Change-Id: Ia6a08fc575a72980bd53a32249bf302b7a426266
Reviewed-by: Marco Benelli <marco.benelli@qt.io>
2016-10-28 14:27:58 +00:00
Ulf Hermann
424005c911 QmlJS: Release the same documents we keep before
When rescanning imports we generally get a new version of the parent
document. When replacing the cached documents we want to release the
old ones, not the new ones. Failing to do so leads to types
disappearing from the QML code model and to leaking memory.

Task-number: QTCREATORBUG-17175
Change-Id: I3994444ac0a6cd87f9d9d0b47ab3d6015660e416
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@theqtcompany.com>
2016-10-28 11:39:18 +00:00
Thomas Hartmann
6eddf41886 Documenting QmlJS error message
I also fixed the "."

Change-Id: I65cdc6be8b2de31af411d1172780281afd20a4f9
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-10-26 16:41:53 +00:00
Thomas Hartmann
99aaf86a33 QmlJSCheck: Add error for ambiguous ids
Certain ids can be ambiguous and have name clashes with properties.
Those ids are not supported in the designer.

Change-Id: Ida293d24611c467df6ef813a541e8abfc06b51cb
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-10-26 16:08:29 +00:00
Oswald Buddenhagen
bd3f39a358 accept absolute paths in qrc file elements
while untypical, it's perfectly legitimate to have absolute paths in qrc
files. auto-generated files (like the ones created by resources.prf when
shadow-building) can make good use of them.

Change-Id: I59da260b5241096f7c44b9de5ee04f65e8c1218c
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2016-10-25 09:11:36 +00:00
Eike Ziller
90cf4487a5 Merge remote-tracking branch 'origin/4.1'
Conflicts:
	src/plugins/autotest/qtest/qttestoutputreader.cpp

Change-Id: I4b323f2f3041d015fa04b9a25ec925f3b3e2411f
2016-10-05 15:28:04 +02:00
Thomas Hartmann
9a9c29dd82 QmlJS: Extending QmlJSSimpleReader
With this patch bindings are parsed as strings.

Change-Id: I92014052947c595b220640d827dd77ee2db8f655
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-10-05 10:52:11 +00:00
Tim Jenssen
038f18ea9c QmlJS: add import name to the missing error message
Change-Id: Id973d442e1770f453b16723f9cf75ee2169b33ad
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@theqtcompany.com>
2016-10-05 10:42:11 +00:00
Marco Benelli
54a04e68b9 QmlJs: qmlplugindump working directory
Use the plugin's parent path as working directory for the qmlplugindump
process.  This should be more reliable with regards to paths that
include symbolic links to shared or remote volumes.
Using the plugin's parent path will also be needed in order to handle
relative paths passed to the dumper (ie: with the -dependencies
option). This feature is not yet implemented in QtCreator.

Change-Id: I9c863a95d03fc7d03c84e704e39f2e0520aaa01e
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@theqtcompany.com>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
2016-09-28 10:53:42 +00:00
Marco Benelli
d2769f3003 qmljs: replace dynamic_cast with AST::cast
Change-Id: I94a289f07c444b16b1ca1dc8bc4f7aa690de4312
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
2016-09-22 10:05:14 +00:00
Orgad Shaneh
4c6c2032f6 QmlJS: Fix static variable initialization
You cannot use the variable itself in its initializer...

Change-Id: Ibaf64b717b0ad5523b4ef8cf20ce4bf967a64a43
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Marco Benelli <marco.benelli@qt.io>
2016-09-22 07:38:58 +00:00
Tim Jenssen
a9221a53d8 QmlJS: improve static initializings
Change-Id: Ifa37c912d0e43bcda896cb0ea851f97566c88d78
Reviewed-by: Marco Benelli <marco.benelli@qt.io>
2016-09-21 12:05:23 +00:00
Orgad Shaneh
b8c99a66b3 QmlJS: Replace macro usage with HostOsInfo
Change-Id: Ie1e7c5eb5a5f700ae63b4bcc6c1a9b1a4ed7a426
Reviewed-by: Marco Benelli <marco.benelli@qt.io>
2016-09-12 13:21:03 +00:00
Marco Benelli
cc996134de QmlJs: more informative warning message for Javascript
The warnings for Javascript follows the rules of JsLint, that can be
non-obvious to the user.  This patch add a reference to the relevant
section in QtCreator documentation.

Task-number: QTCREATORBUG-16771
Change-Id: I64ce331c6adf4b45c2510e35d68a6ce7e37ed6d5
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2016-09-12 12:00:07 +00:00
Marco Benelli
aecc590390 qmljs: use QRegularExpression to parse imports.
Use a regular expression to get the module name, major version and
minor version from a string representing the module import.

Change-Id: I99f85ff4844cdfba142b45b4881241a1d40b772e
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
2016-09-12 10:29:58 +00:00
Eike Ziller
c56aa52b80 Merge remote-tracking branch 'origin/4.1'
Conflicts:
	qbs/modules/qtc/qtc.qbs
	qtcreator.pri
	src/plugins/qmakeprojectmanager/makestep.cpp
	src/shared/qbs

Change-Id: If1787ed23afa786ed2cef57f53c1db642559cbe0
2016-08-31 14:40:38 +02:00
Marco Benelli
19a9eac46e QmlJs: circular dependencies handling
Task-number: QTCREATORBUG-16585
Change-Id: Ia1e01f1314cd4022d59dc768752baaa367fe250a
Reviewed-by: Robert Loehning <robert.loehning@qt.io>
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
2016-08-26 07:34:56 +00:00
Orgad Shaneh
5bc8d10baa Remove uses of deprecated QProcess::error signal
This overload of error is deprecated in 5.6.

Replace with errorOccurred, which was introduced in 5.6.

Change-Id: Iccfba7e7103b7ce377471696f1f2ec217e52c840
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
2016-08-09 16:02:43 +00:00
Orgad Shaneh
670e54345c Remove use of deprecated Qt algorithms
Change-Id: Ib35cffa2d5762874feea9b1d4df7f569c0e5f496
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2016-08-09 13:41:25 +00:00
Erik Verbruggen
b47b9ea951 QML: Band-aid fix to prevent a crash
If the document that FindExportedCppTypes is to search is not in the
snapshot, skip over it (instead of passing the shared pointer with a
null-value inside).

Change-Id: I462e3d22aa4e1cc51e710c75ae0f9399c151240b
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2016-07-25 06:22:18 +00:00
Leena Miettinen
aa566604be QMLJS: Fix punctuation of messages
- Add full stop to the end of messages.
- Use double quotes for emphasis (instead of single quotes).

Change-Id: I5b0bd2cecda115735b67ceaab202c36ca5d81b43
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2016-07-20 12:06:45 +00:00
Ulf Hermann
1e7bf7f721 QmlJS: Reparse cpp types when component headers change
Previously the code model would only get updated when the document that
contains the qmlRegisterType changed. If the actual component exported
to QML lives in a different file, any updates to that component would
be lost. With this change we keep track of the header files the
components are declared in and rescan if any of them changes.

This is still not the greatest way to do it as there are a number of
ways to introduce dependencies the system cannot detect. It's better
than before, though.

Change-Id: Ic077c516dca3ac720f78973c84e5e6e91b6a5c07
Reviewed-by: Marco Benelli <marco.benelli@qt.io>
2016-07-15 16:22:42 +00:00
Thomas Hartmann
0db6f2a372 QmlDesigner: A StateChangeScript can be the child of a State
I found this while testing our demos.

Change-Id: I575e1d2f487a2ba137ac8181f4980c30b171f726
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
2016-07-01 15:29:32 +00:00
Thomas Hartmann
8e1e987dd5 QmlJS: Do not try the canonical file path
This is a real bottle neck on Windows
and I do not know of a case where it is required.

Change-Id: I99ebf3bfdd22cfb0ed82d6d39eeb83f079f654d6
Reviewed-by: Marco Benelli <marco.benelli@qt.io>
2016-06-28 13:23:26 +00:00
Thomas Hartmann
0a3f596599 QmlDesigner: Fix regression caused by semantic check
States can of course contain PropertyChanges.

Change-Id: Ie78be1db58c6820a49356b1cd70102e10211030b
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-06-28 11:49:16 +00:00
Orgad Shaneh
7609e56ee3 QmlJS[|Editor|Tools]: Use Qt5-style connects
The heavy lifting was done by clazy.

Change-Id: I56550546b341d486d321329e9a90b9369d56af40
Reviewed-by: Marco Benelli <marco.benelli@qt.io>
2016-06-28 08:47:26 +00:00
Eike Ziller
07fccfe9f1 Merge remote-tracking branch 'origin/master' into 4.1
Change-Id: I56399e6938a5f5096c0b1a1561a54d34a5c96330
2016-06-27 11:40:35 +02:00
Marco Benelli
8f474cbfbe QmlJs: fixes bug in module import search.
Task-number: QTCREATORBUG-16425
Change-Id: I5fdd1a5882730c0f52dba5edb8cf8ca7092a4409
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
2016-06-23 11:55:42 +00:00
Thomas Hartmann
add3828389 QmlJSEditor: Do not allow child items for states
Task-number: QTCREATORBUG-13003
Change-Id: I30bcee12803d2b3af804625ffdf417316e3d6c32
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
2016-06-22 15:52:56 +00:00
Eike Ziller
0e923c2a75 Merge remote-tracking branch 'origin/4.1'
Change-Id: I5cdc704c827a6f5abf4dc39e2a131d53df328bd2
2016-06-22 11:29:12 +02:00
Thomas Hartmann
89e8fd9088 QmlJS: Remove slow checks
These checks slow down linking for big projects.

Change-Id: I76a8897528b03ae3a31d5919be85c5ae7c3543a8
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
2016-06-21 11:16:35 +00:00
Tim Jenssen
a6d21cc1f7 Qmljs: small QHash improvements
Change-Id: I79a5504c8471b66540aac8047fbcf760ceb6b10f
Reviewed-by: Marco Benelli <marco.benelli@qt.io>
2016-06-20 14:08:43 +00:00
Christian Kandeler
e1e203598d qbs build: Final steps to support building plugins "out of source".
- Use the entire Export block when creating a module, not just the
  Depends items. Adapt references to the product source directory
  and the "share" directory so that they point to the respective
  locations in the install tree.
- Install dev headers for some more plugins.
- Bug fixes & polishing.

Create a "dev installation" like this:
$ qbs qtc.make_dev_package:true qbs.installRoot:<install root>

Then build your plugin against it like this:
$ qbs qtc.make_dev_package:true qbs.installRoot:<install root>
project.qbsSearchPaths:<install root>/qbs-resources
(Using qbs from 1.5 branch; 1.5.1 requires a trivial wrapper project.)

That's all. Successfully tested with all commercial plugins on Linux.

Change-Id: Ie39c4717dafcd431c533421a15f2f898783d8521
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2016-06-15 12:35:55 +00:00
Ulf Hermann
e49b0670c8 QmlJS: Don't crash if the type stack is empty
Change-Id: If4e0155e8167f3edee1890dee5fd8b19623bba17
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@theqtcompany.com>
2016-05-31 08:11:25 +00:00
Tim Jenssen
3c2dc15f6d QmlDesigner: allow adding connections in ui.qml files
Change-Id: Ia4d9f01f41ca2bca1eca0df3cf121ae2800e31d4
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@theqtcompany.com>
2016-05-27 12:15:46 +00:00
Eike Ziller
0c5bae640b Merge remote-tracking branch 'origin/4.0'
Change-Id: I80bc3371c6d7cf9f2d46cbcf8e79e4761213d8aa
2016-05-27 12:01:36 +02:00
Thomas Hartmann
1628d052fc QmlJS: Ensure linkImports() can be run in standalone test
In standalone tests there is no instance of ExtensionSystem::PluginManager.

Change-Id: I890016c4e0d2fbb41cfc0a5614e936d31e43cd0f
Reviewed-by: Marco Benelli <marco.benelli@qt.io>
2016-05-26 16:03:43 +00:00
Victor Heng
11ef0db2fd QmlJS: Keep pragma directive when reformatting QML files
Change-Id: I1f11e95565a90e4fc7b908c03d49f6abbd37b8be
Reviewed-by: Marco Benelli <marco.benelli@qt.io>
2016-05-19 09:55:11 +00:00
Nikita Baryshnikov
41cf9d7b33 QmlJsLib: fix compiler warning
this 'else' clause does not guard

Change-Id: Ica781d2fe0d179107ee121badb17e2078420ffba
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2016-05-13 16:50:30 +00:00
Tim Jenssen
7e08363052 qbs build: remove unnecessary script dependency
Change-Id: I0e5764ffc9a6146932c43d96a31138451260c161
Reviewed-by: Christian Kandeler <christian.kandeler@theqtcompany.com>
2016-05-13 11:42:43 +00:00
Marco Benelli
78944e60ba QmlJs: handle the undefined version in module lookup.
The module lookup used to not consider the undefined version (-1.-1) a
valid version number.  This caused QtCreator to crash because of a
failing assertion.  This patch makes the assertion more permissive and
handle the lookup of an undefined version by substituting it with an
empty string.

Task-number: QTCREATORBUG-16220
Change-Id: Iac574cfc04b4718b0d0809352e5c9456e4392e83
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2016-05-13 07:02:04 +00:00