summaryrefslogtreecommitdiff
path: root/tests/examplefiles/cpp/functions.cpp
Commit message (Collapse)AuthorAgeFilesLines
* CFamilyLexer: Fix matching of function parameters (#2210)amitkummer2022-08-181-1/+17
| | | | | | | | | | | | | | This fixes an issue where in code like this: ``` int foo(float bar) // hello() {} ``` The lexer would match `(float bar) // hello()` as the parameters of the function `foo`, instead of just `(float bar)`. In addition, a similar test case to what was originally reported in #2208 is added.
* CFamily: improve function detection (#2008)amitkummer2021-12-301-0/+3
| | | | Detect function with return types of more than a single word length (like `unsigned int` or `long long`).
* Fixes for C and C++ functions and namespaces (#1722)amitkummer2021-02-271-0/+87
* Fix lexing of function names This fixes #1561. Add a keywords state that matches inside and outside functions for keywords. Before this, when a keyword would appear the lexer would go to the statements state, in which functions were not matched. * Add tests for lexing of function names * Unbreak previous tests * Allow namespaced names in function statements Add a second identifiers regex that matces all the previous identifiers and also '::'. I took the decision to create a second identifiers regex with '::' inside, simply because using the old identifiers regex would hurt performance massively on every solution I tried to craft. * Add tests for namespaced names in functions * Unbreak previous tests * Add support for namespaces in namespace declarations Add a namespace state that is entered each time the namespace keyword is matched and lexes all name matches as namespaces. Cases this approach doesn't cover: * Namespaces in using declarations. * Namespaces that prefix names in random code. Unfortunately, in both of these cases the names before and after '::' are not always namespaces. * Add tests for namespace declartions * Unbreak previous tests * Tidy functions regex Remove group nesting that became unneeded after fc56ab8 (the last big refactor). * Remove f string usage I introduced by mistake