#pragma lib
[m6w6/ext-psi] / src / types / cpp_exp.c
index 2288990fad8a04ecc6d18b00f6983c3728bf99e9..68fec6ec48d3138a21ee131650580e6b1854a67c 100644 (file)
@@ -33,6 +33,7 @@
 
 #include "data.h"
 #include "cpp.h"
+#include "debug.h"
 
 struct psi_cpp_exp *psi_cpp_exp_init(token_t type, void *data)
 {
@@ -50,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:
@@ -58,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);
@@ -86,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:
@@ -94,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);
@@ -130,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:
@@ -138,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);
@@ -217,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) {
@@ -322,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;