pike.git/
src/
language.yacc
Branch:
Tag:
Non-build tags
All tags
No tags
2021-02-22
2021-02-22 11:57:35 by Henrik Grubbström (Grubba) <grubba@grubba.org>
d3915794e8261a226528212a53b1df6698103603 (
35
lines) (+
19
/-
16
)
[
Show
|
Annotate
]
Branch:
master
Compiler
[Typechecker]
: Fix the initializer check for variables.
1834:
{ struct pike_type *type; node *n;
+
push_finished_type(Pike_compiler->compiler_frame->current_type);
-
+
if (!TEST_COMPAT(8,0) &&
+
(THIS_COMPILATION->lex.pragmas & ID_STRICT_TYPES) &&
+
(Pike_compiler->compiler_frame->current_type->type != PIKE_T_AUTO)) {
+
if (!pike_types_le(zero_type_string,
+
Pike_compiler->compiler_frame->current_type)) {
+
if (Pike_compiler->compiler_pass == COMPILER_PASS_LAST) {
+
ref_push_string($1->u.sval.u.string);
+
yytype_report(REPORT_WARNING, NULL, 0, zero_type_string,
+
NULL, 0, Pike_compiler->compiler_frame->current_type,
+
1, "Type does not contain zero for variable without "
+
"initializer %s. Type adjusted.");
+
}
+
push_type(PIKE_T_ZERO);
+
push_type(T_OR);
+
}
+
}
n = Pike_compiler->current_attributes; while(n) { push_type_attribute(CDR(n)->u.sval.u.string);
1851:
{ struct pike_type *type; node *n;
+
push_finished_type(Pike_compiler->compiler_frame->current_type);
-
if (!TEST_COMPAT(8,0) &&
-
(THIS_COMPILATION->lex.pragmas & ID_STRICT_TYPES) &&
-
(Pike_compiler->compiler_frame->current_type->type != PIKE_T_AUTO)) {
-
if (!pike_types_le(zero_type_string,
-
Pike_compiler->compiler_frame->current_type)) {
-
if (Pike_compiler->compiler_pass == COMPILER_PASS_LAST) {
-
ref_push_string($1->u.sval.u.string);
-
yytype_report(REPORT_WARNING, NULL, 0, zero_type_string,
-
NULL, 0, Pike_compiler->compiler_frame->current_type,
-
1, "Type does not contain zero for variable without "
-
"initializer %s. Type adjusted.");
-
}
-
push_type(PIKE_T_ZERO);
-
push_type(T_OR);
-
}
-
}
+
n = Pike_compiler->current_attributes; while(n) { push_type_attribute(CDR(n)->u.sval.u.string);