]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
support nested generic types, fixes bug 443522
authorJuerg Billeter <j@bitron.ch>
Fri, 18 Jan 2008 22:00:34 +0000 (22:00 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Fri, 18 Jan 2008 22:00:34 +0000 (22:00 +0000)
2008-01-18  Juerg Billeter  <j@bitron.ch>

* vala/scanner.l: support nested generic types, fixes bug 443522

svn path=/trunk/; revision=859

ChangeLog
vala/scanner.l

index 7d555fab50232cb0b76f28d63fee2f678e4b0c10..474073d73cec94dbabb318846e35a4a892b54679 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2008-01-18  Jürg Billeter  <j@bitron.ch>
+
+       * vala/scanner.l: support nested generic types, fixes bug 443522
+
 2008-01-18  Jürg Billeter  <j@bitron.ch>
 
        * vala/valavoidtype.vala: implement get_cname method
index de804da7413be515d6c3ccce57fbc3a83a525c17..a38a57b8df25859585c6e4c48e1860e531d08f80 100644 (file)
@@ -63,6 +63,9 @@ string_literal                        \"{string_literal_character}*\"
 integer_literal                        ({decimal_integer_literal}|{hexadecimal_integer_literal}|{octal_integer_literal}){integer_suffix}?
 literal                                ({integer_literal}|{real_literal}|{character_literal}|{string_literal})
 
+type_name                      ("weak"{space})?({ident}".")?{ident}
+generic_type                   {type_name}("<"{space}{type_name}("?"|"*"+)?(","{space}{type_name}("?"|"*"+)?)*">")?("?"|"*"+)?
+
 %%
 
 "/*"                           { uploc; file_comment = (yylineno == 1); BEGIN (IN_COMMENT); }
@@ -110,7 +113,7 @@ literal                             ({integer_literal}|{real_literal}|{character_literal}|{string_literal
 "<="           { uploc; return OP_LE; }
 ">="           { uploc; return OP_GE; }
 "=>"           { uploc; return LAMBDA; }
-"<"{space}("weak"{space})?({ident}".")?{ident}("?"|"*"+)?("[]""?"?)?(","{space}("weak"{space})?({ident}".")?{ident}("?"|"*"+)?("[]""?"?)?)*">" { yyless (1); uploc; return GENERIC_LT; }
+"<"{space}{generic_type}{space}(","{space}{generic_type}{space})*">"   { yyless (1); uploc; return GENERIC_LT; }
 "<"            { uploc; return OP_LT; }
 ">"            { uploc; return OP_GT; }
 "!"            { uploc; return OP_NEG; }