diff options
author | Jürg Billeter <j@bitron.ch> | 2010-08-21 12:11:58 +0200 |
---|---|---|
committer | Jürg Billeter <j@bitron.ch> | 2010-09-18 01:00:13 +0200 |
commit | 3d0261f5ad4527edd78dd9f3ddc7a9bc62215f6b (patch) | |
tree | f36089692e08815a6deb4a23457bf76dd352c7cb | |
parent | 95285bc021348808a334fa7bd26aaa5e790d045a (diff) | |
download | vala-3d0261f5ad4527edd78dd9f3ddc7a9bc62215f6b.tar.gz |
Do not create empty type parameter lists in parser
-rw-r--r-- | vala/valaparser.vala | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/vala/valaparser.vala b/vala/valaparser.vala index f7dc50b35..093cd4e22 100644 --- a/vala/valaparser.vala +++ b/vala/valaparser.vala @@ -41,6 +41,8 @@ public class Vala.Parser : CodeVisitor { const int BUFFER_SIZE = 32; + static List<TypeParameter> _empty_type_parameter_list; + struct TokenInfo { public TokenType type; public SourceLocation begin; @@ -3425,16 +3427,21 @@ public class Vala.Parser : CodeVisitor { } List<TypeParameter> parse_type_parameter_list () throws ParseError { - var list = new ArrayList<TypeParameter> (); if (accept (TokenType.OP_LT)) { + var list = new ArrayList<TypeParameter> (); do { var begin = get_location (); string id = parse_identifier (); list.add (new TypeParameter (id, get_src (begin))); } while (accept (TokenType.COMMA)); expect (TokenType.OP_GT); + return list; + } else { + if (_empty_type_parameter_list == null) { + _empty_type_parameter_list = new ArrayList<TypeParameter> (); + } + return _empty_type_parameter_list; } - return list; } void skip_type_argument_list () throws ParseError { |