Commit Graph

267 Commits

Author SHA1 Message Date
Nikolai Kosjar
6f63f6b647 C++: Remove unused functions in Lexer
Change-Id: I78b70eead1c64b9925272c50cc6109c5b415574d
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2014-05-15 14:47:39 +02:00
Fawzi Mohamed
3ee6f37e4b support the latest g++ on mac
the latest g++ on mac is really clang with a compatibility frontend,
and claims to be clang and support all the features clang does
with -std=c++0x (which qmake by default passes in).
But if you link libstdc++ (again the default) then the library has
several gaps. Catch that.

Change-Id: I8387f8fdcfc7639538e576a2e93b2301e07086cd
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2014-05-13 11:23:30 +02:00
Orgad Shaneh
749e5452fc C++: Fix compilation with C++<11
and MSVC that disallows override on dtor

Change-Id: I8a8897fe1318dee0c6d9b4d5d9d515e4631f9318
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2014-03-27 20:49:51 +01:00
Erik Verbruggen
05fd47e02d Fix compilation on Ubuntu 11.10.
Cause: broken compiler.

Change-Id: Ic559ba4bbb9ddcbb1d4fbd90d0276ebacd50d039
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
2014-03-27 16:25:31 +01:00
Erik Verbruggen
b0618281ec C++: Do type and name equality checking in a safe manner.
Change the TypeMatcher to also match names, and use two "block" lists
in SafeMatcher to prevent infinite recursion.

Task-number: QTCREATORBUG-11240
Change-Id: I0367ae795ee6be579b83aeb8d46723c877e4aa75
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2014-03-27 13:46:55 +01:00
Nikolai Kosjar
349de9331c C++: Fix weird logic in usage of TopLevelDeclarationProcessor::processDeclaration
As the name function name suggests, true should be returned if the
declaration should be processed. Otherwise false.

Change-Id: I8d266d99c579b331fee8772bde47aa1a466dae9c
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2014-03-13 15:41:01 +01:00
Sergio Ahumada
c375436847 Fix some typos
Change-Id: I3be73c2a4d256a0d28e863fd2517a4d7442b34d8
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
2014-03-05 09:39:42 +01:00
Orgad Shaneh
ddab33545c Lexer: Skip also joined comments
Change-Id: Ic854958642bf1eedeb7d90ae74fb72993594b8d6
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2014-02-05 13:29:00 +01:00
Orgad Shaneh
e600424648 C++: Fix support for incremental input with \n
Also fix false positive line continuation on blank line

e.g.
"foo \

bar"

Change-Id: Ic6d345a4b578c955411d119b8438c8dc5065c072
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2014-02-04 11:33:54 +01:00
Orgad Shaneh
0f4e3c356a C++: Support multiline strings and comments
Task-number: QTCREATORBUG-662
Change-Id: I0997fe2afaba71998d5da549b7141df0c023ff12
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2014-01-21 10:54:56 +01:00
Povilas Kanapickas
9528230bd3 C++: Remove dead code in the parser
CPlusPlus::Parser::parseAccessSpecifier() is not used anywhere
throughout the QtCreator codebase.

Change-Id: I062a4ae257b9c61f02bf85079feb6d48bd07c49e
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2014-01-20 16:30:06 +01:00
Povilas Kanapickas
3dbb1a9275 C++: Fix a typo in template declaration parser function
This is an obvious typo considering the checks at the beginning of the function.

Change-Id: I11b784153b650b02bba7bb942ca1131447a3da4a
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2014-01-20 16:29:46 +01:00
Orgad Shaneh
a309b3cfe6 C++: Store token kind as lexer state
... when needed

