]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
girparser: Allow specifying the error thrown from a function in metadata
authorLuca Bruno <lucabru@src.gnome.org>
Wed, 18 May 2011 09:15:28 +0000 (11:15 +0200)
committerLuca Bruno <lucabru@src.gnome.org>
Wed, 18 May 2011 09:15:38 +0000 (11:15 +0200)
vala/valagirparser.vala

index 48b736efcf904447e80bd87a086255f4713752cd..47c7c0a1d8add719d9c6c97842bfa02fe25866dc 100644 (file)
@@ -61,7 +61,8 @@ public class Vala.GirParser : CodeVisitor {
                VIRTUAL,
                ABSTRACT,
                SCOPE,
-               STRUCT;
+               STRUCT,
+               THROWS;
 
                public static ArgumentType? from_string (string name) {
                        var enum_class = (EnumClass) typeof(ArgumentType).class_ref ();
@@ -2425,8 +2426,15 @@ public class Vala.GirParser : CodeVisitor {
                        }
                }
 
-               if (throws_string == "1") {
-                       s.add_error_type (new ErrorType (null, null));
+               if (!(metadata.get_expression (ArgumentType.THROWS) is NullLiteral)) {
+                       if (metadata.has_argument (ArgumentType.THROWS)) {
+                               var error_types = metadata.get_string(ArgumentType.THROWS).split(",");
+                               foreach (var error_type in error_types) {
+                                       s.add_error_type (parse_type_from_string (error_type, true, metadata.get_source_reference (ArgumentType.THROWS)));
+                               }
+                       } else {
+                               s.add_error_type (new ErrorType (null, null));
+                       }
                }
 
                current.symbol = s;