]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Genie: Do not create empty type parameter lists in parser
authorJamie McCracken <jamie.mccrack@gmail.com>
Tue, 28 Sep 2010 03:37:18 +0000 (23:37 -0400)
committerJamie McCracken <jamie.mccrack@gmail.com>
Tue, 28 Sep 2010 03:37:18 +0000 (23:37 -0400)
vala/valagenieparser.vala

index 4087a370ecd6f8934748f6097d4eac5307b08cc6..f04befbd480c595cb7498052788cc8bd2fc0043a 100644 (file)
@@ -48,6 +48,8 @@ public class Vala.Genie.Parser : CodeVisitor {
 
        const int BUFFER_SIZE = 32;
 
+       static List<TypeParameter> _empty_type_parameter_list;
+
        struct TokenInfo {
                public TokenType type;
                public SourceLocation begin;
@@ -3738,16 +3740,20 @@ public class Vala.Genie.Parser : CodeVisitor {
        }
 
        List<TypeParameter> parse_type_parameter_list () throws ParseError {
-               var list = new ArrayList<TypeParameter> ();
                if (accept (TokenType.OF)) {
+                       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));
-
+                       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 {