X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Ftypes%2Fcpp_exp.c;h=68fec6ec48d3138a21ee131650580e6b1854a67c;hb=698841dfdd4d70d24e0b7af25ac7100bc2cb26a4;hp=4892ad252ecbf82cd84f61b017fc0b583dbb07f6;hpb=1124354f4666e9d10d9ad3acfa45fdba3b99cfc6;p=m6w6%2Fext-psi diff --git a/src/types/cpp_exp.c b/src/types/cpp_exp.c index 4892ad2..68fec6e 100644 --- a/src/types/cpp_exp.c +++ b/src/types/cpp_exp.c @@ -51,6 +51,7 @@ struct psi_cpp_exp *psi_cpp_exp_init(token_t type, void *data) exp->data.tok = data; break; case PSI_T_DEFINE: + case PSI_T_PRAGMA: exp->data.decl = data; break; case PSI_T_IF: @@ -59,7 +60,6 @@ struct psi_cpp_exp *psi_cpp_exp_init(token_t type, void *data) break; case PSI_T_ENDIF: case PSI_T_ELSE: - case PSI_T_PRAGMA_ONCE: break; default: assert(0); @@ -87,6 +87,7 @@ void psi_cpp_exp_free(struct psi_cpp_exp **exp_ptr) psi_token_free(&exp->data.tok); break; case PSI_T_DEFINE: + case PSI_T_PRAGMA: psi_cpp_macro_decl_free(&exp->data.decl); break; case PSI_T_IF: @@ -95,7 +96,6 @@ void psi_cpp_exp_free(struct psi_cpp_exp **exp_ptr) break; case PSI_T_ENDIF: case PSI_T_ELSE: - case PSI_T_PRAGMA_ONCE: break; default: assert(0); @@ -131,6 +131,7 @@ void psi_cpp_exp_dump(struct psi_dump *dump, struct psi_cpp_exp *exp) } break; case PSI_T_DEFINE: + case PSI_T_PRAGMA: psi_cpp_macro_decl_dump(dump, exp->data.decl); break; case PSI_T_IF: @@ -139,7 +140,6 @@ void psi_cpp_exp_dump(struct psi_dump *dump, struct psi_cpp_exp *exp) break; case PSI_T_ENDIF: case PSI_T_ELSE: - case PSI_T_PRAGMA_ONCE: break; default: assert(0); @@ -218,6 +218,11 @@ void psi_cpp_exp_exec(struct psi_cpp_exp *exp, struct psi_cpp *cpp, struct psi_d exp->data.decl = NULL; } break; + case PSI_T_PRAGMA: + if (!cpp->skip) { + psi_cpp_pragma(cpp, exp->data.decl); + } + break; case PSI_T_IFDEF: ++cpp->level; if (!cpp->skip) { @@ -323,11 +328,6 @@ void psi_cpp_exp_exec(struct psi_cpp_exp *exp, struct psi_cpp *cpp, struct psi_d } } break; - case PSI_T_PRAGMA_ONCE: - if (!cpp->skip) { - zend_hash_add_empty_element(&cpp->once, exp->token->file); - } - break; default: assert(0); break;