emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] scratch/merge-cedet-tests 8d32d3a 160/316: Fix parsing of


From: Edward John Steere
Subject: [Emacs-diffs] scratch/merge-cedet-tests 8d32d3a 160/316: Fix parsing of default values and display them in default formatter
Date: Fri, 27 Jan 2017 20:03:36 +0000 (UTC)

branch: scratch/merge-cedet-tests
commit 8d32d3ae786770d1ff00c5b2c05ed355514a9ee7
Author: David Engster <address@hidden>
Commit: Edward John Steere <address@hidden>

    Fix parsing of default values and display them in default formatter
    
    * semantic/bovine/c.by (variablearg, varnamelist): Add default values
      so that it can be later expanded into the tag.
      (opt-stuff-after-symbol): Rename to 'brackets-after-symbol' and
      remove empty match.
      (multi-stage-dereference): Adapt to above rename.
      (unaryexpression): Use 'symbol' instead of 'namespace-symbol', since
      the latter also leads to an empty match at the end which would make
      this too greedy.
    
    * semantic/format.el (semantic-format-tag-prototype-default):
      Display default values if available.
    
    * semantic/test/manual/cedet/test-fmt.cpp: Add default values.
    
    Parsing of default values for variables and function arguments was
    broken with the refactoring done in rev. 7622.  While fixing this, it
    turned out that our parser for expressions like
    
      char *foo = NULL;
    
    was too greedy and also covered the semicolon because of empty matches
    in rules 'opt-stuff-after-symbol' and 'opt-template-specifier',
    leading to a variable with a default-value of "NULL;". This was fixed
    by removing the empty match in 'opt-stuff-after-symbol' and using
    'symbol' instead of 'namespace-symbol'.
---
 .../manual/cedet/cedet/semantic/tests/test-fmt.cpp |  107 ++++++++++++++++++++
 1 file changed, 107 insertions(+)

diff --git a/test/manual/cedet/cedet/semantic/tests/test-fmt.cpp 
b/test/manual/cedet/cedet/semantic/tests/test-fmt.cpp
new file mode 100644
index 0000000..c907736
--- /dev/null
+++ b/test/manual/cedet/cedet/semantic/tests/test-fmt.cpp
@@ -0,0 +1,107 @@
+/** test-fmt.cpp --- Signatures, and format answers for testing
+ *
+ * Copyright (C) 2012, 2016 Eric M. Ludlam
+ *
+ * Author: Eric M. Ludlam <address@hidden>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+/*
+ * About semantic-fmt-utest :
+ *
+ * These tests validate two features:
+ * 1) The C++ parser can parse the different signatures
+ * 2) The semantic-tag-format-* functions can recreate them.
+ *
+ */
+
+void basic_fcn() { }
+/*
+ * ## name "basic_fcn"
+ * ## abbreviate "basic_fcn()"
+ * ## prototype "void basic_fcn ()"
+ * ## uml-prototype "basic_fcn () : void"
+ */
+
+int twoargs_fcn(int a, char b) { }
+/*
+ * ## name "twoargs_fcn"
+ * ## abbreviate "twoargs_fcn()"
+ * ## prototype "int twoargs_fcn (int a,char b)"
+ * ## uml-prototype "twoargs_fcn (a : int,b : char) : int"
+ */
+
+struct moose {
+  int field1;
+  char field2;
+};
+/*
+ * ## name "moose"
+ * ## abbreviate "moose{}"
+ * ## prototype "struct moose {}"
+ * ## uml-prototype "moose{} : struct"
+ */
+
+struct moose strct_fcn ( struct moose in, char *out);
+/*
+ * ## name "strct_fcn"
+ * ## abbreviate "strct_fcn()"
+ * ## prototype "struct moose strct_fcn (struct moose in,char* out)"
+ * ## uml-prototype "strct_fcn (in : struct moose,out : char*) : struct moose"
+ */
+
+struct moose *var_one = NULL;
+/*
+ * ## name "var_one"
+ * ## summarize "Variables: struct moose* var_one[=NULL]"
+ * ## prototype "struct moose* var_one[=NULL]"
+ * ## uml-prototype "var_one : struct moose*"
+ */
+
+const int var_two = 1;
+/*
+ * ## name "var_two"
+ * ## summarize "Variables: const int var_two[=1]"
+ * ## prototype "const int var_two[=1]"
+ * ## uml-prototype "var_two : int"
+ */
+
+namespace NS {
+  enum TestEnum {a,b};
+}
+/*
+ * ## name "NS"
+ * ## summarize "Types: namespace NS {}"
+ * ## prototype "namespace NS {}"
+ * ## uml-prototype "NS{} : namespace"
+ */
+
+void func_ns_arg(NS::TestEnum v = NS::a);
+/*
+ * ## name "func_ns_arg"
+ * ## summarize "Functions: void func_ns_arg (NS::TestEnum v[=NS::a])"
+ * ## prototype "void func_ns_arg (NS::TestEnum v[=NS::a])"
+ * ## uml-prototype "func_ns_arg (v : NS::TestEnum) : void"
+ */
+
+//int const var_three = 1;
+/*
+ * # # name "var_three"
+ * # # summarize "Variables: int const var_three"  <-- this fails
+ * # # prototype "int const var_three"        <-- this fails
+ * # # uml-prototype "var_three : int"
+ */



reply via email to

[Prev in Thread] Current Thread [Next in Thread]