summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2023-03-20 15:18:00 +0100
committerRico Tzschichholz <ricotz@ubuntu.com>2023-03-20 16:25:10 +0100
commit9c35019ef300082243ef7c71c22088c52d3db38e (patch)
tree2d288fa16f9b0141ce64aab5402e5d0ba0517f78 /tests
parent6a0cb1546b1e86859a3fce00c27abfc62ba50d8e (diff)
downloadvala-9c35019ef300082243ef7c71c22088c52d3db38e.tar.gz
vala: Allow assignment of namespace fields with inline allocated arrays
Fixes https://gitlab.gnome.org/GNOME/vala/issues/945
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.am1
-rw-r--r--tests/arrays/inline-namespace-field.c-expected50
-rw-r--r--tests/arrays/inline-namespace-field.vala9
3 files changed, 60 insertions, 0 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 7b4317a18..9b005ce76 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -145,6 +145,7 @@ TESTS = \
arrays/inline-field.test \
arrays/inline-local-instantiation.test \
arrays/inline-local-variable.test \
+ arrays/inline-namespace-field.vala \
arrays/inline-ownership-transfer.test \
arrays/inline-parameter.test \
arrays/inline-struct.vala \
diff --git a/tests/arrays/inline-namespace-field.c-expected b/tests/arrays/inline-namespace-field.c-expected
new file mode 100644
index 000000000..032800934
--- /dev/null
+++ b/tests/arrays/inline-namespace-field.c-expected
@@ -0,0 +1,50 @@
+/* arrays_inline_namespace_field.c generated by valac, the Vala compiler
+ * generated from arrays_inline_namespace_field.vala, do not modify */
+
+#include <stdlib.h>
+#include <string.h>
+#include <glib.h>
+
+#if !defined(VALA_EXTERN)
+#if defined(_WIN32) || defined(__CYGWIN__)
+#define VALA_EXTERN __declspec(dllexport) extern
+#elif __GNUC__ >= 4
+#define VALA_EXTERN __attribute__((visibility("default"))) extern
+#else
+#define VALA_EXTERN extern
+#endif
+#endif
+
+#define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);
+#define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; }
+#define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; }
+#define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);
+
+VALA_EXTERN const gchar* foo[2];
+const gchar* foo[2] = {"foo", "bar"};
+VALA_EXTERN gint bar[3];
+gint bar[3] = {23, 42, 4711};
+
+static void _vala_main (void);
+
+static void
+_vala_main (void)
+{
+ const gchar* _tmp0_;
+ gint _tmp1_;
+ _tmp0_ = foo[0];
+ _vala_assert (g_strcmp0 (_tmp0_, "foo") == 0, "foo[0] == \"foo\"");
+ _vala_assert (2 == 2, "foo.length == 2");
+ _tmp1_ = bar[1];
+ _vala_assert (_tmp1_ == 42, "bar[1] == 42");
+ _vala_assert (3 == 3, "bar.length == 3");
+}
+
+int
+main (int argc,
+ char ** argv)
+{
+ _vala_main ();
+ return 0;
+}
+
diff --git a/tests/arrays/inline-namespace-field.vala b/tests/arrays/inline-namespace-field.vala
new file mode 100644
index 000000000..0eb4b6d2b
--- /dev/null
+++ b/tests/arrays/inline-namespace-field.vala
@@ -0,0 +1,9 @@
+unowned string foo[2] = { "foo", "bar" };
+int bar[3] = { 23, 42, 4711 };
+
+void main () {
+ assert (foo[0] == "foo");
+ assert (foo.length == 2);
+ assert (bar[1] == 42);
+ assert (bar.length == 3);
+}