summaryrefslogtreecommitdiff
path: root/ccode
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2020-04-13 15:29:56 +0200
committerRico Tzschichholz <ricotz@ubuntu.com>2020-04-13 15:29:56 +0200
commit241491d291e3545c431dfe6499dce8eb5bfa41c0 (patch)
tree93bc84b8824e4a6c74e1138132b8cdc76f665150 /ccode
parentbcc40d5b971c3f5e3ebe928890b9aeba5ba32ba8 (diff)
downloadvala-241491d291e3545c431dfe6499dce8eb5bfa41c0.tar.gz
codegen: Use specified indices to access multidimensional array constants
This fixes compile issues together with -Waggressive-loop-optimizations and warnings with -Warray-bounds. Fixes https://gitlab.gnome.org/GNOME/vala/issues/905
Diffstat (limited to 'ccode')
-rw-r--r--ccode/valaccodeelementaccess.vala19
1 files changed, 16 insertions, 3 deletions
diff --git a/ccode/valaccodeelementaccess.vala b/ccode/valaccodeelementaccess.vala
index 3586aec1f..a99af44b5 100644
--- a/ccode/valaccodeelementaccess.vala
+++ b/ccode/valaccodeelementaccess.vala
@@ -37,17 +37,30 @@ public class Vala.CCodeElementAccess : CCodeExpression {
* Expression representing the index we want to access inside the
* container.
*/
- public CCodeExpression index { get; set; }
+ public List<CCodeExpression> indices { get; set; }
public CCodeElementAccess (CCodeExpression cont, CCodeExpression i) {
container = cont;
- index = i;
+ indices = new ArrayList<CCodeExpression> ();
+ indices.add (i);
+ }
+
+ public CCodeElementAccess.with_indices (CCodeExpression cont, List<CCodeExpression> i) {
+ container = cont;
+ indices = i;
}
public override void write (CCodeWriter writer) {
container.write_inner (writer);
writer.write_string ("[");
- index.write (writer);
+ bool first = true;
+ foreach (var index in indices) {
+ if (!first) {
+ writer.write_string ("][");
+ }
+ index.write (writer);
+ first = false;
+ }
writer.write_string ("]");
}
}