On 4/12/2015 1:59, Hideki IWAMOTO wrote:
> Global couldn't handle in the case that there are newlines between "enum" and 
> " {". 
> This bug was fixed in the repository.

This still misses this construct:

        enum
        tag
        { ... };

My solution skipped newlines straight after the attributes.

-- 
Jason.
diff -urp global-6.5.1/libparser/C.c global-6.5-1/libparser/C.c
--- global-6.5.1/libparser/C.c  2015-09-15 12:48:18 +1000
+++ global-6.5-1/libparser/C.c  2015-12-04 15:34:57 +1000
@@ -299,6 +299,8 @@ C_family(const struct parser_param *para
                case C_UNION:
                        while ((c = nexttoken(interested, c_reserved_word)) == 
C___ATTRIBUTE__)
                                process_attribute(param);
+                       while (c == '\n')
+                               c = nexttoken(interested, c_reserved_word);
                        if (c == SYMBOL) {
                                if (peekc(0) == '{') /* } */ {
                                        PUT(PARSER_DEF, token, lineno, sp);
@@ -358,6 +360,8 @@ C_family(const struct parser_param *para
 
                                        while ((c = nexttoken(interest_enum, 
c_reserved_word)) == C___ATTRIBUTE__)
                                                process_attribute(param);
+                                       while (c == '\n')
+                                               c = nexttoken(interest_enum, 
c_reserved_word);
                                        /* read tag name if exist */
                                        if (c == SYMBOL) {
                                                if (peekc(0) == '{') /* } */ {
diff -urp global-6.5.1/libparser/Cpp.c global-6.5-1/libparser/Cpp.c
--- global-6.5.1/libparser/Cpp.c        2015-09-15 12:48:18 +1000
+++ global-6.5-1/libparser/Cpp.c        2015-12-04 15:36:42 +1000
@@ -367,6 +367,8 @@ Cpp(const struct parser_param *param)
                case CPP_UNION:
                        while ((c = nexttoken(interested, cpp_reserved_word)) 
== CPP___ATTRIBUTE__)
                                process_attribute(param);
+                       while (c == '\n')
+                               c = nexttoken(interested, cpp_reserved_word);
                        if (c == SYMBOL) {
                                if (peekc(0) == '{') /* } */ {
                                        PUT(PARSER_DEF, token, lineno, sp);
@@ -464,6 +466,8 @@ Cpp(const struct parser_param *param)
 
                                        while ((c = nexttoken(interest_enum, 
cpp_reserved_word)) == CPP___ATTRIBUTE__)
                                                process_attribute(param);
+                                       while (c == '\n')
+                                               c = nexttoken(interest_enum, 
cpp_reserved_word);
                                        /* read tag name if exist */
                                        if (c == SYMBOL) {
                                                if (peekc(0) == '{') /* } */ {
_______________________________________________
Bug-global mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-global

Reply via email to