diff options
author | Rico Tzschichholz <ricotz@ubuntu.com> | 2020-04-13 15:29:56 +0200 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2020-04-13 15:29:56 +0200 |
commit | 241491d291e3545c431dfe6499dce8eb5bfa41c0 (patch) | |
tree | 93bc84b8824e4a6c74e1138132b8cdc76f665150 /ccode | |
parent | bcc40d5b971c3f5e3ebe928890b9aeba5ba32ba8 (diff) | |
download | vala-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.vala | 19 |
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 ("]"); } } |