diff options
author | Rico Tzschichholz <ricotz@ubuntu.com> | 2020-08-07 18:54:51 +0200 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2020-08-07 19:04:45 +0200 |
commit | 5da90d7c5bfe9a977720221717c774300c24484c (patch) | |
tree | d6e230318f55ecd5ac9ed06d9f75513d7c949c61 /vala/valasignal.vala | |
parent | 01914cd1303b34bb583044f49370e7d21a6d44e8 (diff) | |
download | vala-5da90d7c5bfe9a977720221717c774300c24484c.tar.gz |
codegen: Support non-virtual signals with default handler
Fixes https://gitlab.gnome.org/GNOME/vala/issues/1056
Diffstat (limited to 'vala/valasignal.vala')
-rw-r--r-- | vala/valasignal.vala | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/vala/valasignal.vala b/vala/valasignal.vala index 392b31489..df7d76199 100644 --- a/vala/valasignal.vala +++ b/vala/valasignal.vala @@ -222,24 +222,17 @@ public class Vala.Signal : Symbol, Callable { } } - if (!is_virtual && body != null) { - error = true; - Report.error (source_reference, "Only virtual signals can have a default signal handler body"); - } - - - if (is_virtual) { + if (body != null || (is_virtual && external_package)) { default_handler = new Method (name, return_type, source_reference); default_handler.owner = owner; - default_handler.access = access; + default_handler.access = (is_virtual ? access : SymbolAccessibility.PRIVATE); default_handler.external = external; default_handler.hides = hides; - default_handler.is_virtual = true; + default_handler.is_virtual = is_virtual; default_handler.signal_reference = this; default_handler.body = body; - foreach (Parameter param in parameters) { default_handler.add_parameter (param); } |