[geany/geany] b39f90: C++11, C#: Fix parsing of enums with a base type inside classes

Colomban Wendling git-noreply at xxxxx
Sun Jul 14 18:34:44 UTC 2013


Branch:      refs/heads/master
Author:      Colomban Wendling <ban at herbesfolles.org>
Committer:   Colomban Wendling <ban at herbesfolles.org>
Date:        Sun, 14 Jul 2013 18:34:44 UTC
Commit:      b39f90c94d54dd80e1f025e90c03fbf6455fadb9
             https://github.com/geany/geany/commit/b39f90c94d54dd80e1f025e90c03fbf6455fadb9

Log Message:
-----------
C++11, C#: Fix parsing of enums with a base type inside classes


Modified Paths:
--------------
    tagmanager/ctags/c.c
    tests/ctags/Makefile.am
    tests/ctags/cxx11enum.cpp
    tests/ctags/cxx11enum.cpp.tags
    tests/ctags/keyword_enum.cs.tags

Modified: tagmanager/ctags/c.c
16 files changed, 8 insertions(+), 8 deletions(-)
===================================================================
@@ -2629,14 +2629,6 @@ static void processColon (statementInfo *const st)
 		{
 			readParents (st, ':');
 		}
-		else if (parentDecl (st) == DECL_STRUCT || parentDecl (st) == DECL_CLASS)
-		{
-			c = skipToOneOf (",;");
-			if (c == ',')
-				setToken (st, TOKEN_COMMA);
-			else if (c == ';')
-				setToken (st, TOKEN_SEMICOLON);
-		}
 		else if ((isLanguage (Lang_cpp) || isLanguage (Lang_csharp)) &&
 				 st->declaration == DECL_ENUM)
 		{
@@ -2647,6 +2639,14 @@ static void processColon (statementInfo *const st)
 			else if (c == ';')
 				setToken (st, TOKEN_SEMICOLON);
 		}
+		else if (parentDecl (st) == DECL_STRUCT || parentDecl (st) == DECL_CLASS)
+		{
+			c = skipToOneOf (",;");
+			if (c == ',')
+				setToken (st, TOKEN_COMMA);
+			else if (c == ';')
+				setToken (st, TOKEN_SEMICOLON);
+		}
 		else
 		{
 			const tokenInfo *const prev  = prevToken (st, 1);


Modified: tests/ctags/Makefile.am
1 files changed, 1 insertions(+), 0 deletions(-)
===================================================================
@@ -113,6 +113,7 @@ test_sources = \
 	countall.sql					\
 	cpp_destructor.cpp				\
 	cython_sample.pyx				\
+	cxx11enum.cpp					\
 	db-trig.sql						\
 	debian_432872.f90				\
 	directives.c					\


Modified: tests/ctags/cxx11enum.cpp
9 files changed, 9 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,9 @@
+
+enum A:int {A_a, A_b, A_c};
+enum B:long {B_a, B_b, B_c};
+enum C:unsigned int {C_a, C_b, C_c};
+
+class Foo {
+  enum D:int {a, b, c};
+  virtual void foo(enum D a);
+};


Modified: tests/ctags/cxx11enum.cpp.tags
19 files changed, 19 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,19 @@
+# format=tagmanager
+A�2�0
+A_a�4�A�0
+A_b�4�A�0
+A_c�4�A�0
+B�2�0
+B_a�4�B�0
+B_b�4�B�0
+B_c�4�B�0
+C�2�0
+C_a�4�C�0
+C_b�4�C�0
+C_c�4�C�0
+D�2�Foo�0
+Foo�1�0
+a�4�Foo::D�0
+b�4�Foo::D�0
+c�4�Foo::D�0
+foo�1024�(enum D a)�Foo�0�virtual void


Modified: tests/ctags/keyword_enum.cs.tags
4 files changed, 3 insertions(+), 1 deletions(-)
===================================================================
@@ -3,8 +3,10 @@ Days
 EnumTest�1�0
 Fri�4�EnumTest.Days�0
 Main�128�()�EnumTest�0�public void
+Max�4�EnumTest.Range�0
+Min�4�EnumTest.Range�0
 Mon�4�EnumTest.Days�0
-Range�2048�0
+Range�2�EnumTest�0
 Sat�4�EnumTest.Days�0
 Sun�4�EnumTest.Days�0
 Thu�4�EnumTest.Days�0



--------------
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