From: Jürg Billeter Date: Mon, 6 Aug 2012 20:18:49 +0000 (+0200) Subject: codewriter: Support fixed-length arrays X-Git-Tag: 0.17.5~29 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=625418f829153cbd4748ee17ba49982fb4cd8476;p=thirdparty%2Fvala.git codewriter: Support fixed-length arrays Fixes bug 618689. --- diff --git a/vala/valaarraytype.vala b/vala/valaarraytype.vala index 665487083..f1bcba108 100644 --- a/vala/valaarraytype.vala +++ b/vala/valaarraytype.vala @@ -1,6 +1,6 @@ /* valaarraytype.vala * - * Copyright (C) 2007-2011 Jürg Billeter + * Copyright (C) 2007-2012 Jürg Billeter * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -153,7 +153,11 @@ public class Vala.ArrayType : ReferenceType { } public override string to_qualified_string (Scope? scope) { - return "%s[%s]%s".printf (element_type.to_qualified_string (scope), string.nfill (rank - 1, ','), nullable ? "?" : ""); + if (!fixed_length) { + return "%s[%s]%s".printf (element_type.to_qualified_string (scope), string.nfill (rank - 1, ','), nullable ? "?" : ""); + } else { + return element_type.to_qualified_string (scope); + } } public override bool compatible (DataType target_type) { diff --git a/vala/valacodewriter.vala b/vala/valacodewriter.vala index 7a7961495..30c36f4a0 100644 --- a/vala/valacodewriter.vala +++ b/vala/valacodewriter.vala @@ -1,6 +1,6 @@ /* valacodewriter.vala * - * Copyright (C) 2006-2010 Jürg Billeter + * Copyright (C) 2006-2012 Jürg Billeter * Copyright (C) 2006-2008 Raffaele Sandrini * * This library is free software; you can redistribute it and/or @@ -509,6 +509,7 @@ public class Vala.CodeWriter : CodeVisitor { write_string (" "); write_identifier (c.name); + write_type_suffix (c.type_reference); if (type == CodeWriterType.FAST && c.value != null) { write_string(" = "); c.value.accept (this); @@ -545,6 +546,7 @@ public class Vala.CodeWriter : CodeVisitor { write_string (" "); write_identifier (f.name); + write_type_suffix (f.variable_type); write_string (";"); write_newline (); } @@ -605,6 +607,7 @@ public class Vala.CodeWriter : CodeVisitor { write_string (" "); write_identifier (param.name); + write_type_suffix (param.variable_type); if (param.initializer != null) { write_string (" = "); @@ -847,6 +850,7 @@ public class Vala.CodeWriter : CodeVisitor { write_type (local.variable_type); write_string (" "); write_identifier (local.name); + write_type_suffix (local.variable_type); if (local.initializer != null) { write_string (" = "); local.initializer.accept (this); @@ -1446,6 +1450,13 @@ public class Vala.CodeWriter : CodeVisitor { write_string (type.to_qualified_string (current_scope)); } + private void write_type_suffix (DataType type) { + var array_type = type as ArrayType; + if (array_type != null && array_type.fixed_length) { + write_string ("[%d]".printf (array_type.length)); + } + } + private void write_string (string s) { stream.printf ("%s", s); bol = false;