From: Jamie McCracken Date: Mon, 24 May 2010 18:21:18 +0000 (-0400) Subject: Genie: Support array and string slices X-Git-Tag: 0.9.1~52 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c10644829f9509c84e12f62f5da0894c55d54576;p=thirdparty%2Fvala.git Genie: Support array and string slices --- diff --git a/vala/valagenieparser.vala b/vala/valagenieparser.vala index 3a25d6b38..76e057ecf 100644 --- a/vala/valagenieparser.vala +++ b/vala/valagenieparser.vala @@ -897,13 +897,22 @@ public class Vala.Genie.Parser : CodeVisitor { Expression parse_element_access (SourceLocation begin, Expression inner) throws ParseError { expect (TokenType.OPEN_BRACKET); var index_list = parse_expression_list (); + Expression? stop = null; + if (index_list.size == 1 && accept (TokenType.COLON)) { + // slice expression + stop = parse_expression (); + } expect (TokenType.CLOSE_BRACKET); - var expr = new ElementAccess (inner, get_src (begin)); - foreach (Expression index in index_list) { - expr.append_index (index); + if (stop == null) { + var expr = new ElementAccess (inner, get_src (begin)); + foreach (Expression index in index_list) { + expr.append_index (index); + } + return expr; + } else { + return new SliceExpression (inner, index_list[0], stop, get_src (begin)); } - return expr; } List parse_expression_list () throws ParseError {