mescc: Handle (Skip) global static.
authorJan Nieuwenhuizen <janneke@gnu.org>
Fri, 4 May 2018 18:40:04 +0000 (20:40 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Fri, 4 May 2018 18:40:04 +0000 (20:40 +0200)
* module/language/c99/compiler.mes (decl->info): Handle (Skip) global
  static.
* scaffold/tests/48-global-static.c: Test it.

module/language/c99/compiler.mes
scaffold/tests/48-global-static.c [new file with mode: 0644]

index 23a8b95ffbf5095a0345744e2456ac24f8cdf3e0..90e93a269f369f6f4ced1dc96e178450c2f43866 100644 (file)
                      ((decl->info info)
                       `(decl (decl-spec-list (type-spec ,type)) (init-declr-list ,(car inits))))))))
 
+        ((decl (decl-spec-list (stor-spec (static)) (type-spec ,type)) ,init)
+         ((decl->info info) `(decl (decl-spec-list (type-spec ,type)) ,init)))
+
         ((decl (decl-spec-list (stor-spec (typedef)) ,type) ,name)
          (format (current-error-port) "SKIP: typedef=~s\n" o)
          info)
diff --git a/scaffold/tests/48-global-static.c b/scaffold/tests/48-global-static.c
new file mode 100644 (file)
index 0000000..e669b33
--- /dev/null
@@ -0,0 +1,35 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * Mes --- Maxwell Equations of Software
+ * Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+ *
+ * This file is part of Mes.
+ *
+ * Mes 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 3 of the License, or (at
+ * your option) any later version.
+ *
+ * Mes 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 Mes.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+static int sint;
+static int sint2, sint3;
+
+static int
+test ()
+{
+  return 0;
+}
+
+static int i = 2;
+int
+main ()
+{
+  return test ();
+}