aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* refactoring: Reorganize project filesMiguel Costa2021-11-16554-92945/+0
| | | | | | | | | | | | | | | | - Moved project files from the 'src' folder into the root 'vstools'. - Renamed some projects: * QtVsTools -> QtVsTools.Package * qtwizard -> QtVsTools.Wizards * Project template projects -> QtTemplate.Project.* * Item template projects -> QtTemplate.Item.* - Moved QtVsTools.Package source files to a sub-folder named 'Package'. NOTE: this change breaks the build; it should only be applied together with subsequent refactoring changes. Change-Id: Ib7b70c350d8e9f068a023b0250d6b490b17d1687 Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
* Raise exception on error in modules fileMiguel Costa2021-10-141-0/+5
| | | | | | | | | | | When a required element is missing from the Qt modules XML file, an exception will now be raised and initialization of the extension will be aborted. Previously, errors were not detected during init, which caused null-ref errors while using the extension. Fixes: QTVSADDINBUG-931 Change-Id: Ife5410329f8cc69619c34ba81f5bf2141541db5c Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
* Add missing info to modules fileMiguel Costa2021-10-141-0/+19
| | | | | | | | | The recent update of the Qt modules XML file omitted some required information. This is causing null-ref errors when using the extension. Task-number: QTVSADDINBUG-931 Change-Id: Ia03467b67cf6257ad1dfd8008925e7996f6a9ab1 Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io>
* Update version number to 2.7.2v2.7.2Miguel Costa2021-08-181-1/+1
| | | | | | Change-Id: Ie239f6a41d9db749b5d0925209506b35bc6d2792 Reviewed-by: Karsten Heimrich <karsten.heimrich@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix build issues in VS2015Miguel Costa2021-08-173-3/+47
| | | | | | | | | | Recent changes to the Qt/MSBuild project tracking module use VS SDK features that are not present in VS 2015. This caused errors when building the Qt VS Tools solution for VS 2015. This change fixes those issues. Change-Id: I9061b5d957b4937725e02d1504321cde96e1c16e Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Update version of the C# compiler for the RegExpr projectMiguel Costa2021-08-172-0/+14
| | | | | | | | | | The RegExpr project now refences the .NET compilers package. This ensures that the same compiler is used when building the VS Tools solution in different versions of Visual Studio. Notably, for VS 2015, this allows compiling code conforming to more recent versions of C#. Change-Id: Idfd95e6b9e99ff77095efb90f2d165a2addd1307 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Notify user of available development versionMiguel Costa2021-08-172-3/+53
| | | | | | | | | When VS starts, the add-in will now check if a new development version is available at download.qt.io. If it is, a notification is printed in the Qt VS Tools output window. Change-Id: I3de3c0bf2138203bc34411b32d48e178e0da81c2 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix possible thread starvation issueMiguel Costa2021-08-091-7/+15
| | | | | | | | | | | | When a target in Qt/MSBuild requests access to a critical section, a timeout of 10 seconds will now be enforced to prevent a starvation scenario, in case of leak of the critical section (e.g. the target that owns the critical section was terminated without running the fail-safe release of the critical section). Fixes: QTVSADDINBUG-917 Change-Id: Ie357152ac6ec208d33a5acfa07a45ace0b1f041f Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Fix concurrency issuesMiguel Costa2021-08-091-1/+1
| | | | | | | | | | | | Fixed concurrency issues in Qt/MSBuild involving references to non-Qt projects. When building from the command line, references would be built both in the inner and outer builds of Qt/MSBuild projects. This change disables the building of referenced projects during the Qt/MSBuild inner build. Fixes: QTVSADDINBUG-916 Change-Id: I01ccead3d1d954dfd1ce753319992e3c9b51969d Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Add concurrency testMiguel Costa2021-08-0928-0/+885
| | | | | | | | | | | Added a sample solution that makes it easier to reproduce concurrency issues in parallel builds of Qt/MSBuild projects. A .bat script builds the sample solution in a loop and records any errors. This script can be left to run unattended in order to find concurrency issues that occur infrequently. Change-Id: I006f8436289caf7e8d784fe73c2d1cb5c2ec73e0 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Build sample test project outside of VS Tools solutionMiguel Costa2021-08-0513-37/+94
| | | | | | | | | | | The sample test project, previously named 'CoreFeature', and which is renamed to 'SampleTest' in this change, can now be built outside of the context of the Qt VS Tools solution. For this purpose, a dedicated VS solution and qmake .pro file are provided to open the sample test as a standalone project, respectively, in Visual Studio and Qt Creator. Change-Id: Icbfa8d19fbc0fc0cf15e889bd78fb2c5116716db Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Allow overriding C++ additional optionsMiguel Costa2021-08-055-0/+36
| | | | | | | | | The property pages for moc and rcc will now allow overriding/extending the default C++ Additional Options property. Previously, the default value in the C++ property page was always used. Change-Id: Idff5cf058cbcad3453c71edb5db7a8292e58b26a Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix rcc generated C++ optionsMiguel Costa2021-08-051-1/+1
| | | | | | | | | | Fixed an issue where compiler options for rcc-generated C++ were missing default values from the C++ compiler property page. This caused build errors when overriding compiler options for rcc (all non-overridden options were deleted). Change-Id: Iaa3b38b6d4cd8bbae607847b296fa231103c6aa8 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Disable design-time .tlog updateMiguel Costa2021-07-261-3/+3
| | | | | | | | | | Update of .tlog files is now disabled while building Qt targets from VS in design-time. This avoids build errors in VS2017, where the .tlog directory is not created by default, resulting in write errors with the message "Could not find a part of the path". Change-Id: I6d8ac54b4a5d51ff849544bdc04e97859e0f2d18 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Call StatusCenter from UI threadMiguel Costa2021-07-261-20/+32
| | | | | | | | | The PreRegister() method of the IVsTaskStatusCenterService interface is now called from the UI thread. In VS2017, an exception is raised if this method is called from a background thread. Change-Id: Idf04f1db87c2e29a41eb2d40f80f73db699212a9 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Rework QtVSTest projectMiguel Costa2021-06-149-92/+147
| | | | | | | | | | | | | | | | Made the following changes to the QtVSTest project: * Reworked handling of global variables; * Can now use result functions (e.g. MACRO_OK) in macro code; * Macros will now return MACRO_OK by default; * Removed unnecessary macro functions (e.g. MACRO_ASSERT_OK); * Fixed an issue where generation of empty macro code would fail; * 'var' statement now assumes 'object' type by default; * Changed 'ui context' statement parameter 'VS' to 'VSROOT'; * Added the 'DESKTOP' parameter to the 'ui context' statement; * 'ui context' statement now has a 3 second timeout by default. Change-Id: I99f5d3d5923f096c207437dee3c679c3b0311ee0 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Add 'Refresh Intellisense' context menu optionMiguel Costa2021-06-083-30/+96
| | | | | | | | | | | Added an option to force a background build of Qt targets in order to refresh IntelliSense information. This is useful if the option to track project changes is disabled but the user wants to keep specific projects up-to-date. Task-number: QTVSADDINBUG-890 Change-Id: Ibc762085632789c55399af20c0c29de3f4eebfa5 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Change IntelliSense section in options pageMiguel Costa2021-06-081-79/+18
| | | | | | | | | | | | | | | | | | | | | | | | | Settings in the Qt options page pertaining to background builds are now listed under the heading "IntelliSense". The following settings can be configured in the context of the update of IntelliSense information: * Auto project tracking - Enable/disable the automatic tracking of project changes that may require refreshing IntelliSense information generated by Qt tools. Disabling this option may speed up loading of large solutions, but will cause IntelliSense to become outdated, with respect to any changes in the project up to the next full build. * Run Qt tools in background build - Enable/disable invoking of all required Qt tools during backgroun build to update IntelliSense. If this option is disabled, only qmake is invoked during background builds. This may speed up IntelliSense refreshing, but can cause incomplete/inaccurate IntelliSense information to be presented. * Show debug information - Print debug messages in the output window about the status of project tracking and background builds. * Verbosity of background build log - invoke MSBuild during background builds with the specified log verbosity. MSBuild log messages will also be printed in the output window. Task-number: QTVSADDINBUG-890 Change-Id: If298725cdf66d608e0ab100954618672da671245 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Rework IntelliSense updateMiguel Costa2021-06-0812-471/+793
| | | | | | | | | | | | | | | | | | | | | | | | Reworked the mechanism that keeps IntelliSense up-to-date with information generated by Qt tools (e.g. C++ generated by moc). The goal was to make this update mechanism compatible with large scale solutions (hundreds of projects). Previously, when opening larger solutions, the process of setting up VS to notify changes to project properties was too resource-intensive and would often freeze/crash Visual Studio. The reworked IntelliSense update has the following new features: * Project tracking set-up is now serialized. Previously, at solution load time, all projects were setup for change tracking, which started the execution of a large number of parallel threads. * Similarly, background builds triggered by project changes will also now be serialized. * UI feedback during tracking setup or background build. This can be accessed in the list of background tasks provided by VS. * Possibility to cancel project tracking setup or background build, by pressing the stop button in the list of background tasks of VS. Task-number: QTVSADDINBUG-890 Change-Id: Ie27c583e683ab962126572705464506505ce1be7 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Fix QML debug not workingMiguel Costa2021-06-081-0/+1
| | | | | | | | | Fixed an issue where connecting to the QML debug runtime would always fail. This was introduced with changes to the Concurrent class in: * 25422f0fde85c050d448c3ba0080522bf2c84140 Change-Id: If6e1234b71cc214dbfe7e498cc84eaa5cbf09f6f Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Add Test solution configurationMiguel Costa2021-06-081-11/+155
| | | | | | | | | | | | | | | | Added a new 'Test' build configuration to the Qt VS Tools solution. This can be selected to build and run test projects with release settings. As such, test projects will now no longer be built as part of the 'Release' solution configuration. This change also fixes an issue where the vstools.bat build script would fail when running with the -init flag. This issue was introduced as part of the following changes: * 15779cabfdc324bef56e04b2e943a81410e4e3e4 * db326690ec282f06757cacce40710281122e31d8 Change-Id: I7dd2fbb12fe93c83f9c95521eb6cdf698ed7596d Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Add Count, IsEmpty, Remove to PriorityQueueMiguel Costa2021-06-022-17/+49
| | | | | | | | | | Made the following changes to the PriorityQueue class: * Added Count property (≈ O(1)) with the number of items in the queue. * Added IsEmpty property, based on Count. * Added Remove method (≈ O(log n)) to remove an item from the queue. Change-Id: Ic94f8f02fdfcf99d47ee033689681ebcc7fa9cde Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Add PriorityQueue typeMiguel Costa2021-06-028-0/+602
| | | | | | | | | | | | | | | | | | | | | | | Added a new generic utility type, PriorityQueue, that represents a thread-safe collection of objects that can be retrieved by the order of their priority at enqueue. The underlying representation is based on a hash-table, mapping items to their priority, and a binary search tree containing the items sorted by priority. This results in the following time complexity profile: * Enqueue, Dequeue ≈ O(log n) * Peek, Contains ≈ O(1) Also added a specialized PunisherQueue, based on PriorityQueue, which behaves like the standard Queue<T> of the .NET framework, with the following main differences: * Thread-safe: can be simultaneously used by several threads. * Re-queue: Adding the same object (i.e. an object already present in the queue) many times will not create multiple entries in the queue for that object. Instead, at each call to Enqueue(), the object is moved from its current position to the back of the queue (i.e. "punished"). Change-Id: I3e53db1d64190f0470edf645f20312a0e8976ba4 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Add ConcurrentStopwatch classMiguel Costa2021-06-022-0/+62
| | | | | | | Added a thread-safe version of the Stopwatch .NET class. Change-Id: Ia167e38ed126ef11625fab0fe8df7fd6308e08a0 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Add timestamp generatorMiguel Costa2021-06-021-0/+55
| | | | | | | | | Added the Timestamp singleton class, which provides a thread-safe strict-monotonic 64-bit timestamp generator, based on the QueryPerformanceCounter Windows API function (through .NET Stopwatch). Change-Id: Icf6e67f4982d9b7f5b29b7345c12e4b15d650f2b Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Refactor Concurrent classMiguel Costa2021-06-021-23/+91
| | | | | | | | | | | | | | | The following changes were made to the Concurrent class: * Class visibility is now public. * Sub-class type parameter allows dedicated static critical section for each sub-class instead of sharing the same critical section across all sub-classes. * All functions now have a static version, which uses the static critical section for synchronization. * New function ThreadSafeInit allows thread-safe lazy initialization of ref type properties. Change-Id: I7a16e8d1be2944ee3d63b8922c8ae4e5c57ae9e5 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Use more precise project event sourceMiguel Costa2021-05-271-13/+56
| | | | | | | | | | | | | In the Qt/MSBuild project tracker, project change events are now sourced from the ProjectSubscription service. This allows more precision in the selection of events to receive. Previously, the generic ProjectChanged event was used, which is raised "after any write lock is released that caused a change to this project". This was causing the project tracker to trigger unnecessary background builds. Task-number: QTVSADDINBUG-890 Change-Id: If27c975b474d9dc2adc1a4335964341506727b9d Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Add Q_NAMESPACE to moc source criteriaMiguel Costa2021-05-071-1/+7
| | | | | | | | | | | The Q_NAMESPACE and Q_NAMESPACE_EXPORT macros will now be used as criteria to determine if a file is a moc source and automatically set its build item type as QtMoc. Previously, only the Q_OBJECT and Q_GADGET macros were considered as moc source criteria. Fixes: QTVSADDINBUG-805 Change-Id: Ia5dca53265fdb82002dde224c8afaf2f81126a9e Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Update list of Qt modulesMiguel Costa2021-05-051-0/+35
| | | | | | | | | Updated the list shown in the selection of Qt modules in the new-project wizard and the "Qt Settings" property page. Task-number: QTVSADDINBUG-873 Change-Id: I0a902a4a36289d74f21c9ea0e97ca8abe86f553d Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix issue with module selection in wizardMiguel Costa2021-05-051-1/+1
| | | | | | | | | Fixed a problem where selecting a module with more than one QT value, i.e. with multiple values allowed in the .pro file QT variable, would generate an incorrect value of the "Qt Modules" project property. Change-Id: Ifa13fcec62e64320955b7c2af2b683c7054ae456 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Remove unused method ModuleIdByName()Miguel Costa2021-05-051-10/+0
| | | | | Change-Id: I35130a3917ae731a69e852f37c8f6bf7a48aa48c Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Add module selection popupMiguel Costa2021-05-054-52/+251
| | | | | | | | | The list of Qt modules used by a project, shown in the project's "Qt Settings" property page, will now be edited by means of a popup window with the same selection UI as in the new-project wizard. Change-Id: I676eaf31491bb918709dcb0c92d4ef85c7ebd4ab Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Add option to disable project trackingMiguel Costa2021-04-292-19/+151
| | | | | | | | | | | | | Add a new entry to the Qt options page to allow disabling design-time tracking of project changes and corresponding request to build Qt-related targets. Also added detailed build logging to background builds of Qt targets. The logging verbosity can also be selected in the Qt options page. Task-number: QTVSADDINBUG-890 Change-Id: I98f5de7d2767932c74dd8577aafd966648d8b5bc Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Add options to disable background buildsMiguel Costa2021-04-295-13/+166
| | | | | | | | | | | | | | | | Added new entries to the Qt options page to allow disabling design-time background builds. These background builds are requested when Qt build variables (generated through a call to qmake) are synchronized, for the purpose of keeping the design-time information up-to-date. Several users have reported issues (memory/thread leaks) apparently connected to background builds in the latest update of VS 2019. These new options will only have an effect in design-time builds. Actual, build-time builds are not affected. Task-number: QTVSADDINBUG-890 Change-Id: I76f3fb9ad6e2b7ad7062b20198fef4823e781c92 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Add generic options load/save functionMiguel Costa2021-04-291-29/+52
| | | | | | | | | Added template functions to load and save the properties of QtOptionsPage to the registry. This will simplify adding new fields to the options dialog. Change-Id: Ic2d4046955652e6b254f7e5b9ccfca9b01ba1151 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Use specific VSSDK assembly location in T4Miguel Costa2021-04-222-1/+18
| | | | | | | | | | | | | | For VS 2019 and 2017, references in T4 text templates to the VSSDK assembly Microsoft.VisualStudio.Shell.Interop will now use a path to the DLL instead of relying on the GAC to locate the assembly by name. VS 2015 adds the assembly to the GAC, but 2019 and 2017 do not. This fixes an issue in 4cbf4a4537a11e489da68130a5f608c6664211f3 where the vstools.bat build script would fail due to T4 text transformation not being able to locate the VSSDK assembly. Change-Id: Ia1636747990c7e783b411aa8ebb70aecf7b22d43 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Synchronize QtVsTest version with VS ToolsMiguel Costa2021-04-217-228/+122
| | | | | | | | The version of the Qt VS Tools and QtVsTest are now in sync. This will make it easier to detect/prevent a mismatch between the two extensions. Change-Id: I701389ade0e0e12de76733f839ec8f625bad905e Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Enable build of auto-test frameworkMiguel Costa2021-04-201-0/+6
| | | | | | | | | The QtVsTest and other projects related to the auto-test framework are now included in the solution build. Previously, these projects were skipped during build, and would only be built if explicitly selected. Change-Id: Ia6c20ec9fd9ed247eca4425a9d28598e457fa7e9 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Add test client header to QtVsTest packageMiguel Costa2021-04-204-4/+18
| | | | | | | | | | | | | The auto-test/C# macro client interface header file, MacroClient.h, is now included in the QtVsTest extension package. The header file is now copied to %LOCALAPPDATA% when starting VS after installing QtVsTest. This change will allow development of auto-tests for VS without requiring that the QtVSTools repository be cloned. The only requirement will be the installation of the QtVsTest extension. Change-Id: Ibbcb52c9068e793ea68f4c40b61903891c4c0a9c Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Update widgets application sample testMiguel Costa2021-04-201-2/+2
| | | | | | | | | The sample macro Test_CreateGuiApp.csmacro that creates a project based on the Qt Widgets Application template was updated to reflect the renaming of that template (previously named "Qt GUI Application"). Change-Id: I3de941b50ea5d83e7f5cc6025fa68ec0034c4c27 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Allow testing a running instance of VSMiguel Costa2021-04-202-40/+91
| | | | | | | | | | | Modified the C# macro client interface to allow connecting to and testing a running instance of VS. This will allow the same instance of VS to be used across test sessions. Previously, it was only possible to run a test session on a VS instance created specifically for that single session. Change-Id: I8f7a8fd1274911c23b2f70783b3b9a34cab80249 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Highlight C#-macro syntaxMiguel Costa2021-04-204-0/+645
| | | | | | | | When editing files with a .csmacro extension, the macro statement will be syntax-highlighted, overlayed on the default C# highlighting. Change-Id: I3c02307528d1f125222f303d134007b8abc5d1cc Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Add access to DevEnvDir property from text templatesMiguel Costa2021-04-202-0/+25
| | | | | | | | T4 templates will now be able to access the DevEnvDir property, which points to the installation dir of the VS IDE. Change-Id: Iecf74f730e929d47128c6f7afd759ef5d33e87b7 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Reset macros between test sessionsMiguel Costa2021-04-202-0/+8
| | | | | | | | | | | | The C# macros loaded in QtVSTest during a test session will be removed after that session is over. Previously, macros would remain loaded, which caused errors and unexpected behavior. A test session is defined as starting when a test client connects to the QtVSTest local socket, and ending when that client disconnects. Change-Id: I965d3a6c68e85e77cb9e61ea680ca005c148dc8a Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Install QtVSTest in VS2019Miguel Costa2021-04-201-4/+5
| | | | | | | | The manifest file for the QtVSTest auto-test extension was modified to allow installation in VS2019. Change-Id: I83830752e33618a5b344ac3cdfc9cc699c7c11fb Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Update CoreFeatures project to latest format versionMiguel Costa2021-04-201-25/+52
| | | | | | | | The sample auto-test project CoreFeatures was updated to reflect the latest changes to the Qt VS project format (currently v3.3). Change-Id: I41e90d594200079554eadd079217daafb73de2f8 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Allow token reuse in RegExpr (part 2)Miguel Costa2021-04-191-19/+17
| | | | | | | File missing from 0f17827a8d232ab869d191e2ed912d5787ee4cf8 Change-Id: I4449c64fda46a62a82b1980b3501e8e261699783 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Allow token reuse in RegExprMiguel Costa2021-04-1314-89/+144
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed a problem where Token objects referenced in more than one RegExpr statement would potentially lead to render and parse errors. This was the case with top-level Token objects that were also referenced in the definition of other tokens (i.e. simultaneously top-level tokens and sub-tokens). This problem was preventing auto-test macros to be correctly parsed. The following example illustrates the reuse of Token objects: C#: var tokenA = new Token("A", "a"); var tokenB = new Token("B", "b" & tokenA); var tokenC = new Token("C", "c" & tokenB); var tokenX = new Token("X", (tokenA | tokenB | tokenC).Repeat()); Rendered regular expression (capture group names simplified): ((?:(?<A>a)|(?<B>b(?<A>a))|(?<C>c(?<B>b(?<A>a))))*) Rendered token hierarchy: https://bit.ly/3uOgLBb Parse tree for test case 'abacba': https://bit.ly/3dR2Mnc Change-Id: Ie31231d1b70172127107b77c937b3eb585dca73d Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Fix errors processing .ts filesMiguel Costa2021-04-013-3/+13
| | | | | | | | | | | | Fixed the following issues in the processing of .ts files: * lrelease called at the end of build, which caused errors in other tools that tried to access the generated .qm files (e.g. rcc) * The Output Directory and Output File Name properties of lrelease were ignored when generating the tool's command line Task-number: QTVSADDINBUG-898 Change-Id: Id2d8664bac4b0e29006e1c63344334065c67f0ee Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix running lupdate/lrelease on sub-directoriesMiguel Costa2021-04-011-4/+4
| | | | | | | | Fixed a problem where invoking lupdate or lrelease on a .ts file located in a sub-directory of the project would skip processing that file. Change-Id: I717ac90d75bf87d11a2d85448d60b5bb7a2676d7 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>