projects
/
m6w6
/
ext-psi
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
parser: RETURN [<native call> AS] SET_FUNC
[m6w6/ext-psi]
/
src
/
types
/
decl_var.c
diff --git
a/src/types/decl_var.c
b/src/types/decl_var.c
index 60431d551a0eb8d530c99959db3b5fe79393efa7..236ccfc843f7c9af5abd267e7334dc649a19142f 100644
(file)
--- a/
src/types/decl_var.c
+++ b/
src/types/decl_var.c
@@
-86,13
+86,17
@@
void psi_decl_var_dump(int fd, struct psi_decl_var *var)
}
bool psi_decl_var_validate(struct psi_data *data, struct psi_decl_var *dvar,
}
bool psi_decl_var_validate(struct psi_data *data, struct psi_decl_var *dvar,
- struct psi_
decl *decl, struct psi_let_exp *let_exp
,
- struct psi_set_exp *set_exp)
+ struct psi_
impl *impl, struct psi_decl *decl
,
+ struct psi_
let_exp *let_exp, struct psi_
set_exp *set_exp)
{
bool okay = false;
struct psi_let_exp *current_let_exp = let_exp;
struct psi_set_exp *current_set_exp = set_exp;
{
bool okay = false;
struct psi_let_exp *current_let_exp = let_exp;
struct psi_set_exp *current_set_exp = set_exp;
+ if (dvar->arg) {
+ return true;
+ }
+
if (current_let_exp) {
/* walk up the let expression tree until found */
while ((current_let_exp = current_let_exp->outer)) {
if (current_let_exp) {
/* walk up the let expression tree until found */
while ((current_let_exp = current_let_exp->outer)) {
@@
-137,7
+141,10
@@
bool psi_decl_var_validate(struct psi_data *data, struct psi_decl_var *dvar,
}
}
}
}
- if (decl && !okay && psi_decl_get_arg(decl, dvar)) {
+ if (!okay && impl && psi_impl_get_decl_arg(impl, dvar)) {
+ okay = true;
+ }
+ if (!okay && decl && psi_decl_get_arg(decl, dvar)) {
okay = true;
}
okay = true;
}