]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Do not create empty type parameter lists in parser
authorJürg Billeter <j@bitron.ch>
Sat, 21 Aug 2010 10:11:58 +0000 (12:11 +0200)
committerJürg Billeter <j@bitron.ch>
Fri, 17 Sep 2010 23:00:13 +0000 (01:00 +0200)
vala/valaparser.vala

index f7dc50b35c4cc5e63b0a61d0419bff0b650267bb..093cd4e22b55c2dde47cd66eb9fbe75948808e90 100644 (file)
@@ -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 {