Change-Id: I32a1649c87e1fa42da80eff5003b2f5714062064
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2014-01-20 14:11:18 +01:00
Orgad Shaneh
2216c399e5 C++: Remove unused functions in Lexer
Change-Id: I79285a9fc72f26bdfb7c1600d4e7680e02062593
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2014-01-20 12:29:15 +01:00
Eike Ziller
236ea9efb9 Merge remote-tracking branch 'origin/3.0'
Conflicts:
	share/qtcreator/debugger/dumper.cpp
	share/qtcreator/debugger/dumper_p.h
	share/qtcreator/debugger/test/main.cpp
	src/plugins/debugger/gdb/classicgdbengine.cpp
	src/plugins/debugger/gdb/pythongdbengine.cpp
	src/plugins/debugger/lldblib/guest/lldbengineguest.cpp
	src/plugins/debugger/lldblib/guest/lldbengineguest.h
	src/plugins/debugger/lldblib/guest/main.cpp
	src/plugins/debugger/lldblib/ipcengineguest.cpp
	src/plugins/debugger/lldblib/ipcengineguest.h
	src/plugins/debugger/lldblib/ipcenginehost.cpp
	src/plugins/debugger/lldblib/ipcenginehost.h
	src/plugins/debugger/lldblib/lldbenginehost.cpp
	src/plugins/debugger/lldblib/lldboptionspage.cpp
	src/plugins/qbsprojectmanager/qbsstep.cpp
	src/plugins/qbsprojectmanager/qbsstep.h
	src/plugins/qmlprofiler/canvas/qdeclarativecanvas.cpp
	src/plugins/qmlprofiler/canvas/qdeclarativecanvas_p.h
	src/plugins/qmlprofiler/canvas/qdeclarativecontext2d.cpp
	src/plugins/qmlprofiler/canvas/qdeclarativecontext2d_p.h
	src/plugins/qmlprofiler/canvas/qmlprofilercanvas.cpp
	src/plugins/qnx/blackberrycheckdevmodestep.cpp
	src/plugins/qtsupport/debugginghelper.cpp

Change-Id: Ie9fd0a885fb6264a6a8a72daee071b75bcbd2e9d
2014-01-08 11:01:06 +01:00
Robert Loehning
746c5d8863 Incremented year in copyright info
Change-Id: Ib5423fdd064e4546f848c0b640b0ed0514c26d3a
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-01-08 08:29:47 +01:00
Daniel Teske
a1c18d9e97 TypeRewriter: Handle rvalue references correctly
Task-number: QTCREATORBUG-10555
Change-Id: Icb9859f96220f613476c097b747dec8c2d1bc2ed
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2014-01-03 15:19:08 +01:00
Orgad Shaneh
0ce3f3e68c C++: Ignore return type on function overrides comparison
Change-Id: I9933e1cc1fb996181e818e2ea0aff76f9255f849
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-12-28 22:02:01 +01:00
Nikolai Kosjar
c4a0f90edd CppEditor: Introduce C++ Code Model Inspector
By default invokable via Ctrl+Shift+F12.

Change-Id: If8d61233b6d38d12131718f7c20bf40f76bc9ae4
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-12-11 11:46:58 +01:00
Orgad Shaneh
a18b5e27a1 C++: Revive TranslationUnit::blockErrors()
Removed in f0f406ba

Required when CPLUSPLUS_NO_DEBUG_RULE is uncommented

Change-Id: I18ce50a84ed1ac4a77ca0aaa9d38ef070587ce49
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-12-11 11:35:03 +01:00
hjk
5c5240815a CPlusPlus: Fix parsing of ??< ??> ??( ??) trigraphs
Almost most useful feature ever.

Task-number: QTCREATORBUG-2474
Change-Id: If1ad661fab58ffb4a0b9ddb8ba771f2fde3b54ec
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-11-27 16:24:30 +01:00
Orgad Shaneh
eac518aee6 C++: Support __thread and thread_local
Task-number: QTCREATORBUG-7679
Change-Id: I794f52b2bcfb6c78ceef86ec53b6ed32b3d53d9f
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-11-26 09:46:10 +01:00
Tobias Hunger
ef584f176c CPlusPlus: Use correct placeholders in printf
Change-Id: I42a41608c2f025a196e539b58c1992049f7eca35
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-11-18 12:24:37 +01:00
Yuchen Deng
ef1645f43f Avoid warning when compilation with MSVC2013
warning: C4005: 'va_copy' : macro redefinition

Change-Id: Ib2bfd2229cb3ae00e084dd6df7a4558a5a766d55
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-11-12 08:39:38 +01:00
Nikolai Kosjar
1a5c7d8ef5 C++: Safe accessing of elements of TranslationUnit::_tokens
Until now std::vector::at() was used to access the elements. This is
handy for debugging since an exception is thrown for invalid indices,
but it does not stop Qt Creator from crashing because exceptions are not
caught.

This is especially a problem for the parser, which has to look ahead via
LA(n), which accesses TranslationUnit::_tokens.

With this patch, explicit bounds checking is done before accessing the
elements and thus calls to

  std::vector::at() // bounds checking, throwing out_of_range

were replaced by calls to

  std::vector::operator[]() // no bounds checking, not throwing out_of_range

