diff options
author | Jürg Billeter <j@bitron.ch> | 2012-08-06 22:18:49 +0200 |
---|---|---|
committer | Jürg Billeter <j@bitron.ch> | 2012-08-06 22:18:49 +0200 |
commit | 625418f829153cbd4748ee17ba49982fb4cd8476 (patch) | |
tree | d987f3fa48e5bed08832543121282935dc7e192e | |
parent | 5a035ebce38cc31208bd9686e6bcf3f793ce26c7 (diff) | |
download | vala-625418f829153cbd4748ee17ba49982fb4cd8476.tar.gz |
codewriter: Support fixed-length arrays
Fixes bug 618689.
-rw-r--r-- | vala/valaarraytype.vala | 8 | ||||
-rw-r--r-- | vala/valacodewriter.vala | 13 |
2 files changed, 18 insertions, 3 deletions
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; |