projects
/
m6w6
/
ext-psi
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
|
github
raw
|
patch
|
inline
| side by side (parent:
b9bd15b
)
flush
author
Michael Wallner
<mike@php.net>
Tue, 16 Feb 2016 10:13:46 +0000
(11:13 +0100)
committer
Michael Wallner
<mike@php.net>
Tue, 16 Feb 2016 10:13:46 +0000
(11:13 +0100)
src/context_validate.c
patch
|
blob
|
history
diff --git
a/src/context_validate.c
b/src/context_validate.c
index e34330dee6ad521647169778ae4670df8cccf406..897ae657799e5a3ad30c2f72480f535b9e8916c6 100644
(file)
--- a/
src/context_validate.c
+++ b/
src/context_validate.c
@@
-171,14
+171,28
@@
static inline int validate_decl_type(PSI_Data *data, decl_type *type) {
}
static inline int validate_decl_typedef(PSI_Data *data, decl_arg *def) {
if (!validate_decl_type(data, def->type)) {
}
static inline int validate_decl_typedef(PSI_Data *data, decl_arg *def) {
if (!validate_decl_type(data, def->type)) {
+ const char *pre;
+
+ switch (def->type->type) {
+ case PSI_T_STRUCT: pre = "struct "; break;
+ case PSI_T_UNION: pre = "union "; break;
+ case PSI_T_ENUM: pre = "enum "; break;
+ default: pre = ""; break;
+ }
data->error(data, def->token, PSI_WARNING,
"Type '%s' cannot be aliased to %s'%s'",
data->error(data, def->token, PSI_WARNING,
"Type '%s' cannot be aliased to %s'%s'",
- def->type->name, def->type->type == PSI_T_STRUCT?"struct ":"",
- def->var->name);
+ def->type->name, pre, def->var->name);
return 0;
}
return 0;
}
- if (def->type->type == PSI_T_VOID && def->var->pointer_level) {
- def->type->type = PSI_T_POINTER;
+ if (def->type->type == PSI_T_VOID) {
+ if (def->var->pointer_level) {
+ def->type->type = PSI_T_POINTER;
+ } else {
+ data->error(data, def->token, PSI_WARNING,
+ "Type '%s' cannot be aliased to 'void'",
+ def->type->name);
+ return 0;
+ }
}
return 1;
}
}
return 1;
}
@@
-194,6
+208,11
@@
static inline int validate_decl_arg(PSI_Data *data, decl_arg *arg) {
"Cannot use '%s' as type for '%s'",
arg->type->name, arg->var->name);
return 0;
"Cannot use '%s' as type for '%s'",
arg->type->name, arg->var->name);
return 0;
+ } else {
+ decl_type *real = real_decl_type(arg->type);
+
+ if (real->type == PSI_T_FUNCTION) {
+ }
}
return 1;
}
}
return 1;
}