Branch: refs/heads/master Author: Colomban Wendling ban@herbesfolles.org Committer: Colomban Wendling ban@herbesfolles.org Date: Sun, 14 Jun 2015 16:23:29 UTC Commit: b737f031cab65e345cb29504c2b39f1924900781 https://github.com/geany/geany/commit/b737f031cab65e345cb29504c2b39f19249007...
Log Message: ----------- c family: Fix trigraph handling
X-Universal-CTags-Commit-ID: d6d1a0f2b90a600bdec9cd6ba964ee69382743e4
Modified Paths: -------------- tagmanager/ctags/get.c tests/ctags/Makefile.am tests/ctags/c-trigraphs.c tests/ctags/c-trigraphs.c.tags
Modified: tagmanager/ctags/get.c 4 lines changed, 1 insertions(+), 3 deletions(-) =================================================================== @@ -648,8 +648,6 @@ extern int cppGetc (void)
if (next == NEWLINE) continue; - else if (next == '?') - cppUngetc (next); else fileUngetc (next); break; @@ -675,8 +673,8 @@ extern int cppGetc (void) case '-': c = '~'; break; case '=': c = '#'; goto process; default: + fileUngetc ('?'); fileUngetc (next); - cppUngetc ('?'); break; } }
Modified: tests/ctags/Makefile.am 1 lines changed, 1 insertions(+), 0 deletions(-) =================================================================== @@ -108,6 +108,7 @@ test_sources = \ bug960316.v \ bug961001.v \ byte.f \ + c-trigraphs.c \ case_sensitivity.php \ char-selector.f90 \ classes.php \
Modified: tests/ctags/c-trigraphs.c 56 lines changed, 56 insertions(+), 0 deletions(-) =================================================================== @@ -0,0 +1,56 @@ + +/* simple trigraphs */ +??=define A 1 +??=define B 2 +??=define STRINGIFY_INTERN(x) ??=x +??=define STRINGIFY(x) STRINGIFY_INTERN(x) + +/* doesn't expand to anything that makes sense, but as "???" is not a valid + * trigraph it should not prevent "??/" to match */ +??=define D 4 ???/ +#define bug1 +??=define E ?????/ +#define bug2 + +/* \ isn't interpreted for trigraphs */ +??=define F ?????/ +extern int bug3 = ??-0; + +??=define M3_INIT(a, b, c) ??< a, b, c ??> +typedef int matrix3??(3??); + +struct str ??< + char *buf; + unsigned int len, size; +??>; + +int main(void) +??< + const char *hello = STRINGIFY(hello); + matrix3 m = M3_INIT(1, 2, 3); + + return m??(2??); +??> + +/* FIXME: how to test "??'" ("^"), "??!" ("|") and "??-" ("~")? + * I can't think of a construct CTags cares about using those */ + +??=if 0 +#define bug4 +??=endif + + +/* test the same with untaken preprocessor paths (as they are then not read by + * the C parser but get.c) */ +#if 0 + +??=define if0d_A 1 +??=define if0d_B 2 +??=define if0d_C 4 ???/ +#define bug5 +??=define I ?????/ +#define bug6 +??=define I ??????????/ +#define bug7 + +#endif
Modified: tests/ctags/c-trigraphs.c.tags 15 lines changed, 15 insertions(+), 0 deletions(-) =================================================================== @@ -0,0 +1,15 @@ +# format=tagmanager +A�65536�0 +B�65536�0 +D�65536�0 +E�65536�0 +F�65536�0 +M3_INIT�131072�(a, b, c)�0 +STRINGIFY�131072�(x)�0 +STRINGIFY_INTERN�131072�(x)�0 +buf�64�str�0�char +len�64�str�0�int +main�16�(void)�0�int +matrix3�4096�0�int +size�64�str�0�int +str�2048�0
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).