Measuring the parse time for the Qt Creator project shows that there is
no slowdown. In both cases, with and without the patch, about 15s are
needed on the authors machine.

Task-number: QTCREATORBUG-10453

Change-Id: I32b12a526ff7199bcadfc21a3deb5354063a3e3b
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-10-23 10:46:14 +02:00
hjk
2b532c73ee CPlusPlus: Make (sub-)languague selection more generic
Change-Id: I4e2df6992b446adec662ab07671acd41715e41fd
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-10-15 16:22:28 +02:00
Nikolai Kosjar
b8dbac0b9c Rename "[Mm]ethod(s)" to "[Ff]unction(s)"
Only methods as programming functions are affected. Besides renaming
some actions like "Switch Between Function Declaration/Definition" this
mostly touches (api) code comments.

This is a follow-up patch to commit 872bfb7.

Change-Id: Icb65e8d73b59a022f8885b14df497169543a3b92
Reviewed-by: hjk <hjk121@nokiamail.com>
2013-10-10 15:56:12 +02:00
Nikolai Kosjar
0e4deaba23 C++: Parse MEMBER in Q_PROPERTY()
MEMBER was added in Qt5.

Task-number: QTCREATORBUG-10068

Change-Id: Ic6c15a0e5ee8981ab98e4c12fc1521dc281b731f
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-10-09 15:13:31 +02:00
hjk
0db5579592 CPlusPlus: Fix parsing of <: :> <% %> %: digraphs
See 2.5/2.12. Most useful feature ever.

Change-Id: I3f92256733e15078df56205dba9746ffff8ed145
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-10-07 21:06:18 +02:00
hjk
f17d9f01dc Use the canonical version of defining string literals
Change-Id: If36658de6f68f552f93830ba4f1cfa9994a2e44c
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
2013-09-27 14:36:10 +02:00
Nikolai Kosjar
18bba097bd C++: Stricter checking in TemplateNameId::Compare
Change-Id: I96dbce004d18147fd91485b1117dc65c4bbc08a0
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2013-09-13 15:41:15 +02:00
Friedemann Kleint
1901a1c7d4 Fix MSVC-64 warnings about size_t -> int truncations in C++-lib.
Change-Id: Ibe6f41ac15df1ec685b0d0766ff568abf6f3ae7e
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-09-12 15:34:09 +02:00
Erik Verbruggen
3eaf044045 C++: replace a tree by a hash
Be more environment friendly by using less trees.

Change-Id: I54d3b23d697a3b72a6a803688a8da0eddaad3e17
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-09-09 15:06:51 +02:00
Christian Kandeler
72d173829c Remove superfluous include paths from project files.
A lot of our build system files specify unneeded include
paths. These roughly fall into the following categories:
    a) Paths that are already set in more general files
       such as qtcreator.pri.
    b) Paths that serve no purpose at all, possibly
       left over from earlier versions of the project.
    c) Paths that act as workarounds for wrong include
       statements of the form '#include "xyz.h"', where
       xyz.h is not in the same directory as the including
      file.
This patch removes such path specifications and fixes the offending
include statements from case c).
Tested on Linux, Windows and OSX with qmake and qbs.

Change-Id: I039a8449f8a65df0d616b4c08081145c18ae4b15
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2013-09-02 17:28:17 +02:00
Erik Verbruggen
c2d2173934 C++: Add parser support for @throw statements.
Change-Id: I366733ec821ee264f182f4d4a3cf69cdada20cfc
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-08-21 15:33:39 +02:00
Przemyslaw Gorszkowski
f068223133 C++: fix tooltip for constantValue of enumeratorDeclaration
E.g.:
enum E { x = 1 + 2 + 1 };

constantValue for enumeratorDeclaration currently is equal: '1+2+1'
(spaces between are removed).
Fixed version produces "1 + 2 + 1".

Change-Id: I38f7703bd5c856c28aadeecd7f7923aa4a7da422
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-07-31 14:14:39 +02:00
Erik Verbruggen
23085895d6 C++: handle @try statements in the parser.
No semantic analysis yet, but this prevents the parser from generating
bogus diagnostics.

Task-number: QTCREATORBUG-9309
Change-Id: I2ec575a8474cd51bfa97b17678d3da71ab8dcd7a
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-07-19 14:49:38 +02:00
Nikolai Kosjar
f7e26babba C++: Fix names of functions dealing with enclosing scopes
...in order to better tell apart the type related functions
isScope()/asScope() and the functions dealing with enclosing scopes:

    * scope() --> enclosingScope()
    * setScope() --> setEnclosingScope()
    * resetScope() --> resetEnclosingScope()

