From 4f047823ab262e5bc4226ee491cfb8eb65d7fc93 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=BCrg=20Billeter?= Date: Wed, 28 Feb 2007 19:39:00 +0000 Subject: [PATCH] test Array.resize method and Array.length field update length when MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 2007-02-28 Jürg Billeter * tests/test-022.vala, tests/test-022.out: test Array.resize method and Array.length field * vala/valacodegenerator.vala: update length when resizing arrays svn path=/trunk/; revision=204 --- vala/ChangeLog | 6 ++++++ vala/tests/test-022.out | 2 +- vala/tests/test-022.vala | 7 ++++++- vala/vala/valacodegenerator.vala | 9 +++++++++ 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/vala/ChangeLog b/vala/ChangeLog index bbca43a..0e5bafe 100644 --- a/vala/ChangeLog +++ b/vala/ChangeLog @@ -1,3 +1,9 @@ +2007-02-28 Jürg Billeter + + * tests/test-022.vala, tests/test-022.out: test Array.resize method and + Array.length field + * vala/valacodegenerator.vala: update length when resizing arrays + 2007-02-27 Jürg Billeter * vala/valacodenode.vala: mark source_reference as construction property diff --git a/vala/tests/test-022.out b/vala/tests/test-022.out index f87544f..48a7780 100644 --- a/vala/tests/test-022.out +++ b/vala/tests/test-022.out @@ -1 +1 @@ -One dimensional array creation and assignment: 1 2 3 4 5 6 7 8 9 +One dimensional array creation and assignment: 1 2 3 4 5 6 7 8 9 10 11 diff --git a/vala/tests/test-022.vala b/vala/tests/test-022.vala index 011f803..949a63c 100644 --- a/vala/tests/test-022.vala +++ b/vala/tests/test-022.vala @@ -28,8 +28,13 @@ class Maman.Foo { if (a[3] == 4) { stdout.printf (" 8"); } + if (a.length == 4) { + stdout.printf (" 9"); + } + a.resize (10); + stdout.printf (" %d", a.length); - stdout.printf (" 9\n"); + stdout.printf (" 11\n"); return 0; } diff --git a/vala/vala/valacodegenerator.vala b/vala/vala/valacodegenerator.vala index 46c1bb4..6188b4d 100644 --- a/vala/vala/valacodegenerator.vala +++ b/vala/vala/valacodegenerator.vala @@ -3008,6 +3008,15 @@ public class Vala.CodeGenerator : CodeVisitor { visit_expression (expr); } + + if (m is ArrayResizeMethod) { + var ccomma = new CCodeCommaExpression (); + ccomma.append_expression ((CCodeExpression) expr.ccodenode); + // FIXME: size expression must not be evaluated twice at runtime (potential side effects) + var new_size = (CCodeExpression) ((CodeNode) expr.get_argument_list ().data).ccodenode; + ccomma.append_expression (new CCodeAssignment (get_array_length_cexpression (ma.inner, 1), new_size)); + expr.ccodenode = ccomma; + } } public override void visit_element_access (ElementAccess! expr) -- 2.7.4