diff options
author | Luca Bruno <lucabru@src.gnome.org> | 2013-09-29 17:35:47 +0200 |
---|---|---|
committer | Luca Bruno <lucabru@src.gnome.org> | 2013-09-29 19:55:23 +0200 |
commit | f3aeabaf16a5e9a9ad0aa5d64b18652c203c602e (patch) | |
tree | 240710530fa1ababf05f797f27095a2999756117 /vala/valaparameter.vala | |
parent | 82cf427bab28af7d7db8d0821c4d1228586ae1a8 (diff) | |
download | vala-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.vala | 16 |
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; |