Change-Id: Id743a7d1b6a1a1a0ffcd8568cbd8ebbdfc16eaa1
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
2013-07-16 08:26:19 +02:00
Erik Verbruggen
6a179c0467 C++: remove warning about stray comma after last enumerator
Although it's a C++11 feature, all sane compilers support it as an
extension to C++03/C++98.

Change-Id: I3c7b0db345d0b175554534e879717f4d14f48b0f
Reviewed-by: hjk <hjk121@nokiamail.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-07-15 11:01:56 +02:00
Przemyslaw Gorszkowski
37430df636 C++: fix constantValue for EnumeratorDeclaration
For the case:
const int x = 12;
enum E { e = x };

constantValue for EnumeratorDeclaration has value=' x'. It should have 'x'.

Change-Id: Iaca77cccd1e0dc5274696b0c96cec6ac2f904979
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-07-12 13:46:57 +02:00
Nikolai Kosjar
20f3502754 C++: Introduce caches to Clone* classes
Done-with: Erik Verbruggen <erik.verbruggen@digia.com>
Task-number: QTCREATORBUG-8747

Change-Id: I7cb694f8180c6aa932b07066d98d095340111324
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Reviewed-by: xSacha
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
2013-07-09 18:31:14 +02:00
Erik Verbruggen
e2a727c450 C++: add semantic support for C++11 alias decls.
Task-number: QTCREATORBUG-9386

Change-Id: Ia68f3866c122ca5261dd73b2c740b47fb15744fc
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-06-06 14:10:24 +02:00
Nikolai Kosjar
c426b71334 C++: Use soft asserts instead of assert()
Some qmake versions ignore "DEFINES += NDEBUG" on Windows.

Change-Id: Ibdf3b1036c2331dcef61dcd278463c02754044d2
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-05-13 14:57:04 +02:00
Przemyslaw Gorszkowski
5dbcb974b0 C++: added missing cloning of AnonymousNameId
When instantiate a template with anonymous class/struct/union
AnonymousNameId has to be cloned.

Task-number: QTCREATORBUG-9227

Change-Id: Iedca5e41589e68a94a35cd4387241052c70c50df
Reviewed-by: Sergey Shambir <sergey.shambir.auto@gmail.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-05-10 11:16:04 +02:00
Przemyslaw Gorszkowski
080bf4ecb8 C++: improve support for anonymous classes
Fix:
* highlighting
* find usages
* follow symbol
* code completion

Task-number: QTCREATORBUG-6497
Task-number: QTCREATORBUG-8963
Task-number: QTCREATORBUG-3610
Task-number: QTCREATORBUG-7579

Change-Id: I3dcaf1c515d0199c3e6bee72284fbb40064686ee
Reviewed-by: Petar Perisin <petar.perisin@gmail.com>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-04-19 12:14:56 +02:00
hjk
f0f406bacb C++: Inline {TranslationUnit,Parser}::blockErrors
As indicated by profiling.

Change-Id: I04d741dcc6200eb351d7aec316572e0e94ef5bec
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-04-18 14:58:52 +02:00
Nikolai Kosjar
b1bb093d15 C++: Fix Qt dependency (Q_UNLIKELY) in 3rdparty/cplusplus
Change-Id: I37ffb657c9e042cc1c186895efd9c58fe6e332fd
Reviewed-by: Przemyslaw Gorszkowski <pgorszkowski@gmail.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-04-18 11:34:32 +02:00
hjk
ad0331a2a9 C++: Inline Lexer::control()
Change-Id: Ia37ec33fb031fdea4ad1890fcea3a80b7b46e272
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-04-18 10:49:51 +02:00
Przemyslaw Gorszkowski
17cd161a9d C++: fix cloning of templates
Fix instantiation of templates(by cloning original symbols). Assigning of scope
for cloned symbol is taken from the symbol which is used to instantiate.

Task-number: QTCREATORBUG-9098
Change-Id: I066cc8b5f69333fabdaf2d4466b205baf08bd3f1
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
2013-04-17 14:10:32 +02:00
hjk
a1c7c47cc0 C++: Simplify Lexer::yyinp()
... by assuming we operate on NUL-terminated data, which is
(in theory) guaranteed by (non-raw) QByteArray which we have.

Change-Id: I855d01ea0dee5328ec737fbabee1086d7a28aa5a
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2013-04-16 11:26:30 +02:00