Fix potential infinite loop in build dir cleaning.

We should not even try to remove any empty directories outside the
actual build tree, as they might not belong to us.

Task-number: QBS-533

Change-Id: Ia5f4caf97155b0a1711add1bb5efd5f8fa08562b
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Add XFAIL autotest for QBS-537.

Change-Id: I98aa65cee4e448efa6b9ab32f2165e4cc77429ec
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Introduce abstraction layer for QSKIP.

We might want to skip tests in other files as well.

Change-Id: Ia2352fdf472b461fb3d9ed6134789b4f56d126e8
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
use Item::PropertyDeclarationMap where appropriate

Change-Id: Id1449ecbc4b3e3f4302ccb3a5f7c397a58937456
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
make PropertyDeclaration implicitly shared

Change-Id: Iad2f353371bd64ce8138dc86ed1f07ac994cf237
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
rename mergeItem to inheritItem

Change-Id: I21ad394076a7f2b2b2a1ff8892d427991e5613e4
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
remove firstValidPropertyDeclaration helper function

Item::propertyDeclaration(QString) does exactly the same.

Change-Id: I3a88e82110ea357c44fbd1f274087e993fec6ccc
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
turn JSSourceValue bools into flags

A byte saved is a byte earned.

Change-Id: I7155cb71dc63bafa403b92f6bfb671ab8d8303d2
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
turn JSSourceValue::m_sourceCode into a QStringRef

Change-Id: Ie79c4dc2cc998558f826133a2a8bf08a73190f2d
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Fix "build single file" and "changed files" functionalities.

These had several problems.
Firstly, the "changed files" case was implemented by setting all
artifacts to "Built" and then setting the ones to "Buildable" that were
reachable bottom-up from artifacts corresponding to the respective files.
This approach broke with the introduction of rule nodes, because
parent nodes do not necessarily exist yet at initialization time. This
was not caught due to the lack of an autotest.
Secondly, the logic behind the "build single file" functionality was
faulty. The assumption was that this could be implemented on top of the
"changed file" functionality, which is wrong: Consider the case where
you have several cpp files that have not yet been built. Now
marking one of them as changed and filtering by the "obj" tag will still
cause all of them to be compiled, as we cannot simply exclude all other
source files from being built, which would break the build for the
normal "changed files" case without tag filtering. Therefore we need a
dedicated list of input files by which we can filter transformers.

Task-number: QBS-537
Change-Id: I47e2ba6d0cbd073561064640eaf8f63c4e0b39fa
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Do not store CodeLocations in JSSourceValue objects.

The information is partly redundant, as we already know the file path.
Set only line and column info instead. This lowers peak memory use by
~2% with little effort.

Change-Id: I7c8b34aa9a026a6e8cf3d06e5caef5ceeae11270
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
cache module prototype item trees

Module prototypes can safely be reused.
For the qbs build this saves roughly 70% of memory.

Task-number: QBS-120
Change-Id: I2501e05088634d3403b1f8d1b424194f8e6a041a
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
catch exceptions in JS callback

Task-number: QTCREATORBUG-11866

Change-Id: Ieb952bf92cc7837e4a59d147b63b3533ba63e1cd
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Interpret "~" as home directory shortcut when resolving wildcards.

This is currently not done for group prefixes.

Task-number: QBS-516
Change-Id: I2e973ada0d91b17e3cdb4b9d7df3f8d2f79e638c
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
extend trace output in ModuleLoader

Change-Id: Id4d67020fb47c0b4983ba2493895fb005610836b
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
fix FileInfo::isFileCaseCorrect on OS X

This function is supposed to compare file *names* and not paths.
If it gets passed a path to a soft link like /tmp/foo, then
the canonical file path of that will be /private/tmp/foo.
We must not compare the whole path but only its file name
portion.

Task-number: QTCREATORBUG-11875
Change-Id: I9724c6e45057aa9a80c3a9bd00c5fc225799b6c5
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Fix QML debugging for Qt 5.

The line enabling the respective C++ macro got lost when we switched to
the new Qt module approach. (And the name of the macro was wrong for Qt
5 anyway, so it hadn't worked before either.)
Also add an autotest to catch things like macro renaming in the future.

Task-number: QTCREATORBUG-11914
Change-Id: Ica188c20e99c204d1a9d4e5f285a938707d997dd
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Fix QML debugging test.

nm's "-C" option is not universal.

Change-Id: I7e24e76a75eb54c48a9fde5550c8257a1dcc615b
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
fix staticLibraryDeps test on OS X

Do not build the project as app bundle.

Change-Id: I1af98eb79525c9ff75f061df1452549cc93508c8
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Do not report an error for a non-existing file in a disabled group.

Task-number: QBS-470

Change-Id: I839c5778bbc37ffb907315487bd1a072ba9f1791
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>