diff --git a/common/tl/compiler/tl-compiler.cpp b/common/tl/compiler/tl-compiler.cpp index 04acb412d5..1c39f2b1f8 100644 --- a/common/tl/compiler/tl-compiler.cpp +++ b/common/tl/compiler/tl-compiler.cpp @@ -2,10 +2,10 @@ // Copyright (c) 2020 LLC «V Kontakte» // Distributed under the GPL v3 License, see LICENSE.notice.txt -#include +#include +#include +#include #include -#include -#include #include #include #include diff --git a/common/tl/compiler/tl-parser-new.cpp b/common/tl/compiler/tl-parser-new.cpp index 46b214a3c6..a4cf43e53e 100644 --- a/common/tl/compiler/tl-parser-new.cpp +++ b/common/tl/compiler/tl-parser-new.cpp @@ -5,6 +5,7 @@ #include "common/tl/compiler/tl-parser-new.h" #include +#include #include #include #include @@ -13,10 +14,11 @@ #include #include #include +#include #include +#include #include "common/c-tree.h" - #include "common/crc32.h" #include "common/kprintf.h" #include "common/tl/compiler/tl-tl.h" diff --git a/compiler/class-assumptions.cpp b/compiler/class-assumptions.cpp index c25cf4837a..d9238eb84b 100644 --- a/compiler/class-assumptions.cpp +++ b/compiler/class-assumptions.cpp @@ -30,15 +30,40 @@ */ #include "compiler/class-assumptions.h" +#include +#include +#include +#include +#include +#include #include - +#include +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "common/algorithms/find.h" +#include "common/termformat/termformat.h" +#include "common/wrappers/copyable-atomic.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" +#include "compiler/compiler-core.h" #include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" +#include "compiler/data/ffi-data.h" #include "compiler/data/function-data.h" +#include "compiler/data/function-modifiers.h" +#include "compiler/ffi/ffi_types.h" #include "compiler/function-pass.h" +#include "compiler/inferring/primitive-type.h" +#include "compiler/kphp_assert.h" #include "compiler/phpdoc.h" #include "compiler/pipes/deduce-implicit-types-and-casts.h" #include "compiler/pipes/instantiate-ffi-operations.h" +#include "compiler/stage.h" #include "compiler/type-hint.h" +#include "compiler/utils/string-utils.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" #include "compiler/vertex.h" diff --git a/compiler/class-assumptions.h b/compiler/class-assumptions.h index ab365c459f..de6a849798 100644 --- a/compiler/class-assumptions.h +++ b/compiler/class-assumptions.h @@ -4,10 +4,14 @@ #pragma once +#include + #include "compiler/data/data_ptr.h" #include "compiler/data/vertex-adaptor.h" #include "compiler/debug.h" +class TypeHint; + class Assumption { DEBUG_STRING_METHOD { return as_human_readable(); diff --git a/compiler/code-gen/code-gen-task.cpp b/compiler/code-gen/code-gen-task.cpp index d635405895..ece60baaf4 100644 --- a/compiler/code-gen/code-gen-task.cpp +++ b/compiler/code-gen/code-gen-task.cpp @@ -3,7 +3,15 @@ // Distributed under the GPL v3 License, see LICENSE.notice.txt #include "compiler/code-gen/code-gen-task.h" + +#include + #include "compiler/code-gen/code-gen-root-cmd.h" +#include "compiler/stage.h" +#include "compiler/threading/data-stream.h" +#include "compiler/threading/profiler.h" + +class WriterData; // this os exists to be passed to CodeGenerator constructor, // but it won't be used actually, as CodeGenerator is not created in "just calc hashes" mode diff --git a/compiler/code-gen/code-gen-task.h b/compiler/code-gen/code-gen-task.h index 2e630ac852..8d1293173b 100644 --- a/compiler/code-gen/code-gen-task.h +++ b/compiler/code-gen/code-gen-task.h @@ -4,14 +4,20 @@ #pragma once +#include +#include + +#include "compiler/code-gen/code-gen-root-cmd.h" #include "compiler/code-gen/code-generator.h" +#include "compiler/scheduler/scheduler-base.h" #include "compiler/scheduler/task.h" #include "compiler/stage.h" #include "compiler/threading/profiler.h" -ProfilerRaw& get_code_gen_profiler(); +template +class DataStream; -struct CodeGenRootCmd; +ProfilerRaw& get_code_gen_profiler(); class CodeGenSchedulerTask : public Task { CodeGenerator W; diff --git a/compiler/code-gen/code-generator.cpp b/compiler/code-gen/code-generator.cpp index 6915fdeb1c..bffa1eaef9 100644 --- a/compiler/code-gen/code-generator.cpp +++ b/compiler/code-gen/code-generator.cpp @@ -3,8 +3,15 @@ // Distributed under the GPL v3 License, see LICENSE.notice.txt #include "compiler/code-gen/code-generator.h" + +#include +#include + #include "compiler/compiler-core.h" #include "compiler/data/src-file.h" +#include "compiler/index.h" +#include "compiler/kphp_assert.h" +#include "compiler/threading/data-stream.h" void CodeGenerator::open_file_create_writer(bool compile_with_debug_info_flag, bool compile_with_crc, const std::string& file_name, const std::string& subdir) { std::string full_file_name = G->cpp_dir; diff --git a/compiler/code-gen/code-generator.h b/compiler/code-gen/code-generator.h index be719305a6..9140d141c4 100644 --- a/compiler/code-gen/code-generator.h +++ b/compiler/code-gen/code-generator.h @@ -3,7 +3,10 @@ // Distributed under the GPL v3 License, see LICENSE.notice.txt #pragma once + +#include #include +#include #include #include "common/algorithms/simd-int-to-string.h" @@ -15,6 +18,7 @@ #include "compiler/threading/data-stream.h" struct CGContext { + std::vector catch_labels; std::vector catch_label_used; FunctionPtr parent_func; diff --git a/compiler/code-gen/const-globals-batched-mem.cpp b/compiler/code-gen/const-globals-batched-mem.cpp index b4e50262a7..c7728382bb 100644 --- a/compiler/code-gen/const-globals-batched-mem.cpp +++ b/compiler/code-gen/const-globals-batched-mem.cpp @@ -4,16 +4,34 @@ #include "compiler/code-gen/const-globals-batched-mem.h" -#include -#include - +#include +#include +#include +#include +#include +#include +#include + +#include "auto/compiler/vertex/vertex-op_var.h" +#include "auto/compiler/vertex/vertex-types.h" +#include "common/algorithms/find.h" +#include "common/algorithms/hashes.h" +#include "common/algorithms/string-algorithms.h" #include "common/php-functions.h" - +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/string_view.h" +#include "compiler/code-gen/code-generator.h" #include "compiler/code-gen/common.h" #include "compiler/code-gen/includes.h" #include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" +#include "compiler/data/function-data.h" #include "compiler/data/var-data.h" +#include "compiler/inferring/primitive-type.h" #include "compiler/inferring/public.h" +#include "compiler/inferring/type-data.h" +#include "compiler/kphp_assert.h" +#include "compiler/vertex-meta_op_base.h" // see const-globals-batched-mem.h for detailed comments of what's going on diff --git a/compiler/code-gen/const-globals-batched-mem.h b/compiler/code-gen/const-globals-batched-mem.h index b540ceea52..380090e8bb 100644 --- a/compiler/code-gen/const-globals-batched-mem.h +++ b/compiler/code-gen/const-globals-batched-mem.h @@ -4,7 +4,9 @@ #pragma once +#include #include +#include #include "compiler/data/data_ptr.h" #include "compiler/data/vertex-adaptor.h" diff --git a/compiler/code-gen/declarations.cpp b/compiler/code-gen/declarations.cpp index bcf4327d3d..7f86f4306d 100644 --- a/compiler/code-gen/declarations.cpp +++ b/compiler/code-gen/declarations.cpp @@ -4,8 +4,23 @@ #include "compiler/code-gen/declarations.h" -#include "common/algorithms/compare.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "common/algorithms/compare.h" +#include "common/algorithms/find.h" +#include "common/tlo-parsing/tl-objects.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" +#include "compiler/code-gen/code-generator.h" #include "compiler/code-gen/common.h" #include "compiler/code-gen/const-globals-batched-mem.h" #include "compiler/code-gen/files/json-encoder-tags.h" @@ -14,17 +29,27 @@ #include "compiler/code-gen/namespace.h" #include "compiler/code-gen/naming.h" #include "compiler/code-gen/vertex-compiler.h" +#include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" #include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" #include "compiler/data/ffi-data.h" #include "compiler/data/function-data.h" #include "compiler/data/kphp-json-tags.h" #include "compiler/data/lib-data.h" #include "compiler/data/src-file.h" #include "compiler/data/var-data.h" +#include "compiler/data/vertex-adaptor.h" +#include "compiler/ffi/ffi_types.h" +#include "compiler/inferring/primitive-type.h" #include "compiler/inferring/public.h" #include "compiler/inferring/type-data.h" +#include "compiler/kphp_assert.h" +#include "compiler/stage.h" #include "compiler/tl-classes.h" +#include "compiler/utils/string-utils.h" #include "compiler/vertex-util.h" +#include "compiler/vertex.h" VarDeclaration VarPlainDeclaration(VarPtr var) { return {var, false, false}; diff --git a/compiler/code-gen/declarations.h b/compiler/code-gen/declarations.h index 2b5927e288..b88b01dc36 100644 --- a/compiler/code-gen/declarations.h +++ b/compiler/code-gen/declarations.h @@ -4,11 +4,15 @@ #pragma once +#include +#include +#include #include #include +#include "auto/compiler/vertex/vertex-types.h" #include "common/tlo-parsing/tl-objects.h" - +#include "common/wrappers/string_view.h" #include "compiler/code-gen/code-gen-root-cmd.h" #include "compiler/code-gen/code-generator.h" #include "compiler/code-gen/gen-out-style.h" diff --git a/compiler/code-gen/files/cmake-lists-txt.cpp b/compiler/code-gen/files/cmake-lists-txt.cpp index 29c5e5339a..bfdcea1986 100644 --- a/compiler/code-gen/files/cmake-lists-txt.cpp +++ b/compiler/code-gen/files/cmake-lists-txt.cpp @@ -5,11 +5,15 @@ #include "compiler/code-gen/files/cmake-lists-txt.h" #include +#include #include +#include #include "common/wrappers/fmt_format.h" +#include "compiler/code-gen/code-generator.h" #include "compiler/code-gen/common.h" #include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" void CmakeListsTxt::compile_include_cmake() const noexcept { // 1) creating of file outside of CompilerSettings::dest_cpp_dir directory is unable with CodeGenerator, diff --git a/compiler/code-gen/files/const-vars-init.cpp b/compiler/code-gen/files/const-vars-init.cpp index c860d0ff17..fba9ce49df 100644 --- a/compiler/code-gen/files/const-vars-init.cpp +++ b/compiler/code-gen/files/const-vars-init.cpp @@ -4,16 +4,41 @@ #include "compiler/code-gen/files/const-vars-init.h" +#include +#include +#include +#include +#include + +#include "auto/compiler/vertex/vertex-op_string.h" +#include "auto/compiler/vertex/vertex-types.h" +#include "common/algorithms/find.h" #include "common/algorithms/hashes.h" +#include "common/wrappers/fmt_format.h" +#include "compiler/code-gen/code-generator.h" +#include "compiler/code-gen/common.h" #include "compiler/code-gen/const-globals-batched-mem.h" #include "compiler/code-gen/declarations.h" +#include "compiler/code-gen/includes.h" #include "compiler/code-gen/namespace.h" +#include "compiler/code-gen/naming.h" #include "compiler/code-gen/raw-data.h" #include "compiler/code-gen/vertex-compiler.h" #include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" +#include "compiler/data/data_ptr.h" #include "compiler/data/function-data.h" #include "compiler/data/src-file.h" +#include "compiler/data/var-data.h" +#include "compiler/data/vertex-adaptor.h" +#include "compiler/inferring/primitive-type.h" #include "compiler/inferring/public.h" +#include "compiler/inferring/type-data.h" +#include "compiler/inferring/var-node.h" +#include "compiler/kphp_assert.h" +#include "compiler/location.h" +#include "compiler/stage.h" +#include "compiler/vertex-meta_op_base.h" struct InitConstVar { VarPtr var; diff --git a/compiler/code-gen/files/function-header.cpp b/compiler/code-gen/files/function-header.cpp index 7076503ccb..eb656db375 100644 --- a/compiler/code-gen/files/function-header.cpp +++ b/compiler/code-gen/files/function-header.cpp @@ -4,6 +4,12 @@ #include "compiler/code-gen/files/function-header.h" +#include +#include +#include +#include + +#include "compiler/code-gen/code-generator.h" #include "compiler/code-gen/common.h" #include "compiler/code-gen/const-globals-batched-mem.h" #include "compiler/code-gen/declarations.h" @@ -11,7 +17,10 @@ #include "compiler/code-gen/includes.h" #include "compiler/code-gen/namespace.h" #include "compiler/code-gen/vertex-compiler.h" +#include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" #include "compiler/data/function-data.h" +#include "compiler/stage.h" FunctionH::FunctionH(FunctionPtr function) : function(function) {} diff --git a/compiler/code-gen/files/function-header.h b/compiler/code-gen/files/function-header.h index 2a2ef35614..36bb902c73 100644 --- a/compiler/code-gen/files/function-header.h +++ b/compiler/code-gen/files/function-header.h @@ -9,6 +9,7 @@ #include "compiler/data/data_ptr.h" struct FunctionH : CodeGenRootCmd { + FunctionPtr function; explicit FunctionH(FunctionPtr function); void compile(CodeGenerator& W) const final; diff --git a/compiler/code-gen/files/function-source.cpp b/compiler/code-gen/files/function-source.cpp index e13f76116d..0919d5d9cf 100644 --- a/compiler/code-gen/files/function-source.cpp +++ b/compiler/code-gen/files/function-source.cpp @@ -4,6 +4,12 @@ #include "compiler/code-gen/files/function-source.h" +#include +#include +#include +#include + +#include "compiler/code-gen/code-generator.h" #include "compiler/code-gen/common.h" #include "compiler/code-gen/const-globals-batched-mem.h" #include "compiler/code-gen/declarations.h" @@ -11,6 +17,9 @@ #include "compiler/code-gen/namespace.h" #include "compiler/code-gen/naming.h" #include "compiler/code-gen/vertex-compiler.h" +#include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" +#include "compiler/data/function-data.h" #include "compiler/stage.h" FunctionCpp::FunctionCpp(FunctionPtr function) diff --git a/compiler/code-gen/files/function-source.h b/compiler/code-gen/files/function-source.h index a1f39db48a..9ab240575d 100644 --- a/compiler/code-gen/files/function-source.h +++ b/compiler/code-gen/files/function-source.h @@ -9,6 +9,7 @@ #include "compiler/data/data_ptr.h" struct FunctionCpp : CodeGenRootCmd { + FunctionPtr function; explicit FunctionCpp(FunctionPtr function); void compile(CodeGenerator& W) const final; diff --git a/compiler/code-gen/files/global-vars-memory-stats.cpp b/compiler/code-gen/files/global-vars-memory-stats.cpp index f5fb8022ff..82b522eff5 100644 --- a/compiler/code-gen/files/global-vars-memory-stats.cpp +++ b/compiler/code-gen/files/global-vars-memory-stats.cpp @@ -4,14 +4,28 @@ #include "compiler/code-gen/files/global-vars-memory-stats.h" +#include +#include +#include +#include + +#include "common/algorithms/find.h" +#include "compiler/code-gen/code-generator.h" #include "compiler/code-gen/common.h" #include "compiler/code-gen/const-globals-batched-mem.h" #include "compiler/code-gen/declarations.h" #include "compiler/code-gen/includes.h" #include "compiler/code-gen/namespace.h" +#include "compiler/code-gen/naming.h" #include "compiler/code-gen/raw-data.h" +#include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" +#include "compiler/data/function-data.h" #include "compiler/data/src-file.h" +#include "compiler/data/var-data.h" +#include "compiler/inferring/primitive-type.h" #include "compiler/inferring/public.h" +#include "compiler/inferring/type-data.h" GlobalVarsMemoryStats::GlobalVarsMemoryStats(const std::vector& all_globals) { for (VarPtr global_var : all_globals) { diff --git a/compiler/code-gen/files/global-vars-memory-stats.h b/compiler/code-gen/files/global-vars-memory-stats.h index 16b6ea2ba3..ce32843461 100644 --- a/compiler/code-gen/files/global-vars-memory-stats.h +++ b/compiler/code-gen/files/global-vars-memory-stats.h @@ -4,11 +4,14 @@ #pragma once +#include + #include "compiler/code-gen/code-gen-root-cmd.h" #include "compiler/code-gen/code-generator.h" #include "compiler/data/data_ptr.h" struct GlobalVarsMemoryStats : CodeGenRootCmd { + explicit GlobalVarsMemoryStats(const std::vector& all_globals); void compile(CodeGenerator& W) const final; diff --git a/compiler/code-gen/files/global-vars-reset.cpp b/compiler/code-gen/files/global-vars-reset.cpp index 14fe28c2f2..261d527a0b 100644 --- a/compiler/code-gen/files/global-vars-reset.cpp +++ b/compiler/code-gen/files/global-vars-reset.cpp @@ -4,12 +4,26 @@ #include "compiler/code-gen/files/global-vars-reset.h" +#include +#include +#include + +#include "common/wrappers/fmt_format.h" +#include "compiler/code-gen/code-generator.h" #include "compiler/code-gen/common.h" #include "compiler/code-gen/const-globals-batched-mem.h" #include "compiler/code-gen/declarations.h" +#include "compiler/code-gen/includes.h" #include "compiler/code-gen/namespace.h" +#include "compiler/code-gen/naming.h" #include "compiler/code-gen/vertex-compiler.h" +#include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" +#include "compiler/data/data_ptr.h" #include "compiler/data/src-file.h" +#include "compiler/data/var-data.h" +#include "compiler/data/vertex-adaptor.h" +#include "compiler/inferring/primitive-type.h" #include "compiler/inferring/public.h" #include "compiler/inferring/type-data.h" #include "compiler/kphp_assert.h" diff --git a/compiler/code-gen/files/init-scripts.cpp b/compiler/code-gen/files/init-scripts.cpp index 9537f3c602..57b3988697 100644 --- a/compiler/code-gen/files/init-scripts.cpp +++ b/compiler/code-gen/files/init-scripts.cpp @@ -5,22 +5,33 @@ #include "compiler/code-gen/files/init-scripts.h" #include +#include #include +#include #include +#include #include "common/algorithms/string-algorithms.h" +#include "compiler/code-gen/code-generator.h" #include "compiler/code-gen/common.h" #include "compiler/code-gen/const-globals-batched-mem.h" #include "compiler/code-gen/declarations.h" #include "compiler/code-gen/files/shape-keys.h" +#include "compiler/code-gen/gen-out-style.h" #include "compiler/code-gen/includes.h" #include "compiler/code-gen/namespace.h" #include "compiler/code-gen/naming.h" #include "compiler/code-gen/raw-data.h" +#include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" +#include "compiler/data/ffi-data.h" +#include "compiler/data/function-data.h" #include "compiler/data/lib-data.h" #include "compiler/data/src-file.h" +#include "compiler/kphp_assert.h" struct StaticInit { + void compile(CodeGenerator& W) const; }; diff --git a/compiler/code-gen/files/init-scripts.h b/compiler/code-gen/files/init-scripts.h index 0258c33bed..bff7c0f662 100644 --- a/compiler/code-gen/files/init-scripts.h +++ b/compiler/code-gen/files/init-scripts.h @@ -11,6 +11,7 @@ #include "compiler/data/data_ptr.h" struct InitScriptsCpp : CodeGenRootCmd { + SrcFilePtr main_file_id; explicit InitScriptsCpp(SrcFilePtr main_file_id); void compile(CodeGenerator& W) const final; diff --git a/compiler/code-gen/files/lib-header.cpp b/compiler/code-gen/files/lib-header.cpp index 630bec32ae..ce5a9ac767 100644 --- a/compiler/code-gen/files/lib-header.cpp +++ b/compiler/code-gen/files/lib-header.cpp @@ -4,12 +4,19 @@ #include "compiler/code-gen/files/lib-header.h" +#include +#include + +#include "compiler/code-gen/code-generator.h" #include "compiler/code-gen/common.h" #include "compiler/code-gen/declarations.h" #include "compiler/code-gen/gen-out-style.h" #include "compiler/code-gen/includes.h" #include "compiler/code-gen/namespace.h" +#include "compiler/code-gen/naming.h" #include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" +#include "compiler/data/function-data.h" #include "compiler/data/lib-data.h" void StaticLibraryRunGlobalHeaderH::compile(CodeGenerator& W) const { diff --git a/compiler/code-gen/files/lib-header.h b/compiler/code-gen/files/lib-header.h index c25c4c8c86..c2ee97f3dd 100644 --- a/compiler/code-gen/files/lib-header.h +++ b/compiler/code-gen/files/lib-header.h @@ -4,10 +4,14 @@ #pragma once +#include + #include "compiler/code-gen/code-gen-root-cmd.h" #include "compiler/code-gen/code-generator.h" +#include "compiler/data/data_ptr.h" struct StaticLibraryRunGlobalHeaderH : CodeGenRootCmd { + void compile(CodeGenerator& W) const final; }; diff --git a/compiler/code-gen/files/shape-keys.cpp b/compiler/code-gen/files/shape-keys.cpp index f0450b1a40..f2f7e09be0 100644 --- a/compiler/code-gen/files/shape-keys.cpp +++ b/compiler/code-gen/files/shape-keys.cpp @@ -5,12 +5,14 @@ #include "compiler/code-gen/files/shape-keys.h" #include +#include #include "compiler/code-gen/code-generator.h" #include "compiler/code-gen/common.h" #include "compiler/code-gen/includes.h" #include "compiler/code-gen/naming.h" #include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" std::string ShapeKeys::get_function_name() noexcept { return "init_shape_demangler"; diff --git a/compiler/code-gen/files/shape-keys.h b/compiler/code-gen/files/shape-keys.h index 31c098e84c..760df6e022 100644 --- a/compiler/code-gen/files/shape-keys.h +++ b/compiler/code-gen/files/shape-keys.h @@ -4,14 +4,16 @@ #pragma once +#include #include #include +#include #include "compiler/code-gen/code-gen-root-cmd.h" class CodeGenerator; - struct ShapeKeys : CodeGenRootCmd { + explicit ShapeKeys(std::map shape_keys_storage) noexcept : shape_keys_storage_(std::move(shape_keys_storage)) {} diff --git a/compiler/code-gen/files/tl2cpp/tl-combinator.cpp b/compiler/code-gen/files/tl2cpp/tl-combinator.cpp index fadc35d332..2ac0a9ffbc 100644 --- a/compiler/code-gen/files/tl2cpp/tl-combinator.cpp +++ b/compiler/code-gen/files/tl2cpp/tl-combinator.cpp @@ -4,9 +4,18 @@ #include "compiler/code-gen/files/tl2cpp/tl-combinator.h" -#include "common/tl/constants/common.h" - +#include +#include +#include + +#include "common/tlo-parsing/tl-objects.h" +#include "common/wrappers/fmt_format.h" +#include "compiler/code-gen/code-generator.h" +#include "compiler/code-gen/common.h" #include "compiler/code-gen/files/tl2cpp/tl-type-expr.h" +#include "compiler/code-gen/files/tl2cpp/tl2cpp-utils.h" +#include "compiler/compiler-core.h" +#include "compiler/kphp_assert.h" namespace tl2cpp { inline std::vector get_not_optional_fields_masks(const vk::tlo_parsing::combinator* constructor) { diff --git a/compiler/code-gen/files/tl2cpp/tl-combinator.h b/compiler/code-gen/files/tl2cpp/tl-combinator.h index a79e1526af..d47399a79b 100644 --- a/compiler/code-gen/files/tl2cpp/tl-combinator.h +++ b/compiler/code-gen/files/tl2cpp/tl-combinator.h @@ -4,8 +4,14 @@ #pragma once +#include +#include +#include + #include "compiler/code-gen/files/tl2cpp/tl2cpp-utils.h" +class CodeGenerator; + namespace tl2cpp { enum class CombinatorPart { LEFT, RIGHT }; diff --git a/compiler/code-gen/files/tl2cpp/tl-constructor.cpp b/compiler/code-gen/files/tl2cpp/tl-constructor.cpp index 5d72378d23..5f40edb764 100644 --- a/compiler/code-gen/files/tl2cpp/tl-constructor.cpp +++ b/compiler/code-gen/files/tl2cpp/tl-constructor.cpp @@ -4,9 +4,18 @@ #include "compiler/code-gen/files/tl2cpp/tl-constructor.h" +#include +#include + +#include "common/algorithms/string-algorithms.h" +#include "common/functional/identity.h" +#include "common/tlo-parsing/tl-objects.h" +#include "compiler/code-gen/code-generator.h" +#include "compiler/code-gen/common.h" #include "compiler/code-gen/files/tl2cpp/tl-combinator.h" #include "compiler/code-gen/files/tl2cpp/tl-template-php-type-helpers.h" #include "compiler/code-gen/naming.h" +#include "compiler/compiler-core.h" namespace tl2cpp { const vk::tlo_parsing::combinator* constructor; diff --git a/compiler/code-gen/files/tl2cpp/tl-constructor.h b/compiler/code-gen/files/tl2cpp/tl-constructor.h index 5acb931ebb..9f4cf7653b 100644 --- a/compiler/code-gen/files/tl2cpp/tl-constructor.h +++ b/compiler/code-gen/files/tl2cpp/tl-constructor.h @@ -4,8 +4,13 @@ #pragma once +#include +#include + #include "compiler/code-gen/files/tl2cpp/tl2cpp-utils.h" +class CodeGenerator; + namespace tl2cpp { struct TlConstructorDecl { const vk::tlo_parsing::combinator* constructor; diff --git a/compiler/code-gen/files/tl2cpp/tl-function.cpp b/compiler/code-gen/files/tl2cpp/tl-function.cpp index f09243c949..c24ce947fa 100644 --- a/compiler/code-gen/files/tl2cpp/tl-function.cpp +++ b/compiler/code-gen/files/tl2cpp/tl-function.cpp @@ -4,8 +4,14 @@ #include "compiler/code-gen/files/tl2cpp/tl-function.h" +#include + +#include "compiler/code-gen/code-generator.h" +#include "compiler/code-gen/common.h" #include "compiler/code-gen/files/tl2cpp/tl-combinator.h" #include "compiler/code-gen/naming.h" +#include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" namespace tl2cpp { void TlFunctionDecl::compile(CodeGenerator& W) const { diff --git a/compiler/code-gen/files/tl2cpp/tl-function.h b/compiler/code-gen/files/tl2cpp/tl-function.h index 1a6dcb3076..c4ba150bd5 100644 --- a/compiler/code-gen/files/tl2cpp/tl-function.h +++ b/compiler/code-gen/files/tl2cpp/tl-function.h @@ -3,7 +3,17 @@ // Distributed under the GPL v3 License, see LICENSE.notice.txt #pragma once +#include +#include +#include + +#include "common/tlo-parsing/tl-objects.h" +#include "common/wrappers/fmt_format.h" #include "compiler/code-gen/files/tl2cpp/tl2cpp-utils.h" +#include "compiler/data/data_ptr.h" +#include "compiler/kphp_assert.h" + +class CodeGenerator; namespace tl2cpp { struct TlFunctionDecl { diff --git a/compiler/code-gen/files/tl2cpp/tl-module.cpp b/compiler/code-gen/files/tl2cpp/tl-module.cpp index e8276a8abc..a3661f9490 100644 --- a/compiler/code-gen/files/tl2cpp/tl-module.cpp +++ b/compiler/code-gen/files/tl2cpp/tl-module.cpp @@ -4,9 +4,18 @@ #include "compiler/code-gen/files/tl2cpp/tl-module.h" +#include + +#include "compiler/code-gen/code-generator.h" +#include "compiler/code-gen/common.h" #include "compiler/code-gen/files/tl2cpp/tl-constructor.h" #include "compiler/code-gen/files/tl2cpp/tl-function.h" #include "compiler/code-gen/files/tl2cpp/tl-type.h" +#include "compiler/code-gen/files/tl2cpp/tl2cpp-utils.h" +#include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" +#include "compiler/data/data_ptr.h" +#include "compiler/kphp_assert.h" namespace tl2cpp { std::unordered_map modules; diff --git a/compiler/code-gen/files/tl2cpp/tl-module.h b/compiler/code-gen/files/tl2cpp/tl-module.h index eed2390050..183c885e6b 100644 --- a/compiler/code-gen/files/tl2cpp/tl-module.h +++ b/compiler/code-gen/files/tl2cpp/tl-module.h @@ -4,11 +4,19 @@ #pragma once +#include +#include #include +#include +#include +#include +#include "common/tlo-parsing/tl-objects.h" #include "compiler/code-gen/files/tl2cpp/tl2cpp-utils.h" #include "compiler/code-gen/includes.h" +class CodeGenerator; + namespace tl2cpp { class Module; diff --git a/compiler/code-gen/files/tl2cpp/tl-type-expr.cpp b/compiler/code-gen/files/tl2cpp/tl-type-expr.cpp index dbd8d1104b..0123866780 100644 --- a/compiler/code-gen/files/tl2cpp/tl-type-expr.cpp +++ b/compiler/code-gen/files/tl2cpp/tl-type-expr.cpp @@ -4,7 +4,21 @@ #include "compiler/code-gen/files/tl2cpp/tl-type-expr.h" +#include +#include +#include +#include + +#include "common/algorithms/string-algorithms.h" +#include "common/functional/identity.h" #include "common/tl/constants/common.h" +#include "common/tlo-parsing/tl-objects.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/string_view.h" +#include "compiler/code-gen/code-generator.h" +#include "compiler/code-gen/common.h" +#include "compiler/code-gen/files/tl2cpp/tl2cpp-utils.h" +#include "compiler/kphp_assert.h" namespace tl2cpp { // Recursively traverse the type expression tree and return pair diff --git a/compiler/code-gen/files/tl2cpp/tl-type-expr.h b/compiler/code-gen/files/tl2cpp/tl-type-expr.h index a821cd22c0..9c6cd7fc80 100644 --- a/compiler/code-gen/files/tl2cpp/tl-type-expr.h +++ b/compiler/code-gen/files/tl2cpp/tl-type-expr.h @@ -4,8 +4,14 @@ #pragma once +#include +#include +#include + #include "compiler/code-gen/files/tl2cpp/tl2cpp-utils.h" +class CodeGenerator; + namespace tl2cpp { std::pair get_full_type_expr_str(vk::tlo_parsing::expr_base* type_expr, const std::string& var_num_access); diff --git a/compiler/code-gen/files/tl2cpp/tl-type.cpp b/compiler/code-gen/files/tl2cpp/tl-type.cpp index 03e13c1b60..8972d19256 100644 --- a/compiler/code-gen/files/tl2cpp/tl-type.cpp +++ b/compiler/code-gen/files/tl2cpp/tl-type.cpp @@ -4,8 +4,18 @@ #include "compiler/code-gen/files/tl2cpp/tl-type.h" +#include +#include +#include + +#include "common/algorithms/string-algorithms.h" +#include "common/functional/identity.h" +#include "common/wrappers/fmt_format.h" +#include "compiler/code-gen/code-generator.h" +#include "compiler/code-gen/common.h" #include "compiler/code-gen/files/tl2cpp/tl-template-php-type-helpers.h" #include "compiler/code-gen/naming.h" +#include "compiler/kphp_assert.h" namespace tl2cpp { using vk::tlo_parsing::FLAG_DEFAULT_CONSTRUCTOR; diff --git a/compiler/code-gen/files/tl2cpp/tl-type.h b/compiler/code-gen/files/tl2cpp/tl-type.h index 2d6a3a536b..3323e56eec 100644 --- a/compiler/code-gen/files/tl2cpp/tl-type.h +++ b/compiler/code-gen/files/tl2cpp/tl-type.h @@ -5,8 +5,16 @@ #pragma once #include +#include +#include +#include "common/tl2php/php-classes.h" +#include "common/tlo-parsing/tl-objects.h" #include "compiler/code-gen/files/tl2cpp/tl2cpp-utils.h" +#include "compiler/compiler-core.h" +#include "compiler/data/data_ptr.h" + +class CodeGenerator; namespace tl2cpp { // Generated code example: diff --git a/compiler/code-gen/files/tl2cpp/tl2cpp-utils.cpp b/compiler/code-gen/files/tl2cpp/tl2cpp-utils.cpp index fbce961191..0cb7afdb97 100644 --- a/compiler/code-gen/files/tl2cpp/tl2cpp-utils.cpp +++ b/compiler/code-gen/files/tl2cpp/tl2cpp-utils.cpp @@ -4,9 +4,29 @@ #include "compiler/code-gen/files/tl2cpp/tl2cpp-utils.h" -#include "common/tl/constants/common.h" - +#include +#include +#include +#include +#include +#include +#include + +#include "common/algorithms/find.h" +#include "common/algorithms/string-algorithms.h" +#include "common/functional/identity.h" #include "common/php-functions.h" +#include "common/tl/constants/common.h" +#include "common/tl2php/php-classes.h" +#include "common/tlo-parsing/tl-objects.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/string_view.h" +#include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" +#include "compiler/data/class-data.h" +#include "compiler/kphp_assert.h" +#include "compiler/tl-classes.h" +#include "compiler/utils/string-utils.h" namespace tl2cpp { const std::string T_TYPE = "Type"; diff --git a/compiler/code-gen/files/tl2cpp/tl2cpp-utils.h b/compiler/code-gen/files/tl2cpp/tl2cpp-utils.h index f0cb654f2d..767c8abec8 100644 --- a/compiler/code-gen/files/tl2cpp/tl2cpp-utils.h +++ b/compiler/code-gen/files/tl2cpp/tl2cpp-utils.h @@ -4,8 +4,14 @@ #pragma once -#include "common/tlo-parsing/tl-objects.h" +#include +#include +#include +#include +#include +#include +#include "common/tlo-parsing/tl-objects.h" #include "compiler/code-gen/common.h" #include "compiler/compiler-core.h" #include "compiler/data/class-data.h" diff --git a/compiler/code-gen/files/tl2cpp/tl2cpp.cpp b/compiler/code-gen/files/tl2cpp/tl2cpp.cpp index 5e6be6324a..a32f6b3dc6 100644 --- a/compiler/code-gen/files/tl2cpp/tl2cpp.cpp +++ b/compiler/code-gen/files/tl2cpp/tl2cpp.cpp @@ -4,13 +4,34 @@ #include "compiler/code-gen/files/tl2cpp/tl2cpp.h" +#include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include "common/tlo-parsing/tl-objects.h" #include "common/tlo-parsing/tlo-parsing.h" +#include "common/wrappers/fmt_format.h" +#include "compiler/code-gen/code-generator.h" +#include "compiler/code-gen/common.h" #include "compiler/code-gen/files/tl2cpp/tl-module.h" #include "compiler/code-gen/files/tl2cpp/tl2cpp-utils.h" +#include "compiler/code-gen/includes.h" #include "compiler/code-gen/naming.h" #include "compiler/code-gen/raw-data.h" +#include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" +#include "compiler/data/data_ptr.h" +#include "compiler/kphp_assert.h" /* There are 3 important kinds of types (each with its own store and fetch methods): * 1) Function - an entry point for every TL query. We start de\serialization of every query from here. diff --git a/compiler/code-gen/files/tracing-autogen.cpp b/compiler/code-gen/files/tracing-autogen.cpp index 681be561a1..2a636b66b1 100644 --- a/compiler/code-gen/files/tracing-autogen.cpp +++ b/compiler/code-gen/files/tracing-autogen.cpp @@ -5,14 +5,22 @@ #include "compiler/code-gen/files/tracing-autogen.h" #include +#include +#include #include +#include +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/string_view.h" #include "compiler/code-gen/code-generator.h" #include "compiler/code-gen/common.h" #include "compiler/code-gen/includes.h" #include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" #include "compiler/data/function-data.h" #include "compiler/data/kphp-tracing-tags.h" +#include "compiler/kphp_assert.h" +#include "compiler/utils/string-utils.h" std::vector TracingAutogen::all_with_aggregate; std::vector TracingAutogen::all_aggregate_names; diff --git a/compiler/code-gen/files/tracing-autogen.h b/compiler/code-gen/files/tracing-autogen.h index ea8b4ed35a..14f459767c 100644 --- a/compiler/code-gen/files/tracing-autogen.h +++ b/compiler/code-gen/files/tracing-autogen.h @@ -7,7 +7,9 @@ #include #include +#include "common/wrappers/string_view.h" #include "compiler/code-gen/code-gen-root-cmd.h" +#include "compiler/data/data_ptr.h" class CodeGenerator; class KphpTracingDeclarationMixin; diff --git a/compiler/code-gen/files/type-tagger.cpp b/compiler/code-gen/files/type-tagger.cpp index 581c2698a9..7f41d25c58 100644 --- a/compiler/code-gen/files/type-tagger.cpp +++ b/compiler/code-gen/files/type-tagger.cpp @@ -4,15 +4,22 @@ #include "compiler/code-gen/files/type-tagger.h" +#include +#include +#include #include #include +#include #include "common/algorithms/hashes.h" +#include "common/wrappers/fmt_format.h" #include "compiler/code-gen/code-generator.h" #include "compiler/code-gen/common.h" +#include "compiler/code-gen/gen-out-style.h" #include "compiler/code-gen/includes.h" #include "compiler/code-gen/naming.h" #include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" #include "compiler/inferring/type-data.h" #include "compiler/kphp_assert.h" diff --git a/compiler/code-gen/files/type-tagger.h b/compiler/code-gen/files/type-tagger.h index 2ba9fd0f82..a1aa790104 100644 --- a/compiler/code-gen/files/type-tagger.h +++ b/compiler/code-gen/files/type-tagger.h @@ -4,6 +4,7 @@ #pragma once +#include #include #include #include diff --git a/compiler/code-gen/includes.cpp b/compiler/code-gen/includes.cpp index c17b1cadc8..985c9cba3e 100644 --- a/compiler/code-gen/includes.cpp +++ b/compiler/code-gen/includes.cpp @@ -4,12 +4,28 @@ #include "compiler/code-gen/includes.h" +#include +#include +#include +#include + +#include "auto/compiler/vertex/vertex-op_func_call.h" +#include "auto/compiler/vertex/vertex-op_var.h" +#include "auto/compiler/vertex/vertex-types.h" +#include "compiler/code-gen/code-generator.h" #include "compiler/code-gen/common.h" #include "compiler/code-gen/declarations.h" #include "compiler/code-gen/namespace.h" +#include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" #include "compiler/data/class-data.h" +#include "compiler/data/ffi-data.h" #include "compiler/data/function-data.h" #include "compiler/data/var-data.h" +#include "compiler/inferring/type-data.h" +#include "compiler/inferring/var-node.h" +#include "compiler/kphp_assert.h" +#include "compiler/vertex-meta_op_base.h" ExternInclude::ExternInclude(vk::string_view file_name) : file_name(file_name) { diff --git a/compiler/code-gen/includes.h b/compiler/code-gen/includes.h index 92c4b9b53d..95ff85354b 100644 --- a/compiler/code-gen/includes.h +++ b/compiler/code-gen/includes.h @@ -4,7 +4,15 @@ #pragma once +#include +#include +#include +#include +#include + +#include "common/wrappers/string_view.h" #include "compiler/code-gen/code-generator.h" +#include "compiler/data/data_ptr.h" #include "compiler/data/vertex-adaptor.h" #include "compiler/inferring/type-data.h" diff --git a/compiler/code-gen/raw-data.cpp b/compiler/code-gen/raw-data.cpp index b66bd1a4c8..fffb1112b4 100644 --- a/compiler/code-gen/raw-data.cpp +++ b/compiler/code-gen/raw-data.cpp @@ -4,8 +4,24 @@ #include "compiler/code-gen/raw-data.h" +#include +#include +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "common/algorithms/find.h" #include "compiler/code-gen/vertex-compiler.h" #include "compiler/const-manipulations.h" +#include "compiler/data/var-data.h" +#include "compiler/data/vertex-adaptor.h" +#include "compiler/inferring/expr-node.h" +#include "compiler/inferring/primitive-type.h" +#include "compiler/inferring/type-data.h" +#include "compiler/stage.h" +#include "compiler/vertex-meta_op_base.h" +#include "compiler/vertex-util.h" +#include "compiler/vertex.h" void RawString::compile(CodeGenerator& W) const { W << "\""; diff --git a/compiler/code-gen/raw-data.h b/compiler/code-gen/raw-data.h index b1beb5012c..2246f3528c 100644 --- a/compiler/code-gen/raw-data.h +++ b/compiler/code-gen/raw-data.h @@ -4,13 +4,19 @@ #pragma once +#include #include +#include #include +#include #include "common/php-functions.h" +#include "common/wrappers/string_view.h" #include "compiler/code-gen/code-generator.h" #include "compiler/code-gen/common.h" +#include "compiler/data/data_ptr.h" #include "compiler/data/var-data.h" +#include "compiler/kphp_assert.h" #include "compiler/vertex.h" struct DepLevelContainer { diff --git a/compiler/code-gen/vertex-compiler.cpp b/compiler/code-gen/vertex-compiler.cpp index c9278f8ee9..ee9bd862a3 100644 --- a/compiler/code-gen/vertex-compiler.cpp +++ b/compiler/code-gen/vertex-compiler.cpp @@ -4,12 +4,31 @@ #include "compiler/code-gen/vertex-compiler.h" +#include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include #include #include +#include +#include +#include +#include "common/algorithms/find.h" #include "common/containers/final_action.h" +#include "common/php-functions.h" #include "common/wrappers/field_getter.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" #include "common/wrappers/likely.h" #include "common/wrappers/string_view.h" #include "common/wrappers/to_underlying.h" @@ -22,6 +41,7 @@ #include "compiler/code-gen/naming.h" #include "compiler/code-gen/raw-data.h" #include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" #include "compiler/data/class-data.h" #include "compiler/data/data_ptr.h" #include "compiler/data/define-data.h" @@ -29,11 +49,18 @@ #include "compiler/data/function-data.h" #include "compiler/data/src-file.h" #include "compiler/data/var-data.h" +#include "compiler/ffi/ffi_types.h" +#include "compiler/inferring/expr-node.h" #include "compiler/inferring/primitive-type.h" #include "compiler/inferring/public.h" #include "compiler/inferring/type-data.h" +#include "compiler/kphp_assert.h" +#include "compiler/location.h" #include "compiler/name-gen.h" +#include "compiler/operation.h" +#include "compiler/stage.h" #include "compiler/type-hint.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" #include "compiler/vertex.h" diff --git a/compiler/code-gen/vertex-compiler.h b/compiler/code-gen/vertex-compiler.h index d1cbb28133..8b0a66602e 100644 --- a/compiler/code-gen/vertex-compiler.h +++ b/compiler/code-gen/vertex-compiler.h @@ -4,6 +4,7 @@ #pragma once +#include "auto/compiler/vertex/vertex-types.h" #include "compiler/code-gen/code-generator.h" #include "compiler/data/vertex-adaptor.h" diff --git a/compiler/code-gen/writer-data.cpp b/compiler/code-gen/writer-data.cpp index fcdd64273a..ff70245899 100644 --- a/compiler/code-gen/writer-data.cpp +++ b/compiler/code-gen/writer-data.cpp @@ -4,8 +4,16 @@ #include "compiler/code-gen/writer-data.h" +#include +#include +#include +#include +#include + #include "common/wrappers/fmt_format.h" +#include "common/wrappers/string_view.h" #include "compiler/data/src-file.h" +#include "compiler/kphp_assert.h" #include "compiler/stage.h" WriterData::WriterData(File* file, bool compile_with_crc) diff --git a/compiler/code-gen/writer-data.h b/compiler/code-gen/writer-data.h index 549fa2f6e0..fc68c711f0 100644 --- a/compiler/code-gen/writer-data.h +++ b/compiler/code-gen/writer-data.h @@ -4,6 +4,7 @@ #pragma once +#include #include #include #include diff --git a/compiler/compiler-core.cpp b/compiler/compiler-core.cpp index ff38c06f09..ce75891626 100644 --- a/compiler/compiler-core.cpp +++ b/compiler/compiler-core.cpp @@ -4,15 +4,26 @@ #include "compiler/compiler-core.h" +#include #include +#include #include +#include +#include #include +#include +#include +#include +#include +#include "auto/compiler/vertex/vertex-types.h" #include "common/algorithms/contains.h" #include "common/smart_ptrs/unique_ptr_with_delete_function.h" +#include "common/wrappers/fmt_format.h" #include "common/wrappers/mkdir_recursive.h" - +#include "compiler/compiler-settings.h" #include "compiler/const-manipulations.h" +#include "compiler/data/class-data.h" #include "compiler/data/composer-json-data.h" #include "compiler/data/define-data.h" #include "compiler/data/ffi-data.h" @@ -22,8 +33,17 @@ #include "compiler/data/src-dir.h" #include "compiler/data/src-file.h" #include "compiler/index.h" +#include "compiler/inferring/var-node.h" +#include "compiler/kphp_assert.h" +#include "compiler/location.h" #include "compiler/name-gen.h" #include "compiler/runtime_build_info.h" +#include "compiler/stage.h" +#include "compiler/threading/data-stream.h" +#include "compiler/threading/profiler.h" +#include "compiler/utils/string-utils.h" +#include "compiler/vertex-meta_op_base.h" +#include "compiler/vertex.h" namespace { diff --git a/compiler/compiler-core.h b/compiler/compiler-core.h index cdec4ceeba..bfdbb6d113 100644 --- a/compiler/compiler-core.h +++ b/compiler/compiler-core.h @@ -7,20 +7,29 @@ /*** Core ***/ //Consists mostly of functions that require synchronization +#include +#include #include +#include +#include +#include +#include #include #include "common/algorithms/hashes.h" - +#include "common/wrappers/string_view.h" #include "compiler/compiler-settings.h" #include "compiler/composer.h" #include "compiler/data/data_ptr.h" #include "compiler/data/ffi-data.h" +#include "compiler/data/var-data.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-colors.h" #include "compiler/index.h" #include "compiler/stats.h" #include "compiler/threading/data-stream.h" #include "compiler/threading/hash-table.h" +#include "compiler/threading/locks.h" #include "compiler/tl-classes.h" enum class OutputMode { diff --git a/compiler/compiler-settings.cpp b/compiler/compiler-settings.cpp index 282a11b5d9..2eab8d9f83 100644 --- a/compiler/compiler-settings.cpp +++ b/compiler/compiler-settings.cpp @@ -4,25 +4,33 @@ #include "compiler/compiler-settings.h" +#include +#include #include +#include +#include +#include #include +#include #include +#include #include #include -#include - -#include "openssl/sha.h" #include "common/algorithms/contains.h" #include "common/algorithms/find.h" +#include "common/algorithms/string-algorithms.h" +#include "common/functional/identity.h" #include "common/version-string.h" #include "common/wrappers/fmt_format.h" #include "common/wrappers/mkdir_recursive.h" +#include "common/wrappers/string_view.h" #include "common/wrappers/to_array.h" - +#include "compiler/kphp_assert.h" #include "compiler/stage.h" #include "compiler/threading/tls.h" #include "compiler/utils/string-utils.h" +#include "openssl/sha.h" void KphpRawOption::init(const char* env, std::string default_value, std::vector choices) noexcept { if (char* val = getenv(env)) { diff --git a/compiler/compiler-settings.h b/compiler/compiler-settings.h index 097210fcad..fc2aa2c635 100644 --- a/compiler/compiler-settings.h +++ b/compiler/compiler-settings.h @@ -6,8 +6,11 @@ #include #include +#include #include #include +#include +#include #include #include "common/mixin/not_copyable.h" diff --git a/compiler/compiler.cpp b/compiler/compiler.cpp index 043d1cfeed..293233bab2 100644 --- a/compiler/compiler.cpp +++ b/compiler/compiler.cpp @@ -4,27 +4,46 @@ #include "compiler/compiler.h" +#include +#include +#include +#include +#include +#include #include +#include #include #include #include #include #include #include +#include #include #include +#include #include +#include +#include +#include #include "common/algorithms/hashes.h" #include "common/crc32.h" #include "common/dl-utils-lite.h" +#include "common/smart_ptrs/singleton.h" #include "common/type_traits/function_traits.h" #include "common/version-string.h" - #include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" #include "compiler/cpp-dest-dir-initializer.h" +#include "compiler/data/data_ptr.h" +#include "compiler/function-pass.h" +#include "compiler/index.h" +#include "compiler/inferring/multi-key.h" +#include "compiler/inferring/type-data.h" #include "compiler/lexer.h" #include "compiler/make/make.h" +#include "compiler/operation.h" #include "compiler/pipes/analyze-performance.h" #include "compiler/pipes/analyzer.h" #include "compiler/pipes/array-access-transform.h" @@ -32,6 +51,7 @@ #include "compiler/pipes/calc-bad-vars.h" #include "compiler/pipes/calc-const-types.h" #include "compiler/pipes/calc-empty-functions.h" +#include "compiler/pipes/calc-func-dep.h" #include "compiler/pipes/calc-locations.h" #include "compiler/pipes/calc-real-defines-values.h" #include "compiler/pipes/calc-rl.h" @@ -94,9 +114,14 @@ #include "compiler/pipes/write-files.h" #include "compiler/scheduler/constructor.h" #include "compiler/scheduler/one-thread-scheduler.h" +#include "compiler/scheduler/pipe.h" #include "compiler/scheduler/pipe_with_progress.h" +#include "compiler/scheduler/scheduler-base.h" #include "compiler/scheduler/scheduler.h" #include "compiler/stage.h" +#include "compiler/stats.h" +#include "compiler/threading/data-stream.h" +#include "compiler/threading/profiler.h" class lockf_wrapper { std::string locked_filename_; diff --git a/compiler/composer.cpp b/compiler/composer.cpp index 25772b8e3b..ef38ea33dd 100644 --- a/compiler/composer.cpp +++ b/compiler/composer.cpp @@ -4,11 +4,17 @@ #include "compiler/composer.h" +#include +#include +#include +#include +#include + #include "common/algorithms/contains.h" #include "common/wrappers/fmt_format.h" - #include "compiler/compiler-core.h" #include "compiler/data/composer-json-data.h" +#include "compiler/data/data_ptr.h" #include "compiler/kphp_assert.h" static bool file_exists(const std::string& filename) { diff --git a/compiler/composer.h b/compiler/composer.h index 8c15366885..3ea7983783 100644 --- a/compiler/composer.h +++ b/compiler/composer.h @@ -4,6 +4,7 @@ #pragma once +#include #include #include #include diff --git a/compiler/cpp-dest-dir-initializer.cpp b/compiler/cpp-dest-dir-initializer.cpp index 029f451327..8c38d6cbe4 100644 --- a/compiler/cpp-dest-dir-initializer.cpp +++ b/compiler/cpp-dest-dir-initializer.cpp @@ -4,7 +4,15 @@ #include "compiler/cpp-dest-dir-initializer.h" +#include + #include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" +#include "compiler/data/data_ptr.h" +#include "compiler/kphp_assert.h" +#include "compiler/stage.h" +#include "compiler/threading/profiler.h" +#include "compiler/threading/thread-id.h" void CppDestDirInitializer::initialize_sync() noexcept { const char* description = "Init cpp dest dir"; diff --git a/compiler/cpp-dest-dir-initializer.h b/compiler/cpp-dest-dir-initializer.h index 866885706c..52c63f70b1 100644 --- a/compiler/cpp-dest-dir-initializer.h +++ b/compiler/cpp-dest-dir-initializer.h @@ -4,6 +4,7 @@ #pragma once +#include #include #include @@ -11,6 +12,7 @@ #include "common/smart_ptrs/singleton.h" class CppDestDirInitializer : vk::not_copyable { + public: friend class vk::singleton; diff --git a/compiler/data/class-data.cpp b/compiler/data/class-data.cpp index 780e433f1e..392686cd48 100644 --- a/compiler/data/class-data.cpp +++ b/compiler/data/class-data.cpp @@ -4,21 +4,35 @@ #include "compiler/data/class-data.h" +#include +#include +#include +#include #include #include #include "common/termformat/termformat.h" +#include "common/wrappers/fmt_format.h" #include "common/wrappers/string_view.h" - #include "compiler/compiler-core.h" +#include "compiler/data/class-member-modifiers.h" #include "compiler/data/define-data.h" #include "compiler/data/function-data.h" +#include "compiler/data/function-modifiers.h" #include "compiler/data/src-file.h" +#include "compiler/data/var-data.h" #include "compiler/inferring/type-data.h" +#include "compiler/inferring/var-node.h" +#include "compiler/kphp_assert.h" #include "compiler/name-gen.h" +#include "compiler/operation.h" +#include "compiler/phpdoc.h" +#include "compiler/threading/data-stream.h" #include "compiler/type-hint.h" #include "compiler/utils/string-utils.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" +#include "compiler/vertex.h" const char* ClassData::NAME_OF_VIRT_CLONE = "__virt_clone$"; const char* ClassData::NAME_OF_CLONE = "__clone"; diff --git a/compiler/data/class-data.h b/compiler/data/class-data.h index 051f1f3875..23f3e83fd6 100644 --- a/compiler/data/class-data.h +++ b/compiler/data/class-data.h @@ -4,14 +4,23 @@ #pragma once +#include #include #include #include +#include +#include +#include +#include +#include "auto/compiler/vertex/vertex-types.h" #include "common/algorithms/compare.h" #include "common/algorithms/hashes.h" +#include "common/wrappers/string_view.h" #include "compiler/data/class-members.h" #include "compiler/data/class-modifiers.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/debug.h" #include "compiler/ffi/ffi_types.h" #include "compiler/location.h" @@ -22,9 +31,13 @@ struct FFIClassDataMixin; struct FFIScopeDataMixin; +class PhpDocComment; +class TypeData; +class TypeHint; + namespace kphp_json { class KphpJsonTagList; -} +} // namespace kphp_json enum class SubtreeImmutableType { immutable, not_immutable, not_visited }; diff --git a/compiler/data/class-members.cpp b/compiler/data/class-members.cpp index 8f7054ee01..4c47b06ace 100644 --- a/compiler/data/class-members.cpp +++ b/compiler/data/class-members.cpp @@ -4,17 +4,25 @@ #include "compiler/data/class-members.h" +#include +#include +#include + #include "common/algorithms/contains.h" #include "common/algorithms/hashes.h" - +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" #include "compiler/compiler-core.h" #include "compiler/data/class-data.h" #include "compiler/data/function-data.h" +#include "compiler/data/function-modifiers.h" #include "compiler/data/src-file.h" #include "compiler/data/var-data.h" #include "compiler/inferring/public.h" +#include "compiler/kphp_assert.h" #include "compiler/name-gen.h" #include "compiler/phpdoc.h" +#include "compiler/stage.h" #include "compiler/type-hint.h" #include "compiler/utils/string-utils.h" #include "compiler/vertex.h" diff --git a/compiler/data/class-members.h b/compiler/data/class-members.h index 462c8fd137..4fc9039a37 100644 --- a/compiler/data/class-members.h +++ b/compiler/data/class-members.h @@ -20,20 +20,28 @@ */ #pragma once +#include #include #include #include #include +#include #include +#include "auto/compiler/vertex/vertex-types.h" #include "common/type_traits/function_traits.h" - +#include "common/wrappers/string_view.h" +#include "compiler/data/class-member-modifiers.h" #include "compiler/data/data_ptr.h" #include "compiler/data/field-modifiers.h" #include "compiler/data/function-modifiers.h" #include "compiler/data/vertex-adaptor.h" class TypeData; +class ClassData; +class PhpDocComment; +class TypeHint; + class ClassMembersContainer; namespace kphp_json { class KphpJsonTagList; diff --git a/compiler/data/composer-json-data.cpp b/compiler/data/composer-json-data.cpp index 99908a3f13..0d7b05d040 100644 --- a/compiler/data/composer-json-data.cpp +++ b/compiler/data/composer-json-data.cpp @@ -4,11 +4,18 @@ #include "compiler/data/composer-json-data.h" -#include "yaml-cpp/yaml.h" +#include +#include +#include +#include +#include "common/wrappers/fmt_format.h" #include "compiler/compiler-core.h" #include "compiler/data/src-dir.h" #include "compiler/data/src-file.h" +#include "compiler/kphp_assert.h" +#include "compiler/stage.h" +#include "yaml-cpp/yaml.h" [[gnu::cold]] static void fire_json_error(ComposerJsonPtr inside_j, const std::string& reason, int line) { inside_j->json_file->load(); // load a file from disk, so that error message in console outputs a line diff --git a/compiler/data/define-data.cpp b/compiler/data/define-data.cpp index 9585264cf1..bec5ac2815 100644 --- a/compiler/data/define-data.cpp +++ b/compiler/data/define-data.cpp @@ -4,7 +4,11 @@ #include "compiler/data/define-data.h" +#include + +#include "common/wrappers/string_view.h" #include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" #include "compiler/data/src-file.h" DefineData::DefineData() diff --git a/compiler/data/define-data.h b/compiler/data/define-data.h index dfca3f13f9..84197896b3 100644 --- a/compiler/data/define-data.h +++ b/compiler/data/define-data.h @@ -4,15 +4,18 @@ #pragma once +#include + +#include "auto/compiler/vertex/vertex-types.h" #include "common/algorithms/find.h" #include "common/mixin/not_copyable.h" - #include "compiler/data/class-member-modifiers.h" #include "compiler/data/data_ptr.h" #include "compiler/data/vertex-adaptor.h" #include "compiler/debug.h" class DefineData : private vk::not_copyable { + DEBUG_STRING_METHOD { return name; } diff --git a/compiler/data/ffi-data.cpp b/compiler/data/ffi-data.cpp index 0ebd8bd2f0..f5316f2b7a 100644 --- a/compiler/data/ffi-data.cpp +++ b/compiler/data/ffi-data.cpp @@ -4,8 +4,16 @@ #include "compiler/data/ffi-data.h" +#include "auto/compiler/vertex/vertex-op_func_call.h" #include "common/algorithms/contains.h" +#include "compiler/compiler-core.h" +#include "compiler/data/class-data.h" #include "compiler/data/function-data.h" +#include "compiler/data/vertex-adaptor.h" +#include "compiler/inferring/primitive-type.h" +#include "compiler/inferring/type-data.h" +#include "compiler/operation.h" +#include "compiler/threading/data-stream.h" #include "compiler/type-hint.h" static std::vector make_builtin_types() { diff --git a/compiler/data/ffi-data.h b/compiler/data/ffi-data.h index c1b39ce823..56c03573a2 100644 --- a/compiler/data/ffi-data.h +++ b/compiler/data/ffi-data.h @@ -4,11 +4,30 @@ #pragma once +#include +#include +#include +#include +#include #include +#include +#include +#include #include +#include "auto/compiler/vertex/vertex-types.h" +#include "common/wrappers/string_view.h" #include "compiler/data/class-data.h" +#include "compiler/data/data_ptr.h" #include "compiler/ffi/ffi_types.h" +#include "compiler/kphp_assert.h" +#include "compiler/location.h" + +class TypeHint; +template +class VertexAdaptor; +template +class DataStream; // FFI symbol is an extern variable or function information carrier struct FFISymbol { diff --git a/compiler/data/function-data.cpp b/compiler/data/function-data.cpp index db22df3055..8d3e7a291f 100644 --- a/compiler/data/function-data.cpp +++ b/compiler/data/function-data.cpp @@ -4,9 +4,20 @@ #include "compiler/data/function-data.h" -#include "common/termformat/termformat.h" +#include +#include +#include +#include +#include +#include +#include #include "common/algorithms/contains.h" +#include "common/algorithms/string-algorithms.h" +#include "common/functional/identity.h" +#include "common/termformat/termformat.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" #include "compiler/compiler-core.h" #include "compiler/data/class-data.h" #include "compiler/data/generics-mixins.h" @@ -14,7 +25,13 @@ #include "compiler/data/src-file.h" #include "compiler/data/var-data.h" #include "compiler/inferring/public.h" +#include "compiler/kphp_assert.h" +#include "compiler/operation.h" +#include "compiler/stage.h" +#include "compiler/threading/data-stream.h" +#include "compiler/threading/profiler.h" #include "compiler/type-hint.h" +#include "compiler/utils/string-utils.h" #include "compiler/vertex.h" FunctionPtr FunctionData::create_function(std::string name, VertexAdaptor root, func_type_t type) { diff --git a/compiler/data/function-data.h b/compiler/data/function-data.h index b462798c87..f8cfe82e08 100644 --- a/compiler/data/function-data.h +++ b/compiler/data/function-data.h @@ -4,15 +4,23 @@ #pragma once +#include +#include +#include #include #include #include #include +#include +#include +#include +#include "auto/compiler/vertex/vertex-op_func_param_list.h" #include "auto/compiler/vertex/vertex-op_function.h" +#include "auto/compiler/vertex/vertex-types.h" #include "common/mixin/not_copyable.h" #include "common/wrappers/copyable-atomic.h" - +#include "common/wrappers/string_view.h" #include "compiler/class-assumptions.h" #include "compiler/data/class-members.h" #include "compiler/data/data_ptr.h" @@ -22,11 +30,15 @@ #include "compiler/debug.h" #include "compiler/function-colors.h" #include "compiler/inferring/var-node.h" +#include "compiler/location.h" #include "compiler/threading/data-stream.h" #include "compiler/vertex-meta_op_base.h" class GenericsDeclarationMixin; class KphpTracingDeclarationMixin; +class GenericsInstantiationMixin; +class PhpDocComment; +class TypeHint; class FunctionData { DEBUG_STRING_METHOD { diff --git a/compiler/data/generics-mixins.cpp b/compiler/data/generics-mixins.cpp index 5ce256dc3d..071fb8e802 100644 --- a/compiler/data/generics-mixins.cpp +++ b/compiler/data/generics-mixins.cpp @@ -4,12 +4,26 @@ #include "compiler/data/generics-mixins.h" +#include +#include +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "common/algorithms/string-algorithms.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/string_view.h" #include "compiler/data/function-data.h" +#include "compiler/kphp_assert.h" #include "compiler/lexer.h" #include "compiler/name-gen.h" +#include "compiler/operation.h" #include "compiler/phpdoc.h" +#include "compiler/token.h" #include "compiler/type-hint.h" #include "compiler/utils/string-utils.h" +#include "compiler/vertex-meta_op_base.h" +#include "compiler/vertex.h" /* * Generic functions are functions marked with @kphp-generic, which expresses `f` with phpdoc at declaration. diff --git a/compiler/data/generics-mixins.h b/compiler/data/generics-mixins.h index 9840ac2844..5f3ef3f75a 100644 --- a/compiler/data/generics-mixins.h +++ b/compiler/data/generics-mixins.h @@ -4,14 +4,21 @@ #pragma once +#include #include +#include #include +#include #include #include "common/wrappers/string_view.h" #include "compiler/data/data_ptr.h" #include "compiler/data/vertex-adaptor.h" #include "compiler/debug.h" +#include "compiler/location.h" + +class PhpDocComment; +class TypeHint; // see the .cpp file for detailed comments of how do generics work diff --git a/compiler/data/kphp-json-tags.cpp b/compiler/data/kphp-json-tags.cpp index 33adde89de..317f1c858e 100644 --- a/compiler/data/kphp-json-tags.cpp +++ b/compiler/data/kphp-json-tags.cpp @@ -4,18 +4,34 @@ #include "compiler/data/kphp-json-tags.h" +#include #include - +#include +#include +#include +#include +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "common/algorithms/compare.h" +#include "common/algorithms/find.h" +#include "common/algorithms/hashes.h" #include "common/algorithms/string-algorithms.h" #include "common/wrappers/fmt_format.h" - +#include "compiler/compiler-core.h" #include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" +#include "compiler/data/field-modifiers.h" #include "compiler/data/var-data.h" +#include "compiler/data/vertex-adaptor.h" +#include "compiler/inferring/primitive-type.h" #include "compiler/kphp_assert.h" #include "compiler/name-gen.h" #include "compiler/phpdoc.h" #include "compiler/type-hint.h" #include "compiler/utils/string-utils.h" +#include "compiler/vertex-meta_op_base.h" /* * JsonEncoder::encode($obj) and JsonEncode::decode($json_str, Obj::class) are controlled by @kphp-json tags. diff --git a/compiler/data/kphp-json-tags.h b/compiler/data/kphp-json-tags.h index 9043828a74..59513451e3 100644 --- a/compiler/data/kphp-json-tags.h +++ b/compiler/data/kphp-json-tags.h @@ -11,6 +11,7 @@ #include "compiler/data/data_ptr.h" struct ClassMemberInstanceField; +class PhpDocComment; namespace kphp_json { diff --git a/compiler/data/kphp-tracing-tags.cpp b/compiler/data/kphp-tracing-tags.cpp index 6f32acf089..8135205c38 100644 --- a/compiler/data/kphp-tracing-tags.cpp +++ b/compiler/data/kphp-tracing-tags.cpp @@ -4,10 +4,16 @@ #include "compiler/data/kphp-tracing-tags.h" +#include +#include + #include "common/algorithms/string-algorithms.h" +#include "common/wrappers/fmt_format.h" #include "compiler/data/class-data.h" #include "compiler/data/function-data.h" #include "compiler/data/src-file.h" +#include "compiler/kphp_assert.h" +#include "compiler/stage.h" int KphpTracingDeclarationMixin::parse_level_attr(vk::string_view beg, size_t& pos_end) { int level = 0; diff --git a/compiler/data/kphp-tracing-tags.h b/compiler/data/kphp-tracing-tags.h index 10a0a5a9a7..94038a59e6 100644 --- a/compiler/data/kphp-tracing-tags.h +++ b/compiler/data/kphp-tracing-tags.h @@ -4,8 +4,10 @@ #pragma once +#include #include #include +#include #include "common/wrappers/string_view.h" #include "compiler/data/data_ptr.h" diff --git a/compiler/data/lib-data.cpp b/compiler/data/lib-data.cpp index c79283e900..00b12bcac1 100644 --- a/compiler/data/lib-data.cpp +++ b/compiler/data/lib-data.cpp @@ -4,8 +4,12 @@ #include "compiler/data/lib-data.h" +#include +#include + #include "common/wrappers/string_view.h" #include "compiler/data/src-file.h" +#include "compiler/kphp_assert.h" #include "compiler/stage.h" namespace { diff --git a/compiler/data/modulite-data.cpp b/compiler/data/modulite-data.cpp index dcf37e84cd..1842e8a056 100644 --- a/compiler/data/modulite-data.cpp +++ b/compiler/data/modulite-data.cpp @@ -4,18 +4,28 @@ #include "compiler/data/modulite-data.h" -#include "yaml-cpp/yaml.h" +#include +#include +#include +#include "common/algorithms/compare.h" #include "common/algorithms/contains.h" +#include "common/termformat/termformat.h" +#include "common/wrappers/fmt_format.h" #include "common/wrappers/likely.h" - #include "compiler/compiler-core.h" +#include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" #include "compiler/data/composer-json-data.h" #include "compiler/data/define-data.h" #include "compiler/data/function-data.h" #include "compiler/data/src-dir.h" #include "compiler/data/src-file.h" #include "compiler/data/var-data.h" +#include "compiler/kphp_assert.h" +#include "compiler/stage.h" +#include "compiler/utils/string-utils.h" +#include "yaml-cpp/yaml.h" /* * Modulite is a conception of isolating parts of code. diff --git a/compiler/data/modulite-data.h b/compiler/data/modulite-data.h index 2bdf727bd0..ba862ac291 100644 --- a/compiler/data/modulite-data.h +++ b/compiler/data/modulite-data.h @@ -6,10 +6,10 @@ #include #include +#include #include #include "common/wrappers/string_view.h" - #include "compiler/data/data_ptr.h" #include "compiler/debug.h" diff --git a/compiler/data/performance-inspections.cpp b/compiler/data/performance-inspections.cpp index 1ae45cc738..3a66ffa089 100644 --- a/compiler/data/performance-inspections.cpp +++ b/compiler/data/performance-inspections.cpp @@ -4,6 +4,12 @@ #include "compiler/data/performance-inspections.h" +#include +#include +#include +#include + +#include "common/wrappers/string_view.h" #include "common/wrappers/to_array.h" #include "compiler/utils/string-utils.h" diff --git a/compiler/data/performance-inspections.h b/compiler/data/performance-inspections.h index 5c01de73e0..29cfe899a4 100644 --- a/compiler/data/performance-inspections.h +++ b/compiler/data/performance-inspections.h @@ -5,11 +5,15 @@ #pragma once #include +#include +#include +#include #include "common/wrappers/string_view.h" #include "compiler/data/data_ptr.h" class PerformanceInspections { + public: enum Inspections : uint8_t { no_inspections = 0, diff --git a/compiler/data/src-dir.cpp b/compiler/data/src-dir.cpp index c7d652921b..f7b5ca49de 100644 --- a/compiler/data/src-dir.cpp +++ b/compiler/data/src-dir.cpp @@ -5,6 +5,10 @@ #include "compiler/data/src-dir.h" #include +#include +#include + +#include "compiler/kphp_assert.h" SrcDir::SrcDir(std::string full_dir_name) : full_dir_name(std::move(full_dir_name)) { diff --git a/compiler/data/src-file.cpp b/compiler/data/src-file.cpp index fe6d491551..08168d8261 100644 --- a/compiler/data/src-file.cpp +++ b/compiler/data/src-file.cpp @@ -4,16 +4,23 @@ #include "compiler/data/src-file.h" +#include +#include +#include #include +#include #include #include #include #include "auto/compiler/vertex/vertex-all.h" +#include "auto/compiler/vertex/vertex-types.h" +#include "common/wrappers/fmt_format.h" #include "common/wrappers/likely.h" - #include "compiler/compiler-core.h" #include "compiler/data/lib-data.h" +#include "compiler/kphp_assert.h" +#include "compiler/operation.h" #include "compiler/stage.h" bool SrcFile::load() { diff --git a/compiler/data/src-file.h b/compiler/data/src-file.h index 99bfbeaedb..8e0e13ea49 100644 --- a/compiler/data/src-file.h +++ b/compiler/data/src-file.h @@ -5,9 +5,11 @@ #pragma once #include +#include +#include +#include #include "common/wrappers/string_view.h" - #include "compiler/data/data_ptr.h" #include "compiler/data/vertex-adaptor.h" #include "compiler/debug.h" diff --git a/compiler/data/var-data.cpp b/compiler/data/var-data.cpp index 622b030640..ee237c97c3 100644 --- a/compiler/data/var-data.cpp +++ b/compiler/data/var-data.cpp @@ -4,7 +4,10 @@ #include "compiler/data/var-data.h" +#include "common/wrappers/string_view.h" #include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" +#include "compiler/kphp_assert.h" #include "compiler/stage.h" VarData::VarData(VarData::Type type_) diff --git a/compiler/data/var-data.h b/compiler/data/var-data.h index 1ec4feae0f..a1ac95d06f 100644 --- a/compiler/data/var-data.h +++ b/compiler/data/var-data.h @@ -6,12 +6,16 @@ #include #include +#include #include "compiler/data/class-members.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/debug.h" #include "compiler/inferring/var-node.h" class VarData { + DEBUG_STRING_METHOD { return as_human_readable(); } diff --git a/compiler/debug.cpp b/compiler/debug.cpp index 2199cc6701..734dec6959 100644 --- a/compiler/debug.cpp +++ b/compiler/debug.cpp @@ -4,14 +4,28 @@ #include "compiler/debug.h" +#include +#include +#include +#include #include +#include +#include "auto/compiler/vertex/vertex-types.h" #include "common/wrappers/to_array.h" #include "compiler/compiler-core.h" #include "compiler/data/class-data.h" +#include "compiler/data/data_ptr.h" #include "compiler/data/function-data.h" #include "compiler/data/src-file.h" +#include "compiler/data/vertex-adaptor.h" +#include "compiler/kphp_assert.h" +#include "compiler/operation.h" +#include "compiler/stage.h" +#include "compiler/token.h" #include "compiler/type-hint.h" +#include "compiler/utils/string-utils.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex.h" static std::map OPERATION_NAMES; diff --git a/compiler/debug.h b/compiler/debug.h index 5497175a88..2eb5afa07a 100644 --- a/compiler/debug.h +++ b/compiler/debug.h @@ -4,6 +4,8 @@ #pragma once +#include + // using this macro inside a class: DEBUG_STRING_METHOD { ... cpp code ...; return std::string } // that code is also embedded into a release binary, we decided not to do anything about it #define DEBUG_STRING_METHOD std::string _debug_string() const __attribute__((used)) diff --git a/compiler/ffi/c_parser/c.y b/compiler/ffi/c_parser/c.y index 6530418034..899f3d899e 100644 --- a/compiler/ffi/c_parser/c.y +++ b/compiler/ffi/c_parser/c.y @@ -21,10 +21,10 @@ %code requires { + #include #include #include #include - #include #include "compiler/ffi/ffi_types.h" #include "compiler/ffi/c_parser/location.h" diff --git a/compiler/ffi/c_parser/location.h b/compiler/ffi/c_parser/location.h index eb298d185e..a9221fb6bd 100644 --- a/compiler/ffi/c_parser/location.h +++ b/compiler/ffi/c_parser/location.h @@ -4,7 +4,7 @@ #pragma once -#include +#include namespace ffi { diff --git a/compiler/ffi/c_parser/parsing_driver.cpp b/compiler/ffi/c_parser/parsing_driver.cpp index ffd673f046..46450c1d73 100644 --- a/compiler/ffi/c_parser/parsing_driver.cpp +++ b/compiler/ffi/c_parser/parsing_driver.cpp @@ -4,13 +4,18 @@ #include "compiler/ffi/c_parser/parsing_driver.h" -#include "compiler/kphp_assert.h" +#include +#include +#include +#include +#include +#include "common/algorithms/contains.h" #include "common/algorithms/find.h" #include "common/containers/final_action.h" - -#include -#include +#include "common/wrappers/string_view.h" +#include "compiler/ffi/c_parser/parsing_types.h" +#include "compiler/kphp_assert.h" using namespace ffi; diff --git a/compiler/ffi/c_parser/parsing_driver.h b/compiler/ffi/c_parser/parsing_driver.h index a7185d6326..f53f3a82ea 100644 --- a/compiler/ffi/c_parser/parsing_driver.h +++ b/compiler/ffi/c_parser/parsing_driver.h @@ -4,15 +4,22 @@ #pragma once +#include +#include +#include +#include +#include +#include +#include + #include "compiler/ffi/c_parser/lexer.h" +#include "compiler/ffi/c_parser/location.h" #include "compiler/ffi/c_parser/parsing_types.h" +#include "compiler/ffi/c_parser/string-span.h" #include "compiler/ffi/c_parser/types-allocator.h" #include "compiler/ffi/c_parser/yy_parser_generated.hpp" #include "compiler/ffi/ffi_types.h" -#include -#include - namespace ffi { // How to re-generate lexer & parser: diff --git a/compiler/ffi/ffi_parser.cpp b/compiler/ffi/ffi_parser.cpp index df6086c231..235f54a667 100644 --- a/compiler/ffi/ffi_parser.cpp +++ b/compiler/ffi/ffi_parser.cpp @@ -4,12 +4,16 @@ #include "compiler/ffi/ffi_parser.h" +#include +#include +#include + #include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" +#include "compiler/ffi/c_parser/location.h" #include "compiler/ffi/c_parser/parsing_driver.h" #include "compiler/kphp_assert.h" -#include - static void log_ffi_parser_stats(const ffi::ParsingDriver::Result& result) { if (G->settings().verbosity.get() >= 1) { fprintf(stderr, "FFI parser: allocated %ld objects (%ld collected as garbage)\n", static_cast(result.num_allocated), diff --git a/compiler/ffi/ffi_parser.h b/compiler/ffi/ffi_parser.h index 22dbdca849..76b5af7219 100644 --- a/compiler/ffi/ffi_parser.h +++ b/compiler/ffi/ffi_parser.h @@ -4,14 +4,18 @@ #pragma once +#include +#include #include #include #include +#include #include #include "compiler/ffi/ffi_types.h" struct FFIParseError { + std::string message; int line; }; diff --git a/compiler/ffi/ffi_types.h b/compiler/ffi/ffi_types.h index d7127aacbf..49c8da6561 100644 --- a/compiler/ffi/ffi_types.h +++ b/compiler/ffi/ffi_types.h @@ -7,6 +7,7 @@ #include #include #include +#include #include enum class FFITypeKind : uint16_t { diff --git a/compiler/function-colors.cpp b/compiler/function-colors.cpp index 48c33cdc79..ef6e2edd2b 100644 --- a/compiler/function-colors.cpp +++ b/compiler/function-colors.cpp @@ -4,7 +4,10 @@ #include "compiler/function-colors.h" +#include + #include "common/algorithms/string-algorithms.h" +#include "compiler/kphp_assert.h" using namespace function_palette; diff --git a/compiler/function-colors.h b/compiler/function-colors.h index 1cfa89f83d..115fad5203 100644 --- a/compiler/function-colors.h +++ b/compiler/function-colors.h @@ -4,8 +4,13 @@ #pragma once +#include +#include #include #include +#include +#include +#include #include "common/termformat/termformat.h" #include "compiler/stage.h" diff --git a/compiler/generics-reification.cpp b/compiler/generics-reification.cpp index 67d09052c6..65c5175f48 100644 --- a/compiler/generics-reification.cpp +++ b/compiler/generics-reification.cpp @@ -4,12 +4,37 @@ #include "compiler/generics-reification.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "common/termformat/termformat.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" +#include "compiler/class-assumptions.h" +#include "compiler/compiler-core.h" +#include "compiler/data/class-data.h" #include "compiler/data/function-data.h" #include "compiler/data/generics-mixins.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" +#include "compiler/inferring/primitive-type.h" +#include "compiler/kphp_assert.h" +#include "compiler/location.h" +#include "compiler/operation.h" #include "compiler/phpdoc.h" +#include "compiler/stage.h" #include "compiler/type-hint.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" +#include "compiler/vertex.h" /* * The word "reification" means deducing generic T to instantiate generic functions/classes. diff --git a/compiler/generics-reification.h b/compiler/generics-reification.h index 8b45b028c4..fefe8823b1 100644 --- a/compiler/generics-reification.h +++ b/compiler/generics-reification.h @@ -4,10 +4,12 @@ #pragma once +#include "auto/compiler/vertex/vertex-types.h" #include "compiler/data/data_ptr.h" #include "compiler/vertex.h" class GenericsDeclarationMixin; +class GenericsInstantiationPhpComment; void apply_instantiationTs_from_php_comment(FunctionPtr generic_function, VertexAdaptor call, const GenericsInstantiationPhpComment* commentTs); void reify_function_genericTs_on_generic_func_call(FunctionPtr current_function, FunctionPtr generic_function, VertexAdaptor call, diff --git a/compiler/gentree.cpp b/compiler/gentree.cpp index 1f4bf19f52..64d81889ee 100644 --- a/compiler/gentree.cpp +++ b/compiler/gentree.cpp @@ -4,24 +4,44 @@ #include "compiler/gentree.h" +#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include "common/algorithms/contains.h" #include "common/algorithms/find.h" - #include "common/php-functions.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" #include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" #include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" +#include "compiler/data/class-modifiers.h" #include "compiler/data/define-data.h" +#include "compiler/data/field-modifiers.h" #include "compiler/data/function-data.h" #include "compiler/data/generics-mixins.h" #include "compiler/data/lib-data.h" #include "compiler/data/src-file.h" +#include "compiler/inferring/primitive-type.h" +#include "compiler/kphp_assert.h" #include "compiler/lambda-utils.h" #include "compiler/lexer.h" #include "compiler/name-gen.h" +#include "compiler/operation.h" #include "compiler/phpdoc.h" #include "compiler/stage.h" +#include "compiler/stats.h" +#include "compiler/threading/data-stream.h" #include "compiler/type-hint.h" #include "compiler/utils/string-utils.h" #include "compiler/vertex-util.h" diff --git a/compiler/gentree.h b/compiler/gentree.h index 0d13897cc9..1175fd5d60 100644 --- a/compiler/gentree.h +++ b/compiler/gentree.h @@ -4,18 +4,33 @@ #pragma once +#include #include +#include #include +#include "auto/compiler/vertex/vertex-types.h" +#include "common/type_traits/function_traits.h" +#include "common/wrappers/string_view.h" #include "compiler/compiler-core.h" #include "compiler/data/class-data.h" #include "compiler/data/class-member-modifiers.h" +#include "compiler/data/data_ptr.h" #include "compiler/data/field-modifiers.h" #include "compiler/data/function-modifiers.h" +#include "compiler/data/vertex-adaptor.h" +#include "compiler/location.h" #include "compiler/operation.h" #include "compiler/token.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex.h" +class GenericsInstantiationPhpComment; +class PhpDocComment; +class TypeHint; +template +class DataStream; + class GenTree { template diff --git a/compiler/index.cpp b/compiler/index.cpp index bc417c8132..19493687ac 100644 --- a/compiler/index.cpp +++ b/compiler/index.cpp @@ -4,17 +4,27 @@ #include "compiler/index.h" +#include #include +#include +#include +#include +#include #include +#include #include +#include #include +#include +#include #include "common/containers/final_action.h" #include "common/macos-ports.h" +#include "common/wrappers/fmt_format.h" #include "common/wrappers/mkdir_recursive.h" -#include "compiler/kphp_assert.h" - #include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" +#include "compiler/kphp_assert.h" #include "compiler/stage.h" #include "compiler/utils/string-utils.h" diff --git a/compiler/index.h b/compiler/index.h index d61123d2cd..0d401e01d1 100644 --- a/compiler/index.h +++ b/compiler/index.h @@ -4,6 +4,7 @@ #pragma once +#include #include #include #include @@ -11,6 +12,7 @@ #include #include #include +#include #include #include "common/wrappers/iterator_range.h" diff --git a/compiler/inferring/expr-node.cpp b/compiler/inferring/expr-node.cpp index 9044238cc0..c07e3d32c0 100644 --- a/compiler/inferring/expr-node.cpp +++ b/compiler/inferring/expr-node.cpp @@ -4,16 +4,36 @@ #include "compiler/inferring/expr-node.h" -#include "common/php-functions.h" +#include +#include +#include +#include "auto/compiler/vertex/vertex-types.h" +#include "common/algorithms/find.h" +#include "common/php-functions.h" +#include "common/wrappers/iterator_range.h" #include "compiler/compiler-core.h" +#include "compiler/data/class-data.h" +#include "compiler/data/data_ptr.h" #include "compiler/data/define-data.h" #include "compiler/data/function-data.h" #include "compiler/data/var-data.h" #include "compiler/inferring/edge.h" +#include "compiler/inferring/key.h" +#include "compiler/inferring/multi-key.h" #include "compiler/inferring/node-recalc.h" +#include "compiler/inferring/primitive-type.h" +#include "compiler/inferring/public.h" +#include "compiler/inferring/rvalue.h" +#include "compiler/inferring/type-data.h" +#include "compiler/inferring/type-inferer.h" +#include "compiler/location.h" +#include "compiler/operation.h" +#include "compiler/stage.h" #include "compiler/type-hint.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" +#include "compiler/vertex.h" class ExprNodeRecalc : public NodeRecalc { private: diff --git a/compiler/inferring/expr-node.h b/compiler/inferring/expr-node.h index 3834e13cd0..1fb716f769 100644 --- a/compiler/inferring/expr-node.h +++ b/compiler/inferring/expr-node.h @@ -4,11 +4,17 @@ #pragma once +#include + #include "compiler/data/vertex-adaptor.h" #include "compiler/inferring/node.h" #include "compiler/stage.h" +class Location; +class TypeData; + namespace tinf { +class TypeInferer; class ExprNode : public Node { private: diff --git a/compiler/inferring/ifi.cpp b/compiler/inferring/ifi.cpp index 7d66478210..14ef7fb4a4 100644 --- a/compiler/inferring/ifi.cpp +++ b/compiler/inferring/ifi.cpp @@ -4,8 +4,14 @@ #include "compiler/inferring/ifi.h" +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "common/algorithms/find.h" +#include "compiler/data/data_ptr.h" #include "compiler/data/function-data.h" #include "compiler/data/var-data.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" #include "compiler/vertex.h" diff --git a/compiler/inferring/key.cpp b/compiler/inferring/key.cpp index 15f64d3d87..8f12c14ed7 100644 --- a/compiler/inferring/key.cpp +++ b/compiler/inferring/key.cpp @@ -4,11 +4,14 @@ #include "compiler/inferring/key.h" +#include + #include "common/algorithms/hashes.h" #include "common/wrappers/fmt_format.h" - +#include "compiler/kphp_assert.h" #include "compiler/stage.h" #include "compiler/threading/hash-table.h" +#include "compiler/threading/locks.h" static TSHashTable int_keys_ht; static TSHashTable string_keys_ht; diff --git a/compiler/inferring/lvalue.cpp b/compiler/inferring/lvalue.cpp index 225f78f3b6..056085913c 100644 --- a/compiler/inferring/lvalue.cpp +++ b/compiler/inferring/lvalue.cpp @@ -4,8 +4,16 @@ #include "compiler/inferring/lvalue.h" -#include "common/algorithms/find.h" +#include +#include "auto/compiler/vertex/vertex-types.h" +#include "common/algorithms/find.h" +#include "common/wrappers/fmt_format.h" +#include "compiler/inferring/node.h" +#include "compiler/kphp_assert.h" +#include "compiler/operation.h" +#include "compiler/stage.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex.h" LValue as_lvalue(VertexPtr v) { diff --git a/compiler/inferring/lvalue.h b/compiler/inferring/lvalue.h index 6065946785..9ab21045f2 100644 --- a/compiler/inferring/lvalue.h +++ b/compiler/inferring/lvalue.h @@ -4,6 +4,9 @@ #pragma once +#include "compiler/data/data_ptr.h" +#include "compiler/data/vertex-adaptor.h" +#include "compiler/inferring/multi-key.h" #include "compiler/inferring/node.h" #include "compiler/inferring/public.h" diff --git a/compiler/inferring/multi-key.cpp b/compiler/inferring/multi-key.cpp index 3e5702095d..7c3b9f6d2a 100644 --- a/compiler/inferring/multi-key.cpp +++ b/compiler/inferring/multi-key.cpp @@ -5,6 +5,7 @@ #include "compiler/inferring/multi-key.h" #include +#include #include "common/algorithms/string-algorithms.h" diff --git a/compiler/inferring/multi-key.h b/compiler/inferring/multi-key.h index bbc618aab5..67beff23de 100644 --- a/compiler/inferring/multi-key.h +++ b/compiler/inferring/multi-key.h @@ -6,6 +6,7 @@ #include #include +#include #include #include "compiler/debug.h" @@ -13,6 +14,7 @@ #include "compiler/kphp_assert.h" class MultiKey { + DEBUG_STRING_METHOD { return to_string(); } diff --git a/compiler/inferring/node-recalc.cpp b/compiler/inferring/node-recalc.cpp index ea7619c41b..1f71931626 100644 --- a/compiler/inferring/node-recalc.cpp +++ b/compiler/inferring/node-recalc.cpp @@ -4,13 +4,26 @@ #include "compiler/inferring/node-recalc.h" +#include +#include +#include +#include + +#include "common/algorithms/find.h" #include "common/termformat/termformat.h" +#include "common/wrappers/fmt_format.h" #include "common/wrappers/likely.h" - #include "compiler/data/class-data.h" #include "compiler/inferring/edge.h" +#include "compiler/inferring/key.h" +#include "compiler/inferring/multi-key.h" +#include "compiler/inferring/node.h" +#include "compiler/inferring/rvalue.h" +#include "compiler/inferring/type-data.h" #include "compiler/inferring/type-inferer.h" +#include "compiler/kphp_assert.h" #include "compiler/stage.h" +#include "compiler/threading/locks.h" // this callback is invoked immediately when new_type_ has become tp_Error during recalculation // by default, we try to detect the reason and print it out diff --git a/compiler/inferring/node-recalc.h b/compiler/inferring/node-recalc.h index b499a1d433..50cc24f142 100644 --- a/compiler/inferring/node-recalc.h +++ b/compiler/inferring/node-recalc.h @@ -4,9 +4,18 @@ #pragma once +#include "compiler/data/data_ptr.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/inferring/node.h" +#include "compiler/inferring/primitive-type.h" #include "compiler/inferring/rvalue.h" +class MultiKey; +class TypeData; +namespace tinf { +class TypeInferer; +} // namespace tinf + class NodeRecalc { protected: TypeData* new_type_; diff --git a/compiler/inferring/node.cpp b/compiler/inferring/node.cpp index 1e86e33b45..3b7ac0c8a8 100644 --- a/compiler/inferring/node.cpp +++ b/compiler/inferring/node.cpp @@ -4,7 +4,10 @@ #include "compiler/inferring/node.h" +#include + #include "compiler/inferring/type-data.h" +#include "compiler/kphp_assert.h" #include "compiler/stage.h" namespace tinf { diff --git a/compiler/inferring/node.h b/compiler/inferring/node.h index 0c4b333484..e76950bf0d 100644 --- a/compiler/inferring/node.h +++ b/compiler/inferring/node.h @@ -8,6 +8,7 @@ #include #include "compiler/debug.h" +#include "compiler/inferring/primitive-type.h" #include "compiler/inferring/type-data.h" #include "compiler/location.h" #include "compiler/threading/locks.h" diff --git a/compiler/inferring/primitive-type.cpp b/compiler/inferring/primitive-type.cpp index 364e99f713..c52d888f4e 100644 --- a/compiler/inferring/primitive-type.cpp +++ b/compiler/inferring/primitive-type.cpp @@ -4,12 +4,14 @@ #include "compiler/inferring/primitive-type.h" +#include #include #include +#include #include "common/algorithms/find.h" - #include "compiler/compiler-core.h" +#include "compiler/kphp_assert.h" #include "compiler/stage.h" const char* ptype_name(PrimitiveType id) { diff --git a/compiler/inferring/public.cpp b/compiler/inferring/public.cpp index 5a20596283..ac3b5b2c65 100644 --- a/compiler/inferring/public.cpp +++ b/compiler/inferring/public.cpp @@ -4,10 +4,20 @@ #include "compiler/inferring/public.h" +#include + #include "compiler/data/function-data.h" #include "compiler/data/var-data.h" +#include "compiler/inferring/expr-node.h" +#include "compiler/inferring/node.h" +#include "compiler/inferring/type-inferer.h" +#include "compiler/inferring/var-node.h" +#include "compiler/kphp_assert.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex.h" +class TypeData; + namespace tinf { Node* get_tinf_node(FunctionPtr function, int param_i) { diff --git a/compiler/inferring/restriction-isset.cpp b/compiler/inferring/restriction-isset.cpp index bb5400961a..7455fa5cd4 100644 --- a/compiler/inferring/restriction-isset.cpp +++ b/compiler/inferring/restriction-isset.cpp @@ -4,14 +4,26 @@ #include "compiler/inferring/restriction-isset.h" +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "common/algorithms/find.h" +#include "compiler/data/data_ptr.h" #include "compiler/data/function-data.h" #include "compiler/data/var-data.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/inferring/edge.h" #include "compiler/inferring/expr-node.h" #include "compiler/inferring/ifi.h" +#include "compiler/inferring/multi-key.h" +#include "compiler/inferring/node.h" +#include "compiler/inferring/primitive-type.h" #include "compiler/inferring/public.h" +#include "compiler/inferring/type-data.h" #include "compiler/inferring/type-node.h" #include "compiler/inferring/var-node.h" +#include "compiler/stage.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex.h" RestrictionIsset::RestrictionIsset(tinf::Node* a) diff --git a/compiler/inferring/restriction-isset.h b/compiler/inferring/restriction-isset.h index 37c0b93bc1..b4c1b78036 100644 --- a/compiler/inferring/restriction-isset.h +++ b/compiler/inferring/restriction-isset.h @@ -4,9 +4,14 @@ #pragma once +#include +#include + #include "compiler/inferring/node.h" #include "compiler/inferring/restriction-base.h" +class TypeData; + class RestrictionIsset : public tinf::RestrictionBase { tinf::Node* a_; std::string desc; diff --git a/compiler/inferring/restriction-match-phpdoc.cpp b/compiler/inferring/restriction-match-phpdoc.cpp index f517b94f4b..7239303ba8 100644 --- a/compiler/inferring/restriction-match-phpdoc.cpp +++ b/compiler/inferring/restriction-match-phpdoc.cpp @@ -4,16 +4,24 @@ #include "compiler/inferring/restriction-match-phpdoc.h" -#include "common/termformat/termformat.h" +#include +#include "common/termformat/termformat.h" +#include "compiler/data/data_ptr.h" #include "compiler/data/function-data.h" #include "compiler/data/var-data.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/inferring/edge.h" #include "compiler/inferring/expr-node.h" +#include "compiler/inferring/multi-key.h" +#include "compiler/inferring/node.h" #include "compiler/inferring/public.h" #include "compiler/inferring/restriction-stacktrace-finder.h" +#include "compiler/inferring/type-data.h" #include "compiler/inferring/type-node.h" #include "compiler/inferring/var-node.h" +#include "compiler/location.h" +#include "compiler/vertex-meta_op_base.h" // see comments in var-node.cpp and collect-main-edges.cpp diff --git a/compiler/inferring/restriction-match-phpdoc.h b/compiler/inferring/restriction-match-phpdoc.h index ac9fe4af14..3707961734 100644 --- a/compiler/inferring/restriction-match-phpdoc.h +++ b/compiler/inferring/restriction-match-phpdoc.h @@ -4,11 +4,19 @@ #pragma once +#include + #include "compiler/inferring/multi-key.h" #include "compiler/inferring/restriction-base.h" #include "compiler/inferring/var-node.h" +class TypeData; +namespace tinf { +class Node; +} // namespace tinf + class RestrictionMatchPhpdoc : public tinf::RestrictionBase { + tinf::VarNode* restricted_node; tinf::Node* actual_node; const TypeData* expected_type; diff --git a/compiler/inferring/restriction-non-void.cpp b/compiler/inferring/restriction-non-void.cpp index 2738e795b8..ac55a71a02 100644 --- a/compiler/inferring/restriction-non-void.cpp +++ b/compiler/inferring/restriction-non-void.cpp @@ -4,7 +4,10 @@ #include "compiler/inferring/restriction-non-void.h" +#include "compiler/data/data_ptr.h" #include "compiler/data/function-data.h" +#include "compiler/inferring/node.h" +#include "compiler/inferring/primitive-type.h" #include "compiler/inferring/type-data.h" #include "compiler/inferring/var-node.h" diff --git a/compiler/inferring/restriction-non-void.h b/compiler/inferring/restriction-non-void.h index 477e748518..5c2b6124cf 100644 --- a/compiler/inferring/restriction-non-void.h +++ b/compiler/inferring/restriction-non-void.h @@ -4,10 +4,13 @@ #pragma once +#include + #include "compiler/inferring/node.h" #include "compiler/inferring/restriction-base.h" class RestrictionNonVoid : public tinf::RestrictionBase { + tinf::Node* node; public: diff --git a/compiler/inferring/restriction-stacktrace-finder.cpp b/compiler/inferring/restriction-stacktrace-finder.cpp index 7279b3a199..b1390a09ec 100644 --- a/compiler/inferring/restriction-stacktrace-finder.cpp +++ b/compiler/inferring/restriction-stacktrace-finder.cpp @@ -4,17 +4,33 @@ #include "compiler/inferring/restriction-stacktrace-finder.h" +#include +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" #include "common/algorithms/contains.h" #include "common/algorithms/string-algorithms.h" #include "common/termformat/termformat.h" - +#include "common/wrappers/iterator_range.h" +#include "common/wrappers/string_view.h" #include "compiler/data/function-data.h" #include "compiler/data/src-file.h" +#include "compiler/data/var-data.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/inferring/edge.h" +#include "compiler/inferring/expr-node.h" +#include "compiler/inferring/node.h" #include "compiler/inferring/public.h" +#include "compiler/inferring/type-data.h" #include "compiler/inferring/type-node.h" #include "compiler/inferring/var-node.h" +#include "compiler/kphp_assert.h" +#include "compiler/location.h" +#include "compiler/operation.h" +#include "compiler/stage.h" #include "compiler/type-hint.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" #include "compiler/vertex.h" diff --git a/compiler/inferring/restriction-stacktrace-finder.h b/compiler/inferring/restriction-stacktrace-finder.h index a606f2f0fa..cfd4032ce5 100644 --- a/compiler/inferring/restriction-stacktrace-finder.h +++ b/compiler/inferring/restriction-stacktrace-finder.h @@ -4,10 +4,19 @@ #pragma once +#include +#include + +#include "compiler/data/data_ptr.h" #include "compiler/inferring/multi-key.h" #include "compiler/inferring/node.h" #include "compiler/inferring/restriction-base.h" +class TypeData; +namespace tinf { +class Edge; +} // namespace tinf + class RestrictionStacktraceFinder { static const unsigned long max_cnt_nodes_in_path = 50; diff --git a/compiler/inferring/type-data.cpp b/compiler/inferring/type-data.cpp index b27362cc23..461c5b6747 100644 --- a/compiler/inferring/type-data.cpp +++ b/compiler/inferring/type-data.cpp @@ -4,18 +4,27 @@ #include "compiler/inferring/type-data.h" +#include +#include +#include +#include +#include #include #include #include "common/algorithms/compare.h" #include "common/algorithms/contains.h" +#include "common/algorithms/find.h" +#include "common/algorithms/string-algorithms.h" #include "common/php-functions.h" #include "common/termformat/termformat.h" - +#include "common/wrappers/fmt_format.h" #include "compiler/code-gen/common.h" #include "compiler/compiler-core.h" #include "compiler/data/class-data.h" #include "compiler/data/ffi-data.h" +#include "compiler/ffi/ffi_types.h" +#include "compiler/inferring/multi-key.h" #include "compiler/inferring/primitive-type.h" #include "compiler/kphp_assert.h" #include "compiler/pipes/collect-main-edges.h" diff --git a/compiler/inferring/type-data.h b/compiler/inferring/type-data.h index 520f7eba86..70bf85b0f7 100644 --- a/compiler/inferring/type-data.h +++ b/compiler/inferring/type-data.h @@ -4,9 +4,13 @@ #pragma once +#include +#include #include #include #include +#include +#include #include "compiler/code-gen/gen-out-style.h" #include "compiler/data/data_ptr.h" @@ -14,6 +18,7 @@ #include "compiler/inferring/key.h" #include "compiler/inferring/multi-key.h" #include "compiler/inferring/primitive-type.h" +#include "compiler/kphp_assert.h" #include "compiler/stage.h" #include "compiler/threading/tls.h" diff --git a/compiler/inferring/type-hint-recalc.cpp b/compiler/inferring/type-hint-recalc.cpp index ef1ad1de2c..b8aa239911 100644 --- a/compiler/inferring/type-hint-recalc.cpp +++ b/compiler/inferring/type-hint-recalc.cpp @@ -2,11 +2,38 @@ // Copyright (c) 2020 LLC «V Kontakte» // Distributed under the GPL v3 License, see LICENSE.notice.txt -#include "compiler/type-hint.h" - +#include +#include +#include +#include +#include +#include +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "common/algorithms/find.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" +#include "compiler/compiler-core.h" +#include "compiler/data/class-data.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/ffi-data.h" #include "compiler/data/function-data.h" +#include "compiler/data/vertex-adaptor.h" +#include "compiler/ffi/ffi_types.h" +#include "compiler/inferring/expr-node.h" +#include "compiler/inferring/key.h" +#include "compiler/inferring/multi-key.h" +#include "compiler/inferring/primitive-type.h" #include "compiler/inferring/public.h" +#include "compiler/inferring/type-data.h" +#include "compiler/kphp_assert.h" +#include "compiler/stage.h" +#include "compiler/type-hint.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" +#include "compiler/vertex.h" // recalc_type_data_in_context_of_call() from type-hint.h for all ancestors // they are implemented in a separate .cpp file to leave type-hint.cpp more clear, as recalculation is a separate inferring part diff --git a/compiler/inferring/type-inferer.cpp b/compiler/inferring/type-inferer.cpp index faae4a7c0c..5ede6ed830 100644 --- a/compiler/inferring/type-inferer.cpp +++ b/compiler/inferring/type-inferer.cpp @@ -4,12 +4,23 @@ #include "compiler/inferring/type-inferer.h" +#include +#include +#include + #include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" +#include "compiler/data/data_ptr.h" #include "compiler/data/function-data.h" #include "compiler/data/src-file.h" #include "compiler/inferring/edge.h" +#include "compiler/inferring/node.h" #include "compiler/inferring/public.h" +#include "compiler/inferring/restriction-base.h" #include "compiler/inferring/restriction-match-phpdoc.h" +#include "compiler/kphp_assert.h" +#include "compiler/scheduler/task.h" +#include "compiler/stage.h" #include "compiler/threading/profiler.h" namespace tinf { diff --git a/compiler/inferring/type-inferer.h b/compiler/inferring/type-inferer.h index f206f4c6b4..7cbc84d758 100644 --- a/compiler/inferring/type-inferer.h +++ b/compiler/inferring/type-inferer.h @@ -5,6 +5,7 @@ #pragma once #include +#include #include "compiler/inferring/node.h" #include "compiler/inferring/restriction-base.h" @@ -12,6 +13,7 @@ #include "compiler/threading/tls.h" namespace tinf { +class Edge; using NodeQueue = std::queue; diff --git a/compiler/inferring/type-node.h b/compiler/inferring/type-node.h index 17fefc9dbe..0aab9cd7ab 100644 --- a/compiler/inferring/type-node.h +++ b/compiler/inferring/type-node.h @@ -4,10 +4,16 @@ #pragma once +#include +#include + #include "compiler/inferring/node.h" #include "compiler/location.h" +class TypeData; + namespace tinf { +class TypeInferer; class TypeNode : public Node { Location location_; diff --git a/compiler/inferring/var-node.cpp b/compiler/inferring/var-node.cpp index 1a25d631da..06bb9d934c 100644 --- a/compiler/inferring/var-node.cpp +++ b/compiler/inferring/var-node.cpp @@ -4,11 +4,28 @@ #include "compiler/inferring/var-node.h" +#include +#include +#include +#include +#include + +#include "auto/compiler/vertex/vertex-op_function.h" +#include "common/wrappers/fmt_format.h" #include "compiler/data/function-data.h" #include "compiler/data/var-data.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/inferring/edge.h" #include "compiler/inferring/node-recalc.h" +#include "compiler/inferring/public.h" #include "compiler/inferring/restriction-match-phpdoc.h" +#include "compiler/inferring/rvalue.h" +#include "compiler/inferring/type-data.h" +#include "compiler/inferring/type-inferer.h" +#include "compiler/kphp_assert.h" +#include "compiler/location.h" +#include "compiler/stage.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex.h" class VarNodeRecalc : public NodeRecalc { diff --git a/compiler/inferring/var-node.h b/compiler/inferring/var-node.h index 82a31066d2..ec82fd3631 100644 --- a/compiler/inferring/var-node.h +++ b/compiler/inferring/var-node.h @@ -4,10 +4,16 @@ #pragma once +#include + #include "compiler/data/data_ptr.h" #include "compiler/inferring/node.h" +class Location; +class TypeData; + namespace tinf { +class TypeInferer; class VarNode : public Node { public: diff --git a/compiler/kphp2cpp.cpp b/compiler/kphp2cpp.cpp index 552091d68b..73aadf441c 100644 --- a/compiler/kphp2cpp.cpp +++ b/compiler/kphp2cpp.cpp @@ -2,18 +2,30 @@ // Copyright (c) 2020 LLC «V Kontakte» // Distributed under the GPL v3 License, see LICENSE.notice.txt +#include +#include +#include +#include +#include #include +#include #include +#include +#include +#include #include +#include +#include #include "common/algorithms/string-algorithms.h" +#include "common/functional/identity.h" +#include "common/mixin/not_copyable.h" #include "common/options.h" #include "common/sanitizer.h" #include "common/server/limits.h" #include "common/server/signals.h" #include "common/version-string.h" #include "common/wrappers/string_view.h" - #include "compiler/compiler-settings.h" #include "compiler/compiler.h" #include "compiler/threading/tls.h" diff --git a/compiler/lambda-utils.cpp b/compiler/lambda-utils.cpp index 7083c6cb76..107018e572 100644 --- a/compiler/lambda-utils.cpp +++ b/compiler/lambda-utils.cpp @@ -4,14 +4,38 @@ #include "compiler/lambda-utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" +#include "compiler/class-assumptions.h" #include "compiler/compiler-core.h" #include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" +#include "compiler/data/class-modifiers.h" +#include "compiler/data/field-modifiers.h" #include "compiler/data/function-data.h" +#include "compiler/data/function-modifiers.h" #include "compiler/data/src-file.h" +#include "compiler/data/var-data.h" #include "compiler/gentree.h" +#include "compiler/kphp_assert.h" +#include "compiler/location.h" #include "compiler/name-gen.h" +#include "compiler/operation.h" +#include "compiler/stats.h" +#include "compiler/threading/locks.h" #include "compiler/type-hint.h" #include "compiler/utils/string-utils.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" #include "compiler/vertex.h" diff --git a/compiler/lambda-utils.h b/compiler/lambda-utils.h index 7bc36c4e77..f3501ebc4e 100644 --- a/compiler/lambda-utils.h +++ b/compiler/lambda-utils.h @@ -4,11 +4,16 @@ #pragma once +#include + +#include "auto/compiler/vertex/vertex-types.h" #include "compiler/data/data_ptr.h" #include "compiler/data/vertex-adaptor.h" #include "compiler/threading/data-stream.h" #include "compiler/vertex.h" +class TypeHint; + // see the .cpp file for detailed comments of how do lambdas work void auto_capture_vars_from_body_in_arrow_lambda(FunctionPtr f_lambda); diff --git a/compiler/lexer.cpp b/compiler/lexer.cpp index a9fd14fcef..aa4031aac5 100644 --- a/compiler/lexer.cpp +++ b/compiler/lexer.cpp @@ -4,18 +4,24 @@ #include "compiler/lexer.h" +#include +#include +#include +#include +#include #include #include #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wregister" #include "auto/compiler/keywords_set.hpp" +#include "compiler/kphp_assert.h" +#include "compiler/utils/string-utils.h" #pragma GCC diagnostic pop #include "common/algorithms/find.h" #include "common/smart_ptrs/singleton.h" #include "common/wrappers/fmt_format.h" - #include "compiler/stage.h" #include "compiler/threading/thread-id.h" diff --git a/compiler/lexer.h b/compiler/lexer.h index 62040597e1..ac01d309d1 100644 --- a/compiler/lexer.h +++ b/compiler/lexer.h @@ -4,12 +4,15 @@ #pragma once +#include +#include #include +#include #include +#include "common/mixin/not_copyable.h" #include "common/smart_ptrs/singleton.h" #include "common/wrappers/string_view.h" - #include "compiler/helper.h" #include "compiler/token.h" #include "compiler/utils/string-utils.h" diff --git a/compiler/make/hardlink-or-copy.cpp b/compiler/make/hardlink-or-copy.cpp index ee51692c0d..c66aa21a95 100644 --- a/compiler/make/hardlink-or-copy.cpp +++ b/compiler/make/hardlink-or-copy.cpp @@ -4,15 +4,18 @@ #include "compiler/make/hardlink-or-copy.h" +#include +#include #include -#include #include +#include #include +#include #include "common/algorithms/find.h" #include "common/macos-ports.h" - #include "common/wrappers/fmt_format.h" +#include "compiler/kphp_assert.h" #include "compiler/stage.h" static void hard_link_or_copy_impl(const std::string& from, const std::string& to, bool replace, bool allow_copy) noexcept { diff --git a/compiler/make/make-runner.cpp b/compiler/make/make-runner.cpp index 78ba732f89..3567f9480b 100644 --- a/compiler/make/make-runner.cpp +++ b/compiler/make/make-runner.cpp @@ -4,11 +4,20 @@ #include "compiler/make/make-runner.h" +#include +#include +#include +#include +#include +#include +#include #include +#include +#include #include "common/dl-utils-lite.h" #include "common/server/signals.h" - +#include "common/wrappers/fmt_format.h" #include "compiler/compiler-core.h" #include "compiler/utils/string-utils.h" diff --git a/compiler/make/make-runner.h b/compiler/make/make-runner.h index fda1c30a17..8ccc106398 100644 --- a/compiler/make/make-runner.h +++ b/compiler/make/make-runner.h @@ -4,11 +4,13 @@ #pragma once +#include #include #include +#include +#include #include "common/mixin/not_copyable.h" - #include "compiler/make/target.h" class MakeRunner : private vk::not_copyable { diff --git a/compiler/make/make.cpp b/compiler/make/make.cpp index a57ff15a0b..55e5dc1369 100644 --- a/compiler/make/make.cpp +++ b/compiler/make/make.cpp @@ -4,24 +4,46 @@ #include "compiler/make/make.h" +#include +#include +#include +#include +#include +#include #include +#include #include #include +#include +#include +#include +#include #include +#include +#include #include #include #include #include +#include +#include +#include "common/algorithms/contains.h" +#include "common/algorithms/find.h" #include "common/algorithms/hashes.h" +#include "common/exit-codes.h" +#include "common/wrappers/fmt_format.h" #include "common/wrappers/likely.h" #include "common/wrappers/mkdir_recursive.h" #include "common/wrappers/pathname.h" - +#include "common/wrappers/string_view.h" #include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" +#include "compiler/data/data_ptr.h" #include "compiler/data/ffi-data.h" #include "compiler/data/lib-data.h" #include "compiler/index.h" +#include "compiler/kphp_assert.h" #include "compiler/make/cpp-to-obj-target.h" #include "compiler/make/file-target.h" #include "compiler/make/h-to-pch-target.h" @@ -32,8 +54,10 @@ #include "compiler/make/objs-to-obj-target.h" #include "compiler/make/objs-to-static-lib-target.h" #include "compiler/make/runtime-src-to-obj-target.h" +#include "compiler/make/target.h" #include "compiler/runtime_build_info.h" #include "compiler/stage.h" +#include "compiler/stats.h" #include "compiler/threading/profiler.h" class MakeSetup { diff --git a/compiler/make/target.cpp b/compiler/make/target.cpp index ed778e69e5..5ab531a78f 100644 --- a/compiler/make/target.cpp +++ b/compiler/make/target.cpp @@ -5,9 +5,11 @@ #include "compiler/make/target.h" #include +#include #include #include "common/wrappers/fmt_format.h" +#include "compiler/index.h" void Target::set_mtime(long long new_mtime) { assert(mtime == 0); diff --git a/compiler/make/target.h b/compiler/make/target.h index cc5b533204..aac0a3ff94 100644 --- a/compiler/make/target.h +++ b/compiler/make/target.h @@ -8,7 +8,6 @@ #include #include "common/mixin/not_copyable.h" - #include "compiler/index.h" class CompilerSettings; diff --git a/compiler/modulite-check-rules.cpp b/compiler/modulite-check-rules.cpp index 644c149573..73be87b062 100644 --- a/compiler/modulite-check-rules.cpp +++ b/compiler/modulite-check-rules.cpp @@ -4,11 +4,23 @@ #include "compiler/modulite-check-rules.h" -#include "common/algorithms/contains.h" +#include +#include +#include +#include "common/algorithms/compare.h" +#include "common/algorithms/contains.h" +#include "common/termformat/termformat.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/string_view.h" #include "compiler/compiler-core.h" +#include "compiler/data/class-data.h" #include "compiler/data/define-data.h" #include "compiler/data/function-data.h" +#include "compiler/data/function-modifiers.h" +#include "compiler/data/modulite-data.h" +#include "compiler/data/var-data.h" +#include "compiler/kphp_assert.h" /* * Modulite is a conception of isolating parts of code. Read `modulite-data.cpp` for a brief description. diff --git a/compiler/modulite-check-rules.h b/compiler/modulite-check-rules.h index 522068a14b..6316cbc088 100644 --- a/compiler/modulite-check-rules.h +++ b/compiler/modulite-check-rules.h @@ -4,6 +4,8 @@ #pragma once +#include + #include "compiler/data/data_ptr.h" #include "compiler/data/modulite-data.h" diff --git a/compiler/name-gen.cpp b/compiler/name-gen.cpp index 4b8ae56eab..90076e8f1e 100644 --- a/compiler/name-gen.cpp +++ b/compiler/name-gen.cpp @@ -4,16 +4,31 @@ #include "compiler/name-gen.h" +#include +#include +#include +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" #include "common/algorithms/hashes.h" +#include "common/wrappers/fmt_format.h" #include "common/wrappers/likely.h" - +#include "common/wrappers/string_view.h" +#include "compiler/class-assumptions.h" #include "compiler/compiler-core.h" #include "compiler/const-manipulations.h" #include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" +#include "compiler/data/function-data.h" #include "compiler/data/src-file.h" +#include "compiler/kphp_assert.h" #include "compiler/pipes/register-variables.h" #include "compiler/stage.h" #include "compiler/type-hint.h" +#include "compiler/utils/string-utils.h" +#include "compiler/vertex-meta_op_base.h" +#include "compiler/vertex.h" std::string gen_anonymous_scope_name(FunctionPtr function) { return gen_unique_name("cdef", function); diff --git a/compiler/operation.cpp b/compiler/operation.cpp index 70c9c9a381..599ccacc4b 100644 --- a/compiler/operation.cpp +++ b/compiler/operation.cpp @@ -4,6 +4,11 @@ #include "compiler/operation.h" +#include +#include +#include + +#include "compiler/data/vertex-adaptor.h" #include "compiler/vertex.h" inline void OpInfo::add_binary_op(int priority, TokenType tok, Operation op) { diff --git a/compiler/operation.h b/compiler/operation.h index bd1eb2c49e..3bba0e9ab7 100644 --- a/compiler/operation.h +++ b/compiler/operation.h @@ -4,8 +4,9 @@ #pragma once -#include "auto/compiler/vertex/vertex-types.h" +#include +#include "auto/compiler/vertex/vertex-types.h" #include "compiler/token.h" enum OperationExtra { diff --git a/compiler/phpdoc.cpp b/compiler/phpdoc.cpp index 32ac4c5c30..75e4282218 100644 --- a/compiler/phpdoc.cpp +++ b/compiler/phpdoc.cpp @@ -4,24 +4,39 @@ #include "compiler/phpdoc.h" +#include +#include #include +#include +#include +#include #include +#include "auto/compiler/vertex/vertex-types.h" +#include "common/algorithms/find.h" #include "common/php-functions.h" #include "common/termformat/termformat.h" - +#include "common/wrappers/fmt_format.h" #include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" +#include "compiler/data/class-data.h" +#include "compiler/data/ffi-data.h" #include "compiler/data/function-data.h" #include "compiler/data/generics-mixins.h" #include "compiler/data/src-file.h" #include "compiler/ffi/ffi_parser.h" +#include "compiler/ffi/ffi_types.h" +#include "compiler/inferring/primitive-type.h" +#include "compiler/kphp_assert.h" #include "compiler/lexer.h" #include "compiler/modulite-check-rules.h" #include "compiler/name-gen.h" #include "compiler/stage.h" #include "compiler/type-hint.h" #include "compiler/utils/string-utils.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" +#include "compiler/vertex.h" static constexpr unsigned int calcHashOfTagName(const char* start, const char* end) { unsigned int hash = 5381; diff --git a/compiler/phpdoc.h b/compiler/phpdoc.h index ced07d3908..b5fc4ebc33 100644 --- a/compiler/phpdoc.h +++ b/compiler/phpdoc.h @@ -8,8 +8,13 @@ #include #include +#include "common/wrappers/string_view.h" #include "compiler/data/data_ptr.h" #include "compiler/data/vertex-adaptor.h" +#include "compiler/token.h" + +class GenericsInstantiationMixin; +class TypeHint; enum class PhpDocType { unknown, diff --git a/compiler/pipes/analyze-performance.cpp b/compiler/pipes/analyze-performance.cpp index 6ca295c6a7..064cd97633 100644 --- a/compiler/pipes/analyze-performance.cpp +++ b/compiler/pipes/analyze-performance.cpp @@ -3,15 +3,38 @@ // Distributed under the GPL v3 License, see LICENSE.notice.txt #include "compiler/pipes/analyze-performance.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "common/algorithms/compare.h" +#include "common/algorithms/find.h" #include "common/algorithms/sorting.h" #include "common/algorithms/string-algorithms.h" +#include "common/smart_ptrs/singleton.h" #include "common/termformat/termformat.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" +#include "common/wrappers/string_view.h" #include "common/wrappers/to_array.h" - #include "compiler/compiler-core.h" #include "compiler/data/src-file.h" +#include "compiler/data/var-data.h" +#include "compiler/inferring/primitive-type.h" #include "compiler/inferring/public.h" +#include "compiler/inferring/type-data.h" +#include "compiler/kphp_assert.h" +#include "compiler/operation.h" +#include "compiler/stage.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" +#include "compiler/vertex.h" namespace { diff --git a/compiler/pipes/analyze-performance.h b/compiler/pipes/analyze-performance.h index 28835da44b..12b594ea80 100644 --- a/compiler/pipes/analyze-performance.h +++ b/compiler/pipes/analyze-performance.h @@ -4,10 +4,25 @@ #pragma once +#include +#include +#include +#include +#include +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "common/mixin/not_copyable.h" #include "common/smart_ptrs/singleton.h" - +#include "compiler/data/data_ptr.h" +#include "compiler/data/function-data.h" +#include "compiler/data/performance-inspections.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" +class TypeData; + class AnalyzePerformance final : public FunctionPassBase { public: std::string get_description() final { diff --git a/compiler/pipes/analyzer.cpp b/compiler/pipes/analyzer.cpp index 1c0dc5e576..ef0a734b42 100644 --- a/compiler/pipes/analyzer.cpp +++ b/compiler/pipes/analyzer.cpp @@ -4,14 +4,33 @@ #include "compiler/pipes/analyzer.h" -#include "common/algorithms/string-algorithms.h" +#include +#include +#include +#include +#include +#include +#include +#include "common/algorithms/find.h" +#include "common/algorithms/string-algorithms.h" +#include "common/functional/identity.h" +#include "common/wrappers/fmt_format.h" #include "compiler/compiler-core.h" #include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" #include "compiler/data/define-data.h" #include "compiler/data/var-data.h" +#include "compiler/inferring/primitive-type.h" #include "compiler/inferring/public.h" +#include "compiler/inferring/type-data.h" +#include "compiler/kphp_assert.h" +#include "compiler/operation.h" +#include "compiler/stage.h" +#include "compiler/stats.h" #include "compiler/utils/string-utils.h" +#include "compiler/vertex-meta_op_base.h" +#include "compiler/vertex.h" namespace { diff --git a/compiler/pipes/analyzer.h b/compiler/pipes/analyzer.h index 5ceedea144..8884facae7 100644 --- a/compiler/pipes/analyzer.h +++ b/compiler/pipes/analyzer.h @@ -4,6 +4,12 @@ #pragma once +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/function-data.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" class CommonAnalyzerPass final : public FunctionPassBase { diff --git a/compiler/pipes/array-access-transform.cpp b/compiler/pipes/array-access-transform.cpp index 4a1bb10c7c..576fe3c300 100644 --- a/compiler/pipes/array-access-transform.cpp +++ b/compiler/pipes/array-access-transform.cpp @@ -4,14 +4,27 @@ #include "compiler/pipes/array-access-transform.h" +#include +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" #include "common/algorithms/contains.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" #include "compiler/compiler-core.h" #include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" #include "compiler/data/data_ptr.h" +#include "compiler/data/function-data.h" #include "compiler/data/vertex-adaptor.h" +#include "compiler/inferring/expr-node.h" #include "compiler/inferring/primitive-type.h" #include "compiler/inferring/public.h" #include "compiler/inferring/type-data.h" +#include "compiler/kphp_assert.h" +#include "compiler/vertex-meta_op_base.h" +#include "compiler/vertex.h" namespace { diff --git a/compiler/pipes/array-access-transform.h b/compiler/pipes/array-access-transform.h index 30cf807a31..7905dfc429 100644 --- a/compiler/pipes/array-access-transform.h +++ b/compiler/pipes/array-access-transform.h @@ -4,6 +4,9 @@ #pragma once +#include + +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" class ArrayAccessTransformPass final : public FunctionPassBase { diff --git a/compiler/pipes/calc-actual-edges.cpp b/compiler/pipes/calc-actual-edges.cpp index 57bc254edd..f8d4238b0d 100644 --- a/compiler/pipes/calc-actual-edges.cpp +++ b/compiler/pipes/calc-actual-edges.cpp @@ -4,10 +4,19 @@ #include "compiler/pipes/calc-actual-edges.h" +#include +#include +#include + +#include "common/wrappers/iterator_range.h" #include "compiler/compiler-core.h" #include "compiler/data/class-data.h" +#include "compiler/data/function-data.h" #include "compiler/function-pass.h" #include "compiler/inferring/public.h" +#include "compiler/location.h" +#include "compiler/vertex-meta_op_base.h" +#include "compiler/vertex.h" // handle_exception reports whether a thrown_class will be caught by any of the given try blocks; // try_stack should contain the innermost try block in its end. diff --git a/compiler/pipes/calc-actual-edges.h b/compiler/pipes/calc-actual-edges.h index 2b45f40c44..1943942e3a 100644 --- a/compiler/pipes/calc-actual-edges.h +++ b/compiler/pipes/calc-actual-edges.h @@ -5,7 +5,12 @@ #pragma once #include +#include +#include +#include "auto/compiler/vertex/vertex-types.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" #include "compiler/threading/data-stream.h" diff --git a/compiler/pipes/calc-bad-vars.cpp b/compiler/pipes/calc-bad-vars.cpp index 3ba1c68451..6b736f57eb 100644 --- a/compiler/pipes/calc-bad-vars.cpp +++ b/compiler/pipes/calc-bad-vars.cpp @@ -5,17 +5,39 @@ #include "compiler/pipes/calc-bad-vars.h" #include +#include +#include +#include +#include +#include #include +#include +#include +#include #include #include +#include "auto/compiler/vertex/vertex-op_function.h" +#include "common/algorithms/compare.h" +#include "common/algorithms/string-algorithms.h" +#include "common/functional/identity.h" +#include "common/termformat/termformat.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/likely.h" #include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" #include "compiler/data/class-data.h" #include "compiler/data/data_ptr.h" +#include "compiler/data/function-data.h" #include "compiler/data/src-file.h" +#include "compiler/data/var-data.h" +#include "compiler/data/vertex-adaptor.h" +#include "compiler/function-colors.h" #include "compiler/function-pass.h" #include "compiler/kphp_assert.h" #include "compiler/pipes/calc-func-dep.h" +#include "compiler/stage.h" +#include "compiler/threading/data-stream.h" #include "compiler/utils/idmap.h" /*** Common algorithm ***/ diff --git a/compiler/pipes/calc-bad-vars.h b/compiler/pipes/calc-bad-vars.h index 756ae63809..72b5adcf0c 100644 --- a/compiler/pipes/calc-bad-vars.h +++ b/compiler/pipes/calc-bad-vars.h @@ -4,6 +4,8 @@ #pragma once +#include + #include "compiler/data/data_ptr.h" #include "compiler/pipes/calc-func-dep.h" #include "compiler/pipes/sync.h" diff --git a/compiler/pipes/calc-const-types.cpp b/compiler/pipes/calc-const-types.cpp index 406acdfd12..83b05f5d98 100644 --- a/compiler/pipes/calc-const-types.cpp +++ b/compiler/pipes/calc-const-types.cpp @@ -4,10 +4,22 @@ #include "compiler/pipes/calc-const-types.h" +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "common/algorithms/compare.h" +#include "common/wrappers/fmt_format.h" #include "common/wrappers/to_underlying.h" #include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" +#include "compiler/data/function-data.h" #include "compiler/data/src-file.h" #include "compiler/data/var-data.h" +#include "compiler/kphp_assert.h" +#include "compiler/operation.h" +#include "compiler/vertex-meta_op_base.h" +#include "compiler/vertex.h" void CalcConstTypePass::on_start() { if (current_function->type == FunctionData::func_class_holder) { diff --git a/compiler/pipes/calc-const-types.h b/compiler/pipes/calc-const-types.h index 6de2cd26c3..b30bdeee6e 100644 --- a/compiler/pipes/calc-const-types.h +++ b/compiler/pipes/calc-const-types.h @@ -4,6 +4,10 @@ #pragma once +#include + +#include "compiler/data/data_ptr.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" /*** Calculate const_type for all nodes ***/ diff --git a/compiler/pipes/calc-empty-functions.cpp b/compiler/pipes/calc-empty-functions.cpp index b90aeb6f2d..d286bc5f2d 100644 --- a/compiler/pipes/calc-empty-functions.cpp +++ b/compiler/pipes/calc-empty-functions.cpp @@ -4,9 +4,19 @@ #include "compiler/pipes/calc-empty-functions.h" +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" #include "compiler/compiler-core.h" #include "compiler/data/function-data.h" #include "compiler/data/src-file.h" +#include "compiler/data/vertex-adaptor.h" +#include "compiler/kphp_assert.h" +#include "compiler/stage.h" +#include "compiler/threading/data-stream.h" +#include "compiler/vertex-meta_op_base.h" +#include "compiler/vertex.h" namespace { diff --git a/compiler/pipes/calc-func-dep.cpp b/compiler/pipes/calc-func-dep.cpp index 6fe12c7a4e..bb8a5227b8 100644 --- a/compiler/pipes/calc-func-dep.cpp +++ b/compiler/pipes/calc-func-dep.cpp @@ -4,10 +4,20 @@ #include "compiler/pipes/calc-func-dep.h" +#include +#include + #include "auto/compiler/vertex/vertex-types.h" +#include "common/algorithms/find.h" +#include "common/wrappers/iterator_range.h" #include "compiler/data/class-data.h" #include "compiler/data/var-data.h" +#include "compiler/inferring/primitive-type.h" #include "compiler/inferring/public.h" +#include "compiler/inferring/type-data.h" +#include "compiler/kphp_assert.h" +#include "compiler/operation.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex.h" VertexPtr CalcFuncDepPass::on_enter_vertex(VertexPtr vertex) { diff --git a/compiler/pipes/calc-func-dep.h b/compiler/pipes/calc-func-dep.h index d322863dc7..6e99748c27 100644 --- a/compiler/pipes/calc-func-dep.h +++ b/compiler/pipes/calc-func-dep.h @@ -4,11 +4,16 @@ #pragma once +#include #include +#include +#include #include #include "common/mixin/movable_only.h" - +#include "compiler/data/data_ptr.h" +#include "compiler/data/function-data.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" struct DepData : private vk::movable_only { diff --git a/compiler/pipes/calc-locations.cpp b/compiler/pipes/calc-locations.cpp index 9e33393552..fcb20383fb 100644 --- a/compiler/pipes/calc-locations.cpp +++ b/compiler/pipes/calc-locations.cpp @@ -4,8 +4,17 @@ #include "compiler/pipes/calc-locations.h" +#include + +#include "auto/compiler/vertex/vertex-op_var.h" #include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/function-data.h" #include "compiler/data/var-data.h" +#include "compiler/location.h" +#include "compiler/stage.h" +#include "compiler/vertex-meta_op_base.h" void CalcLocationsPass::on_start() { if (current_function->type == FunctionData::func_class_holder) { diff --git a/compiler/pipes/calc-locations.h b/compiler/pipes/calc-locations.h index fcd0fb6c63..b622bc5e7f 100644 --- a/compiler/pipes/calc-locations.h +++ b/compiler/pipes/calc-locations.h @@ -6,9 +6,11 @@ #include +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" class CalcLocationsPass final : public FunctionPassBase { + public: std::string get_description() override { return "Calc locations"; diff --git a/compiler/pipes/calc-real-defines-values.cpp b/compiler/pipes/calc-real-defines-values.cpp index af94d5ee13..df5e2d9332 100644 --- a/compiler/pipes/calc-real-defines-values.cpp +++ b/compiler/pipes/calc-real-defines-values.cpp @@ -4,12 +4,30 @@ #include "compiler/pipes/calc-real-defines-values.h" +#include +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" #include "common/version-string.h" +#include "common/wrappers/fmt_format.h" #include "common/wrappers/likely.h" - +#include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" +#include "compiler/data/class-data.h" +#include "compiler/data/define-data.h" +#include "compiler/data/function-data.h" +#include "compiler/data/function-modifiers.h" #include "compiler/data/src-dir.h" #include "compiler/data/src-file.h" +#include "compiler/kphp_assert.h" #include "compiler/modulite-check-rules.h" +#include "compiler/name-gen.h" +#include "compiler/operation.h" +#include "compiler/stage.h" +#include "compiler/threading/data-stream.h" +#include "compiler/vertex-meta_op_base.h" +#include "compiler/vertex.h" /* * This is a sync point needed for two things. diff --git a/compiler/pipes/calc-real-defines-values.h b/compiler/pipes/calc-real-defines-values.h index dc4acb1590..acf8e05f51 100644 --- a/compiler/pipes/calc-real-defines-values.h +++ b/compiler/pipes/calc-real-defines-values.h @@ -4,12 +4,21 @@ #pragma once +#include +#include #include +#include +#include #include "compiler/const-manipulations.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/pipes/sync.h" #include "compiler/vertex.h" +template +class DataStream; + class CalcRealDefinesAndAssignModulitesF final : public SyncPipeF { private: using Base = SyncPipeF; diff --git a/compiler/pipes/calc-rl.cpp b/compiler/pipes/calc-rl.cpp index 2d584b917f..5a3ab16476 100644 --- a/compiler/pipes/calc-rl.cpp +++ b/compiler/pipes/calc-rl.cpp @@ -4,8 +4,23 @@ #include "compiler/pipes/calc-rl.h" +#include +#include +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "common/algorithms/find.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" #include "compiler/data/function-data.h" +#include "compiler/data/vertex-adaptor.h" +#include "compiler/kphp_assert.h" +#include "compiler/operation.h" +#include "compiler/stage.h" +#include "compiler/threading/data-stream.h" #include "compiler/type-hint.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex.h" void rl_calc(VertexPtr root, RLValueType expected_rl_type); diff --git a/compiler/pipes/calc-val-ref.cpp b/compiler/pipes/calc-val-ref.cpp index f358f550df..526ecd66e5 100644 --- a/compiler/pipes/calc-val-ref.cpp +++ b/compiler/pipes/calc-val-ref.cpp @@ -4,7 +4,12 @@ #include "compiler/pipes/calc-val-ref.h" +#include + #include "compiler/inferring/public.h" +#include "compiler/inferring/type-data.h" +#include "compiler/operation.h" +#include "compiler/vertex-meta_op_base.h" bool CalcValRefPass::is_allowed_for_getting_val_or_ref(Operation op, bool is_last, bool is_first) { switch (op) { diff --git a/compiler/pipes/calc-val-ref.h b/compiler/pipes/calc-val-ref.h index 8c9b54762e..1852e68bd0 100644 --- a/compiler/pipes/calc-val-ref.h +++ b/compiler/pipes/calc-val-ref.h @@ -4,9 +4,14 @@ #pragma once +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" class CalcValRefPass final : public FunctionPassBase { + bool is_allowed_for_getting_val_or_ref(Operation op, bool is_last, bool is_first); public: diff --git a/compiler/pipes/cfg-end.cpp b/compiler/pipes/cfg-end.cpp index 5f7070cd28..3aae88eb46 100644 --- a/compiler/pipes/cfg-end.cpp +++ b/compiler/pipes/cfg-end.cpp @@ -4,10 +4,30 @@ #include "compiler/pipes/cfg-end.h" +#include +#include +#include +#include +#include +#include +#include + +#include "auto/compiler/vertex/vertex-op_var.h" +#include "auto/compiler/vertex/vertex-types.h" +#include "common/wrappers/fmt_format.h" +#include "compiler/code-gen/gen-out-style.h" #include "compiler/compiler-core.h" #include "compiler/data/function-data.h" #include "compiler/data/var-data.h" +#include "compiler/data/vertex-adaptor.h" +#include "compiler/inferring/primitive-type.h" #include "compiler/inferring/public.h" +#include "compiler/inferring/type-data.h" +#include "compiler/inferring/var-node.h" +#include "compiler/kphp_assert.h" +#include "compiler/pipes/function-and-cfg.h" +#include "compiler/stage.h" +#include "compiler/threading/data-stream.h" #include "compiler/vertex.h" struct MergeData { diff --git a/compiler/pipes/check-abstract-function-defaults.cpp b/compiler/pipes/check-abstract-function-defaults.cpp index 34ee9e4f76..aa63176950 100644 --- a/compiler/pipes/check-abstract-function-defaults.cpp +++ b/compiler/pipes/check-abstract-function-defaults.cpp @@ -4,12 +4,27 @@ #include "compiler/pipes/check-abstract-function-defaults.h" +#include +#include + +#include "auto/compiler/vertex/vertex-op_func_param.h" +#include "auto/compiler/vertex/vertex-types.h" #include "common/containers/final_action.h" #include "common/termformat/termformat.h" - +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" +#include "compiler/const-manipulations.h" #include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" #include "compiler/data/function-data.h" +#include "compiler/data/function-modifiers.h" +#include "compiler/data/vertex-adaptor.h" +#include "compiler/kphp_assert.h" #include "compiler/pipes/calc-real-defines-values.h" +#include "compiler/stage.h" +#include "compiler/threading/data-stream.h" +#include "compiler/vertex-meta_op_base.h" +#include "compiler/vertex-util.h" void CheckAbstractFunctionDefaults::execute(FunctionPtr interface_function, DataStream& os) { stage::set_function(interface_function); diff --git a/compiler/pipes/check-access-modifiers.cpp b/compiler/pipes/check-access-modifiers.cpp index 91cb4897b7..95b59640e2 100644 --- a/compiler/pipes/check-access-modifiers.cpp +++ b/compiler/pipes/check-access-modifiers.cpp @@ -4,8 +4,15 @@ #include "compiler/pipes/check-access-modifiers.h" +#include "auto/compiler/vertex/vertex-types.h" +#include "common/wrappers/string_view.h" #include "compiler/compiler-core.h" #include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" +#include "compiler/data/function-modifiers.h" +#include "compiler/data/var-data.h" +#include "compiler/stage.h" +#include "compiler/vertex.h" void CheckAccessModifiersPass::on_start() { lambda_class_id = current_function->get_this_or_topmost_if_lambda()->class_id; diff --git a/compiler/pipes/check-access-modifiers.h b/compiler/pipes/check-access-modifiers.h index 6a3f1008af..ea90e3db94 100644 --- a/compiler/pipes/check-access-modifiers.h +++ b/compiler/pipes/check-access-modifiers.h @@ -4,9 +4,17 @@ #pragma once +#include +#include + +#include "common/wrappers/fmt_format.h" #include "compiler/data/class-data.h" #include "compiler/data/class-member-modifiers.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/function-data.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" +#include "compiler/kphp_assert.h" class CheckAccessModifiersPass final : public FunctionPassBase { private: diff --git a/compiler/pipes/check-classes.cpp b/compiler/pipes/check-classes.cpp index 6aedff9ae0..cbb4d7b591 100644 --- a/compiler/pipes/check-classes.cpp +++ b/compiler/pipes/check-classes.cpp @@ -4,16 +4,37 @@ #include "compiler/pipes/check-classes.h" +#include +#include +#include +#include +#include +#include +#include +#include + +#include "auto/compiler/vertex/vertex-op_var.h" +#include "auto/compiler/vertex/vertex-types.h" +#include "common/algorithms/find.h" +#include "common/algorithms/string-algorithms.h" #include "common/termformat/termformat.h" - +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/string_view.h" #include "compiler/compiler-core.h" #include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" #include "compiler/data/function-data.h" #include "compiler/data/src-file.h" #include "compiler/data/var-data.h" +#include "compiler/inferring/expr-node.h" +#include "compiler/inferring/primitive-type.h" #include "compiler/inferring/public.h" #include "compiler/inferring/type-data.h" +#include "compiler/inferring/var-node.h" +#include "compiler/kphp_assert.h" #include "compiler/phpdoc.h" +#include "compiler/utils/string-utils.h" +#include "compiler/vertex-meta_op_base.h" VertexPtr CheckClassesPass::on_enter_vertex(VertexPtr root) { const auto* type_data = root->tinf_node.get_type(); diff --git a/compiler/pipes/check-classes.h b/compiler/pipes/check-classes.h index 1c3a8a2833..45c0d3d4f7 100644 --- a/compiler/pipes/check-classes.h +++ b/compiler/pipes/check-classes.h @@ -4,7 +4,13 @@ #pragma once +#include +#include +#include +#include + #include "compiler/data/data_ptr.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" #include "compiler/threading/data-stream.h" diff --git a/compiler/pipes/check-conversions.cpp b/compiler/pipes/check-conversions.cpp index 54ebbe849c..06b8fd15a5 100644 --- a/compiler/pipes/check-conversions.cpp +++ b/compiler/pipes/check-conversions.cpp @@ -4,7 +4,18 @@ #include "compiler/pipes/check-conversions.h" +#include +#include +#include + +#include "auto/compiler/vertex/vertex-meta_op_unary.h" +#include "common/termformat/termformat.h" +#include "common/wrappers/fmt_format.h" #include "compiler/inferring/public.h" +#include "compiler/inferring/type-data.h" +#include "compiler/kphp_assert.h" +#include "compiler/operation.h" +#include "compiler/vertex-meta_op_base.h" const std::multimap CheckConversionsPass::forbidden_conversions = { {op_conv_int, tp_Class}, diff --git a/compiler/pipes/check-conversions.h b/compiler/pipes/check-conversions.h index ca6e4c3350..7d92d3eaa5 100644 --- a/compiler/pipes/check-conversions.h +++ b/compiler/pipes/check-conversions.h @@ -4,7 +4,13 @@ #pragma once +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" +#include "compiler/inferring/primitive-type.h" // This pipe forbids suspicious conversions (op_conv*) after the type inference. class CheckConversionsPass final : public FunctionPassBase { diff --git a/compiler/pipes/check-func-calls-and-vararg.cpp b/compiler/pipes/check-func-calls-and-vararg.cpp index e3235e64c7..b4d80bcc72 100644 --- a/compiler/pipes/check-func-calls-and-vararg.cpp +++ b/compiler/pipes/check-func-calls-and-vararg.cpp @@ -4,11 +4,34 @@ #include "compiler/pipes/check-func-calls-and-vararg.h" +#include +#include +#include +#include +#include +#include +#include + +#include "common/algorithms/compare.h" +#include "common/termformat/termformat.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" +#include "common/wrappers/string_view.h" +#include "compiler/compiler-core.h" +#include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" +#include "compiler/data/function-modifiers.h" #include "compiler/data/src-file.h" +#include "compiler/inferring/primitive-type.h" +#include "compiler/kphp_assert.h" +#include "compiler/location.h" #include "compiler/modulite-check-rules.h" +#include "compiler/operation.h" #include "compiler/rewrite-rules/replace-extern-func-calls.h" #include "compiler/type-hint.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" +#include "compiler/vertex.h" /* * This pass checks that func calls are correct, i.e. provided necessary amount of arguments, etc. diff --git a/compiler/pipes/check-func-calls-and-vararg.h b/compiler/pipes/check-func-calls-and-vararg.h index ab70f943b1..8953d3c3b8 100644 --- a/compiler/pipes/check-func-calls-and-vararg.h +++ b/compiler/pipes/check-func-calls-and-vararg.h @@ -4,9 +4,16 @@ #pragma once +#include + +#include "auto/compiler/vertex/vertex-types.h" #include "compiler/data/data_ptr.h" +#include "compiler/data/function-data.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" +class Location; + class CheckFuncCallsAndVarargPass final : public FunctionPassBase { VertexAdaptor process_varargs(VertexAdaptor call, FunctionPtr f_called); diff --git a/compiler/pipes/check-modifications-of-const-vars.cpp b/compiler/pipes/check-modifications-of-const-vars.cpp index 54fb921c0a..98b84aaa3e 100644 --- a/compiler/pipes/check-modifications-of-const-vars.cpp +++ b/compiler/pipes/check-modifications-of-const-vars.cpp @@ -4,11 +4,24 @@ #include "compiler/pipes/check-modifications-of-const-vars.h" -#include "common/termformat/termformat.h" +#include +#include +#include +#include "auto/compiler/vertex/vertex-types.h" +#include "common/termformat/termformat.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" +#include "common/wrappers/string_view.h" #include "compiler/data/class-data.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/function-data.h" #include "compiler/data/var-data.h" +#include "compiler/kphp_assert.h" +#include "compiler/operation.h" #include "compiler/phpdoc.h" +#include "compiler/vertex-meta_op_base.h" +#include "compiler/vertex.h" VertexPtr CheckModificationsOfConstVars::on_enter_vertex(VertexPtr v) { check_modifications(v); diff --git a/compiler/pipes/check-modifications-of-const-vars.h b/compiler/pipes/check-modifications-of-const-vars.h index 7d1278f787..e28502a593 100644 --- a/compiler/pipes/check-modifications-of-const-vars.h +++ b/compiler/pipes/check-modifications-of-const-vars.h @@ -4,7 +4,11 @@ #pragma once +#include + +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" +#include "compiler/stage.h" class CheckModificationsOfConstVars final : public FunctionPassBase { public: diff --git a/compiler/pipes/check-nested-foreach.cpp b/compiler/pipes/check-nested-foreach.cpp index 192a0ce8bf..8a6271a04c 100644 --- a/compiler/pipes/check-nested-foreach.cpp +++ b/compiler/pipes/check-nested-foreach.cpp @@ -4,10 +4,16 @@ #include "compiler/pipes/check-nested-foreach.h" +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" #include "common/algorithms/contains.h" #include "common/termformat/termformat.h" - +#include "common/wrappers/fmt_format.h" #include "compiler/data/var-data.h" +#include "compiler/kphp_assert.h" +#include "compiler/vertex.h" VarPtr get_non_local_scope_visible_var(VertexAdaptor params) noexcept { if (auto iterable_instance = params->xs().try_as()) { diff --git a/compiler/pipes/check-nested-foreach.h b/compiler/pipes/check-nested-foreach.h index 8ab2f139b0..567bb990f8 100644 --- a/compiler/pipes/check-nested-foreach.h +++ b/compiler/pipes/check-nested-foreach.h @@ -4,6 +4,12 @@ #pragma once +#include +#include + +#include "compiler/data/data_ptr.h" +#include "compiler/data/function-data.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" class CheckNestedForeachPass final : public FunctionPassBase { diff --git a/compiler/pipes/check-tl-classes.cpp b/compiler/pipes/check-tl-classes.cpp index ea9ebfd48e..7652a509f8 100644 --- a/compiler/pipes/check-tl-classes.cpp +++ b/compiler/pipes/check-tl-classes.cpp @@ -4,10 +4,25 @@ #include "compiler/pipes/check-tl-classes.h" +#include +#include +#include +#include +#include +#include +#include + +#include "common/tl2php/php-classes.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/string_view.h" #include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" #include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" #include "compiler/data/function-data.h" +#include "compiler/kphp_assert.h" #include "compiler/phpdoc.h" +#include "compiler/tl-classes.h" namespace { diff --git a/compiler/pipes/check-tl-classes.h b/compiler/pipes/check-tl-classes.h index 37875c5b60..84a44d409f 100644 --- a/compiler/pipes/check-tl-classes.h +++ b/compiler/pipes/check-tl-classes.h @@ -4,6 +4,9 @@ #pragma once +#include + +#include "compiler/data/data_ptr.h" #include "compiler/function-pass.h" class CheckTlClasses final : public FunctionPassBase { diff --git a/compiler/pipes/check-type-hint-variance.cpp b/compiler/pipes/check-type-hint-variance.cpp index c390820a7a..c450be3d53 100644 --- a/compiler/pipes/check-type-hint-variance.cpp +++ b/compiler/pipes/check-type-hint-variance.cpp @@ -3,11 +3,25 @@ // Distributed under the GPL v3 License, see LICENSE.notice.txt #include "compiler/pipes/check-type-hint-variance.h" + +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "common/containers/final_action.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" #include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" #include "compiler/data/function-data.h" +#include "compiler/data/function-modifiers.h" +#include "compiler/data/vertex-adaptor.h" +#include "compiler/kphp_assert.h" +#include "compiler/location.h" +#include "compiler/stage.h" +#include "compiler/threading/data-stream.h" #include "compiler/type-hint.h" - -#include "common/containers/final_action.h" +#include "compiler/vertex.h" namespace { diff --git a/compiler/pipes/check-ub.cpp b/compiler/pipes/check-ub.cpp index 48c501e781..75ddd52f59 100644 --- a/compiler/pipes/check-ub.cpp +++ b/compiler/pipes/check-ub.cpp @@ -4,8 +4,27 @@ #include "compiler/pipes/check-ub.h" +#include +#include +#include +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "common/algorithms/find.h" +#include "common/wrappers/fmt_format.h" #include "compiler/compiler-core.h" #include "compiler/data/function-data.h" +#include "compiler/data/var-data.h" +#include "compiler/data/vertex-adaptor.h" +#include "compiler/kphp_assert.h" +#include "compiler/location.h" +#include "compiler/operation.h" +#include "compiler/stage.h" +#include "compiler/threading/data-stream.h" +#include "compiler/threading/tls.h" +#include "compiler/vertex-meta_op_base.h" +#include "compiler/vertex.h" /* * C++ undefined behaviour fixes. diff --git a/compiler/pipes/clone-strange-const-params.cpp b/compiler/pipes/clone-strange-const-params.cpp index 5bbbe725c0..e28aa4dcdf 100644 --- a/compiler/pipes/clone-strange-const-params.cpp +++ b/compiler/pipes/clone-strange-const-params.cpp @@ -4,8 +4,24 @@ #include "compiler/pipes/clone-strange-const-params.h" +#include +#include +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "common/algorithms/find.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" #include "compiler/compiler-core.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/function-data.h" +#include "compiler/data/function-modifiers.h" #include "compiler/data/var-data.h" +#include "compiler/kphp_assert.h" +#include "compiler/stats.h" +#include "compiler/vertex-meta_op_base.h" +#include "compiler/vertex.h" VertexPtr CloneStrangeConstParams::on_enter_vertex(VertexPtr root) { auto func_call = root.try_as(); diff --git a/compiler/pipes/clone-strange-const-params.h b/compiler/pipes/clone-strange-const-params.h index b36b19e41e..cad3acbe76 100644 --- a/compiler/pipes/clone-strange-const-params.h +++ b/compiler/pipes/clone-strange-const-params.h @@ -4,6 +4,9 @@ #pragma once +#include + +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" #include "compiler/pipes/function-and-cfg.h" diff --git a/compiler/pipes/code-gen.cpp b/compiler/pipes/code-gen.cpp index d8a09e3fbf..2523e94b94 100644 --- a/compiler/pipes/code-gen.cpp +++ b/compiler/pipes/code-gen.cpp @@ -4,6 +4,20 @@ #include "compiler/pipes/code-gen.h" +#include +#include +#include +#include +#include +#include +#include + +#include "common/algorithms/hashes.h" +#include "common/algorithms/string-algorithms.h" +#include "common/smart_ptrs/singleton.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/string_view.h" +#include "compiler/code-gen/code-gen-root-cmd.h" #include "compiler/code-gen/code-gen-task.h" #include "compiler/code-gen/code-generator.h" #include "compiler/code-gen/common.h" @@ -23,16 +37,26 @@ #include "compiler/code-gen/files/tracing-autogen.h" #include "compiler/code-gen/files/type-tagger.h" #include "compiler/code-gen/raw-data.h" +#include "compiler/code-gen/writer-data.h" #include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" #include "compiler/cpp-dest-dir-initializer.h" #include "compiler/data/class-data.h" +#include "compiler/data/ffi-data.h" #include "compiler/data/function-data.h" +#include "compiler/data/function-modifiers.h" #include "compiler/data/generics-mixins.h" #include "compiler/data/lib-data.h" #include "compiler/data/src-file.h" +#include "compiler/data/var-data.h" #include "compiler/inferring/public.h" +#include "compiler/kphp_assert.h" #include "compiler/pipes/collect-forkable-types.h" +#include "compiler/stage.h" +#include "compiler/stats.h" +#include "compiler/threading/data-stream.h" #include "compiler/type-hint.h" +#include "compiler/utils/string-utils.h" void CodeGenF::execute(FunctionPtr function, DataStream>& unused_os __attribute__((unused))) { if (function->does_need_codegen() || function->is_imported_from_static_lib()) { diff --git a/compiler/pipes/code-gen.h b/compiler/pipes/code-gen.h index afabef5502..04c5d43b7c 100644 --- a/compiler/pipes/code-gen.h +++ b/compiler/pipes/code-gen.h @@ -4,8 +4,14 @@ #pragma once +#include +#include +#include +#include + #include "compiler/code-gen/code-gen-root-cmd.h" #include "compiler/code-gen/writer-data.h" +#include "compiler/data/data_ptr.h" #include "compiler/pipes/sync.h" #include "compiler/threading/data-stream.h" diff --git a/compiler/pipes/collect-const-vars.cpp b/compiler/pipes/collect-const-vars.cpp index ba7a61e1f8..6c2101653a 100644 --- a/compiler/pipes/collect-const-vars.cpp +++ b/compiler/pipes/collect-const-vars.cpp @@ -4,17 +4,31 @@ #include "compiler/pipes/collect-const-vars.h" +#include +#include +#include +#include #include #include "auto/compiler/vertex/vertex-types.h" +#include "common/algorithms/find.h" #include "common/algorithms/hashes.h" +#include "common/wrappers/fmt_format.h" #include "compiler/compiler-core.h" #include "compiler/const-manipulations.h" +#include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/function-data.h" #include "compiler/data/var-data.h" #include "compiler/data/vertex-adaptor.h" #include "compiler/kphp_assert.h" +#include "compiler/location.h" #include "compiler/name-gen.h" +#include "compiler/operation.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" +#include "compiler/vertex.h" namespace { diff --git a/compiler/pipes/collect-const-vars.h b/compiler/pipes/collect-const-vars.h index f1a311b467..5443fe1452 100644 --- a/compiler/pipes/collect-const-vars.h +++ b/compiler/pipes/collect-const-vars.h @@ -4,8 +4,13 @@ #pragma once +#include + +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" +class Location; + /*** Replace constant expressions with const variables ***/ class CollectConstVarsPass final : public FunctionPassBase { private: diff --git a/compiler/pipes/collect-forkable-types.cpp b/compiler/pipes/collect-forkable-types.cpp index fd920901b6..6700a67b85 100644 --- a/compiler/pipes/collect-forkable-types.cpp +++ b/compiler/pipes/collect-forkable-types.cpp @@ -4,8 +4,18 @@ #include "compiler/pipes/collect-forkable-types.h" +#include +#include +#include + +#include "auto/compiler/vertex/vertex-op_func_call.h" +#include "auto/compiler/vertex/vertex-types.h" #include "common/algorithms/sorting.h" +#include "common/smart_ptrs/singleton.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/function-data.h" #include "compiler/inferring/public.h" +#include "compiler/inferring/type-data.h" VertexPtr CollectForkableTypesPass::on_enter_vertex(VertexPtr root) { if (auto call = root.try_as()) { diff --git a/compiler/pipes/collect-forkable-types.h b/compiler/pipes/collect-forkable-types.h index 76bc292770..e5511f9872 100644 --- a/compiler/pipes/collect-forkable-types.h +++ b/compiler/pipes/collect-forkable-types.h @@ -4,11 +4,19 @@ #pragma once +#include +#include +#include + #include "common/mixin/not_copyable.h" #include "common/smart_ptrs/singleton.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" +class TypeData; + class CollectForkableTypesPass final : public FunctionPassBase { + public: std::string get_description() final { return "Collect forkable types"; diff --git a/compiler/pipes/collect-main-edges.cpp b/compiler/pipes/collect-main-edges.cpp index 5a192fdf1d..8918aea0fb 100644 --- a/compiler/pipes/collect-main-edges.cpp +++ b/compiler/pipes/collect-main-edges.cpp @@ -4,21 +4,46 @@ #include "compiler/pipes/collect-main-edges.h" +#include +#include +#include +#include +#include + +#include "common/algorithms/find.h" #include "common/php-functions.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" #include "compiler/compiler-core.h" +#include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" #include "compiler/data/define-data.h" +#include "compiler/data/function-data.h" #include "compiler/data/src-file.h" #include "compiler/data/var-data.h" #include "compiler/function-pass.h" #include "compiler/inferring/edge.h" #include "compiler/inferring/ifi.h" +#include "compiler/inferring/key.h" +#include "compiler/inferring/lvalue.h" +#include "compiler/inferring/multi-key.h" +#include "compiler/inferring/node.h" +#include "compiler/inferring/primitive-type.h" #include "compiler/inferring/public.h" #include "compiler/inferring/restriction-isset.h" #include "compiler/inferring/restriction-match-phpdoc.h" #include "compiler/inferring/restriction-non-void.h" +#include "compiler/inferring/type-data.h" +#include "compiler/inferring/type-inferer.h" #include "compiler/inferring/type-node.h" +#include "compiler/inferring/var-node.h" +#include "compiler/kphp_assert.h" +#include "compiler/operation.h" +#include "compiler/stage.h" #include "compiler/type-hint.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" +#include "compiler/vertex.h" namespace { diff --git a/compiler/pipes/collect-main-edges.h b/compiler/pipes/collect-main-edges.h index 327bf94027..df3d9fb001 100644 --- a/compiler/pipes/collect-main-edges.h +++ b/compiler/pipes/collect-main-edges.h @@ -4,11 +4,19 @@ #pragma once +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" #include "compiler/inferring/lvalue.h" #include "compiler/inferring/rvalue.h" #include "compiler/pipes/function-and-cfg.h" +class TypeData; +class TypeHint; + class CollectMainEdgesPass final : public FunctionPassBase { private: bool have_returns = false; diff --git a/compiler/pipes/collect-required-and-classes.cpp b/compiler/pipes/collect-required-and-classes.cpp index 1820696401..96694ed36d 100644 --- a/compiler/pipes/collect-required-and-classes.cpp +++ b/compiler/pipes/collect-required-and-classes.cpp @@ -4,14 +4,47 @@ #include "compiler/pipes/collect-required-and-classes.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "common/algorithms/string-algorithms.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" +#include "common/wrappers/string_view.h" #include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" +#include "compiler/composer.h" #include "compiler/const-manipulations.h" +#include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" +#include "compiler/data/ffi-data.h" +#include "compiler/data/function-data.h" #include "compiler/data/modulite-data.h" #include "compiler/data/src-dir.h" #include "compiler/data/src-file.h" +#include "compiler/data/var-data.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" +#include "compiler/kphp_assert.h" +#include "compiler/location.h" +#include "compiler/name-gen.h" +#include "compiler/operation.h" #include "compiler/phpdoc.h" +#include "compiler/stage.h" #include "compiler/type-hint.h" +#include "compiler/utils/string-utils.h" +#include "compiler/vertex-meta_op_base.h" +#include "compiler/vertex.h" class CollectRequiredPass final : public FunctionPassBase { private: diff --git a/compiler/pipes/collect-required-and-classes.h b/compiler/pipes/collect-required-and-classes.h index 3083aab243..e88ce2c2b4 100644 --- a/compiler/pipes/collect-required-and-classes.h +++ b/compiler/pipes/collect-required-and-classes.h @@ -4,6 +4,8 @@ #pragma once +#include + #include "compiler/data/data_ptr.h" #include "compiler/threading/data-stream.h" diff --git a/compiler/pipes/convert-invoke-to-func-call.cpp b/compiler/pipes/convert-invoke-to-func-call.cpp index 1b3b827cae..e83b00366f 100644 --- a/compiler/pipes/convert-invoke-to-func-call.cpp +++ b/compiler/pipes/convert-invoke-to-func-call.cpp @@ -4,8 +4,27 @@ #include "compiler/pipes/convert-invoke-to-func-call.h" +#include +#include +#include +#include + +#include "common/algorithms/find.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" +#include "common/wrappers/string_view.h" +#include "compiler/class-assumptions.h" +#include "compiler/compiler-core.h" +#include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" +#include "compiler/kphp_assert.h" #include "compiler/name-gen.h" +#include "compiler/operation.h" +#include "compiler/stage.h" +#include "compiler/threading/data-stream.h" #include "compiler/type-hint.h" +#include "compiler/vertex-meta_op_base.h" +#include "compiler/vertex.h" /* * This pass does creates op_func_call that can't be created earlier: at this point, we are after a sync point. diff --git a/compiler/pipes/convert-invoke-to-func-call.h b/compiler/pipes/convert-invoke-to-func-call.h index 29c9b6329a..847f1e4648 100644 --- a/compiler/pipes/convert-invoke-to-func-call.h +++ b/compiler/pipes/convert-invoke-to-func-call.h @@ -4,9 +4,19 @@ #pragma once +#include +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" #include "compiler/data/data_ptr.h" +#include "compiler/data/function-data.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" +template +class DataStream; + class ConvertInvokeToFuncCallPass final : public FunctionPassBase { std::forward_list nested_lambdas; diff --git a/compiler/pipes/convert-list-assignments.cpp b/compiler/pipes/convert-list-assignments.cpp index 423c62cf32..c0734de660 100644 --- a/compiler/pipes/convert-list-assignments.cpp +++ b/compiler/pipes/convert-list-assignments.cpp @@ -4,7 +4,14 @@ #include "compiler/pipes/convert-list-assignments.h" +#include +#include + +#include "common/wrappers/iterator_range.h" #include "compiler/name-gen.h" +#include "compiler/operation.h" +#include "compiler/vertex-meta_op_base.h" +#include "compiler/vertex.h" VertexPtr ConvertListAssignmentsPass::process_list_assignment(VertexAdaptor list) { // save right part to temporary variable in cases: diff --git a/compiler/pipes/convert-list-assignments.h b/compiler/pipes/convert-list-assignments.h index d98f3cc26e..6d33e7630c 100644 --- a/compiler/pipes/convert-list-assignments.h +++ b/compiler/pipes/convert-list-assignments.h @@ -4,6 +4,10 @@ #pragma once +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" // This pipe rewrites some list assignments. diff --git a/compiler/pipes/convert-sprintf-calls.cpp b/compiler/pipes/convert-sprintf-calls.cpp index 712bfd3f1a..c794c7be72 100644 --- a/compiler/pipes/convert-sprintf-calls.cpp +++ b/compiler/pipes/convert-sprintf-calls.cpp @@ -4,8 +4,21 @@ #include "compiler/pipes/convert-sprintf-calls.h" -#include "compiler/vertex-util.h" +#include +#include #include +#include + +#include "common/algorithms/find.h" +#include "common/wrappers/iterator_range.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/function-data.h" +#include "compiler/data/var-data.h" +#include "compiler/location.h" +#include "compiler/stage.h" +#include "compiler/vertex-meta_op_base.h" +#include "compiler/vertex-util.h" +#include "compiler/vertex.h" struct FormatCallInfo { FormatCallInfo() diff --git a/compiler/pipes/convert-sprintf-calls.h b/compiler/pipes/convert-sprintf-calls.h index 5c26536ccd..8ea6fa8412 100644 --- a/compiler/pipes/convert-sprintf-calls.h +++ b/compiler/pipes/convert-sprintf-calls.h @@ -4,11 +4,17 @@ #pragma once +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" #include "compiler/compiler-core.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" struct FormatCallInfo; struct FormatPart; +class Location; // This pipe rewrites some sprintf calls. // diff --git a/compiler/pipes/deduce-implicit-types-and-casts.cpp b/compiler/pipes/deduce-implicit-types-and-casts.cpp index 3b12df805a..3d27f24e88 100644 --- a/compiler/pipes/deduce-implicit-types-and-casts.cpp +++ b/compiler/pipes/deduce-implicit-types-and-casts.cpp @@ -3,17 +3,47 @@ // Distributed under the GPL v3 License, see LICENSE.notice.txt #include "compiler/pipes/deduce-implicit-types-and-casts.h" -#include "compiler/pipes/transform-to-smart-instanceof.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "common/algorithms/find.h" +#include "common/termformat/termformat.h" +#include "common/wrappers/copyable-atomic.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" +#include "compiler/class-assumptions.h" #include "compiler/compiler-core.h" +#include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" +#include "compiler/data/class-modifiers.h" +#include "compiler/data/ffi-data.h" +#include "compiler/data/function-data.h" #include "compiler/data/generics-mixins.h" #include "compiler/data/src-file.h" #include "compiler/generics-reification.h" +#include "compiler/inferring/primitive-type.h" +#include "compiler/kphp_assert.h" #include "compiler/lambda-utils.h" #include "compiler/name-gen.h" +#include "compiler/operation.h" #include "compiler/phpdoc.h" +#include "compiler/pipes/transform-to-smart-instanceof.h" +#include "compiler/stage.h" #include "compiler/type-hint.h" +#include "compiler/utils/string-utils.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" +#include "compiler/vertex.h" /* * Deducing implicit types is a very important step of the compilation pipeline. diff --git a/compiler/pipes/deduce-implicit-types-and-casts.h b/compiler/pipes/deduce-implicit-types-and-casts.h index a23a7205f9..c37b079b39 100644 --- a/compiler/pipes/deduce-implicit-types-and-casts.h +++ b/compiler/pipes/deduce-implicit-types-and-casts.h @@ -4,8 +4,17 @@ #pragma once +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" #include "compiler/threading/data-stream.h" +#include "compiler/vertex.h" + +class TypeHint; // see detailed comments is a .cpp file about what this pass does diff --git a/compiler/pipes/early-optimization.cpp b/compiler/pipes/early-optimization.cpp index 0dd116b563..2f1fb0c79a 100644 --- a/compiler/pipes/early-optimization.cpp +++ b/compiler/pipes/early-optimization.cpp @@ -4,11 +4,29 @@ #include "compiler/pipes/early-optimization.h" +#include +#include +#include +#include +#include +#include +#include +#include + #include "auto/compiler/rewrite-rules/early_opt.h" +#include "auto/compiler/vertex/vertex-types.h" +#include "common/algorithms/find.h" +#include "common/wrappers/iterator_range.h" +#include "common/wrappers/string_view.h" #include "compiler/compiler-core.h" #include "compiler/data/function-data.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" +#include "compiler/stage.h" +#include "compiler/threading/data-stream.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" +#include "compiler/vertex.h" // EarlyOptimizationPass applies optimizations by rewriting the AST. // It's called "early" because it happens before the type inference. diff --git a/compiler/pipes/erase-defines-declarations.cpp b/compiler/pipes/erase-defines-declarations.cpp index 09310080a0..660921c527 100644 --- a/compiler/pipes/erase-defines-declarations.cpp +++ b/compiler/pipes/erase-defines-declarations.cpp @@ -4,8 +4,14 @@ #include "compiler/pipes/erase-defines-declarations.h" +#include "auto/compiler/vertex/vertex-op_define.h" +#include "auto/compiler/vertex/vertex-op_var.h" +#include "auto/compiler/vertex/vertex-types.h" +#include "compiler/compiler-core.h" #include "compiler/const-manipulations.h" +#include "compiler/data/data_ptr.h" #include "compiler/data/define-data.h" +#include "compiler/operation.h" VertexPtr EraseDefinesDeclarationsPass::on_exit_vertex(VertexPtr root) { // when inside a function: diff --git a/compiler/pipes/erase-defines-declarations.h b/compiler/pipes/erase-defines-declarations.h index 0ade5cfc95..44fad916b6 100644 --- a/compiler/pipes/erase-defines-declarations.h +++ b/compiler/pipes/erase-defines-declarations.h @@ -4,10 +4,15 @@ #pragma once +#include + #include "compiler/data/define-data.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" +#include "compiler/vertex-meta_op_base.h" class EraseDefinesDeclarationsPass final : public FunctionPassBase { + public: std::string get_description() override { return "Erase defines declarations"; diff --git a/compiler/pipes/extract-async.cpp b/compiler/pipes/extract-async.cpp index ecfe58b744..2c57e41810 100644 --- a/compiler/pipes/extract-async.cpp +++ b/compiler/pipes/extract-async.cpp @@ -5,6 +5,14 @@ #include "compiler/pipes/extract-async.h" #include +#include +#include + +#include "common/wrappers/fmt_format.h" +#include "compiler/data/function-data.h" +#include "compiler/kphp_assert.h" +#include "compiler/operation.h" +#include "compiler/vertex.h" bool ExtractAsyncPass::check_function(FunctionPtr function) const { return !function->is_extern() && function->is_resumable; diff --git a/compiler/pipes/extract-async.h b/compiler/pipes/extract-async.h index 41c9bf08e0..c0d7171208 100644 --- a/compiler/pipes/extract-async.h +++ b/compiler/pipes/extract-async.h @@ -4,7 +4,13 @@ #pragma once +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" +#include "compiler/vertex-meta_op_base.h" class ExtractAsyncPass final : public FunctionPassBase { public: diff --git a/compiler/pipes/extract-resumable-calls.cpp b/compiler/pipes/extract-resumable-calls.cpp index 227b97aa16..4ff9d145ba 100644 --- a/compiler/pipes/extract-resumable-calls.cpp +++ b/compiler/pipes/extract-resumable-calls.cpp @@ -4,10 +4,22 @@ #include "compiler/pipes/extract-resumable-calls.h" +#include +#include + +#include "common/algorithms/find.h" #include "compiler/compiler-core.h" +#include "compiler/data/function-data.h" +#include "compiler/data/var-data.h" #include "compiler/inferring/public.h" +#include "compiler/inferring/var-node.h" +#include "compiler/kphp_assert.h" #include "compiler/name-gen.h" +#include "compiler/operation.h" +#include "compiler/stage.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" +#include "compiler/vertex.h" VertexPtr* ExtractResumableCallsPass::skip_conv_and_sets(VertexPtr* replace) noexcept { if (auto set_modify = replace->try_as()) { diff --git a/compiler/pipes/extract-resumable-calls.h b/compiler/pipes/extract-resumable-calls.h index 90b2e0295a..f6536959a5 100644 --- a/compiler/pipes/extract-resumable-calls.h +++ b/compiler/pipes/extract-resumable-calls.h @@ -4,6 +4,12 @@ #pragma once +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" class ExtractResumableCallsPass final : public FunctionPassBase { diff --git a/compiler/pipes/file-to-tokens.cpp b/compiler/pipes/file-to-tokens.cpp index 1d434017a0..3dc35ea79b 100644 --- a/compiler/pipes/file-to-tokens.cpp +++ b/compiler/pipes/file-to-tokens.cpp @@ -4,10 +4,15 @@ #include "compiler/pipes/file-to-tokens.h" +#include + #include "compiler/data/src-file.h" +#include "compiler/kphp_assert.h" #include "compiler/lexer.h" #include "compiler/stage.h" +#include "compiler/threading/data-stream.h" #include "compiler/threading/profiler.h" +#include "compiler/token.h" void FileToTokensF::execute(SrcFilePtr file, DataStream>>& os) { stage::set_name("Split file to tokens"); diff --git a/compiler/pipes/file-to-tokens.h b/compiler/pipes/file-to-tokens.h index d4e2908bfd..73a3b518b9 100644 --- a/compiler/pipes/file-to-tokens.h +++ b/compiler/pipes/file-to-tokens.h @@ -4,11 +4,15 @@ #pragma once +#include +#include + #include "compiler/data/data_ptr.h" #include "compiler/threading/data-stream.h" #include "compiler/token.h" class FileToTokensF { + public: void execute(SrcFilePtr file, DataStream>>& os); }; diff --git a/compiler/pipes/filter-only-actually-used.cpp b/compiler/pipes/filter-only-actually-used.cpp index 71a844b63b..3ea081740e 100644 --- a/compiler/pipes/filter-only-actually-used.cpp +++ b/compiler/pipes/filter-only-actually-used.cpp @@ -4,13 +4,37 @@ #include "compiler/pipes/filter-only-actually-used.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" #include "common/algorithms/find.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/string_view.h" #include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" #include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" #include "compiler/data/function-data.h" +#include "compiler/data/function-modifiers.h" +#include "compiler/data/performance-inspections.h" #include "compiler/data/src-file.h" +#include "compiler/data/vertex-adaptor.h" +#include "compiler/function-pass.h" +#include "compiler/kphp_assert.h" +#include "compiler/stage.h" +#include "compiler/threading/data-stream.h" #include "compiler/threading/profiler.h" +#include "compiler/utils/idmap.h" #include "compiler/vertex-util.h" +#include "compiler/vertex.h" // having a typed callable __invoke(), which is a virtual function with switch-case dispatching, // replace body of `case {lambda_class_to_remove.hash()}:` (which is a lambda invoke call) diff --git a/compiler/pipes/filter-only-actually-used.h b/compiler/pipes/filter-only-actually-used.h index b6bc2176e5..b0d1f0549e 100644 --- a/compiler/pipes/filter-only-actually-used.h +++ b/compiler/pipes/filter-only-actually-used.h @@ -4,6 +4,10 @@ #pragma once +#include +#include + +#include "compiler/data/data_ptr.h" #include "compiler/pipes/calc-actual-edges.h" #include "compiler/pipes/sync.h" #include "compiler/threading/data-stream.h" diff --git a/compiler/pipes/final-check.cpp b/compiler/pipes/final-check.cpp index 8ea896f775..60ab7dfa1f 100644 --- a/compiler/pipes/final-check.cpp +++ b/compiler/pipes/final-check.cpp @@ -4,18 +4,48 @@ #include "compiler/pipes/final-check.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + #include "common/algorithms/contains.h" #include "common/algorithms/find.h" #include "common/algorithms/string-algorithms.h" +#include "common/functional/identity.h" #include "common/termformat/termformat.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" +#include "common/wrappers/string_view.h" #include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" +#include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" +#include "compiler/data/class-modifiers.h" +#include "compiler/data/ffi-data.h" +#include "compiler/data/function-modifiers.h" #include "compiler/data/kphp-json-tags.h" #include "compiler/data/kphp-tracing-tags.h" #include "compiler/data/var-data.h" +#include "compiler/ffi/ffi_types.h" #include "compiler/inferring/primitive-type.h" +#include "compiler/inferring/public.h" +#include "compiler/inferring/type-data.h" +#include "compiler/inferring/var-node.h" #include "compiler/kphp_assert.h" +#include "compiler/operation.h" +#include "compiler/stage.h" +#include "compiler/threading/locks.h" #include "compiler/type-hint.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" +#include "compiler/vertex.h" namespace { void check_class_immutableness(ClassPtr klass) { diff --git a/compiler/pipes/final-check.h b/compiler/pipes/final-check.h index d562e6ccca..620906be51 100644 --- a/compiler/pipes/final-check.h +++ b/compiler/pipes/final-check.h @@ -4,7 +4,13 @@ #pragma once +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/function-data.h" #include "compiler/data/var-data.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" #include "compiler/inferring/public.h" diff --git a/compiler/pipes/fix-returns.cpp b/compiler/pipes/fix-returns.cpp index 1a534e62a9..41be99d686 100644 --- a/compiler/pipes/fix-returns.cpp +++ b/compiler/pipes/fix-returns.cpp @@ -4,8 +4,26 @@ #include "compiler/pipes/fix-returns.h" +#include +#include +#include +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/function-data.h" #include "compiler/data/src-file.h" +#include "compiler/inferring/primitive-type.h" #include "compiler/inferring/public.h" +#include "compiler/inferring/type-data.h" +#include "compiler/kphp_assert.h" +#include "compiler/location.h" +#include "compiler/operation.h" +#include "compiler/vertex-meta_op_base.h" +#include "compiler/vertex.h" VertexPtr FixReturnsPass::on_enter_vertex(VertexPtr root) { auto is_void_fun = [](FunctionPtr f) { return tinf::get_type(f, -1)->ptype() == tp_void; }; diff --git a/compiler/pipes/fix-returns.h b/compiler/pipes/fix-returns.h index 2ae2e01e36..bc02bf5dea 100644 --- a/compiler/pipes/fix-returns.h +++ b/compiler/pipes/fix-returns.h @@ -4,6 +4,9 @@ #pragma once +#include + +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" class FixReturnsPass final : public FunctionPassBase { diff --git a/compiler/pipes/gen-tree-postprocess.cpp b/compiler/pipes/gen-tree-postprocess.cpp index 5cf1e8c9d5..0db77a10b9 100644 --- a/compiler/pipes/gen-tree-postprocess.cpp +++ b/compiler/pipes/gen-tree-postprocess.cpp @@ -4,11 +4,35 @@ #include "compiler/pipes/gen-tree-postprocess.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "common/algorithms/find.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" +#include "common/wrappers/string_view.h" #include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" #include "compiler/data/class-data.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/function-data.h" #include "compiler/data/lib-data.h" #include "compiler/data/src-file.h" +#include "compiler/data/var-data.h" +#include "compiler/kphp_assert.h" +#include "compiler/location.h" +#include "compiler/operation.h" +#include "compiler/stage.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" +#include "compiler/vertex.h" namespace { template diff --git a/compiler/pipes/gen-tree-postprocess.h b/compiler/pipes/gen-tree-postprocess.h index ffa8b7eb2b..d3ae682db2 100644 --- a/compiler/pipes/gen-tree-postprocess.h +++ b/compiler/pipes/gen-tree-postprocess.h @@ -4,6 +4,10 @@ #pragma once +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" class GenTreePostprocessPass final : public FunctionPassBase { diff --git a/compiler/pipes/generate-virtual-methods.cpp b/compiler/pipes/generate-virtual-methods.cpp index 38daa7c29c..950a2465ed 100644 --- a/compiler/pipes/generate-virtual-methods.cpp +++ b/compiler/pipes/generate-virtual-methods.cpp @@ -4,14 +4,36 @@ #include "compiler/pipes/generate-virtual-methods.h" -#include "common/algorithms/contains.h" - +#include +#include +#include +#include +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" +#include "common/wrappers/string_view.h" #include "compiler/compiler-core.h" #include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" +#include "compiler/data/class-modifiers.h" #include "compiler/data/function-data.h" +#include "compiler/data/function-modifiers.h" #include "compiler/data/src-file.h" +#include "compiler/data/vertex-adaptor.h" +#include "compiler/inferring/primitive-type.h" +#include "compiler/inferring/type-data.h" +#include "compiler/kphp_assert.h" +#include "compiler/location.h" +#include "compiler/operation.h" +#include "compiler/stage.h" +#include "compiler/threading/data-stream.h" #include "compiler/type-hint.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" +#include "compiler/vertex.h" // a "virtual method" is an instance method overridden in child classes (all methods of interfaces are virtual also) // $obj->virtual_method() call actually dynamically handles the runtime type of $obj, proxying a call to a concrete class diff --git a/compiler/pipes/generate-virtual-methods.h b/compiler/pipes/generate-virtual-methods.h index 4e118849c2..24afcaae00 100644 --- a/compiler/pipes/generate-virtual-methods.h +++ b/compiler/pipes/generate-virtual-methods.h @@ -4,6 +4,9 @@ #pragma once +#include +#include + #include "compiler/data/data_ptr.h" #include "compiler/pipes/sync.h" #include "compiler/threading/data-stream.h" diff --git a/compiler/pipes/inline-defines-usages.cpp b/compiler/pipes/inline-defines-usages.cpp index 88a2f61c21..9d4eedf767 100644 --- a/compiler/pipes/inline-defines-usages.cpp +++ b/compiler/pipes/inline-defines-usages.cpp @@ -4,10 +4,28 @@ #include "compiler/pipes/inline-defines-usages.h" +#include +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "common/algorithms/string-algorithms.h" +#include "common/wrappers/fmt_format.h" +#include "compiler/compiler-core.h" +#include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" #include "compiler/data/define-data.h" +#include "compiler/data/field-modifiers.h" +#include "compiler/data/function-data.h" +#include "compiler/data/var-data.h" +#include "compiler/kphp_assert.h" #include "compiler/modulite-check-rules.h" #include "compiler/name-gen.h" +#include "compiler/operation.h" #include "compiler/pipes/check-access-modifiers.h" +#include "compiler/stage.h" +#include "compiler/vertex-meta_op_base.h" +#include "compiler/vertex.h" VertexPtr InlineDefinesUsagesPass::on_enter_vertex(VertexPtr root) { // defined('NAME') is replaced by true or false diff --git a/compiler/pipes/inline-defines-usages.h b/compiler/pipes/inline-defines-usages.h index 0231c945e0..3eab482c89 100644 --- a/compiler/pipes/inline-defines-usages.h +++ b/compiler/pipes/inline-defines-usages.h @@ -4,7 +4,11 @@ #pragma once +#include + #include "compiler/compiler-core.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" class InlineDefinesUsagesPass final : public FunctionPassBase { diff --git a/compiler/pipes/inline-simple-functions.cpp b/compiler/pipes/inline-simple-functions.cpp index 699ab3cdf8..27a0373047 100644 --- a/compiler/pipes/inline-simple-functions.cpp +++ b/compiler/pipes/inline-simple-functions.cpp @@ -4,10 +4,19 @@ #include "compiler/pipes/inline-simple-functions.h" +#include + +#include "auto/compiler/vertex/vertex-op_var.h" +#include "auto/compiler/vertex/vertex-types.h" +#include "common/wrappers/string_view.h" #include "compiler/data/class-data.h" +#include "compiler/data/function-data.h" +#include "compiler/data/function-modifiers.h" #include "compiler/data/src-file.h" #include "compiler/data/var-data.h" #include "compiler/inferring/public.h" +#include "compiler/inferring/type-data.h" +#include "compiler/vertex-meta_op_base.h" void InlineSimpleFunctions::on_simple_operation() noexcept { if (++n_simple_operations_ > 6) { diff --git a/compiler/pipes/inline-simple-functions.h b/compiler/pipes/inline-simple-functions.h index 1ee410903a..fc3bd89837 100644 --- a/compiler/pipes/inline-simple-functions.h +++ b/compiler/pipes/inline-simple-functions.h @@ -4,9 +4,14 @@ #pragma once +#include + +#include "compiler/data/data_ptr.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" class InlineSimpleFunctions final : public FunctionPassBase { + private: bool inline_is_possible_{true}; int n_simple_operations_{0}; diff --git a/compiler/pipes/instantiate-ffi-operations.cpp b/compiler/pipes/instantiate-ffi-operations.cpp index ad76707d59..84edd40cd6 100644 --- a/compiler/pipes/instantiate-ffi-operations.cpp +++ b/compiler/pipes/instantiate-ffi-operations.cpp @@ -4,10 +4,32 @@ #include "compiler/pipes/instantiate-ffi-operations.h" +#include +#include +#include +#include +#include +#include + +#include "common/algorithms/find.h" +#include "common/termformat/termformat.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" +#include "compiler/class-assumptions.h" +#include "compiler/compiler-core.h" #include "compiler/const-manipulations.h" +#include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" +#include "compiler/data/ffi-data.h" +#include "compiler/data/function-data.h" #include "compiler/ffi/ffi_parser.h" +#include "compiler/ffi/ffi_types.h" +#include "compiler/kphp_assert.h" +#include "compiler/operation.h" #include "compiler/type-hint.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" +#include "compiler/vertex.h" /* * This pass creates op_ffi_* vertices. diff --git a/compiler/pipes/instantiate-ffi-operations.h b/compiler/pipes/instantiate-ffi-operations.h index cc92b2075a..14c6a0f4b4 100644 --- a/compiler/pipes/instantiate-ffi-operations.h +++ b/compiler/pipes/instantiate-ffi-operations.h @@ -4,8 +4,15 @@ #pragma once +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" +class TypeHint; + class InstantiateFFIOperationsPass final : public FunctionPassBase { private: VertexPtr on_ffi_static_new(VertexAdaptor call); diff --git a/compiler/pipes/instantiate-generics-and-lambdas.cpp b/compiler/pipes/instantiate-generics-and-lambdas.cpp index 13e15a5a48..fe734aba5b 100644 --- a/compiler/pipes/instantiate-generics-and-lambdas.cpp +++ b/compiler/pipes/instantiate-generics-and-lambdas.cpp @@ -4,15 +4,33 @@ #include "compiler/pipes/instantiate-generics-and-lambdas.h" +#include +#include +#include +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "common/wrappers/iterator_range.h" #include "compiler/compiler-core.h" #include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" #include "compiler/data/function-data.h" +#include "compiler/data/function-modifiers.h" #include "compiler/data/generics-mixins.h" +#include "compiler/data/vertex-adaptor.h" +#include "compiler/function-pass.h" +#include "compiler/kphp_assert.h" #include "compiler/lambda-utils.h" +#include "compiler/operation.h" #include "compiler/phpdoc.h" #include "compiler/pipes/clone-nested-lambdas.h" +#include "compiler/stage.h" +#include "compiler/threading/locks.h" #include "compiler/type-hint.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" +#include "compiler/vertex.h" /* * This pass creates new functions and passes them backwards to be handled again: diff --git a/compiler/pipes/instantiate-generics-and-lambdas.h b/compiler/pipes/instantiate-generics-and-lambdas.h index 9cafd15a1e..d8d97861d7 100644 --- a/compiler/pipes/instantiate-generics-and-lambdas.h +++ b/compiler/pipes/instantiate-generics-and-lambdas.h @@ -4,6 +4,8 @@ #pragma once +#include + #include "compiler/data/data_ptr.h" #include "compiler/pipes/sync.h" #include "compiler/threading/data-stream.h" diff --git a/compiler/pipes/load-files.cpp b/compiler/pipes/load-files.cpp index 6c0856adfb..afb504bcae 100644 --- a/compiler/pipes/load-files.cpp +++ b/compiler/pipes/load-files.cpp @@ -4,8 +4,12 @@ #include "compiler/pipes/load-files.h" +#include + #include "compiler/data/src-file.h" +#include "compiler/kphp_assert.h" #include "compiler/stage.h" +#include "compiler/threading/data-stream.h" #include "compiler/threading/profiler.h" void LoadFileF::execute(SrcFilePtr file, DataStream& os) { diff --git a/compiler/pipes/load-files.h b/compiler/pipes/load-files.h index cd0e68f9ce..9145f8d89f 100644 --- a/compiler/pipes/load-files.h +++ b/compiler/pipes/load-files.h @@ -8,6 +8,7 @@ #include "compiler/threading/data-stream.h" class LoadFileF { + public: void execute(SrcFilePtr file, DataStream& os); }; diff --git a/compiler/pipes/optimization.cpp b/compiler/pipes/optimization.cpp index a320b82f83..384ab8100a 100644 --- a/compiler/pipes/optimization.cpp +++ b/compiler/pipes/optimization.cpp @@ -4,19 +4,37 @@ #include "compiler/pipes/optimization.h" +#include +#include +#include +#include +#include +#include +#include + #include "auto/compiler/vertex/vertex-types.h" +#include "common/algorithms/find.h" +#include "common/algorithms/hashes.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" +#include "compiler/compiler-core.h" +#include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" +#include "compiler/data/function-data.h" +#include "compiler/data/var-data.h" #include "compiler/data/vertex-adaptor.h" +#include "compiler/inferring/expr-node.h" #include "compiler/inferring/primitive-type.h" +#include "compiler/inferring/public.h" #include "compiler/inferring/type-data.h" +#include "compiler/inferring/var-node.h" #include "compiler/kphp_assert.h" +#include "compiler/location.h" #include "compiler/operation.h" -#include - -#include "common/algorithms/hashes.h" - -#include "compiler/data/class-data.h" -#include "compiler/inferring/public.h" +#include "compiler/stage.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" +#include "compiler/vertex.h" namespace { diff --git a/compiler/pipes/optimization.h b/compiler/pipes/optimization.h index f3a8aa1205..e94c4430a0 100644 --- a/compiler/pipes/optimization.h +++ b/compiler/pipes/optimization.h @@ -4,7 +4,14 @@ #pragma once +#include +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" #include "compiler/compiler-core.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" class OptimizationPass final : public FunctionPassBase { diff --git a/compiler/pipes/parse-and-apply-phpdoc.cpp b/compiler/pipes/parse-and-apply-phpdoc.cpp index d627877e4e..85a565a933 100644 --- a/compiler/pipes/parse-and-apply-phpdoc.cpp +++ b/compiler/pipes/parse-and-apply-phpdoc.cpp @@ -4,20 +4,48 @@ #include "compiler/pipes/parse-and-apply-phpdoc.h" +#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include "auto/compiler/vertex/vertex-types.h" #include "common/algorithms/contains.h" - +#include "common/termformat/termformat.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" +#include "common/wrappers/string_view.h" +#include "compiler/class-assumptions.h" #include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" #include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" #include "compiler/data/function-data.h" +#include "compiler/data/function-modifiers.h" #include "compiler/data/generics-mixins.h" #include "compiler/data/kphp-json-tags.h" #include "compiler/data/kphp-tracing-tags.h" +#include "compiler/data/performance-inspections.h" #include "compiler/data/src-file.h" +#include "compiler/data/var-data.h" +#include "compiler/data/vertex-adaptor.h" +#include "compiler/function-colors.h" +#include "compiler/inferring/primitive-type.h" +#include "compiler/kphp_assert.h" +#include "compiler/operation.h" #include "compiler/phpdoc.h" +#include "compiler/stage.h" +#include "compiler/threading/data-stream.h" #include "compiler/type-hint.h" #include "compiler/utils/string-utils.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" #include "compiler/vertex.h" diff --git a/compiler/pipes/parse-and-apply-phpdoc.h b/compiler/pipes/parse-and-apply-phpdoc.h index 6c57f1a233..13ca85c13e 100644 --- a/compiler/pipes/parse-and-apply-phpdoc.h +++ b/compiler/pipes/parse-and-apply-phpdoc.h @@ -4,6 +4,10 @@ #pragma once +#include +#include +#include + #include "compiler/data/data_ptr.h" #include "compiler/data/function-data.h" #include "compiler/pipes/sync.h" diff --git a/compiler/pipes/parse.cpp b/compiler/pipes/parse.cpp index 122685ac79..1cf43398a6 100644 --- a/compiler/pipes/parse.cpp +++ b/compiler/pipes/parse.cpp @@ -5,6 +5,12 @@ #include "compiler/pipes/parse.h" #include "compiler/gentree.h" +#include "compiler/kphp_assert.h" +#include "compiler/stage.h" +#include "compiler/token.h" + +template +class DataStream; void ParseF::execute(std::pair> file_and_tokens, DataStream& os) { stage::set_name("Parse file"); diff --git a/compiler/pipes/parse.h b/compiler/pipes/parse.h index acd333f94c..a5534165ba 100644 --- a/compiler/pipes/parse.h +++ b/compiler/pipes/parse.h @@ -4,11 +4,15 @@ #pragma once +#include +#include + #include "compiler/data/data_ptr.h" #include "compiler/threading/data-stream.h" #include "compiler/token.h" class ParseF { + public: void execute(std::pair> file_and_tokens, DataStream& os); }; diff --git a/compiler/pipes/preprocess-break.cpp b/compiler/pipes/preprocess-break.cpp index e93d951e16..5e049e51b6 100644 --- a/compiler/pipes/preprocess-break.cpp +++ b/compiler/pipes/preprocess-break.cpp @@ -4,6 +4,15 @@ #include "compiler/pipes/preprocess-break.h" +#include +#include + +#include "common/algorithms/find.h" +#include "compiler/kphp_assert.h" +#include "compiler/operation.h" +#include "compiler/vertex-meta_op_base.h" +#include "compiler/vertex.h" + int PreprocessBreakPass::get_label_id(VertexAdaptor cycle, Operation op) { int& label_id = op == op_break ? cycle->break_label_id : cycle->continue_label_id; if (label_id == 0) { diff --git a/compiler/pipes/preprocess-break.h b/compiler/pipes/preprocess-break.h index 569876684d..b3ae1b6fc4 100644 --- a/compiler/pipes/preprocess-break.h +++ b/compiler/pipes/preprocess-break.h @@ -4,6 +4,11 @@ #pragma once +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" class PreprocessBreakPass final : public FunctionPassBase { diff --git a/compiler/pipes/preprocess-eq3.cpp b/compiler/pipes/preprocess-eq3.cpp index 8f2d6ba6e2..f64c145f86 100644 --- a/compiler/pipes/preprocess-eq3.cpp +++ b/compiler/pipes/preprocess-eq3.cpp @@ -3,9 +3,14 @@ // Distributed under the GPL v3 License, see LICENSE.notice.txt #include "compiler/pipes/preprocess-eq3.h" -#include "compiler/vertex-util.h" +#include "auto/compiler/vertex/vertex-types.h" #include "common/algorithms/contains.h" +#include "common/algorithms/find.h" +#include "compiler/operation.h" +#include "compiler/vertex-meta_op_base.h" +#include "compiler/vertex-util.h" +#include "compiler/vertex.h" VertexPtr PreprocessEq3Pass::on_exit_vertex(VertexPtr root) { if (root->type() == op_eq3) { diff --git a/compiler/pipes/preprocess-eq3.h b/compiler/pipes/preprocess-eq3.h index cef8f5df5b..b56dea098d 100644 --- a/compiler/pipes/preprocess-eq3.h +++ b/compiler/pipes/preprocess-eq3.h @@ -4,6 +4,9 @@ #pragma once +#include + +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" class PreprocessEq3Pass final : public FunctionPassBase { diff --git a/compiler/pipes/preprocess-exceptions.cpp b/compiler/pipes/preprocess-exceptions.cpp index 509a6e4fde..97b817caa1 100644 --- a/compiler/pipes/preprocess-exceptions.cpp +++ b/compiler/pipes/preprocess-exceptions.cpp @@ -4,9 +4,22 @@ #include "compiler/pipes/preprocess-exceptions.h" +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" #include "compiler/compiler-core.h" +#include "compiler/data/class-data.h" +#include "compiler/data/data_ptr.h" #include "compiler/data/src-file.h" +#include "compiler/kphp_assert.h" +#include "compiler/location.h" +#include "compiler/operation.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" +#include "compiler/vertex.h" VertexPtr PreprocessExceptions::on_exit_vertex(VertexPtr root) { static const ClassPtr throwable_class = G->get_class("Throwable"); diff --git a/compiler/pipes/preprocess-exceptions.h b/compiler/pipes/preprocess-exceptions.h index 28f7f30b49..62f5b912ba 100644 --- a/compiler/pipes/preprocess-exceptions.h +++ b/compiler/pipes/preprocess-exceptions.h @@ -4,6 +4,9 @@ #pragma once +#include + +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" class PreprocessExceptions final : public FunctionPassBase { diff --git a/compiler/pipes/propagate-throw-flag.cpp b/compiler/pipes/propagate-throw-flag.cpp index 8a9f9b8b8b..5e51aae8fd 100644 --- a/compiler/pipes/propagate-throw-flag.cpp +++ b/compiler/pipes/propagate-throw-flag.cpp @@ -4,6 +4,14 @@ #include "compiler/pipes/propagate-throw-flag.h" +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/function-data.h" +#include "compiler/vertex-meta_op_base.h" +#include "compiler/vertex.h" + // todo this pass bubbles throw_flag up, but throw_flag is used only in one place in codegenerator // investigate, maybe it can be totally avoided? diff --git a/compiler/pipes/propagate-throw-flag.h b/compiler/pipes/propagate-throw-flag.h index 8e436d5bd5..3791a850ff 100644 --- a/compiler/pipes/propagate-throw-flag.h +++ b/compiler/pipes/propagate-throw-flag.h @@ -4,6 +4,9 @@ #pragma once +#include + +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" class PropagateThrowFlagPass final : public FunctionPassBase { diff --git a/compiler/pipes/register-defines.cpp b/compiler/pipes/register-defines.cpp index 60ac6b64b1..c3a9011aa7 100644 --- a/compiler/pipes/register-defines.cpp +++ b/compiler/pipes/register-defines.cpp @@ -4,9 +4,15 @@ #include "compiler/pipes/register-defines.h" +#include "auto/compiler/vertex/vertex-op_define.h" +#include "auto/compiler/vertex/vertex-types.h" #include "compiler/compiler-core.h" #include "compiler/data/class-data.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/function-data.h" #include "compiler/data/src-file.h" +#include "compiler/kphp_assert.h" +#include "compiler/stage.h" VertexPtr RegisterDefinesPass::on_exit_vertex(VertexPtr root) { // 1. an explicit define('name', value) diff --git a/compiler/pipes/register-defines.h b/compiler/pipes/register-defines.h index e0461e1d3f..d6e3fc749f 100644 --- a/compiler/pipes/register-defines.h +++ b/compiler/pipes/register-defines.h @@ -4,10 +4,15 @@ #pragma once +#include + #include "compiler/data/define-data.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" +#include "compiler/vertex-meta_op_base.h" class RegisterDefinesPass final : public FunctionPassBase { + public: std::string get_description() override { return "Register defines"; diff --git a/compiler/pipes/register-ffi-scopes.cpp b/compiler/pipes/register-ffi-scopes.cpp index 537f90ef64..a942fe8533 100644 --- a/compiler/pipes/register-ffi-scopes.cpp +++ b/compiler/pipes/register-ffi-scopes.cpp @@ -4,15 +4,43 @@ #include "compiler/pipes/register-ffi-scopes.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "common/algorithms/find.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" +#include "compiler/compiler-core.h" #include "compiler/const-manipulations.h" +#include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" #include "compiler/data/ffi-data.h" +#include "compiler/data/field-modifiers.h" +#include "compiler/data/function-data.h" +#include "compiler/data/function-modifiers.h" #include "compiler/data/src-file.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/ffi/ffi_parser.h" +#include "compiler/ffi/ffi_types.h" +#include "compiler/function-pass.h" +#include "compiler/kphp_assert.h" +#include "compiler/location.h" #include "compiler/name-gen.h" +#include "compiler/operation.h" +#include "compiler/threading/data-stream.h" #include "compiler/type-hint.h" +#include "compiler/utils/string-utils.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" - -#include +#include "compiler/vertex.h" class RegisterFFIScopes final : public FunctionPassBase { private: diff --git a/compiler/pipes/register-ffi-scopes.h b/compiler/pipes/register-ffi-scopes.h index 022573c562..86fc3ebc49 100644 --- a/compiler/pipes/register-ffi-scopes.h +++ b/compiler/pipes/register-ffi-scopes.h @@ -4,8 +4,12 @@ #pragma once +#include "compiler/data/data_ptr.h" #include "compiler/function-pass.h" +template +class DataStream; + // RegisterFFIScopesF pass handles FFI class static method calls like FFI::cdef() // and FFI::load() - it parses FFI strings and creates scope classes. class RegisterFFIScopesF { diff --git a/compiler/pipes/register-kphp-configuration.cpp b/compiler/pipes/register-kphp-configuration.cpp index 588e72cf3d..490bc300e6 100644 --- a/compiler/pipes/register-kphp-configuration.cpp +++ b/compiler/pipes/register-kphp-configuration.cpp @@ -4,13 +4,28 @@ #include "compiler/pipes/register-kphp-configuration.h" -#include "re2/re2.h" +#include +#include +#include +#include +#include #include "common/algorithms/find.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" #include "compiler/compiler-core.h" #include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" #include "compiler/data/function-data.h" +#include "compiler/kphp_assert.h" +#include "compiler/stage.h" +#include "compiler/threading/data-stream.h" +#include "compiler/utils/string-utils.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" +#include "compiler/vertex.h" +#include "re2/re2.h" +#include "re2/stringpiece.h" // We use a lot of VertexUtil::get_actual_value here because // on CalcRealDefinesAndAssignModulitesF and InlineDefinesUsagesPass diff --git a/compiler/pipes/register-kphp-configuration.h b/compiler/pipes/register-kphp-configuration.h index aa7070d9ec..23ac98aee6 100644 --- a/compiler/pipes/register-kphp-configuration.h +++ b/compiler/pipes/register-kphp-configuration.h @@ -4,11 +4,21 @@ #pragma once +#include +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "common/wrappers/string_view.h" #include "compiler/data/class-members.h" #include "compiler/data/data_ptr.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-colors.h" #include "compiler/pipes/sync.h" +template +class DataStream; + class RegisterKphpConfiguration final : public SyncPipeF { using need_profiler = std::false_type; using Base = SyncPipeF; diff --git a/compiler/pipes/register-variables.cpp b/compiler/pipes/register-variables.cpp index 445503be7f..54d062208f 100644 --- a/compiler/pipes/register-variables.cpp +++ b/compiler/pipes/register-variables.cpp @@ -4,12 +4,30 @@ #include "compiler/pipes/register-variables.h" +#include +#include +#include +#include +#include +#include + +#include "common/algorithms/find.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" #include "compiler/compiler-core.h" #include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" +#include "compiler/data/field-modifiers.h" #include "compiler/data/var-data.h" +#include "compiler/kphp_assert.h" +#include "compiler/location.h" #include "compiler/modulite-check-rules.h" #include "compiler/name-gen.h" +#include "compiler/operation.h" +#include "compiler/stage.h" #include "compiler/utils/string-utils.h" +#include "compiler/vertex-meta_op_base.h" +#include "compiler/vertex.h" VarPtr RegisterVariablesPass::create_global_var(const std::string& name) { VarPtr var = G->get_global_var(name, VertexPtr()); diff --git a/compiler/pipes/register-variables.h b/compiler/pipes/register-variables.h index c857ae8f1b..eebe4888b3 100644 --- a/compiler/pipes/register-variables.h +++ b/compiler/pipes/register-variables.h @@ -4,10 +4,15 @@ #pragma once +#include #include #include +#include "auto/compiler/vertex/vertex-types.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/function-data.h" #include "compiler/data/var-data.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" /** diff --git a/compiler/pipes/remove-empty-function-calls.cpp b/compiler/pipes/remove-empty-function-calls.cpp index e4ce4583ba..2f787c363c 100644 --- a/compiler/pipes/remove-empty-function-calls.cpp +++ b/compiler/pipes/remove-empty-function-calls.cpp @@ -4,8 +4,17 @@ #include "compiler/pipes/remove-empty-function-calls.h" +#include +#include +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" #include "compiler/compiler-core.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/function-data.h" #include "compiler/data/src-file.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex.h" static bool is_empty_func_call(VertexPtr v) { diff --git a/compiler/pipes/remove-empty-function-calls.h b/compiler/pipes/remove-empty-function-calls.h index bf32f5bcb4..aacfa58885 100644 --- a/compiler/pipes/remove-empty-function-calls.h +++ b/compiler/pipes/remove-empty-function-calls.h @@ -4,6 +4,9 @@ #pragma once +#include + +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" class RemoveEmptyFunctionCallsPass final : public FunctionPassBase { diff --git a/compiler/pipes/resolve-self-static-parent.cpp b/compiler/pipes/resolve-self-static-parent.cpp index 0edaf3133d..c9aae893b5 100644 --- a/compiler/pipes/resolve-self-static-parent.cpp +++ b/compiler/pipes/resolve-self-static-parent.cpp @@ -4,16 +4,28 @@ #include "compiler/pipes/resolve-self-static-parent.h" -#include "common/wrappers/likely.h" +#include +#include +#include +#include +#include "common/wrappers/fmt_format.h" #include "compiler/compiler-core.h" #include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" +#include "compiler/data/function-data.h" +#include "compiler/data/function-modifiers.h" #include "compiler/data/src-file.h" +#include "compiler/data/var-data.h" #include "compiler/gentree.h" +#include "compiler/kphp_assert.h" #include "compiler/name-gen.h" +#include "compiler/operation.h" #include "compiler/phpdoc.h" #include "compiler/type-hint.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" +#include "compiler/vertex.h" void ResolveSelfStaticParentPass::on_start() { // replace self::, parent:: and accesses to other classes like Classes\A::CONST diff --git a/compiler/pipes/resolve-self-static-parent.h b/compiler/pipes/resolve-self-static-parent.h index 1ebda2523d..e681e96e23 100644 --- a/compiler/pipes/resolve-self-static-parent.h +++ b/compiler/pipes/resolve-self-static-parent.h @@ -4,6 +4,11 @@ #pragma once +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" class ResolveSelfStaticParentPass final : public FunctionPassBase { diff --git a/compiler/pipes/sort-and-inherit-classes.cpp b/compiler/pipes/sort-and-inherit-classes.cpp index 8ac7afca66..29ee0a348f 100644 --- a/compiler/pipes/sort-and-inherit-classes.cpp +++ b/compiler/pipes/sort-and-inherit-classes.cpp @@ -4,18 +4,41 @@ #include "compiler/pipes/sort-and-inherit-classes.h" +#include +#include +#include +#include +#include +#include +#include +#include + #include "common/algorithms/compare.h" #include "common/algorithms/contains.h" +#include "common/algorithms/find.h" #include "common/algorithms/hashes.h" - +#include "common/algorithms/string-algorithms.h" +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" +#include "common/wrappers/string_view.h" #include "compiler/compiler-core.h" #include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" +#include "compiler/data/class-modifiers.h" +#include "compiler/data/field-modifiers.h" +#include "compiler/data/function-data.h" +#include "compiler/data/function-modifiers.h" #include "compiler/data/src-file.h" +#include "compiler/data/var-data.h" +#include "compiler/kphp_assert.h" +#include "compiler/location.h" #include "compiler/name-gen.h" #include "compiler/pipes/clone-nested-lambdas.h" #include "compiler/stage.h" +#include "compiler/threading/locks.h" #include "compiler/threading/profiler.h" #include "compiler/utils/string-utils.h" +#include "compiler/vertex.h" TSHashTable SortAndInheritClassesF::ht; diff --git a/compiler/pipes/sort-and-inherit-classes.h b/compiler/pipes/sort-and-inherit-classes.h index 087aad9aaf..01e9ca6ab5 100644 --- a/compiler/pipes/sort-and-inherit-classes.h +++ b/compiler/pipes/sort-and-inherit-classes.h @@ -5,9 +5,12 @@ #pragma once #include +#include +#include "auto/compiler/vertex/vertex-types.h" #include "compiler/data/class-members.h" #include "compiler/data/data_ptr.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/threading/data-stream.h" #include "compiler/threading/hash-table.h" diff --git a/compiler/pipes/split-switch.cpp b/compiler/pipes/split-switch.cpp index fa1b064bf4..07b9565e08 100644 --- a/compiler/pipes/split-switch.cpp +++ b/compiler/pipes/split-switch.cpp @@ -4,11 +4,29 @@ #include "compiler/pipes/split-switch.h" +#include +#include +#include +#include +#include +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "common/wrappers/iterator_range.h" #include "compiler/compiler-core.h" +#include "compiler/data/function-data.h" #include "compiler/data/src-file.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" +#include "compiler/kphp_assert.h" #include "compiler/name-gen.h" +#include "compiler/operation.h" +#include "compiler/stage.h" +#include "compiler/threading/data-stream.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" +#include "compiler/vertex.h" class SplitSwitchPass final : public FunctionPassBase { private: diff --git a/compiler/pipes/transform-to-smart-instanceof.cpp b/compiler/pipes/transform-to-smart-instanceof.cpp index f7e7e8d5f2..3b9599f409 100644 --- a/compiler/pipes/transform-to-smart-instanceof.cpp +++ b/compiler/pipes/transform-to-smart-instanceof.cpp @@ -4,10 +4,21 @@ #include "compiler/pipes/transform-to-smart-instanceof.h" -#include "common/algorithms/compare.h" +#include +#include +#include +#include +#include +#include +#include "common/algorithms/compare.h" +#include "common/algorithms/find.h" +#include "common/wrappers/iterator_range.h" #include "compiler/name-gen.h" +#include "compiler/operation.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" +#include "compiler/vertex.h" bool TransformToSmartInstanceofPass::user_recursion(VertexPtr v) { if (v->type() == op_if) { diff --git a/compiler/pipes/transform-to-smart-instanceof.h b/compiler/pipes/transform-to-smart-instanceof.h index 71f1820d40..61a311af77 100644 --- a/compiler/pipes/transform-to-smart-instanceof.h +++ b/compiler/pipes/transform-to-smart-instanceof.h @@ -8,7 +8,10 @@ #include #include +#include "auto/compiler/vertex/vertex-types.h" #include "compiler/data/data_ptr.h" +#include "compiler/data/function-data.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/function-pass.h" class TransformToSmartInstanceofPass final : public FunctionPassBase { diff --git a/compiler/pipes/type-inferer.cpp b/compiler/pipes/type-inferer.cpp index 2f7a3bbbc5..eb8f9c3fe5 100644 --- a/compiler/pipes/type-inferer.cpp +++ b/compiler/pipes/type-inferer.cpp @@ -4,7 +4,16 @@ #include "compiler/pipes/type-inferer.h" +#include +#include + #include "compiler/inferring/public.h" +#include "compiler/inferring/type-inferer.h" +#include "compiler/pipes/function-and-cfg.h" +#include "compiler/scheduler/scheduler-base.h" +#include "compiler/threading/data-stream.h" + +class Task; void TypeInfererF::execute(FunctionAndCFG input, DataStream& os) { os << input; diff --git a/compiler/pipes/type-inferer.h b/compiler/pipes/type-inferer.h index a30239790a..41d2907e68 100644 --- a/compiler/pipes/type-inferer.h +++ b/compiler/pipes/type-inferer.h @@ -4,10 +4,13 @@ #pragma once +#include + #include "compiler/pipes/function-and-cfg.h" #include "compiler/threading/data-stream.h" class TypeInfererF { + public: // don't show on_finish() in profiler, as it does nothing and is just a zero line using need_on_finish_profiler = std::false_type; diff --git a/compiler/pipes/wait-for-all-classes.cpp b/compiler/pipes/wait-for-all-classes.cpp index d4e283c8e4..757588094f 100644 --- a/compiler/pipes/wait-for-all-classes.cpp +++ b/compiler/pipes/wait-for-all-classes.cpp @@ -3,13 +3,21 @@ // Distributed under the GPL v3 License, see LICENSE.notice.txt #include "compiler/pipes/wait-for-all-classes.h" -#include "compiler/pipes/sort-and-inherit-classes.h" + +#include +#include +#include #include "compiler/compiler-core.h" #include "compiler/data/composer-json-data.h" #include "compiler/data/modulite-data.h" #include "compiler/data/src-dir.h" #include "compiler/data/src-file.h" +#include "compiler/pipes/sort-and-inherit-classes.h" +#include "compiler/stage.h" + +template +class DataStream; /* * This is a sync point. When `on_finish()` is called (once, in a single thread), then diff --git a/compiler/pipes/wait-for-all-classes.h b/compiler/pipes/wait-for-all-classes.h index 531ac57f76..670a09f0f7 100644 --- a/compiler/pipes/wait-for-all-classes.h +++ b/compiler/pipes/wait-for-all-classes.h @@ -4,12 +4,17 @@ #pragma once +#include +#include + #include "compiler/data/class-data.h" +#include "compiler/data/data_ptr.h" #include "compiler/data/function-data.h" #include "compiler/pipes/sync.h" #include "compiler/threading/data-stream.h" class WaitForAllClassesF final : public SyncPipeF { + using Base = SyncPipeF; public: diff --git a/compiler/pipes/write-files.cpp b/compiler/pipes/write-files.cpp index d69a5423de..80975b9196 100644 --- a/compiler/pipes/write-files.cpp +++ b/compiler/pipes/write-files.cpp @@ -4,10 +4,20 @@ #include "compiler/pipes/write-files.h" -#include "common/crc32.h" +#include +#include +#include +#include +#include +#include +#include "common/wrappers/fmt_format.h" +#include "compiler/code-gen/writer-data.h" #include "compiler/compiler-core.h" +#include "compiler/index.h" +#include "compiler/kphp_assert.h" #include "compiler/stage.h" +#include "compiler/threading/data-stream.h" void WriteFilesF::execute(WriterData* data, EmptyStream&) { stage::set_name("Write files"); diff --git a/compiler/rewrite-rules/replace-extern-func-calls.cpp b/compiler/rewrite-rules/replace-extern-func-calls.cpp index 83b17a0150..a3e176f8a0 100644 --- a/compiler/rewrite-rules/replace-extern-func-calls.cpp +++ b/compiler/rewrite-rules/replace-extern-func-calls.cpp @@ -3,17 +3,34 @@ // Distributed under the GPL v3 License, see LICENSE.notice.txt #include "compiler/rewrite-rules/replace-extern-func-calls.h" -#include "compiler/pipes/check-access-modifiers.h" +#include +#include +#include +#include +#include #include +#include "common/wrappers/fmt_format.h" +#include "common/wrappers/iterator_range.h" +#include "common/wrappers/string_view.h" #include "compiler/compiler-core.h" #include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" #include "compiler/data/define-data.h" +#include "compiler/data/field-modifiers.h" #include "compiler/data/function-data.h" +#include "compiler/data/function-modifiers.h" #include "compiler/data/kphp-json-tags.h" #include "compiler/data/kphp-tracing-tags.h" +#include "compiler/data/var-data.h" +#include "compiler/kphp_assert.h" +#include "compiler/operation.h" +#include "compiler/pipes/check-access-modifiers.h" +#include "compiler/stage.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex-util.h" +#include "compiler/vertex.h" /* * Sometimes, we want to replace f(...) with f'(...) diff --git a/compiler/rewrite-rules/replace-extern-func-calls.h b/compiler/rewrite-rules/replace-extern-func-calls.h index caadb7b641..1041a46281 100644 --- a/compiler/rewrite-rules/replace-extern-func-calls.h +++ b/compiler/rewrite-rules/replace-extern-func-calls.h @@ -4,7 +4,9 @@ #pragma once +#include "auto/compiler/vertex/vertex-types.h" #include "compiler/data/data_ptr.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/vertex.h" // maybe, replace f(...) with f'(...); see comments in cpp file diff --git a/compiler/rewrite-rules/rules_runtime.cpp b/compiler/rewrite-rules/rules_runtime.cpp index a7c1f1952c..c73e1fd739 100644 --- a/compiler/rewrite-rules/rules_runtime.cpp +++ b/compiler/rewrite-rules/rules_runtime.cpp @@ -4,10 +4,18 @@ #include "compiler/rewrite-rules/rules_runtime.h" +#include + +#include "common/wrappers/string_view.h" +#include "compiler/data/data_ptr.h" #include "compiler/data/function-data.h" #include "compiler/inferring/public.h" +#include "compiler/kphp_assert.h" +#include "compiler/operation.h" +#include "compiler/stage.h" #include "compiler/type-hint.h" #include "compiler/vertex-util.h" +#include "compiler/vertex.h" namespace rewrite_rules { diff --git a/compiler/rewrite-rules/rules_runtime.h b/compiler/rewrite-rules/rules_runtime.h index 4ac513a062..295c9ec24b 100644 --- a/compiler/rewrite-rules/rules_runtime.h +++ b/compiler/rewrite-rules/rules_runtime.h @@ -7,9 +7,17 @@ // This file is intended to be used inside auto-generated rewrite rules. // Do not include it from somewhere else. +#include +#include +#include + +#include "auto/compiler/vertex/vertex-op_func_call.h" +#include "auto/compiler/vertex/vertex-types.h" +#include "common/wrappers/iterator_range.h" #include "compiler/compiler-core.h" +#include "compiler/data/vertex-adaptor.h" +#include "compiler/vertex-meta_op_base.h" #include "compiler/vertex.h" -#include namespace rewrite_rules { diff --git a/compiler/scheduler/one-thread-scheduler.cpp b/compiler/scheduler/one-thread-scheduler.cpp index a9193bfadf..86f92ad034 100644 --- a/compiler/scheduler/one-thread-scheduler.cpp +++ b/compiler/scheduler/one-thread-scheduler.cpp @@ -5,7 +5,9 @@ #include "compiler/scheduler/one-thread-scheduler.h" #include +#include +#include "compiler/scheduler/node.h" #include "compiler/scheduler/task-pull.h" #include "compiler/scheduler/task.h" diff --git a/compiler/scheduler/one-thread-scheduler.h b/compiler/scheduler/one-thread-scheduler.h index 7bbb36c2f4..ef057df5f4 100644 --- a/compiler/scheduler/one-thread-scheduler.h +++ b/compiler/scheduler/one-thread-scheduler.h @@ -9,9 +9,11 @@ #include "compiler/scheduler/scheduler-base.h" +class Node; +class Task; class TaskPull; - class OneThreadScheduler : public SchedulerBase { + private: std::vector nodes; std::queue sync_nodes; diff --git a/compiler/scheduler/scheduler.cpp b/compiler/scheduler/scheduler.cpp index db63ace969..861836dc0d 100644 --- a/compiler/scheduler/scheduler.cpp +++ b/compiler/scheduler/scheduler.cpp @@ -4,13 +4,21 @@ #include "compiler/scheduler/scheduler.h" +#include +#include +#include +#include +#include #include +#include "compiler/scheduler/node.h" +#include "compiler/scheduler/task-pull.h" #include "compiler/scheduler/task.h" #include "compiler/threading/thread-id.h" #include "compiler/threading/tls.h" class ThreadContext { + public: pthread_t pthread_id; int thread_id; diff --git a/compiler/scheduler/scheduler.h b/compiler/scheduler/scheduler.h index 2766ba2b1f..a6c3b5fbb1 100644 --- a/compiler/scheduler/scheduler.h +++ b/compiler/scheduler/scheduler.h @@ -10,9 +10,11 @@ #include "compiler/scheduler/scheduler-base.h" #include "compiler/scheduler/task-pull.h" +class Node; +class Task; class ThreadContext; - class Scheduler : public SchedulerBase { + private: std::vector nodes; std::vector one_thread_nodes; diff --git a/compiler/stage.cpp b/compiler/stage.cpp index f11d6a1066..97ab8ae121 100644 --- a/compiler/stage.cpp +++ b/compiler/stage.cpp @@ -4,13 +4,24 @@ #include "compiler/stage.h" +#include +#include +#include +#include + +#include "auto/compiler/vertex/vertex-op_function.h" +#include "common/algorithms/string-algorithms.h" #include "common/termformat/termformat.h" +#include "common/wrappers/fmt_format.h" #include "common/wrappers/pathname.h" - +#include "common/wrappers/string_view.h" #include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" #include "compiler/data/function-data.h" #include "compiler/data/src-file.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/name-gen.h" +#include "compiler/threading/locks.h" #include "compiler/threading/tls.h" #include "compiler/utils/string-utils.h" diff --git a/compiler/stage.h b/compiler/stage.h index db2536be2c..5b5a0147d1 100644 --- a/compiler/stage.h +++ b/compiler/stage.h @@ -5,10 +5,11 @@ #pragma once #include +#include +#include #include #include "common/exit-codes.h" - #include "compiler/data/data_ptr.h" #include "compiler/kphp_assert.h" #include "compiler/location.h" diff --git a/compiler/stats.cpp b/compiler/stats.cpp index 250724bf63..fc5006159e 100644 --- a/compiler/stats.cpp +++ b/compiler/stats.cpp @@ -4,9 +4,14 @@ #include "compiler/stats.h" -#include "common/dl-utils-lite.h" +#include +#include +#include +#include +#include "common/dl-utils-lite.h" #include "compiler/data/function-data.h" +#include "compiler/threading/profiler.h" void Stats::on_var_inserting(VarData::Type type) { switch (type) { diff --git a/compiler/stats.h b/compiler/stats.h index 070c0f15ba..18d6f6a4e7 100644 --- a/compiler/stats.h +++ b/compiler/stats.h @@ -5,12 +5,17 @@ #pragma once #include +#include #include +#include +#include +#include "compiler/data/data_ptr.h" #include "compiler/data/var-data.h" #include "compiler/threading/profiler.h" class Stats { + public: void on_var_inserting(VarData::Type type); void on_function_processed(FunctionPtr function); diff --git a/compiler/threading/profiler.cpp b/compiler/threading/profiler.cpp index c023f7a8e6..86e25ec381 100644 --- a/compiler/threading/profiler.cpp +++ b/compiler/threading/profiler.cpp @@ -5,7 +5,11 @@ #include "compiler/threading/profiler.h" #include +#include +#include #include +#include +#include #include #include "common/termformat/termformat.h" diff --git a/compiler/threading/profiler.h b/compiler/threading/profiler.h index fa6bf2d5fa..70ccd745f8 100644 --- a/compiler/threading/profiler.h +++ b/compiler/threading/profiler.h @@ -4,13 +4,16 @@ #pragma once +#include #include #include +#include +#include #include #include +#include #include "common/mixin/not_copyable.h" - #include "compiler/threading/tls.h" size_t get_thread_memory_usage(); diff --git a/compiler/tl-classes.cpp b/compiler/tl-classes.cpp index 02ca2faf20..a4c34cf10c 100644 --- a/compiler/tl-classes.cpp +++ b/compiler/tl-classes.cpp @@ -4,9 +4,13 @@ #include "compiler/tl-classes.h" +#include +#include +#include + #include "common/tlo-parsing/tlo-parsing.h" #include "common/wrappers/fmt_format.h" - +#include "compiler/kphp_assert.h" #include "compiler/stage.h" void TlClasses::load_from(const std::string& tlo_schema, bool generate_tl_internals) { diff --git a/compiler/tl-classes.h b/compiler/tl-classes.h index fc7c980207..b743fa1826 100644 --- a/compiler/tl-classes.h +++ b/compiler/tl-classes.h @@ -4,9 +4,11 @@ #pragma once +#include +#include + #include "common/tl2php/php-classes.h" #include "common/tlo-parsing/tl-objects.h" - #include "compiler/data/data_ptr.h" class TlClasses { diff --git a/compiler/type-hint.cpp b/compiler/type-hint.cpp index 449cfd96d0..7ecf37bdd7 100644 --- a/compiler/type-hint.cpp +++ b/compiler/type-hint.cpp @@ -4,15 +4,26 @@ #include "compiler/type-hint.h" +#include +#include #include +#include "common/algorithms/string-algorithms.h" #include "common/php-functions.h" - +#include "common/wrappers/iterator_range.h" +#include "compiler/compiler-core.h" #include "compiler/data/class-data.h" +#include "compiler/data/class-members.h" #include "compiler/data/ffi-data.h" #include "compiler/data/function-data.h" +#include "compiler/ffi/ffi_types.h" +#include "compiler/inferring/type-data.h" +#include "compiler/kphp_assert.h" #include "compiler/lambda-utils.h" #include "compiler/name-gen.h" +#include "compiler/threading/hash-table.h" +#include "compiler/threading/locks.h" +#include "compiler/utils/string-utils.h" /** * This class stores a big hashtable [hash => TypeHint] diff --git a/compiler/type-hint.h b/compiler/type-hint.h index 2ebdf8f584..60852f2fea 100644 --- a/compiler/type-hint.h +++ b/compiler/type-hint.h @@ -4,14 +4,22 @@ #pragma once +#include +#include +#include #include #include +#include #include #include "compiler/compiler-core.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/vertex-adaptor.h" #include "compiler/debug.h" #include "compiler/inferring/primitive-type.h" +struct FFIType; + // do not confuse TypeHint with TypeData! // TypeData is a part of _type inferring_; it's mutable and plain, it represents current inferred state of every vertex class TypeData; diff --git a/compiler/utils/string-utils.cpp b/compiler/utils/string-utils.cpp index e30a157dc0..417f81d7f8 100644 --- a/compiler/utils/string-utils.cpp +++ b/compiler/utils/string-utils.cpp @@ -4,6 +4,9 @@ #include "compiler/utils/string-utils.h" +#include +#include + // perform "blahBlah" to "blah_blah" translation std::string transform_to_snake_case(vk::string_view origin) noexcept { std::string name; diff --git a/compiler/utils/string-utils.h b/compiler/utils/string-utils.h index 7c0920f586..7aa085e3a3 100644 --- a/compiler/utils/string-utils.h +++ b/compiler/utils/string-utils.h @@ -5,8 +5,13 @@ #pragma once #include +#include #include +#include +#include #include +#include +#include #include #include "common/algorithms/string-algorithms.h" diff --git a/compiler/vertex-util.cpp b/compiler/vertex-util.cpp index 9c90b0c6f7..bae52447e5 100644 --- a/compiler/vertex-util.cpp +++ b/compiler/vertex-util.cpp @@ -4,12 +4,21 @@ #include "compiler/vertex-util.h" +#include +#include +#include +#include #include +#include #include "common/algorithms/contains.h" +#include "common/wrappers/iterator_range.h" #include "compiler/data/class-data.h" #include "compiler/data/var-data.h" #include "compiler/name-gen.h" +#include "compiler/operation.h" +#include "compiler/vertex-meta_op_base.h" +#include "compiler/vertex.h" VertexPtr VertexUtil::get_actual_value(VertexPtr v) { if (auto var = v.try_as()) { diff --git a/compiler/vertex-util.h b/compiler/vertex-util.h index 62cd237e26..5bf52b927d 100644 --- a/compiler/vertex-util.h +++ b/compiler/vertex-util.h @@ -4,6 +4,14 @@ #pragma once +#include +#include +#include + +#include "auto/compiler/vertex/vertex-types.h" +#include "compiler/data/data_ptr.h" +#include "compiler/data/vertex-adaptor.h" +#include "compiler/inferring/primitive-type.h" #include "compiler/vertex.h" // This class contains helper methods that operate on various vertices. diff --git a/compiler/vertex.cpp b/compiler/vertex.cpp index c3795b528d..f011bd735b 100644 --- a/compiler/vertex.cpp +++ b/compiler/vertex.cpp @@ -4,6 +4,8 @@ #include "compiler/vertex.h" +#include + VertexPtr clone_vertex(VertexPtr from) { switch (from->type()) { #define FOREACH_OP(x) \ diff --git a/compiler/vertex.h b/compiler/vertex.h index 98be7e469a..20be018de5 100644 --- a/compiler/vertex.h +++ b/compiler/vertex.h @@ -4,11 +4,19 @@ #pragma once -#include "auto/compiler/vertex/vertex-all.h" +#include +#include +#include +#include +#include "auto/compiler/vertex/vertex-all.h" +#include "auto/compiler/vertex/vertex-types.h" #include "compiler/data/data_ptr.h" +#include "compiler/data/vertex-adaptor.h" +#include "compiler/kphp_assert.h" #include "compiler/stage.h" #include "compiler/threading/profiler.h" +#include "compiler/vertex-meta_op_base.h" namespace std { template diff --git a/tests/cpp/compiler/_compiler-tests-env.cpp b/tests/cpp/compiler/_compiler-tests-env.cpp index ec9ce33e24..e664f38d12 100644 --- a/tests/cpp/compiler/_compiler-tests-env.cpp +++ b/tests/cpp/compiler/_compiler-tests-env.cpp @@ -1,9 +1,14 @@ #include #include "compiler/compiler-core.h" +#include "compiler/compiler-settings.h" +#include "compiler/inferring/multi-key.h" +#include "compiler/inferring/type-data.h" #include "compiler/lexer.h" +#include "compiler/operation.h" class CompilerTestsEnvironment final : public testing::Environment { + public: ~CompilerTestsEnvironment() final {} diff --git a/tests/cpp/compiler/data/performance-inspections-test.cpp b/tests/cpp/compiler/data/performance-inspections-test.cpp index ad479b5a34..786b8c0c49 100644 --- a/tests/cpp/compiler/data/performance-inspections-test.cpp +++ b/tests/cpp/compiler/data/performance-inspections-test.cpp @@ -1,4 +1,7 @@ #include +#include +#include +#include #include "compiler/data/performance-inspections.h" diff --git a/tests/cpp/compiler/ffi-parser-test.cpp b/tests/cpp/compiler/ffi-parser-test.cpp index ec6669c7a3..703d99ecb3 100644 --- a/tests/cpp/compiler/ffi-parser-test.cpp +++ b/tests/cpp/compiler/ffi-parser-test.cpp @@ -2,11 +2,21 @@ // Copyright (c) 2021 LLC «V Kontakte» // Distributed under the GPL v3 License, see LICENSE.notice.txt +#include #include +#include +#include +#include +#include +#include +#include +#include -#include "compiler/ffi/ffi_parser.h" -#include "compiler/ffi/c_parser/lexer.h" #include "compiler/data/ffi-data.h" +#include "compiler/ffi/c_parser/lexer.h" +#include "compiler/ffi/c_parser/yy_parser_generated.hpp" +#include "compiler/ffi/ffi_parser.h" +#include "compiler/ffi/ffi_types.h" static std::string ffi_test_join_types(const FFIParseResult &parse_result) { std::vector types; diff --git a/tests/cpp/compiler/lexer-test.cpp b/tests/cpp/compiler/lexer-test.cpp index ef2cd8e8b9..85118bb1f4 100644 --- a/tests/cpp/compiler/lexer-test.cpp +++ b/tests/cpp/compiler/lexer-test.cpp @@ -1,7 +1,14 @@ +#include #include +#include +#include +#include +#include -#include "compiler/lexer.h" +#include "common/wrappers/string_view.h" #include "compiler/debug.h" +#include "compiler/lexer.h" +#include "compiler/token.h" TEST(lexer_test, test_php_tokens) { std::string debugTokenName(TokenType t); // implemented in debug.cpp diff --git a/tests/cpp/compiler/phpdoc-test.cpp b/tests/cpp/compiler/phpdoc-test.cpp index 4acb4f1480..56c38e3dc9 100644 --- a/tests/cpp/compiler/phpdoc-test.cpp +++ b/tests/cpp/compiler/phpdoc-test.cpp @@ -1,5 +1,9 @@ +#include #include +#include +#include +#include "common/wrappers/string_view.h" #include "compiler/phpdoc.h" TEST(phpdoc_test, parse_php_doc) { diff --git a/tests/cpp/compiler/typedata-test.cpp b/tests/cpp/compiler/typedata-test.cpp index 8c7ee6a537..2806cebd20 100644 --- a/tests/cpp/compiler/typedata-test.cpp +++ b/tests/cpp/compiler/typedata-test.cpp @@ -1,5 +1,9 @@ #include +#include +#include "compiler/inferring/key.h" +#include "compiler/inferring/multi-key.h" +#include "compiler/inferring/primitive-type.h" #include "compiler/inferring/type-data.h" TEST(typedata_test, typedata_human_readable) { diff --git a/tests/cpp/compiler/utils/string-utils-test.cpp b/tests/cpp/compiler/utils/string-utils-test.cpp index 0c5dc2f788..31e07fdaf8 100644 --- a/tests/cpp/compiler/utils/string-utils-test.cpp +++ b/tests/cpp/compiler/utils/string-utils-test.cpp @@ -1,4 +1,5 @@ #include +#include #include "compiler/utils/string-utils.h"