[vala/0.40] codegen: Fix default of CCode.pos for parameters in async methods
- From: Rico Tzschichholz <ricotz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala/0.40] codegen: Fix default of CCode.pos for parameters in async methods
- Date: Tue, 21 Apr 2020 07:51:10 +0000 (UTC)
commit 8ba15ac39c470ad65695acae95ac4786792e090a
Author: Rico Tzschichholz <ricotz ubuntu com>
Date: Sun Apr 19 18:20:41 2020 +0200
codegen: Fix default of CCode.pos for parameters in async methods
codegen/valaccodeattribute.vala | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
---
diff --git a/codegen/valaccodeattribute.vala b/codegen/valaccodeattribute.vala
index 8e31924bc..5014a1ae1 100644
--- a/codegen/valaccodeattribute.vala
+++ b/codegen/valaccodeattribute.vala
@@ -417,10 +417,20 @@ public class Vala.CCodeAttribute : AttributeCache {
if (ccode != null && ccode.has_argument ("pos")) {
_pos = ccode.get_double ("pos");
} else {
- var param = (Parameter) node;
- var sym = param.parent_symbol;
- if (sym is Callable) {
- _pos = ((Callable) sym).get_parameters ().index_of (param) +
1.0;
+ unowned Parameter param = (Parameter) node;
+ unowned Callable? callable = param.parent_symbol as Callable;
+ unowned Method? method = param.parent_symbol as Method;
+ if (method != null && method.coroutine) {
+ int index = method.get_async_begin_parameters ().index_of
(param);
+ if (index < 0) {
+ index = method.get_async_end_parameters ().index_of
(param);
+ }
+ if (index < 0) {
+ Report.error (param.source_reference, "internal:
Parameter `%s' not found in `%s'".printf (param.name, method.get_full_name ()));
+ }
+ _pos = index + 1.0;
+ } else if (callable != null) {
+ _pos = callable.get_parameters ().index_of (param) + 1.0;
} else {
_pos = 0.0;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]