diff --git a/tests/spec/arb_arrays_of_arrays/compiler/length-array-array-var.vert b/tests/spec/arb_arrays_of_arrays/compiler/length-array-array-var.vert
new file mode 100644
index 0000000..88ed1e8
--- /dev/null
+++ b/tests/spec/arb_arrays_of_arrays/compiler/length-array-array-var.vert
@@ -0,0 +1,13 @@
+/* [config]
+ * expect_result: pass
+ * glsl_version: 1.20
+ * require_extensions: GL_ARB_arrays_of_arrays
+ * [end config]
+ */
+#version 120
+#extension GL_ARB_arrays_of_arrays: enable
+
+uniform vec4[3][2] an_array;
+
+int foo[an_array.length() == 3 ? 1 : -1];
+int foo2[an_array[1].length() == 2 ? 1 : -1];
diff --git a/tests/spec/arb_arrays_of_arrays/compiler/length-array-var-array.vert b/tests/spec/arb_arrays_of_arrays/compiler/length-array-var-array.vert
new file mode 100644
index 0000000..154f59c
--- /dev/null
+++ b/tests/spec/arb_arrays_of_arrays/compiler/length-array-var-array.vert
@@ -0,0 +1,13 @@
+/* [config]
+ * expect_result: pass
+ * glsl_version: 1.20
+ * require_extensions: GL_ARB_arrays_of_arrays
+ * [end config]
+ */
+#version 120
+#extension GL_ARB_arrays_of_arrays: enable
+
+uniform vec4[2] an_array[3];
+
+int foo[an_array.length() == 3 ? 1 : -1];
+int foo2[an_array[1].length() == 2 ? 1 : -1];
diff --git a/tests/spec/arb_arrays_of_arrays/compiler/length-var-array-array.vert b/tests/spec/arb_arrays_of_arrays/compiler/length-var-array-array.vert
new file mode 100644
index 0000000..129fa08
--- /dev/null
+++ b/tests/spec/arb_arrays_of_arrays/compiler/length-var-array-array.vert
@@ -0,0 +1,13 @@
+/* [config]
+ * expect_result: pass
+ * glsl_version: 1.20
+ * require_extensions: GL_ARB_arrays_of_arrays
+ * [end config]
+ */
+#version 120
+#extension GL_ARB_arrays_of_arrays: enable
+
+uniform vec4 an_array[3][2];
+
+int foo[an_array.length() == 3 ? 1 : -1];
+int foo2[an_array[1].length() == 2 ? 1 : -1];
diff --git a/tests/spec/arb_arrays_of_arrays/compiler/maxbounds-access-array-array-var.vert b/tests/spec/arb_arrays_of_arrays/compiler/maxbounds-access-array-array-var.vert
new file mode 100644
index 0000000..c205174
--- /dev/null
+++ b/tests/spec/arb_arrays_of_arrays/compiler/maxbounds-access-array-array-var.vert
@@ -0,0 +1,15 @@
+/* [config]
+ * expect_result: pass
+ * glsl_version: 1.20
+ * require_extensions: GL_ARB_arrays_of_arrays
+ * [end config]
+ */
+#version 120
+#extension GL_ARB_arrays_of_arrays: enable
+
+uniform vec4[2][4] an_array;
+
+void main()
+{
+  gl_Position = an_array[1][3];
+}
diff --git a/tests/spec/arb_arrays_of_arrays/compiler/maxbounds-access-array-var-array.vert b/tests/spec/arb_arrays_of_arrays/compiler/maxbounds-access-array-var-array.vert
new file mode 100644
index 0000000..cd6a32b
--- /dev/null
+++ b/tests/spec/arb_arrays_of_arrays/compiler/maxbounds-access-array-var-array.vert
@@ -0,0 +1,15 @@
+/* [config]
+ * expect_result: pass
+ * glsl_version: 1.20
+ * require_extensions: GL_ARB_arrays_of_arrays
+ * [end config]
+ */
+#version 120
+#extension GL_ARB_arrays_of_arrays: enable
+
+uniform vec4[4] an_array[2];
+
+void main()
+{
+  gl_Position = an_array[1][3];
+}
diff --git a/tests/spec/arb_arrays_of_arrays/compiler/maxbounds-access-var-array-array.vert b/tests/spec/arb_arrays_of_arrays/compiler/maxbounds-access-var-array-array.vert
new file mode 100644
index 0000000..4772fd8
--- /dev/null
+++ b/tests/spec/arb_arrays_of_arrays/compiler/maxbounds-access-var-array-array.vert
@@ -0,0 +1,15 @@
+/* [config]
+ * expect_result: pass
+ * glsl_version: 1.20
+ * require_extensions: GL_ARB_arrays_of_arrays
+ * [end config]
+ */
+#version 120
+#extension GL_ARB_arrays_of_arrays: enable
+
+uniform vec4 an_array[2][4];
+
+void main()
+{
+  gl_Position = an_array[1][3];
+}
diff --git a/tests/spec/arb_arrays_of_arrays/compiler/outofbounds-access-array-array-var.vert b/tests/spec/arb_arrays_of_arrays/compiler/outofbounds-access-array-array-var.vert
new file mode 100644
index 0000000..8192de7
--- /dev/null
+++ b/tests/spec/arb_arrays_of_arrays/compiler/outofbounds-access-array-array-var.vert
@@ -0,0 +1,15 @@
+/* [config]
+ * expect_result: fail
+ * glsl_version: 1.20
+ * require_extensions: GL_ARB_arrays_of_arrays
+ * [end config]
+ */
+#version 120
+#extension GL_ARB_arrays_of_arrays: enable
+
+uniform vec4[2][4] an_array;
+
+void main()
+{
+  gl_Position = an_array[1][4];
+}
diff --git a/tests/spec/arb_arrays_of_arrays/compiler/outofbounds-access-array-var-array.vert b/tests/spec/arb_arrays_of_arrays/compiler/outofbounds-access-array-var-array.vert
new file mode 100644
index 0000000..eb873c1
--- /dev/null
+++ b/tests/spec/arb_arrays_of_arrays/compiler/outofbounds-access-array-var-array.vert
@@ -0,0 +1,15 @@
+/* [config]
+ * expect_result: fail
+ * glsl_version: 1.20
+ * require_extensions: GL_ARB_arrays_of_arrays
+ * [end config]
+ */
+#version 120
+#extension GL_ARB_arrays_of_arrays: enable
+
+uniform vec4[4] an_array[2];
+
+void main()
+{
+  gl_Position = an_array[1][4];
+}
diff --git a/tests/spec/arb_arrays_of_arrays/compiler/outofbounds-access-var-array-array.vert b/tests/spec/arb_arrays_of_arrays/compiler/outofbounds-access-var-array-array.vert
new file mode 100644
index 0000000..96b4d4d
--- /dev/null
+++ b/tests/spec/arb_arrays_of_arrays/compiler/outofbounds-access-var-array-array.vert
@@ -0,0 +1,15 @@
+/* [config]
+ * expect_result: fail
+ * glsl_version: 1.20
+ * require_extensions: GL_ARB_arrays_of_arrays
+ * [end config]
+ */
+#version 120
+#extension GL_ARB_arrays_of_arrays: enable
+
+uniform vec4 an_array[2][4];
+
+void main()
+{
+  gl_Position = an_array[1][4];
+}
