summaryrefslogtreecommitdiff
path: root/vala/valaparameter.vala
diff options
context:
space:
mode:
authorLuca Bruno <lucabru@src.gnome.org>2013-09-29 17:35:47 +0200
committerLuca Bruno <lucabru@src.gnome.org>2013-09-29 19:55:23 +0200
commitf3aeabaf16a5e9a9ad0aa5d64b18652c203c602e (patch)
tree240710530fa1ababf05f797f27095a2999756117 /vala/valaparameter.vala
parent82cf427bab28af7d7db8d0821c4d1228586ae1a8 (diff)
downloadvala-f3aeabaf16a5e9a9ad0aa5d64b18652c203c602e.tar.gz
codegen: Inherit array_{length,null_terminated} from base parameter
First commit to start inheriting ccode attributes of parameters from base parameters of base methods. Partially fixes bug 642885.
Diffstat (limited to 'vala/valaparameter.vala')
-rw-r--r--vala/valaparameter.vala16
1 files changed, 16 insertions, 0 deletions
diff --git a/vala/valaparameter.vala b/vala/valaparameter.vala
index c42d6f33a..e65703dc2 100644
--- a/vala/valaparameter.vala
+++ b/vala/valaparameter.vala
@@ -45,6 +45,11 @@ public class Vala.Parameter : Variable {
public bool captured { get; set; }
/**
+ * The base parameter of this parameter relative to the base method.
+ */
+ public Parameter base_parameter { get; set; }
+
+ /**
* Creates a new formal parameter.
*
* @param name parameter name
@@ -180,6 +185,17 @@ public class Vala.Parameter : Variable {
}
}
+ var m = parent_symbol as Method;
+ if (m != null) {
+ Method base_method = m.base_method != null ? m.base_method : m.base_interface_method;
+ if (base_method != null && base_method != m) {
+ int index = m.get_parameters ().index_of (this);
+ if (index >= 0) {
+ base_parameter = base_method.get_parameters ().get (index);
+ }
+ }
+ }
+
context.analyzer.current_source_file = old_source_file;
context.analyzer.current_symbol = old_symbol;