summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--codegen/valagerrormodule.vala2
-rw-r--r--tests/Makefile.am2
-rw-r--r--tests/errors/errordomain-instance-method.test11
-rw-r--r--tests/errors/errordomain-static-method.vala13
-rw-r--r--vala/valaerrordomain.vala8
-rw-r--r--valadoc/tests/drivers/api-test.data.vapi1
-rw-r--r--valadoc/tests/drivers/generic-api-test.vala34
7 files changed, 37 insertions, 34 deletions
diff --git a/codegen/valagerrormodule.vala b/codegen/valagerrormodule.vala
index bae957f02..2abd5a4ce 100644
--- a/codegen/valagerrormodule.vala
+++ b/codegen/valagerrormodule.vala
@@ -59,6 +59,8 @@ public class Vala.GErrorModule : CCodeDelegateModule {
}
public override void visit_error_domain (ErrorDomain edomain) {
+ edomain.accept_children (this);
+
if (edomain.comment != null) {
cfile.add_type_definition (new CCodeComment (edomain.comment.content));
}
diff --git a/tests/Makefile.am b/tests/Makefile.am
index f1b9be8fe..cada29aa2 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -414,6 +414,8 @@ TESTS = \
errors/errors.vala \
errors/errorcode.vala \
errors/errordomain.vala \
+ errors/errordomain-instance-method.test \
+ errors/errordomain-static-method.vala \
errors/invalid-type-check.test \
errors/method-throws.vala \
errors/bug567181.vala \
diff --git a/tests/errors/errordomain-instance-method.test b/tests/errors/errordomain-instance-method.test
new file mode 100644
index 000000000..49c80967b
--- /dev/null
+++ b/tests/errors/errordomain-instance-method.test
@@ -0,0 +1,11 @@
+Invalid Code
+
+errordomain Foo {
+ BAD;
+
+ public void bar () {
+ }
+}
+
+void main () {
+}
diff --git a/tests/errors/errordomain-static-method.vala b/tests/errors/errordomain-static-method.vala
new file mode 100644
index 000000000..871a5e6ad
--- /dev/null
+++ b/tests/errors/errordomain-static-method.vala
@@ -0,0 +1,13 @@
+errordomain Foo {
+ BAD = 23;
+
+ public static Foo from_string (string error) {
+ assert (error == "BAD");
+ return new Foo.BAD ("BAD");
+ }
+}
+
+void main () {
+ var e = Foo.from_string ("BAD");
+ assert (e.code == Foo.BAD);
+}
diff --git a/vala/valaerrordomain.vala b/vala/valaerrordomain.vala
index c0e92e70e..0b462849e 100644
--- a/vala/valaerrordomain.vala
+++ b/vala/valaerrordomain.vala
@@ -125,6 +125,14 @@ public class Vala.ErrorDomain : TypeSymbol {
}
foreach (Method m in methods) {
+ if (m.binding == MemberBinding.INSTANCE) {
+ if (external_package) {
+ Report.warning (m.source_reference, "Instance methods are not supported in error domains yet");
+ } else {
+ Report.error (m.source_reference, "Instance methods are not supported in error domains yet");
+ }
+ error = true;
+ }
m.check (context);
}
diff --git a/valadoc/tests/drivers/api-test.data.vapi b/valadoc/tests/drivers/api-test.data.vapi
index 788a6bab6..37871f012 100644
--- a/valadoc/tests/drivers/api-test.data.vapi
+++ b/valadoc/tests/drivers/api-test.data.vapi
@@ -25,7 +25,6 @@ public errordomain TestErrDomGlobal {
ERROR1,
ERROR2;
- public void method ();
public static void static_method ();
}
diff --git a/valadoc/tests/drivers/generic-api-test.vala b/valadoc/tests/drivers/generic-api-test.vala
index 94f572cfd..5d20405d6 100644
--- a/valadoc/tests/drivers/generic-api-test.vala
+++ b/valadoc/tests/drivers/generic-api-test.vala
@@ -257,45 +257,13 @@ public static void test_erroromain_global (Api.ErrorDomain? err, Api.Package pkg
assert (errc2 == true);
-
- Vala.List<Api.Node> methods = err.get_children_by_type (Api.NodeType.METHOD, false);
+ Vala.List<Api.Node> methods = err.get_children_by_type (Api.NodeType.STATIC_METHOD, false);
assert (methods.size == 1);
Api.Method method = methods.get (0) as Api.Method;
assert (method != null);
// (.Method check)
- assert (method.get_cname () == "test_err_dom_global_method");
- //assert (method.get_dbus_name () == null);
- //assert (method.get_dbus_result_name () == null);
- //assert (method.is_dbus_visible == false);
- assert (method.base_method == null);
- assert (method.is_yields == false);
- assert (method.is_abstract == false);
- assert (method.is_virtual == false);
- assert (method.is_override == false);
- assert (method.is_static == false);
- assert (method.is_constructor == false);
- assert (method.is_inline == false);
- // (.Symbol check)
- assert (method.is_deprecated == false);
- assert (method.accessibility == Vala.SymbolAccessibility.PUBLIC);
- // (.Node)
- assert (method.get_full_name () == "TestErrDomGlobal.method");
- assert (method.get_filename () == "api-test.data.vapi");
- assert (method.name == "method");
- assert (method.nspace == global_ns);
- assert (method.package == pkg);
-
-
-
- methods = err.get_children_by_type (Api.NodeType.STATIC_METHOD, false);
- assert (methods.size == 1);
-
- method = methods.get (0) as Api.Method;
- assert (method != null);
-
- // (.Method check)
assert (method.get_cname () == "test_err_dom_global_static_method");
//assert (method.get_dbus_name () == null);
//assert (method.get_dbus_result_name () == null);