summaryrefslogtreecommitdiff
path: root/tests/auto/cplusplus/preprocessor
Commit message (Collapse)AuthorAgeFilesLines
...
* Add qbs project files for autotests.Christian Kandeler2013-09-091-0/+36
| | | | | | | | | | Note: Since not all autotests are able to run from an installed location, we need to be able to start them from the build directory, which in turn forces us to set a destination directory for libraries and plugins, so they will be found at run-time. Change-Id: Idcf7e1333dfa6e9dbf745391b78c035f842ccc5a Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* CPlusPlus: Some compile fixes for autotests.Christian Kandeler2013-08-261-0/+1
| | | | | Change-Id: Id2ced5e41686387e67a7bb8419fe1547b23779c7 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
* CppEditor: Check <include path>/QSomethingNikolai Kosjar2013-06-171-0/+1
| | | | | | | | | | | For the quick fix AddIncludeForUndefinedIdentifier, if no class is found via the locator, check the "Qt include paths" for a header file with the same name as the class name. Task-number: QTCREATORBUG-9538 Change-Id: I13c86844c2ff653fa479dc91eb109af2a6d76fae Reviewed-by: Lorenz Haas <lykurg@gmail.com> Reviewed-by: hjk <hjk121@nokiamail.com>
* C++: Fix preprocessor blocked macro bug.Erik Verbruggen2013-06-113-0/+20
| | | | | | | | | | | | | | | | By lexing the first token after a macro call (meaning: the token after the closing parenthesis (which was passed to handleFunctionLikeMacro which in turn pushed it back into the token buffer)), a token buffer might be popped, which unblocks the macro that generated the actual param pack. The effect was that if this happens in the expansion of a recursive macro (with parameters!), the preprocessor ended up in an infinite loop. Task-number: QTCREATORBUG-9015 Task-number: QTCREATORBUG-9447 Change-Id: I0d83c59188ec15c4a948970e9fa944a17d765475 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
* CppEditor: Improve finding position for new includesNikolai Kosjar2013-06-1128-0/+28
| | | | | | | | | ...by detecting include groups (separated by new lines, include types and same dir prefix). Task-number: QTCREATORBUG-9317 Change-Id: I73e80fdc715104901cb2d4f5b15b4cab5d04d305 Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* C++: do not strip trailing newlines in the preprocessor output.Erik Verbruggen2013-05-304-3/+91
| | | | | | | | | | | | | Doing so resulted in an incorrect position for the EOF token when the preprocessed output would be parsed. That in turn leads to incorrect insertion positions for refactoring actions. This is especially true when a file contains only preprocessor directives: the EOF token would point to line 1 column 1, which is usually not the place where code should be inserted. Change-Id: I7d359aa7a6c04bc52c8b873fd49ad6afc3a77319 Reviewed-by: hjk <hjk121@nokiamail.com>
* C++: Fix unused field warnings in test.Erik Verbruggen2013-05-151-0/+2
| | | | | Change-Id: I898668a91eb7d3fa18c0a8d3e7e7507f0fb5a917 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
* Merge remote-tracking branch 'origin/2.7'Eike Ziller2013-04-301-0/+18
|\ | | | | | | | | | | | | Conflicts: src/plugins/qmldesigner/components/formeditor/abstractcustomtool.cpp Change-Id: I4e0a85795e7f4bfcdc21d106517517b527f85104
| * C++: fix handling of empty va_args macro arguments.Francois Ferrand2013-04-291-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | Preprocessor did not correctly handle when variadic macro arguments were not provided at all, if there were other arguments: macro was not expanded in case only the non variadic arguments were given. #define MACRO(...) used to work fine for 0 or more arguments. #define MACRO(ARG0, ...) used to work only for 2 or more arguments, now fixed. Change-Id: I64e9199ceccae05618a49931c2adad8e4f9471ba Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
* | C++: Untangle include file resolving from loading.Erik Verbruggen2013-04-091-1/+1
| | | | | | | | | | Change-Id: Iacf8cb12dd623c908538d80ee2595297a9bdde71 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
* | fix include style relating to cplusplus librariesOswald Buddenhagen2013-04-031-1/+2
| | | | | | | | | | | | | | | | | | | | | | ... and adjust INCLUDEPATH accordingly. while i'm at messing with include statements, also re-order the include blocks according to policy and sort them within bigger blocks. Change-Id: I7762abfd7c4ecf59432b99db2f424e4fa25733a5 Reviewed-by: Tobias Hunger <tobias.hunger@digia.com> Reviewed-by: Eike Ziller <eike.ziller@digia.com>
* | include qttest.pri centrallyOswald Buddenhagen2013-04-021-1/+0
|/ | | | | Change-Id: I05e85dac15e7de52ad04bde899dcc3cb8e603d3e Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
* Merge remote-tracking branch 'origin/2.6'Oswald Buddenhagen2013-01-311-1/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/autotoolsprojectmanager/AutotoolsProjectManager.pluginspec.in src/plugins/debugger/qtmessageloghandler.cpp src/plugins/debugger/qtmessagelogwindow.cpp src/plugins/madde/maemodeployconfigurationwidget.cpp src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp src/plugins/qmldesigner/designercore/include/widgetqueryview.h src/plugins/qmldesigner/designercore/metainfo/metainfoparser.cpp src/plugins/qmldesigner/designercore/model/modelnodecontextmenu.cpp src/plugins/qmldesigner/designercore/model/modelnodecontextmenu.h src/plugins/qmlprojectmanager/qmlprojectapplicationwizard.cpp src/plugins/qnx/bardescriptormagicmatcher.h src/plugins/qt4projectmanager/profilekeywords.cpp src/plugins/remotelinux/deployablefilesperprofile.cpp src/plugins/remotelinux/deployablefilesperprofile.h src/plugins/remotelinux/deploymentinfo.cpp src/plugins/remotelinux/deploymentsettingsassistant.cpp src/plugins/remotelinux/profilesupdatedialog.cpp tests/auto/icheckbuild/ichecklib.cpp tests/auto/icheckbuild/parsemanager.cpp tests/auto/icheckbuild/parsemanager.h Change-Id: Ie465a578446a089e1c502d1cb1096e84ca058104
| * Incremented year in copyright infov2.6.2Robert Loehning2013-01-291-1/+1
| | | | | | | | | | Change-Id: Ic6a9ff0359625021ebc061d22db6811814534205 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* | C++: add include-guard tracking.Erik Verbruggen2013-01-181-0/+91
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Track the typical #ifndef/#define/#endif usage in header files to see if the macro is an include guard. If so, store it in the Document. No behavioural change, just recording the name. This can be used in the future to track if a file needs to be re-parsed when a macro changes: if it was used in the file, and not defined in it nor being the include-guard, a file should be re-preprocessed and re-parsed. It can also be used to check if two files have the same include guard. Change-Id: I2715f529997a7b24a11bdbc6150652e2669f1a46 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
* | C++: fix macro calls with comment before argumentsFrancois Ferrand2013-01-181-0/+23
|/ | | | | | | | | When in 'keep comments' mode, the preprocessor does not properly handle macro calls with comments between the macro name and the opening parenthesis: "FOO /*something to say*/ (45)". Change-Id: I6fe733242e4d2ccff2985d17399d0a084917415a Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* Tests: C++: Make tests run from shadow builds.Nikolai Kosjar2012-11-072-3/+6
| | | | | | | | | | | | | | For shadow builds some tests couldn't find their test data. Solved by using the same pattern as in Qt tests: Inject $$PWD as SRCDIR via a DEFINES statement. Note: It was considered to use QFINDTESTDATA for Qt5, but this was rejected due to: 1) It's Qt5 only (would mean to introduce some wrapper...) 2) As the doc states, it will not work with QTEST_APPLESS_MAIN tests. Change-Id: Ie6cf59570fe61725b7f6f83b7da650331ddb38fc Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* Adjust license headershjk2012-10-051-21/+20
| | | | | Change-Id: Ice592c6de9951ee3b2c4cb52ed0bb3b6770e0825 Reviewed-by: Eike Ziller <eike.ziller@digia.com>
* C++: Discard comments in macro definitionsLeandro Melo2012-09-051-1/+40
| | | | | | | | Task-number: QTCREATORBUG-7815 Change-Id: Id3e6b018bfd58b0f0072c637d69721a4bde1603a Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: Eike Ziller <eike.ziller@nokia.com>
* C++: Always skip unknown preprocessor "directives"Leandro Melo2012-08-291-0/+26
| | | | | | | | Task-number: QTCREATORBUG-7780 Change-Id: Ie93704feff17ad8229e50fb1133048f2c7598dea Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: hjk <qthjk@ovi.com>
* C++: Handle C++ style comments in macro expansionLeandro Melo2012-08-231-0/+73
| | | | | | | | | | | | Notice that a similar problem still exists for which we need to fix the lexer when there's a C style commend which ends with a backslash-newline. Task-number: QTCREATORBUG-7713 Change-Id: I0f6d561703984f917fa5ed29de020ad0bdc5aaf0 Reviewed-by: David Schulz <david.schulz@nokia.com> Reviewed-by: hjk <qthjk@ovi.com>
* C++: Take multiline strings into account when preprocessingLeandro Melo2012-08-231-0/+23
| | | | | | | It was creating extra line(s)... Change-Id: If28a9ccf16195c71747479db838a5589ea6683a0 Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
* C++: Fix line number information after multiline comments.Christian Kamm2012-08-071-2/+122
| | | | | | Task-number: QTCREATORBUG-7702 Change-Id: I0ec2e1eb9bf1c556b0a426d4405df1c48b5653ed Reviewed-by: Leandro Melo <leandro.melo@nokia.com>
* Contact -> qt-project.orgEike Ziller2012-07-191-3/+1
| | | | | Change-Id: I7134d7de30bcf9f9dcfad42520dd45ee083a852d Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* C++: Core changes in preprocessingLeandro Melo2012-06-2519-154/+429
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary of most relevant items: - Preprocessor output format change. No more gen true/false. Instead a more intuitive and natural expansion (like from a real compiler) is performed directly corresponding to the macro invocation. Notice that information about the generated tokens is not lost, because it's now embedded in the expansion section header (in terms of lines and columns as explained in the code). In addition the location on where the macro expansion happens is also documented for future use. - Fix line control directives and associated token line numbers. This was not detected in tests cases because some of them were actually wrong: Within expansions the line information was being considered as originally computed in the macro definition, while the desired and expected for Creator's reporting mechanism (just like regular compilers) is the line from the expanded version of the tokens. - Do not allow for eager expansion. This was previously being done inside define directives. However, it's not allowed and might lead to incorrect results, since the argument substitution should only happen upon the macro invocation (and following nested ones). At least GCC and clang are consistent with that. See test case tst_Preprocessor:dont_eagerly_expand for a detailed explanation. - Revive the 'expanded' token flag. This is used to mark every token that originates from a macro expansion. Notice, however, that expanded tokens are not necessarily generated tokens (although every generated token is a expanded token). Expanded tokens that are not generated are those which are still considered by our code model features, since they are visible on the editor. The translation unit is smart enough to calculate line/column position for such tokens based on the information from the expansion section header. - How expansions are tracked has also changed. Now, we simply add two surrounding marker tokens to each "top-level" expansion sequence. There is an enumeration that control expansion states. Also, no "previous" token is kept around. - Preprocessor client methods suffered a change in signature so they now receive the line number of the action in question as a paramater. Previously such line could be retrieved by the client implementation by accessing the environment line. However, this is not reliable because we try to avoid synchronization of the output/environment lines in order to avoid unnecessary output, while expanding macros or handling preprocessor directives. - Although macros are not expanded during define directives (as mentioned above) the preprocessor client is now "notified" when it sees a macro. This is to allow usage tracking. - Other small stuff. This is all in one patch because the fixes are a consequence of the change in preprocessing control. Change-Id: I8f4c6e6366f37756ec65d0a93b79f72a3ac4ed50 Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
* Revert "C++: Re-enable macro definition line test"Leandro Melo2012-06-191-6/+8
| | | | | | | | | | | | | | | | | This reverts commit 44d8e7bef705810ade0e4b5532c47a82b11294eb. The original test case was actually right. I guess I was mislead by the recently added preprocessor tests, which are the ones that should be corrected (together with the preprocessor, which seems to have issues with # lineno generation). Conflicts: tests/auto/cplusplus/preprocessor/tst_preprocessor.cpp Change-Id: I47f82ed23a37086d0d81c4b3ea2cac48fb753451 Reviewed-by: hjk <qthjk@ovi.com> Reviewed-by: Francois Ferrand <thetypz@gmail.com>
* C++: Better handling of arg count mismatch in macrosLeandro Melo2012-06-191-45/+13
| | | | | | | | | | | | Do not expand function-like macros at all when there's a mismatch in the parameter/argument count. The report below raises the issue but its expected result is not correct. This would be the more appropriate fix. Task-number: QTCREATORBUG-7225 Change-Id: Ide8580faa7b724d3e8b396ec1f899cc5ca7f9e7e Reviewed-by: hjk <qthjk@ovi.com>
* C++: Track macro argument reference even when emptyLeandro Melo2012-06-121-6/+47
| | | | | Change-Id: I6d226b4e42f94ebee41d012050c5109895f0c432 Reviewed-by: hjk <qthjk@ovi.com>
* C++: Also expand first token after macro defineLeandro Melo2012-06-051-12/+17
| | | | | | | It was previously beeing skipped. Change-Id: Iadd9b03acbcf0ee0fb4db537b8597661cb93af3f Reviewed-by: hjk <qthjk@ovi.com>
* C++: Fix macro uses line infoLeandro Melo2012-06-011-1/+53
| | | | | | | | | | | Make sure the environment line is consistent during preprocessor directives and identifier handling so clients can rely on consistent information. Particularly important for macro usages. New tests also added. Change-Id: I962a39a86cd17b8d945d2959c2c95e2d258ea3e6 Reviewed-by: hjk <qthjk@ovi.com>
* C++: Re-enable macro definition line testLeandro Melo2012-05-311-6/+6
| | | | | | | | | | I believe those were actually incorrect, since the # mark from the generated tokens `int f` should be relative to <stdin> on the line they are defined, which is 1. Change-Id: I663ef49ad75eb8bb0a4a4b18d4899a952011536c Reviewed-by: Francois Ferrand <thetypz@gmail.com> Reviewed-by: hjk <qthjk@ovi.com>
* preprocessor: do not loop endlessly on incomplete expressionshjk2012-05-301-0/+20
| | | | | | | An missing closing parantheses after "defined(..." caused an endless loop. Change-Id: I19b17cebc1a56880216c3bfb67c9d296f80cc064 Reviewed-by: Leandro Melo <leandro.melo@nokia.com>
* preprocessor: add an example of a macro that generates codehjk2012-05-153-0/+11
| | | | | Change-Id: I902ebd73e039b8c3f44eca456be87809d1e1d3a4 Reviewed-by: hjk <qthjk@ovi.com>
* preprocessor: add (failing) test for concatenationhjk2012-04-273-0/+17
| | | | | Change-Id: I9d51798cb4d95141d30b0609d03cd1d199088f0a Reviewed-by: hjk <qthjk@ovi.com>
* preprocessor test: code cosmeticshjk2012-04-271-12/+23
| | | | | Change-Id: I67367e501c8f19cee9023e3782c6a9175b49c6c6 Reviewed-by: hjk <qthjk@ovi.com>
* preprocessor: add test cases for <=, == and >=hjk2012-04-261-0/+31
| | | | | Change-Id: I126143daeb572a555b73dc33ad7996b22c1387f8 Reviewed-by: hjk <qthjk@ovi.com>
* preprocessor: swallow ) after defined(...hjk2012-04-251-0/+21
| | | | | | | Task-number: QTCREATORBUG-7256 Change-Id: I6149e56e5f50f75c9e039be9c162036a3890e2d7 Reviewed-by: David Schulz <david.schulz@nokia.com> Reviewed-by: hjk <qthjk@ovi.com>
* preprocessor: some code style in auto testhjk2012-04-251-18/+32
| | | | | Change-Id: I1381ce17098a87dbc3924dc86902d7cc1b1eec76 Reviewed-by: hjk <qthjk@ovi.com>
* Fix out-of-memory crash when indenting generated tokens.Erik Verbruggen2012-04-231-1/+1
| | | | | | | | | | | | Generated tokens do not have a position in any source file, so not try to indent them. Previously, the 'source' used was the scratch buffer, which would not contain newlines, so the indent depth would be the length of the scratch buffer at that point. Task-number: QTCREATORBUG-7262 Change-Id: If94213d6dffd13dd2b47c7038ec2398ad925d904 Reviewed-by: Yuchen Deng <loaden@gmail.com> Reviewed-by: Thomas Hartmann <Thomas.Hartmann@nokia.com>
* preprocessor: rename operator() into run.hjk2012-04-191-49/+50
| | | | | | | Easier to follow. Change-Id: I6da1ca862ddb7048a6d16bf5e6ea18d6b2cfc7f8 Reviewed-by: hjk <qthjk@ovi.com>
* preprocessor: make Preprocessor::preprocess privatehjk2012-04-191-2/+1
| | | | | Change-Id: Ic81e3ebec1b42ae0698a340ee7e1c711225c1162 Reviewed-by: hjk <qthjk@ovi.com>
* preprocessor: make Environment::{resolve,remove} work on ByteArrayRefs onlyhjk2012-04-191-3/+3
| | | | | Change-Id: Idb93d359bd45696a38cb863dcea30c5c377eeabb Reviewed-by: hjk <qthjk@ovi.com>
* preprocessor: add autotest for defined(...) and undefined(...)hjk2012-04-191-0/+59
| | | | | Change-Id: I7c843a449bb6db348ab374b4bd2c378b797b94cd Reviewed-by: hjk <qthjk@ovi.com>
* preprocessor tests: compile fixhjk2012-04-171-0/+2
| | | | | Change-Id: Iab9fb8ecbad94e08d39b6fad60caaf98a85d5980 Reviewed-by: hjk <qthjk@ovi.com>
* Preprocessor: fix macro definition line.Francois Ferrand2012-04-021-1/+15
| | | | | | | | | | The line corresponding to the macro definition is simply the token's line. This caused errors in the macro definitions, since there were multiple macros defined on the same line of the same file. Task-number: QTCREATORBUG-7217 Change-Id: I56d17eeba677ac51f9eed283c0e964019bdfe4b7 Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
* Add test case to preprocessor.Francois Ferrand2012-04-021-18/+119
| | | | | | | | | | | | - This enables some tests which had been unexpectedly disabled in earlier test. - Tests to show issue QTCREATORBUG-7225. - Tests which validates somehow behavior of preprocessor for QTCREATORBUG-7217: the test passes, so the problem is likely not in the startExpandingMacro() notification. Change-Id: Ib7c1433e4dcdd8c1d19fa117371f94c1645ec3fb Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
* Preprocessor: Fix client notification.Francois Ferrand2012-04-021-2/+44
| | | | | | | | - Notify end of macro if function expansion is skipped. - Do not notify client of generated macros expansion. Change-Id: Ic027fc13ee391425a5ebadc8e84b9305912dbcf0 Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
* [C++] Always output a #line as first line of the pp output.Erik Verbruggen2012-03-3012-7/+21
| | | | | Change-Id: I60d25109ae8fe3628b1899078a21010263787c33 Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
* Fix #include MACRO_NAME.Erik Verbruggen2012-03-291-1/+65
| | | | | Change-Id: Id1c4046d028ad26d17b28feb53a832f3b48363f1 Reviewed-by: Erik Verbruggen <erik.verbruggen@nokia.com>
* [C++] Rewrite of the preprocessor.Erik Verbruggen2012-03-2926-26/+641
| | | | | | | | | | | | | This rewrite fixes a couple of issues with the pre-processor. It now supports: - macros in macro bodies - stringification of parameters [cpp.stringize] - the concatenation operator [cpp.concat] - #include MACRO_HERE - defined() inside macro bodies used in pp-conditions. Change-Id: Ifdb78041fb6afadf44f939a4bd66ce2832b8601f Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>