[geany/geany] bdb98f: PHP: fix parsing of functions returning a reference
Colomban Wendling
git-noreply at xxxxx
Wed Jul 3 17:41:57 UTC 2013
Branch: refs/heads/master
Author: Colomban Wendling <ban at herbesfolles.org>
Committer: Colomban Wendling <ban at herbesfolles.org>
Date: Mon, 15 Apr 2013 16:51:26 UTC
Commit: bdb98f0132af9b50e73a920d4856fe1f821fd185
https://github.com/geany/geany/commit/bdb98f0132af9b50e73a920d4856fe1f821fd185
Log Message:
-----------
PHP: fix parsing of functions returning a reference
Fix parsing of functions declarations with a leading ampersand (&),
used to make the function return a reference:
function &foo($arg1, $arg2) {
/* ... */
}
Modified Paths:
--------------
tagmanager/ctags/php.c
Modified: tagmanager/ctags/php.c
10 files changed, 9 insertions(+), 1 deletions(-)
===================================================================
@@ -199,7 +199,8 @@
TOKEN_EQUAL_SIGN,
TOKEN_OPEN_SQUARE,
TOKEN_CLOSE_SQUARE,
- TOKEN_VARIABLE
+ TOKEN_VARIABLE,
+ TOKEN_AMPERSAND
} tokenType;
typedef struct {
@@ -567,6 +568,7 @@ static void readToken (tokenInfo *const token)
case '}': token->type = TOKEN_CLOSE_CURLY; break;
case '[': token->type = TOKEN_OPEN_SQUARE; break;
case ']': token->type = TOKEN_CLOSE_SQUARE; break;
+ case '&': token->type = TOKEN_AMPERSAND; break;
case '=':
{
@@ -740,6 +742,9 @@ static boolean parseClassOrIface (tokenInfo *const token, phpKind kind)
return readNext;
}
+/* parse a function
+ * function myfunc($foo, $bar) {}
+ * function &myfunc($foo, $bar) {} */
static boolean parseFunction (tokenInfo *const token)
{
boolean readNext = TRUE;
@@ -748,6 +753,9 @@ static boolean parseFunction (tokenInfo *const token)
tokenInfo *name;
readToken (token);
+ /* skip a possible leading ampersand (return by reference) */
+ if (token->type == TOKEN_AMPERSAND)
+ readToken (token);
if (token->type != TOKEN_IDENTIFIER)
return FALSE;
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).
More information about the Commits
mailing list