Branch: refs/heads/master Author: Jiří Techet techet@gmail.com Committer: Jiří Techet techet@gmail.com Date: Sun, 07 Dec 2014 21:25:13 UTC Commit: 7c22ceacf996ea0ac773349afca39eed6af4b9ea https://github.com/geany/geany/commit/7c22ceacf996ea0ac773349afca39eed6af4b9...
Log Message: ----------- Update the go parser to the latest version from ctags
Modified Paths: -------------- tagmanager/ctags/go.c
Modified: tagmanager/ctags/go.c 78 lines changed, 34 insertions(+), 44 deletions(-) =================================================================== @@ -521,20 +521,16 @@ static void makeTag (tokenInfo *const token, const goKind kind)
static void parsePackage (tokenInfo *const token) { - tokenInfo *const name = newToken (); - - readToken (name); - if (isType (name, TOKEN_IDENTIFIER)) + readToken (token); + if (isType (token, TOKEN_IDENTIFIER)) { - makeTag (name, GOTAG_PACKAGE); + makeTag (token, GOTAG_PACKAGE); if (!scope && Option.include.qualifiedTags) { scope = vStringNew (); - vStringCopy (scope, name->string); + vStringCopy (scope, token->string); } } - - deleteToken (name); }
static void parseFunctionOrMethod (tokenInfo *const token) @@ -545,15 +541,16 @@ static void parseFunctionOrMethod (tokenInfo *const token) // MethodDecl = "func" Receiver MethodName Signature [ Body ] . // Receiver = "(" [ identifier ] [ "*" ] BaseTypeName ")" . // BaseTypeName = identifier . - tokenInfo *const name = newToken ();
// Skip over receiver. - readToken (name); - if (isType (name, TOKEN_OPEN_PAREN)) - skipToMatched (name); + readToken (token); + if (isType (token, TOKEN_OPEN_PAREN)) + skipToMatched (token);
- if (isType (name, TOKEN_IDENTIFIER)) + if (isType (token, TOKEN_IDENTIFIER)) { + makeTag (token, GOTAG_FUNCTION); + // Skip over parameters. readToken (token); skipToMatched (token); @@ -564,11 +561,7 @@ static void parseFunctionOrMethod (tokenInfo *const token) // Skip over function body. if (isType (token, TOKEN_OPEN_CURLY)) skipToMatched (token); - - makeTag (name, GOTAG_FUNCTION); } - - deleteToken (name); }
static void parseConstTypeVar (tokenInfo *const token, goKind kind) @@ -581,49 +574,46 @@ static void parseConstTypeVar (tokenInfo *const token, goKind kind) // TypeSpec = identifier Type . // VarDecl = "var" ( VarSpec | "(" { VarSpec ";" } ")" ) . // VarSpec = IdentifierList ( Type [ "=" ExpressionList ] | "=" ExpressionList ) . - tokenInfo *const name = newToken (); boolean usesParens = FALSE;
- readToken (name); + readToken (token);
- if (isType (name, TOKEN_OPEN_PAREN)) + if (isType (token, TOKEN_OPEN_PAREN)) { usesParens = TRUE; - readToken (name); + readToken (token); }
-again: - while (1) + do { - if (isType (name, TOKEN_IDENTIFIER)) + while (!isType (token, TOKEN_EOF)) { - makeTag (name, kind); + if (isType (token, TOKEN_IDENTIFIER)) + { + makeTag (token, kind); + readToken (token); + } + if (!isType (token, TOKEN_COMMA)) + break; readToken (token); } - if (!isType (token, TOKEN_COMMA)) - break; - readToken (name); - }
- skipType (token); - while (!isType (token, TOKEN_SEMICOLON) && !isType (token, TOKEN_CLOSE_PAREN) - && !isType (token, TOKEN_EOF)) - { - readToken (token); - skipToMatched (token); - } + skipType (token); + while (!isType (token, TOKEN_SEMICOLON) && !isType (token, TOKEN_CLOSE_PAREN) + && !isType (token, TOKEN_EOF)) + { + readToken (token); + skipToMatched (token); + }
- if (usesParens) - { - if (!isType (token, TOKEN_CLOSE_PAREN)) // we are at TOKEN_SEMICOLON + if (usesParens && !isType (token, TOKEN_CLOSE_PAREN)) { - readToken (name); - if (!isType (name, TOKEN_CLOSE_PAREN) && !isType (name, TOKEN_EOF)) - goto again; + // we are at TOKEN_SEMICOLON + readToken (token); } } - - deleteToken (name); + while (!isType (token, TOKEN_EOF) && + usesParens && !isType (token, TOKEN_CLOSE_PAREN)); }
static void parseGoFile (tokenInfo *const token)
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).