diff options
Diffstat (limited to 'vala/valamemberaccess.vala')
-rw-r--r-- | vala/valamemberaccess.vala | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/vala/valamemberaccess.vala b/vala/valamemberaccess.vala index 6806c55a6..ef4bc22d2 100644 --- a/vala/valamemberaccess.vala +++ b/vala/valamemberaccess.vala @@ -519,14 +519,20 @@ public class Vala.MemberAccess : Expression { } } - if (symbol_reference is ArrayResizeMethod && inner.symbol_reference is Variable) { - // require the real type with its original value_owned attritubte - var inner_type = context.analyzer.get_value_type_for_symbol (inner.symbol_reference, true) as ArrayType; - if (inner_type != null && inner_type.inline_allocated) { - Report.error (source_reference, "`resize' is not supported for arrays with fixed length"); - error = true; - } else if (inner_type != null && !inner_type.value_owned) { - Report.error (source_reference, "`resize' is not allowed for unowned array references"); + if (symbol_reference is ArrayResizeMethod) { + if (inner.symbol_reference is Variable) { + // require the real type with its original value_owned attritubte + var inner_type = context.analyzer.get_value_type_for_symbol (inner.symbol_reference, true) as ArrayType; + if (inner_type != null && inner_type.inline_allocated) { + Report.error (source_reference, "`resize' is not supported for arrays with fixed length"); + error = true; + } else if (inner_type != null && !inner_type.value_owned) { + Report.error (source_reference, "`resize' is not allowed for unowned array references"); + error = true; + } + } else if (inner.symbol_reference is Constant) { + // disallow resize() for const array + Report.error (source_reference, "`resize' is not allowed for constant arrays"); error = true; } } |