pike.git/
src/
language.yacc
Branch:
Tag:
Non-build tags
All tags
No tags
2016-05-03
2016-05-03 13:13:58 by Henrik Grubbström (Grubba) <grubba@grubba.org>
c528467a8300d3ad96a82175031d3142b205ac10 (
52
lines) (+
9
/-
43
)
[
Show
|
Annotate
]
Branch:
8.1
Compiler: Use find_inherited_identifier().
4038:
if(Pike_compiler->last_identifier) free_string(Pike_compiler->last_identifier); copy_shared_string(Pike_compiler->last_identifier, $2->u.sval.u.string);
-
if
($1 > 0)
-
id
=
low
_
reference_
inherited_identifier(inherit_state,
-
$1,
-
Pike_compiler->last_identifier
,
-
SEE_PROTECTED
);
-
else
-
id = really_low_find_shared_string_identifier(Pike_compiler->last_identifier,
-
inherit_state->new_program,
-
SEE_PROTECTED|SEE_PRIVATE);
-
-
if (
id
!
= -1) {
-
if (inherit_depth > 0) {
-
$$
= mkexternalnode(inherit_state->new_program, id
)
;
-
} else
{
-
$$ = mkidentifiernode(id);
-
}
-
} else if (($$ = program_magic_identifier (inherit_state, inherit_depth, $1,
-
Pike_compiler->last_identifier, 1))) {
-
/* All done. */
-
}
-
else {
+
$$
=
find
_inherited_identifier(inherit_state,
inherit_depth,
$1,
+
Pike_compiler->last_identifier);
+
if (!$$) {
if ((Pike_compiler->flags & COMPILATION_FORCE_RESOLVE) || (Pike_compiler->compiler_pass == 2)) { if (($1 >= 0) && inherit_state->new_program->inherits[$1].name) {
4086:
if(Pike_compiler->last_identifier) free_string(Pike_compiler->last_identifier); copy_shared_string(Pike_compiler->last_identifier, $2->u.sval.u.string);
-
$$
=0;
-
for(e
=
1;e<(int)Pike
_
compiler->new
_
program->num_inherits;e++)
-
{
-
if
(Pike_compiler
->new_program->inherits[e].inherit_level!=1)
continue;
-
i=low_reference_inherited_identifier(
0,
e,$2
-
>u.sval.u.string
,
SEE_PROTECTED);
-
if(i==-1)
continue;
-
if($$)
-
{
-
$$=mknode(F_ARG_LIST,$$,mkidentifiernode(i));
-
}else{
-
$$=mkidentifiernode(i
);
-
}
-
}
+
$$
=
find
_
inherited
_
identifier
(Pike_compiler
,
0,
-
2
,
+
Pike_compiler->last_identifier
);
if(!$$) {
-
if (!($$ = program_magic_identifier (Pike_compiler, 0, -1,
-
$2->u.sval.u.string, 1)))
-
{
+
if (Pike_compiler->compiler_pass == 2) { my_yyerror("Undefined identifier ::%S.", $2->u.sval.u.string); } $$=mkintnode(0); }
-
}else{
-
if($$->token==F_ARG_LIST) $$=mkefuncallnode("aggregate",$$);
-
}
+
free_node($2); } | TOK_COLON_COLON bad_identifier