add_qtc_library would have set the POSITION_INDEPENDENT_CODE property
for STATIC libraries on UNIX based systems.
The OBJECT libraries need the same treatment.
Change-Id: Ia333a36ea0f35d7db3ed876cdde5b895b47644c7
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Display prefixes and suffixes different from the actual string, like we
already did for raw string literals.
This uncovered some minor bugs in both lexer and highlighter:
- Wrong length for a setFormat() call in highlightRawStringLiteral()
- Missing check for user-defined literal in raw string literals
- Missing check for user-defined literal in multi-line strings
Fixes: QTCREATORBUG-28869
Change-Id: I018717c50ddc1d09c609556161c85dfb0cc29fab
Reviewed-by: David Schulz <david.schulz@qt.io>
Since we do not support Qt < 5.15 anymore, and as a first step
for getting rid of our special FindQt5.cmake.
Change-Id: Icc5dbaf9b0a3a622b1f609ff114b9decb6d2856c
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Note that we only make sure not to trip over valid code; we make no
effort to check whether default/delete is actually allowed at this
type of declaration.
Fixes: QTCREATORBUG-28102
Change-Id: Ic693319b9dfaf8652cf4cae9cd907a6e258ad773
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
We've been requiring C++17 since Qt 6.0, and our qAsConst use finally
starts to bother us (QTBUG-99313), so time to port away from it
now.
Since qAsConst has exactly the same semantics as std::as_const (down
to rvalue treatment, constexpr'ness and noexcept'ness), there's really
nothing more to it than a global search-and-replace.
Task-number: QTBUG-99313
Change-Id: I88edd91395849574436299b8badda21bb93bea39
Reviewed-by: hjk <hjk@qt.io>
Amends 0fab5956ea.
We want to avoid carrying these eight bytes ber Class instance around.
Instead, we now just replace the (anonymous) struct name with the
typedef'ed one.
Note that in C (but not C++), this is possible:
struct S {};
typedef struct {} S;
struct S s1;
S s2;
However, our code model has never respected the extra struct namespace,
so it can already not distinguish between occurrences of "S" and "struct
S".
Change-Id: I55feafea7d3a4a5848e10f7011f633a2ce0f626e
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
While we do recommend clangd for modern code bases, we should still be
able to parse basic language constructs.
Fixes: QTCREATORBUG-27975
Change-Id: I189b991685a5cd5f62f2afce77878b60c895e8f9
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: hjk <hjk@qt.io>
Depending on context, callgrind sees contributions of >8% to
the total cost of project parsing for these functions. The
functional are actualy executed executed out-of-line, often
for a function body of one "payload" instruction only.
Inlining removes the call/endbr64/ret overhead.
Change-Id: I6886f08e322fcaa4e0f54d424279e0a8c24e4718
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This adds the build system feature that allows Qt Creator's libraries
and plugins to be compiled statically.
Fixes some symbol clashes when all plugins are linked into the same
executable.
Support for actually loading static plugins will be added in a separate
commit.
The feature is controlled by QTC_STATIC_BUILD which by default is OFF.
Change-Id: I1fab7953c43e42dc75619e35660029ee067106df
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
... for member functions with exception specification and/or reference
qualifiers.
The FunctionDeclaratorAST::cv_qualifier_list member can contain both the
proper qualifiers "const" and "volatile" as well as the pseudo-qualifiers
"override" and "final". The problem is that the former appear before
exception specification and reference qualifiers, whereas the latter come
afterwards. Therefore, when calculating the declarator's first and last
tokens, we can't just mechanically check the different declarator members
in order. Instead, we need to compare the token values to see which
comes first.
Task-number: QTCREATORBUG-27132
Change-Id: I924f9afe49453fa51b4a2fe010d1cc00c9defad1
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Removes qmake as a build system for building Qt Creator itself.
Keep them for some tests that are not completely moved to CMake yet.
Change-Id: I846c6ef65626b6dfae6375fdc85d00677aa8c2fb
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
... with the built-in highlighter.
Pass the necessary context information in and out of the SimpleLexer.
Task-number: QTCREATORBUG-26211
Fixes: QTCREATORBUG-26425
Fixes: QTCREATORBUG-26615
Change-Id: Id72f743e07ae117ca51b0d5e527b208dda133b7e
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: David Schulz <david.schulz@qt.io>
... also in macro expansions.
Amends 8c437362bc. Just like in that patch, we don't prevent trailing
quotes, even though they are not allowed. Unlike in that patch, we don't
check the language version, as it is not set during preprocessor mode
(for whatever reason).
Fixes: QTCREATORBUG-26484
Change-Id: I8737724208802ed9a9005af538cf13fbfd2efd42
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Even in the debug build, as done for the qmake build system. This is for
performance optimization of this critical part for C++ parsing even in
debug / developer builds.
Change-Id: I9552ba9fc44e213f2df1d2d2a64a126af3603fd1
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
We're hitting the limit in a real-world project.
(Of course, it's pretty horrific that we unconditionally access pointers
that can legally be null, but that's difficult to change now.)
Fixes: QTCREATORBUG-25606
Change-Id: I1d8c883550e8968bbfa6ce26965573697774361f
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Before we only supported UL and ULL.
And add tests for all variants of allowed integer suffixes.
Fixes: QTCREATORBUG-25604
Change-Id: Id92f371d2effa7456d2d50891a6c29810c5c4c75
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>