diff --git a/src/ast.cpp b/src/ast.cpp index 2cb1389f6..edd1e9375 100644 --- a/src/ast.cpp +++ b/src/ast.cpp @@ -3,12 +3,18 @@ #include "ast.h" #include +#include +#include +#include +#include #include "common.h" +#include "enum_map.h" #include "flog.h" #include "parse_constants.h" #include "parse_tree.h" -#include "wutil.h" +#include "tokenizer.h" +#include "wutil.h" // IWYU pragma: keep namespace { diff --git a/src/ast.h b/src/ast.h index 6cc25b8ca..837a4a966 100644 --- a/src/ast.h +++ b/src/ast.h @@ -3,16 +3,20 @@ #ifndef FISH_AST_H #define FISH_AST_H -#include -#include +#include +#include +#include +#include +#include #include +#include +#include -#include "flog.h" +#include "common.h" +#include "maybe.h" #include "parse_constants.h" -#include "tokenizer.h" namespace ast { - /** * This defines the fish abstract syntax tree. * The fish ast is a tree data structure. The nodes of the tree diff --git a/src/autoload.cpp b/src/autoload.cpp index 25060ccf7..ade837725 100644 --- a/src/autoload.cpp +++ b/src/autoload.cpp @@ -3,11 +3,15 @@ #include "autoload.h" +#include #include +#include +#include +#include #include "common.h" #include "env.h" -#include "exec.h" +#include "io.h" #include "lru.h" #include "parser.h" #include "wutil.h" // IWYU pragma: keep diff --git a/src/autoload.h b/src/autoload.h index a08cfde61..3842571bd 100644 --- a/src/autoload.h +++ b/src/autoload.h @@ -4,13 +4,14 @@ #include "config.h" // IWYU pragma: keep -#include +#include #include +#include #include #include #include "common.h" -#include "env.h" +#include "maybe.h" #include "wutil.h" class autoload_file_cache_t; diff --git a/src/builtin.cpp b/src/builtin.cpp index 0a9836a9b..ed21d9848 100644 --- a/src/builtin.cpp +++ b/src/builtin.cpp @@ -22,11 +22,10 @@ #include -#include #include -#include #include #include +#include #include #include @@ -66,12 +65,11 @@ #include "builtins/type.h" #include "builtins/ulimit.h" #include "builtins/wait.h" -#include "common.h" #include "complete.h" -#include "exec.h" #include "fallback.h" // IWYU pragma: keep #include "flog.h" #include "io.h" +#include "null_terminated_array.h" #include "parse_constants.h" #include "parse_util.h" #include "parser.h" diff --git a/src/builtin.h b/src/builtin.h index 4b5e8b094..5668cf059 100644 --- a/src/builtin.h +++ b/src/builtin.h @@ -2,13 +2,12 @@ #ifndef FISH_BUILTIN_H #define FISH_BUILTIN_H -#include - #include #include "common.h" +#include "complete.h" +#include "maybe.h" -class completion_t; class parser_t; class proc_status_t; class output_stream_t; diff --git a/src/builtins/argparse.cpp b/src/builtins/argparse.cpp index eee866a0c..34db468f9 100644 --- a/src/builtins/argparse.cpp +++ b/src/builtins/argparse.cpp @@ -5,9 +5,7 @@ #include "argparse.h" -#include #include -#include #include #include #include @@ -22,6 +20,7 @@ #include "../exec.h" #include "../fallback.h" // IWYU pragma: keep #include "../io.h" +#include "../maybe.h" #include "../parser.h" #include "../wcstringutil.h" #include "../wgetopt.h" // IWYU pragma: keep diff --git a/src/builtins/bg.cpp b/src/builtins/bg.cpp index 2d0e84097..4b2b5281e 100644 --- a/src/builtins/bg.cpp +++ b/src/builtins/bg.cpp @@ -4,14 +4,16 @@ #include "bg.h" #include -#include +#include #include +#include #include #include "../builtin.h" #include "../common.h" #include "../fallback.h" // IWYU pragma: keep #include "../io.h" +#include "../maybe.h" #include "../job_group.h" #include "../parser.h" #include "../proc.h" diff --git a/src/builtins/bind.cpp b/src/builtins/bind.cpp index b93b8c5d4..5ac853c9e 100644 --- a/src/builtins/bind.cpp +++ b/src/builtins/bind.cpp @@ -5,18 +5,18 @@ #include #include -#include #include #include #include #include "../builtin.h" #include "../common.h" -#include "../fallback.h" // IWYU pragma: keep -#include "../input.h" // IWYU pragma: keep -#include "../io.h" // IWYU pragma: keep +#include "../fallback.h" // IWYU pragma: keep +#include "../input.h" +#include "../io.h" +#include "../maybe.h" #include "../wgetopt.h" -#include "../wutil.h" // IWYU pragma: keep +#include "../wutil.h" // IWYU pragma: keep enum { BIND_INSERT, BIND_ERASE, BIND_KEY_NAMES, BIND_FUNCTION_NAMES }; struct bind_cmd_opts_t { diff --git a/src/builtins/bind.h b/src/builtins/bind.h index bbb25df45..6218d2638 100644 --- a/src/builtins/bind.h +++ b/src/builtins/bind.h @@ -2,8 +2,6 @@ #ifndef FISH_BUILTIN_BIND_H #define FISH_BUILTIN_BIND_H -#include - #include "../maybe.h" class parser_t; diff --git a/src/builtins/block.cpp b/src/builtins/block.cpp index 907cc5533..665012759 100644 --- a/src/builtins/block.cpp +++ b/src/builtins/block.cpp @@ -4,12 +4,13 @@ #include "block.h" #include +#include #include "../builtin.h" #include "../common.h" -#include "../event.h" #include "../fallback.h" // IWYU pragma: keep #include "../io.h" +#include "../maybe.h" #include "../parser.h" #include "../wgetopt.h" #include "../wutil.h" // IWYU pragma: keep diff --git a/src/builtins/builtin.cpp b/src/builtins/builtin.cpp index 55b7bca18..2ee135b0a 100644 --- a/src/builtins/builtin.cpp +++ b/src/builtins/builtin.cpp @@ -4,13 +4,13 @@ #include "builtin.h" #include -#include #include #include "../builtin.h" #include "../common.h" #include "../fallback.h" // IWYU pragma: keep #include "../io.h" +#include "../maybe.h" #include "../wgetopt.h" #include "../wutil.h" // IWYU pragma: keep diff --git a/src/builtins/cd.cpp b/src/builtins/cd.cpp index 82e0f9cdb..8a2023ed9 100644 --- a/src/builtins/cd.cpp +++ b/src/builtins/cd.cpp @@ -4,18 +4,23 @@ #include "cd.h" #include -#include +#include #include +#include +#include +#include +#include #include "../builtin.h" #include "../common.h" #include "../env.h" #include "../fallback.h" // IWYU pragma: keep +#include "../fds.h" #include "../io.h" +#include "../maybe.h" #include "../parser.h" #include "../path.h" -#include "../proc.h" #include "../wutil.h" // IWYU pragma: keep /// The cd builtin. Changes the current directory to the one specified or to $HOME if none is diff --git a/src/builtins/command.cpp b/src/builtins/command.cpp index 25cf3d203..77a978063 100644 --- a/src/builtins/command.cpp +++ b/src/builtins/command.cpp @@ -3,14 +3,14 @@ #include "command.h" -#include - #include #include "../builtin.h" #include "../common.h" +#include "../env.h" #include "../fallback.h" // IWYU pragma: keep #include "../io.h" +#include "../maybe.h" #include "../parser.h" #include "../path.h" #include "../wgetopt.h" diff --git a/src/builtins/commandline.cpp b/src/builtins/commandline.cpp index 08b439391..aae6baf8d 100644 --- a/src/builtins/commandline.cpp +++ b/src/builtins/commandline.cpp @@ -3,15 +3,19 @@ #include "commandline.h" +#include #include -#include -#include #include +#include #include "../builtin.h" #include "../common.h" #include "../fallback.h" // IWYU pragma: keep +#include "../io.h" +#include "../maybe.h" #include "../input.h" +#include "../input_common.h" +#include "../parse_constants.h" #include "../parse_util.h" #include "../parser.h" #include "../proc.h" @@ -20,8 +24,6 @@ #include "../wgetopt.h" #include "../wutil.h" // IWYU pragma: keep -class parser_t; - /// Which part of the comandbuffer are we operating on. enum { STRING_MODE = 1, // operate on entire buffer diff --git a/src/builtins/commandline.h b/src/builtins/commandline.h index 45aac048a..1723ed0ee 100644 --- a/src/builtins/commandline.h +++ b/src/builtins/commandline.h @@ -2,13 +2,10 @@ #ifndef FISH_BUILTIN_COMMANDLINE_H #define FISH_BUILTIN_COMMANDLINE_H -#include -#include - -#include "../io.h" #include "../maybe.h" class parser_t; +struct io_streams_t; maybe_t builtin_commandline(parser_t &parser, io_streams_t &streams, const wchar_t **argv); #endif diff --git a/src/builtins/complete.cpp b/src/builtins/complete.cpp index 8798b20ab..026fab33d 100644 --- a/src/builtins/complete.cpp +++ b/src/builtins/complete.cpp @@ -3,19 +3,21 @@ #include "complete.h" -#include -#include -#include +#include + +#include #include +#include #include #include "../builtin.h" -#include "../color.h" #include "../common.h" #include "../complete.h" #include "../env.h" #include "../fallback.h" // IWYU pragma: keep #include "../highlight.h" +#include "../io.h" +#include "../maybe.h" #include "../parse_constants.h" #include "../parse_util.h" #include "../parser.h" diff --git a/src/builtins/complete.h b/src/builtins/complete.h index 8462ffeb6..672778b64 100644 --- a/src/builtins/complete.h +++ b/src/builtins/complete.h @@ -2,13 +2,10 @@ #ifndef FISH_BUILTIN_COMPLETE_H #define FISH_BUILTIN_COMPLETE_H -#include -#include - -#include "../io.h" #include "../maybe.h" class parser_t; +struct io_streams_t; maybe_t builtin_complete(parser_t &parser, io_streams_t &streams, const wchar_t **argv); #endif diff --git a/src/builtins/contains.cpp b/src/builtins/contains.cpp index 72167e220..1ab398234 100644 --- a/src/builtins/contains.cpp +++ b/src/builtins/contains.cpp @@ -3,14 +3,13 @@ #include "contains.h" -#include - #include #include "../builtin.h" #include "../common.h" #include "../fallback.h" // IWYU pragma: keep #include "../io.h" +#include "../maybe.h" #include "../wgetopt.h" #include "../wutil.h" // IWYU pragma: keep diff --git a/src/builtins/disown.cpp b/src/builtins/disown.cpp index 7173c4a38..09176f628 100644 --- a/src/builtins/disown.cpp +++ b/src/builtins/disown.cpp @@ -5,12 +5,15 @@ #include #include -#include +#include +#include +#include #include "../builtin.h" #include "../common.h" #include "../fallback.h" // IWYU pragma: keep #include "../io.h" +#include "../maybe.h" #include "../parser.h" #include "../proc.h" #include "../wutil.h" // IWYU pragma: keep diff --git a/src/builtins/echo.cpp b/src/builtins/echo.cpp index 98cd3d07f..0f15e36b8 100644 --- a/src/builtins/echo.cpp +++ b/src/builtins/echo.cpp @@ -3,13 +3,13 @@ #include "echo.h" -#include #include #include "../builtin.h" #include "../common.h" #include "../fallback.h" // IWYU pragma: keep #include "../io.h" +#include "../maybe.h" #include "../wgetopt.h" #include "../wutil.h" // IWYU pragma: keep diff --git a/src/builtins/emit.cpp b/src/builtins/emit.cpp index d61d11894..b28adb51a 100644 --- a/src/builtins/emit.cpp +++ b/src/builtins/emit.cpp @@ -3,11 +3,14 @@ #include "emit.h" +#include + #include "../builtin.h" #include "../common.h" #include "../event.h" #include "../fallback.h" // IWYU pragma: keep #include "../io.h" +#include "../maybe.h" #include "../wutil.h" // IWYU pragma: keep /// Implementation of the builtin emit command, used to create events. diff --git a/src/builtins/eval.cpp b/src/builtins/eval.cpp index 612126260..19dd5f9b8 100644 --- a/src/builtins/eval.cpp +++ b/src/builtins/eval.cpp @@ -1,17 +1,18 @@ // Functions for executing the eval builtin. #include "config.h" // IWYU pragma: keep -#include -#include +#include + +#include +#include #include "../builtin.h" #include "../common.h" -#include "../exec.h" #include "../fallback.h" // IWYU pragma: keep #include "../io.h" +#include "../maybe.h" #include "../parser.h" #include "../proc.h" -#include "../wgetopt.h" #include "../wutil.h" // IWYU pragma: keep /// Implementation of eval builtin. diff --git a/src/builtins/exit.cpp b/src/builtins/exit.cpp index 4df0d2850..ddd5fb9e4 100644 --- a/src/builtins/exit.cpp +++ b/src/builtins/exit.cpp @@ -4,15 +4,13 @@ #include "exit.h" #include -#include #include "../builtin.h" #include "../common.h" #include "../fallback.h" // IWYU pragma: keep #include "../io.h" +#include "../maybe.h" #include "../parser.h" -#include "../proc.h" -#include "../reader.h" #include "../wgetopt.h" #include "../wutil.h" // IWYU pragma: keep diff --git a/src/builtins/fg.cpp b/src/builtins/fg.cpp index d8faa8902..455884022 100644 --- a/src/builtins/fg.cpp +++ b/src/builtins/fg.cpp @@ -3,16 +3,24 @@ #include "fg.h" +#include +#include + #include #include #include #include +#include +#include +#include #include "../builtin.h" #include "../common.h" #include "../env.h" #include "../fallback.h" // IWYU pragma: keep +#include "../fds.h" #include "../io.h" +#include "../maybe.h" #include "../job_group.h" #include "../parser.h" #include "../proc.h" diff --git a/src/builtins/function.cpp b/src/builtins/function.cpp index 8841fcb91..d19fbf39c 100644 --- a/src/builtins/function.cpp +++ b/src/builtins/function.cpp @@ -6,23 +6,29 @@ #include #include -#include -#include +#include +#include #include #include +#include #include #include "../builtin.h" #include "../common.h" #include "../complete.h" +#include "../env.h" #include "../event.h" #include "../fallback.h" // IWYU pragma: keep #include "../function.h" #include "../io.h" +#include "../maybe.h" +#include "../null_terminated_array.h" #include "../parser.h" #include "../parser_keywords.h" +#include "../parse_tree.h" #include "../proc.h" #include "../signal.h" +#include "../wait_handle.h" #include "../wgetopt.h" #include "../wutil.h" // IWYU pragma: keep diff --git a/src/builtins/function.h b/src/builtins/function.h index 9e32c5342..dc68e0914 100644 --- a/src/builtins/function.h +++ b/src/builtins/function.h @@ -3,13 +3,14 @@ #define FISH_BUILTIN_FUNCTION_H #include "../common.h" +#include "../maybe.h" #include "../parse_tree.h" class parser_t; struct io_streams_t; namespace ast { -struct block_statement_t; + struct block_statement_t; } maybe_t builtin_function(parser_t &parser, io_streams_t &streams, diff --git a/src/builtins/functions.cpp b/src/builtins/functions.cpp index 49d69f91b..8e8011408 100644 --- a/src/builtins/functions.cpp +++ b/src/builtins/functions.cpp @@ -6,29 +6,22 @@ #include #include -#include -#include -#include #include #include -#include #include #include "../builtin.h" #include "../common.h" -#include "../complete.h" #include "../env.h" #include "../event.h" #include "../fallback.h" // IWYU pragma: keep #include "../function.h" #include "../highlight.h" #include "../io.h" +#include "../maybe.h" #include "../parser.h" #include "../parser_keywords.h" -#include "../proc.h" -#include "../signal.h" #include "../termsize.h" -#include "../wcstringutil.h" #include "../wgetopt.h" #include "../wutil.h" // IWYU pragma: keep diff --git a/src/builtins/history.cpp b/src/builtins/history.cpp index d4762f3ba..608b9898e 100644 --- a/src/builtins/history.cpp +++ b/src/builtins/history.cpp @@ -6,16 +6,17 @@ #include #include #include -#include +#include #include -#include #include "../builtin.h" #include "../common.h" +#include "../env.h" #include "../enum_map.h" #include "../fallback.h" // IWYU pragma: keep #include "../history.h" #include "../io.h" +#include "../maybe.h" #include "../parser.h" #include "../reader.h" #include "../wgetopt.h" diff --git a/src/builtins/jobs.cpp b/src/builtins/jobs.cpp index fb8969c02..a403d2496 100644 --- a/src/builtins/jobs.cpp +++ b/src/builtins/jobs.cpp @@ -1,22 +1,20 @@ // Functions for executing the jobs builtin. #include "config.h" // IWYU pragma: keep -#include - #include -#include +#include +#include #include "../builtin.h" #include "../common.h" -#include "../fallback.h" // IWYU pragma: keep +#include "../fallback.h" // IWYU pragma: keep #include "../io.h" +#include "../maybe.h" #include "../parser.h" #include "../proc.h" #include "../wgetopt.h" #include "../wutil.h" // IWYU pragma: keep -class parser_t; - /// Print modes for the jobs builtin. enum { JOBS_DEFAULT, // print lots of general info diff --git a/src/builtins/math.cpp b/src/builtins/math.cpp index 91c35b6b6..c7d136add 100644 --- a/src/builtins/math.cpp +++ b/src/builtins/math.cpp @@ -3,11 +3,9 @@ #include "math.h" -#include #include #include -#include -#include +#include #include #include @@ -15,6 +13,7 @@ #include "../common.h" #include "../fallback.h" // IWYU pragma: keep #include "../io.h" +#include "../maybe.h" #include "../tinyexpr.h" #include "../wgetopt.h" #include "../wutil.h" // IWYU pragma: keep diff --git a/src/builtins/path.cpp b/src/builtins/path.cpp index bca0d44e7..6524ebb2c 100644 --- a/src/builtins/path.cpp +++ b/src/builtins/path.cpp @@ -5,17 +5,25 @@ #include #include +#include #include +#include +#include #include +#include +#include +#include #include +#include #include -#include #include "../builtin.h" #include "../common.h" +#include "../env.h" #include "../fallback.h" // IWYU pragma: keep #include "../io.h" +#include "../maybe.h" #include "../parser.h" #include "../path.h" #include "../util.h" @@ -30,7 +38,7 @@ static void path_error(io_streams_t &streams, const wchar_t *fmt, ...) { streams.err.append(L"path "); - va_list va; + std::va_list va; va_start(va, fmt); streams.err.append_formatv(fmt, va); va_end(va); diff --git a/src/builtins/path.h b/src/builtins/path.h index 0bfb311f5..885b93de2 100644 --- a/src/builtins/path.h +++ b/src/builtins/path.h @@ -1,13 +1,10 @@ #ifndef FISH_BUILTIN_PATH_H #define FISH_BUILTIN_PATH_H -#include -#include - -#include "../io.h" #include "../maybe.h" class parser_t; +struct io_streams_t; maybe_t builtin_path(parser_t &parser, io_streams_t &streams, const wchar_t **argv); #endif diff --git a/src/builtins/printf.cpp b/src/builtins/printf.cpp index b85fa43c1..d6ad9bf48 100644 --- a/src/builtins/printf.cpp +++ b/src/builtins/printf.cpp @@ -52,21 +52,22 @@ #include "printf.h" -#include - #include #include -#include #include -#include #include -#include #include #include #include +#include +#ifdef HAVE_XLOCALE_H +#include +#endif #include "../builtin.h" #include "../common.h" +#include "../io.h" +#include "../maybe.h" #include "../wcstringutil.h" #include "../wutil.h" // IWYU pragma: keep diff --git a/src/builtins/printf.h b/src/builtins/printf.h index d98d455a5..7f7daebbf 100644 --- a/src/builtins/printf.h +++ b/src/builtins/printf.h @@ -2,13 +2,10 @@ #ifndef FISH_BUILTIN_PRINTF_H #define FISH_BUILTIN_PRINTF_H -#include -#include - -#include "../io.h" #include "../maybe.h" class parser_t; +struct io_streams_t; maybe_t builtin_printf(parser_t &parser, io_streams_t &streams, const wchar_t **argv); #endif diff --git a/src/builtins/pwd.cpp b/src/builtins/pwd.cpp index 366256a3f..d83811e29 100644 --- a/src/builtins/pwd.cpp +++ b/src/builtins/pwd.cpp @@ -3,12 +3,17 @@ #include "pwd.h" +#include #include +#include +#include #include "../builtin.h" #include "../common.h" +#include "../env.h" #include "../fallback.h" // IWYU pragma: keep #include "../io.h" +#include "../maybe.h" #include "../parser.h" #include "../wgetopt.h" #include "../wutil.h" // IWYU pragma: keep diff --git a/src/builtins/random.cpp b/src/builtins/random.cpp index 5393da49b..5f79a2271 100644 --- a/src/builtins/random.cpp +++ b/src/builtins/random.cpp @@ -3,7 +3,6 @@ #include "random.h" -#include #include #include #include @@ -13,6 +12,7 @@ #include "../common.h" #include "../fallback.h" // IWYU pragma: keep #include "../io.h" +#include "../maybe.h" #include "../wutil.h" // IWYU pragma: keep /// \return a random-seeded engine. diff --git a/src/builtins/read.cpp b/src/builtins/read.cpp index ad904537e..e432a03c8 100644 --- a/src/builtins/read.cpp +++ b/src/builtins/read.cpp @@ -3,34 +3,26 @@ #include "read.h" -#include #include #include #include -#include -#include #include #include #include #include -#include -#include #include -#include +#include #include "../builtin.h" #include "../common.h" -#include "../complete.h" #include "../env.h" -#include "../event.h" #include "../fallback.h" // IWYU pragma: keep -#include "../highlight.h" -#include "../history.h" #include "../io.h" +#include "../maybe.h" #include "../parser.h" -#include "../proc.h" #include "../reader.h" +#include "../tokenizer.h" #include "../wcstringutil.h" #include "../wgetopt.h" #include "../wutil.h" // IWYU pragma: keep diff --git a/src/builtins/realpath.cpp b/src/builtins/realpath.cpp index 5f4872cda..a6d654a5a 100644 --- a/src/builtins/realpath.cpp +++ b/src/builtins/realpath.cpp @@ -3,15 +3,15 @@ #include "realpath.h" -#include -#include +#include #include -#include #include "../builtin.h" #include "../common.h" +#include "../env.h" #include "../fallback.h" // IWYU pragma: keep #include "../io.h" +#include "../maybe.h" #include "../parser.h" #include "../path.h" #include "../wcstringutil.h" diff --git a/src/builtins/return.cpp b/src/builtins/return.cpp index 4d0ee3b81..89f9f952b 100644 --- a/src/builtins/return.cpp +++ b/src/builtins/return.cpp @@ -4,14 +4,14 @@ #include "return.h" #include -#include +#include #include "../builtin.h" #include "../common.h" #include "../fallback.h" // IWYU pragma: keep #include "../io.h" +#include "../maybe.h" #include "../parser.h" -#include "../proc.h" #include "../wgetopt.h" #include "../wutil.h" // IWYU pragma: keep diff --git a/src/builtins/set.cpp b/src/builtins/set.cpp index 0f482fcea..119d343dd 100644 --- a/src/builtins/set.cpp +++ b/src/builtins/set.cpp @@ -3,31 +3,26 @@ #include "set.h" -#include -#include - #include #include -#include -#include -#include #include -#include +#include +#include #include -#include #include +#include #include #include "../builtin.h" #include "../common.h" #include "../env.h" #include "../expand.h" +#include "../event.h" #include "../fallback.h" // IWYU pragma: keep #include "../history.h" #include "../io.h" +#include "../maybe.h" #include "../parser.h" -#include "../proc.h" -#include "../wcstringutil.h" #include "../wgetopt.h" #include "../wutil.h" // IWYU pragma: keep diff --git a/src/builtins/set.h b/src/builtins/set.h index 797bdbcb2..4b08f5e42 100644 --- a/src/builtins/set.h +++ b/src/builtins/set.h @@ -2,8 +2,6 @@ #ifndef FISH_BUILTIN_SET_H #define FISH_BUILTIN_SET_H -#include - #include "../maybe.h" class parser_t; diff --git a/src/builtins/set_color.cpp b/src/builtins/set_color.cpp index 114fd0880..93afd88ee 100644 --- a/src/builtins/set_color.cpp +++ b/src/builtins/set_color.cpp @@ -3,11 +3,12 @@ #include "set_color.h" -#include +#include + #include #if HAVE_CURSES_H -#include +#include // IWYU pragma: keep #elif HAVE_NCURSES_H #include #elif HAVE_NCURSES_CURSES_H @@ -19,7 +20,6 @@ #include #endif -#include #include #include @@ -27,8 +27,10 @@ #include "../color.h" #include "../common.h" #include "../env.h" +#include "../fallback.h" // IWYU pragma: keep +#include "../io.h" +#include "../maybe.h" #include "../output.h" -#include "../parser.h" #include "../wgetopt.h" #include "../wutil.h" // IWYU pragma: keep diff --git a/src/builtins/set_color.h b/src/builtins/set_color.h index 632df46a6..fec44228a 100644 --- a/src/builtins/set_color.h +++ b/src/builtins/set_color.h @@ -2,13 +2,10 @@ #ifndef FISH_BUILTIN_SET_COLOR_H #define FISH_BUILTIN_SET_COLOR_H -#include -#include - -#include "../io.h" #include "../maybe.h" class parser_t; +struct io_streams_t; maybe_t builtin_set_color(parser_t &parser, io_streams_t &streams, const wchar_t **argv); #endif diff --git a/src/builtins/source.cpp b/src/builtins/source.cpp index 8ecb937be..75ef81fb6 100644 --- a/src/builtins/source.cpp +++ b/src/builtins/source.cpp @@ -8,14 +8,19 @@ #include #include +#include +#include +#include #include "../builtin.h" #include "../common.h" #include "../env.h" #include "../fallback.h" // IWYU pragma: keep +#include "../fds.h" #include "../io.h" +#include "../maybe.h" +#include "../null_terminated_array.h" #include "../parser.h" -#include "../proc.h" #include "../reader.h" #include "../wutil.h" // IWYU pragma: keep diff --git a/src/builtins/status.cpp b/src/builtins/status.cpp index 640c05541..8bc10e769 100644 --- a/src/builtins/status.cpp +++ b/src/builtins/status.cpp @@ -3,17 +3,24 @@ #include "status.h" -#include +#include + +#include +#include #include #include +#include +#include #include #include "../builtin.h" #include "../common.h" #include "../enum_map.h" +#include "../env.h" #include "../fallback.h" // IWYU pragma: keep #include "../future_feature_flags.h" #include "../io.h" +#include "../maybe.h" #include "../parser.h" #include "../proc.h" #include "../wgetopt.h" diff --git a/src/builtins/string.cpp b/src/builtins/string.cpp index eddef0553..c3d88a1ff 100644 --- a/src/builtins/string.cpp +++ b/src/builtins/string.cpp @@ -6,15 +6,11 @@ #include #include #include -#include -#include #include #include -#include -#include +#include #include #include -#include #include #include @@ -23,6 +19,8 @@ #include "../env.h" #include "../fallback.h" // IWYU pragma: keep #include "../future_feature_flags.h" +#include "../io.h" +#include "../maybe.h" #include "../parse_util.h" #include "../parser.h" #include "../re.h" diff --git a/src/builtins/test.cpp b/src/builtins/test.cpp index e22329511..eb682f9cd 100644 --- a/src/builtins/test.cpp +++ b/src/builtins/test.cpp @@ -10,19 +10,23 @@ #include #include +#include #include #include #include #include #include +#include #include #include -#include #include +#include #include "../builtin.h" #include "../common.h" +#include "../fallback.h" // IWYU pragma: keep #include "../io.h" +#include "../maybe.h" #include "../parser.h" #include "../wutil.h" // IWYU pragma: keep diff --git a/src/builtins/type.cpp b/src/builtins/type.cpp index a8a89fb9f..f7642f063 100644 --- a/src/builtins/type.cpp +++ b/src/builtins/type.cpp @@ -5,19 +5,20 @@ #include +#include #include +#include #include "../builtin.h" #include "../common.h" -#include "../complete.h" +#include "../env.h" #include "../fallback.h" // IWYU pragma: keep #include "../function.h" #include "../highlight.h" #include "../io.h" +#include "../maybe.h" #include "../parser.h" #include "../path.h" -#include "../signal.h" -#include "../wcstringutil.h" #include "../wgetopt.h" #include "../wutil.h" // IWYU pragma: keep diff --git a/src/builtins/ulimit.cpp b/src/builtins/ulimit.cpp index 8e13d695e..d6fd2b90e 100644 --- a/src/builtins/ulimit.cpp +++ b/src/builtins/ulimit.cpp @@ -5,12 +5,15 @@ #include +#include #include -#include +#include #include "../builtin.h" #include "../common.h" #include "../fallback.h" // IWYU pragma: keep +#include "../io.h" +#include "../maybe.h" #include "../wgetopt.h" #include "../wutil.h" // IWYU pragma: keep diff --git a/src/builtins/ulimit.h b/src/builtins/ulimit.h index cefe1726f..b526910fa 100644 --- a/src/builtins/ulimit.h +++ b/src/builtins/ulimit.h @@ -2,12 +2,10 @@ #ifndef FISH_BUILTIN_ULIMIT_H #define FISH_BUILTIN_ULIMIT_H -#include -#include - -#include "../io.h" +#include "../maybe.h" class parser_t; +struct io_streams_t; maybe_t builtin_ulimit(parser_t &parser, io_streams_t &streams, const wchar_t **argv); #endif diff --git a/src/builtins/wait.cpp b/src/builtins/wait.cpp index 9aea63400..51987d934 100644 --- a/src/builtins/wait.cpp +++ b/src/builtins/wait.cpp @@ -3,16 +3,24 @@ #include "wait.h" -#include - #include +#include +#include +#include +#include +#include +#include +#include #include #include "../builtin.h" #include "../common.h" +#include "../io.h" +#include "../maybe.h" #include "../parser.h" #include "../proc.h" #include "../signal.h" +#include "../topic_monitor.h" #include "../wait_handle.h" #include "../wgetopt.h" #include "../wutil.h" diff --git a/src/color.cpp b/src/color.cpp index 9b59aac5b..bf326d594 100644 --- a/src/color.cpp +++ b/src/color.cpp @@ -4,11 +4,10 @@ #include "color.h" #include -#include +#include #include #include #include // IWYU pragma: keep -#include #include "common.h" #include "fallback.h" // IWYU pragma: keep diff --git a/src/color.h b/src/color.h index 9b0438534..33139a44b 100644 --- a/src/color.h +++ b/src/color.h @@ -4,6 +4,7 @@ #include #include +#include #include "common.h" diff --git a/src/common.cpp b/src/common.cpp index b6029b933..b1b642e56 100644 --- a/src/common.cpp +++ b/src/common.cpp @@ -10,21 +10,12 @@ #include #include #include -#include #include #include -#include -#include -#include -#include -#include #include #include #include -#include -#include -#include #ifdef HAVE_EXECINFO_H #include #endif @@ -35,21 +26,21 @@ #endif #include -#include -#include // IWYU pragma: keep -#include +#include +#include +#include +#include +#include #include "common.h" -#include "env.h" #include "expand.h" #include "fallback.h" // IWYU pragma: keep #include "flog.h" #include "future_feature_flags.h" #include "global_safety.h" #include "iothread.h" -#include "parser.h" -#include "proc.h" #include "signal.h" +#include "topic_monitor.h" #include "termsize.h" #include "wcstringutil.h" #include "wildcard.h" @@ -57,10 +48,10 @@ // Keep after "common.h" #ifdef HAVE_SYS_SYSCTL_H -#include +#include // IWYU pragma: keep #endif #if defined(__APPLE__) -#include +#include // IWYU pragma: keep #endif struct termios shell_modes; diff --git a/src/common.h b/src/common.h index feec54c6b..c3efa26a1 100644 --- a/src/common.h +++ b/src/common.h @@ -10,14 +10,18 @@ #ifdef HAVE_SYS_IOCTL_H #include // IWYU pragma: keep #endif +#include +#include #include -#include -#include +#include +#include #include +#include #include #include #include +#include #include #include "fallback.h" // IWYU pragma: keep diff --git a/src/complete.cpp b/src/complete.cpp index 299c50e64..d218b122f 100644 --- a/src/complete.cpp +++ b/src/complete.cpp @@ -7,43 +7,45 @@ #include "complete.h" -#include #include -#include #include #include -#include + #include #include #include #include #include +#include #include -#include +#include #include #include -#include #include +#include #include #include "autoload.h" #include "builtin.h" #include "common.h" +#include "enum_set.h" #include "env.h" #include "exec.h" #include "expand.h" #include "fallback.h" // IWYU pragma: keep +#include "flog.h" #include "function.h" +#include "global_safety.h" #include "history.h" -#include "iothread.h" +#include "maybe.h" +#include "operation_context.h" #include "parse_constants.h" #include "parse_util.h" #include "parser.h" #include "parser_keywords.h" #include "path.h" -#include "proc.h" -#include "reader.h" +#include "tokenizer.h" #include "util.h" #include "wcstringutil.h" #include "wildcard.h" diff --git a/src/complete.h b/src/complete.h index dccbe4f62..3ecc1123b 100644 --- a/src/complete.h +++ b/src/complete.h @@ -5,11 +5,15 @@ #ifndef FISH_COMPLETE_H #define FISH_COMPLETE_H -#include +#include "config.h" // IWYU pragma: keep +#include +#include #include +#include #include +//#include "expand.h" #include "common.h" #include "wcstringutil.h" @@ -25,7 +29,6 @@ struct completion_mode_t { /// Character that separates the completion and description on programmable completions. #define PROG_COMPLETE_SEP L'\t' -class environment_t; class parser_t; enum { @@ -124,7 +127,6 @@ struct completion_request_options_t { } }; -class completion_t; using completion_list_t = std::vector; /// A completion receiver accepts completions. It is essentially a wrapper around std::vector with diff --git a/src/enum_set.h b/src/enum_set.h index 1c9e67442..2a5a5c26d 100644 --- a/src/enum_set.h +++ b/src/enum_set.h @@ -3,7 +3,6 @@ #include #include -#include #include /// A type (to specialize) that provides a count for an enum. diff --git a/src/env.cpp b/src/env.cpp index 2e142251d..85ca447fd 100644 --- a/src/env.cpp +++ b/src/env.cpp @@ -12,14 +12,12 @@ #include #include -#include #include #include #include #include #include -#include "builtins/bind.h" #include "common.h" #include "env_dispatch.h" #include "env_universal_common.h" @@ -31,6 +29,7 @@ #include "history.h" #include "input.h" #include "kill.h" +#include "null_terminated_array.h" #include "path.h" #include "proc.h" #include "reader.h" diff --git a/src/env.h b/src/env.h index d5c106f23..1d44ec8eb 100644 --- a/src/env.h +++ b/src/env.h @@ -10,10 +10,12 @@ #include #include #include +#include #include "common.h" #include "maybe.h" -#include "null_terminated_array.h" + +class owning_null_terminated_array_t; extern size_t read_byte_limit; extern bool curses_initialized; diff --git a/src/env_dispatch.cpp b/src/env_dispatch.cpp index ce0c9a8d2..472425ed9 100644 --- a/src/env_dispatch.cpp +++ b/src/env_dispatch.cpp @@ -4,20 +4,19 @@ #include #include #include -#include -#include #include #include +#include #include #include #if HAVE_CURSES_H -#include +#include // IWYU pragma: keep #elif HAVE_NCURSES_H -#include +#include // IWYU pragma: keep #elif HAVE_NCURSES_CURSES_H -#include +#include // IWYU pragma: keep #endif #if HAVE_TERM_H #include @@ -25,8 +24,6 @@ #include #endif -#include - #include #include #include @@ -38,8 +35,6 @@ #include "complete.h" #include "env.h" #include "env_dispatch.h" -#include "env_universal_common.h" -#include "event.h" #include "fallback.h" // IWYU pragma: keep #include "flog.h" #include "function.h" @@ -48,14 +43,13 @@ #include "input_common.h" #include "maybe.h" #include "output.h" -#include "parser.h" #include "proc.h" #include "reader.h" #include "screen.h" #include "termsize.h" #include "trace.h" -#include "wutil.h" // IWYU pragma: keep - +#include "wcstringutil.h" +#include "wutil.h" // Limit `read` to 100 MiB (bytes not wide chars) by default. This can be overridden by the // fish_read_limit variable. diff --git a/src/env_dispatch.h b/src/env_dispatch.h index c469e5d9b..7d70eed85 100644 --- a/src/env_dispatch.h +++ b/src/env_dispatch.h @@ -4,14 +4,10 @@ #include "config.h" // IWYU pragma: keep -#include - #include "common.h" -#include "env_universal_common.h" class environment_t; class env_stack_t; -class parser_t; /// Initialize variable dispatch. void env_dispatch_init(const environment_t &vars); diff --git a/src/env_universal_common.cpp b/src/env_universal_common.cpp index 32fc979fa..37a5482c9 100644 --- a/src/env_universal_common.cpp +++ b/src/env_universal_common.cpp @@ -4,38 +4,33 @@ #include // IWYU pragma: keep #include #include +#include // We need the sys/file.h for the flock() declaration on Linux but not OS X. #include // IWYU pragma: keep // We need the ioctl.h header so we can check if SIOCGIFHWADDR is defined by it so we know if we're // on a Linux system. -#include #include // IWYU pragma: keep #include // IWYU pragma: keep -#if !defined(__APPLE__) && !defined(__CYGWIN__) -#include -#endif -#include -#include -#include - -#include #ifdef __CYGWIN__ #include #endif #ifdef HAVE_SYS_SELECT_H #include // IWYU pragma: keep #endif -#include +#if !defined(__APPLE__) && !defined(__CYGWIN__) +#include +#endif #include #include // IWYU pragma: keep #include // IWYU pragma: keep -#include -#include +#include +#include +#include #include -#include +#include #include -#include +#include #include #include "common.h" @@ -44,7 +39,6 @@ #include "fallback.h" // IWYU pragma: keep #include "flog.h" #include "path.h" -#include "signal.h" #include "utf8.h" #include "util.h" // IWYU pragma: keep #include "wcstringutil.h" diff --git a/src/env_universal_common.h b/src/env_universal_common.h index 4b6458e30..7ff74998f 100644 --- a/src/env_universal_common.h +++ b/src/env_universal_common.h @@ -2,16 +2,17 @@ #define FISH_ENV_UNIVERSAL_COMMON_H #include "config.h" // IWYU pragma: keep -#include -#include - +#include #include +#include #include +#include #include #include "common.h" #include "env.h" #include "fds.h" +#include "maybe.h" #include "wutil.h" /// Callback data, reflecting a change in universal variables. diff --git a/src/event.cpp b/src/event.cpp index 306b0b617..0f9781bb5 100644 --- a/src/event.cpp +++ b/src/event.cpp @@ -4,21 +4,20 @@ #include "event.h" #include -#include #include #include #include #include -#include +#include #include #include -#include #include "common.h" #include "fallback.h" // IWYU pragma: keep -#include "input_common.h" +#include "flog.h" #include "io.h" +#include "maybe.h" #include "parser.h" #include "proc.h" #include "signal.h" diff --git a/src/event.h b/src/event.h index fe7b37e8a..bbdf7bd30 100644 --- a/src/event.h +++ b/src/event.h @@ -8,12 +8,15 @@ #include -#include +#include #include +#include #include #include "common.h" -#include "io.h" +#include "global_safety.h" + +struct io_streams_t; /// The process id that is used to match any process id. #define EVENT_ANY_PID 0 diff --git a/src/exec.cpp b/src/exec.cpp index b4c1b90bb..a325ffe08 100644 --- a/src/exec.cpp +++ b/src/exec.cpp @@ -4,51 +4,52 @@ // performed have been massive. #include "config.h" +#include #include #include #ifdef HAVE_SIGINFO_H #include #endif -#include -#ifdef HAVE_SPAWN_H -#include -#endif #include #include -#include #include #include #include +#include +#include #include +#include #include #include -#include #include -#include #include +#include +#include "ast.h" #include "builtin.h" #include "common.h" #include "env.h" #include "exec.h" #include "fallback.h" // IWYU pragma: keep +#include "fds.h" #include "flog.h" #include "function.h" +#include "global_safety.h" #include "io.h" #include "iothread.h" #include "job_group.h" +#include "maybe.h" #include "null_terminated_array.h" #include "parse_tree.h" #include "parser.h" -#include "path.h" #include "postfork.h" #include "proc.h" #include "reader.h" #include "redirection.h" -#include "signal.h" #include "timer.h" #include "trace.h" +#include "wait_handle.h" #include "wcstringutil.h" #include "wutil.h" // IWYU pragma: keep diff --git a/src/exec.h b/src/exec.h index 873ff3a3c..45d5c88ee 100644 --- a/src/exec.h +++ b/src/exec.h @@ -2,13 +2,17 @@ #ifndef FISH_EXEC_H #define FISH_EXEC_H -#include +#include "config.h" -#include +#include +#include -#include "common.h" +#include "flog.h" +#include "io.h" #include "proc.h" +class parser_t; + /// Execute the processes specified by \p j in the parser \p. /// On a true return, the job was successfully launched and the parser will take responsibility for /// cleaning it up. On a false return, the job could not be launched and the caller must clean it diff --git a/src/expand.cpp b/src/expand.cpp index 3bb554325..59b4a4355 100644 --- a/src/expand.cpp +++ b/src/expand.cpp @@ -1,12 +1,9 @@ // String expansion functions. These functions perform several kinds of parameter expansion. -// IWYU pragma: no_include -#include "config.h" +#include "config.h" // IWYU pragma: keep #include #include #include -#include -#include #include #include @@ -16,20 +13,11 @@ #ifdef SunOS #include #endif -#ifdef __APPLE__ -#include // Required to build with old SDK versions -// proc.h needs to be included *after* time.h, this comment stops clang-format from reordering. -#include -#else -#include -#include -#endif #include -#include #include -#include // IWYU pragma: keep -#include +#include +#include #include #include @@ -40,13 +28,10 @@ #include "expand.h" #include "fallback.h" // IWYU pragma: keep #include "history.h" -#include "iothread.h" +#include "operation_context.h" #include "parse_constants.h" #include "parse_util.h" -#include "parser.h" #include "path.h" -#include "proc.h" -#include "reader.h" #include "util.h" #include "wcstringutil.h" #include "wildcard.h" diff --git a/src/expand.h b/src/expand.h index 6d4f37f27..5649abcb4 100644 --- a/src/expand.h +++ b/src/expand.h @@ -7,8 +7,7 @@ #include "config.h" -#include - +#include #include #include #include @@ -18,7 +17,6 @@ #include "maybe.h" #include "parse_constants.h" -class environment_t; class env_var_t; class environment_t; class operation_context_t; diff --git a/src/fallback.cpp b/src/fallback.cpp index a776e3345..5e4d2ec61 100644 --- a/src/fallback.cpp +++ b/src/fallback.cpp @@ -5,41 +5,35 @@ #include "config.h" // IWYU likes to recommend adding term.h when we want ncurses.h. -// IWYU pragma: no_include term.h -#include // IWYU pragma: keep +// IWYU pragma: no_include "term.h" #include // IWYU pragma: keep #include // IWYU pragma: keep #include // IWYU pragma: keep -#include // IWYU pragma: keep -#include // IWYU pragma: keep #include -#include // IWYU pragma: keep -#include // IWYU pragma: keep #include #include -#include #include #include #if HAVE_GETTEXT #include #endif +#if defined(TPARM_SOLARIS_KLUDGE) #if HAVE_CURSES_H -#include +#include // IWYU pragma: keep #elif HAVE_NCURSES_H #include // IWYU pragma: keep #elif HAVE_NCURSES_CURSES_H -#include +#include // IWYU pragma: keep #endif #if HAVE_TERM_H #include // IWYU pragma: keep #elif HAVE_NCURSES_TERM_H #include #endif +#endif #include // IWYU pragma: keep -#include // IWYU pragma: keep - #include "common.h" // IWYU pragma: keep #include "fallback.h" // IWYU pragma: keep @@ -138,11 +132,11 @@ char *fish_gettext(const char *msgid) { return (char *)msgid; } char *fish_bindtextdomain(const char *domainname, const char *dirname) { UNUSED(domainname); UNUSED(dirname); - return NULL; + return nullptr; } char *fish_textdomain(const char *domainname) { UNUSED(domainname); - return NULL; + return nullptr; } #endif diff --git a/src/fallback.h b/src/fallback.h index 043eea2d7..377b52a8c 100644 --- a/src/fallback.h +++ b/src/fallback.h @@ -3,9 +3,7 @@ #include "config.h" -#include #include -#include // The following include must be kept despite what IWYU says. That's because of the interaction // between the weak linking of `wcsdup` and `wcscasecmp` via `#define`s below and the declarations // in . At least on OS X if we don't do this we get compilation errors do to the macro diff --git a/src/fd_monitor.cpp b/src/fd_monitor.cpp index e5c40f110..de55abd94 100644 --- a/src/fd_monitor.cpp +++ b/src/fd_monitor.cpp @@ -3,11 +3,14 @@ #include "fd_monitor.h" -#include +#include + +#include +#include #include //this_thread::sleep_for +#include #include "flog.h" -#include "io.h" #include "iothread.h" #include "wutil.h" diff --git a/src/fd_monitor.h b/src/fd_monitor.h index da21f41da..6b4005a68 100644 --- a/src/fd_monitor.h +++ b/src/fd_monitor.h @@ -4,6 +4,9 @@ #include #include #include +#include +#include + // Needed for musl #include // IWYU pragma: keep @@ -11,8 +14,6 @@ #include "fds.h" #include "maybe.h" -class fd_monitor_t; - /// Each item added to fd_monitor_t is assigned a unique ID, which is not recycled. /// Items may have their callback triggered immediately by passing the ID. /// Zero is a sentinel. diff --git a/src/fds.cpp b/src/fds.cpp index daa74866a..0dbae2eb3 100644 --- a/src/fds.cpp +++ b/src/fds.cpp @@ -8,7 +8,7 @@ #include #include -#include +#include #include "flog.h" #include "wutil.h" diff --git a/src/fds.h b/src/fds.h index 2ae7101ff..ae4928ead 100644 --- a/src/fds.h +++ b/src/fds.h @@ -3,16 +3,16 @@ #ifndef FISH_FDS_H #define FISH_FDS_H -#include "config.h" // IWYU pragma: keep +#include "config.h" // IWYU pragma: keep -#include -#include +#include // IWYU pragma: keep +#include // IWYU pragma: keep #include -#include +#include #include #include -#include +#include #include "common.h" #include "maybe.h" diff --git a/src/fish.cpp b/src/fish.cpp index b06ca5398..59a6f4c33 100644 --- a/src/fish.cpp +++ b/src/fish.cpp @@ -18,37 +18,42 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ #include "config.h" -#include #include #include #include #include -#include -#include #include #include +#include #include #include #include +#include #include #include #include #include +#include #include -#include "builtin.h" +#include "ast.h" #include "common.h" #include "env.h" #include "event.h" #include "expand.h" #include "fallback.h" // IWYU pragma: keep +#include "fds.h" #include "fish_version.h" #include "flog.h" #include "function.h" #include "future_feature_flags.h" +#include "global_safety.h" #include "history.h" #include "io.h" +#include "maybe.h" +#include "parse_constants.h" +#include "parse_tree.h" #include "parse_util.h" #include "parser.h" #include "path.h" diff --git a/src/fish_indent.cpp b/src/fish_indent.cpp index 947725f47..9fb9c1725 100644 --- a/src/fish_indent.cpp +++ b/src/fish_indent.cpp @@ -23,18 +23,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA #include #include #include -#include +#include +#include #include +#include #include #include -#include #include -#include +#include +#include #include #include "ast.h" -#include "color.h" #include "common.h" #include "env.h" #include "expand.h" @@ -42,12 +43,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA #include "fish_version.h" #include "flog.h" #include "future_feature_flags.h" +#include "global_safety.h" #include "highlight.h" +#include "maybe.h" #include "operation_context.h" -#include "output.h" #include "parse_constants.h" #include "parse_util.h" #include "print_help.h" +#include "tokenizer.h" #include "wcstringutil.h" #include "wutil.h" // IWYU pragma: keep diff --git a/src/fish_key_reader.cpp b/src/fish_key_reader.cpp index 337c848b3..e3ec92f59 100644 --- a/src/fish_key_reader.cpp +++ b/src/fish_key_reader.cpp @@ -8,10 +8,7 @@ // Type "exit" or "quit" to terminate the program. #include "config.h" // IWYU pragma: keep -#include #include -#include -#include #include #include #include @@ -19,7 +16,6 @@ #include #include -#include #include #include @@ -29,6 +25,7 @@ #include "fish_version.h" #include "input.h" #include "input_common.h" +#include "maybe.h" #include "parser.h" #include "print_help.h" #include "proc.h" diff --git a/src/fish_tests.cpp b/src/fish_tests.cpp index 42331bcb2..9c8e80fd5 100644 --- a/src/fish_tests.cpp +++ b/src/fish_tests.cpp @@ -1,42 +1,44 @@ // Various bug and feature tests. Compiled and run by make test. #include "config.h" // IWYU pragma: keep -// IWYU pragma: no_include -// IWYU pragma: no_include -#include #include #include #include -#include #include #include #include -#include #include #include #include -#include +#include #include -#include -#include #include -#include #include #include -#include #include #include #include #include +#include +#include #include #include #include #include +#include +#include +#include +#include +#include +#include #include +#include #include #include #include +#include +#include #include #include @@ -46,16 +48,18 @@ #include "color.h" #include "common.h" #include "complete.h" +#include "enum_set.h" #include "env.h" #include "env_universal_common.h" -#include "event.h" #include "expand.h" #include "fallback.h" // IWYU pragma: keep +#include "fds.h" #include "fd_monitor.h" #include "function.h" #include "future_feature_flags.h" #include "highlight.h" #include "history.h" +#include "global_safety.h" #include "input.h" #include "input_common.h" #include "io.h" @@ -63,6 +67,7 @@ #include "kill.h" #include "lru.h" #include "maybe.h" +#include "null_terminated_array.h" #include "operation_context.h" #include "pager.h" #include "parse_constants.h" @@ -82,6 +87,7 @@ #include "topic_monitor.h" #include "utf8.h" #include "util.h" +#include "wait_handle.h" #include "wcstringutil.h" #include "wildcard.h" #include "wutil.h" // IWYU pragma: keep @@ -6629,8 +6635,8 @@ static void test_fd_event_signaller() { static void test_timer_format() { say(L"Testing timer format"); // This test uses numeric output, so we need to set the locale. - char *saved_locale = strdup(setlocale(LC_NUMERIC, nullptr)); - setlocale(LC_NUMERIC, "C"); + char *saved_locale = strdup(std::setlocale(LC_NUMERIC, nullptr)); + std::setlocale(LC_NUMERIC, "C"); auto t1 = timer_snapshot_t::take(); t1.cpu_fish.ru_utime.tv_usec = 0; t1.cpu_fish.ru_stime.tv_usec = 0; @@ -6657,7 +6663,7 @@ Executed in 500.00 micros fish external err(L"Failed to format timer snapshot\nExpected: %ls\nActual:%ls\n", expected, actual.c_str()); } - setlocale(LC_NUMERIC, saved_locale); + std::setlocale(LC_NUMERIC, saved_locale); free(saved_locale); } @@ -7043,7 +7049,7 @@ void list_tests() { /// Main test. int main(int argc, char **argv) { - setlocale(LC_ALL, ""); + std::setlocale(LC_ALL, ""); if (argc >= 2 && std::strcmp(argv[1], "--list") == 0) { list_tests(); diff --git a/src/flog.cpp b/src/flog.cpp index 3ba2813b5..e7886f87b 100644 --- a/src/flog.cpp +++ b/src/flog.cpp @@ -1,12 +1,18 @@ -// fish logging -#include "config.h" +/// fish logging +#include "config.h" // IWYU pragma: keep #include "flog.h" +#include +#include + +#include +#include +#include +#include #include #include "common.h" -#include "enum_set.h" #include "global_safety.h" #include "parse_util.h" #include "wcstringutil.h" diff --git a/src/flog.h b/src/flog.h index 4ef54fea8..b1ecfaad5 100644 --- a/src/flog.h +++ b/src/flog.h @@ -4,20 +4,20 @@ #include "config.h" // IWYU pragma: keep +#include #include +#include #include #include -#include +#include +#include "common.h" #include "global_safety.h" using wcstring = std::wstring; using wcstring_list_t = std::vector; -template -class owning_lock; - namespace flog_details { class category_list_t; diff --git a/src/function.cpp b/src/function.cpp index 22c967a46..d54a43011 100644 --- a/src/function.cpp +++ b/src/function.cpp @@ -4,12 +4,9 @@ // #include "config.h" // IWYU pragma: keep -// IWYU pragma: no_include -#include -#include -#include - #include + +#include #include #include #include @@ -17,17 +14,20 @@ #include #include #include +#include +#include "ast.h" #include "autoload.h" #include "common.h" +#include "complete.h" #include "env.h" #include "event.h" -#include "exec.h" #include "fallback.h" // IWYU pragma: keep #include "function.h" +#include "maybe.h" +#include "parse_constants.h" #include "parser.h" #include "parser_keywords.h" -#include "reader.h" #include "signal.h" #include "wcstringutil.h" #include "wutil.h" // IWYU pragma: keep diff --git a/src/function.h b/src/function.h index 1770c0567..cd1dc1316 100644 --- a/src/function.h +++ b/src/function.h @@ -5,11 +5,10 @@ #define FISH_FUNCTION_H #include -#include +#include +#include #include "common.h" -#include "env.h" -#include "event.h" #include "parse_tree.h" class parser_t; diff --git a/src/future_feature_flags.cpp b/src/future_feature_flags.cpp index e30065f0b..ac92b705a 100644 --- a/src/future_feature_flags.cpp +++ b/src/future_feature_flags.cpp @@ -3,6 +3,7 @@ #include "future_feature_flags.h" #include +#include #include "wcstringutil.h" diff --git a/src/future_feature_flags.h b/src/future_feature_flags.h index 12fd897cb..9e604b724 100644 --- a/src/future_feature_flags.h +++ b/src/future_feature_flags.h @@ -2,10 +2,7 @@ #ifndef FISH_FUTURE_FEATURE_FLAGS_H #define FISH_FUTURE_FEATURE_FLAGS_H -#include - #include -#include #include "common.h" diff --git a/src/global_safety.h b/src/global_safety.h index 24b491912..5038a7412 100644 --- a/src/global_safety.h +++ b/src/global_safety.h @@ -5,7 +5,6 @@ #include "config.h" // IWYU pragma: keep #include -#include #include "common.h" diff --git a/src/highlight.cpp b/src/highlight.cpp index 40e20c68e..80abd33af 100644 --- a/src/highlight.cpp +++ b/src/highlight.cpp @@ -1,17 +1,16 @@ // Functions for syntax highlighting. #include "config.h" // IWYU pragma: keep -// IWYU pragma: no_include #include #include #include #include #include +#include #include -#include +#include #include -#include #include #include #include @@ -27,11 +26,13 @@ #include "future_feature_flags.h" #include "highlight.h" #include "history.h" +#include "maybe.h" #include "output.h" +#include "operation_context.h" #include "parse_constants.h" #include "parse_util.h" -#include "parser.h" #include "path.h" +#include "redirection.h" #include "tokenizer.h" #include "wcstringutil.h" #include "wildcard.h" diff --git a/src/highlight.h b/src/highlight.h index 1f302f9dd..0b9e66c62 100644 --- a/src/highlight.h +++ b/src/highlight.h @@ -3,14 +3,18 @@ #define FISH_HIGHLIGHT_H #include -#include +#include +#include +#include +#include #include #include #include "color.h" -#include "common.h" -#include "env.h" +#include "flog.h" + +class environment_t; /// Describes the role of a span of text. enum class highlight_role_t : uint8_t { diff --git a/src/history.cpp b/src/history.cpp index 032736d5c..9546bff4c 100644 --- a/src/history.cpp +++ b/src/history.cpp @@ -1,50 +1,42 @@ // History functions, part of the user interface. #include "config.h" // IWYU pragma: keep -#include #include #include -#include -#include #include -#include -#include #include // We need the sys/file.h for the flock() declaration on Linux but not OS X. #include // IWYU pragma: keep #include #include -#include #include -#include #include #include #include #include #include -#include #include -#include #include #include "ast.h" #include "common.h" #include "env.h" +#include "expand.h" #include "fallback.h" // IWYU pragma: keep +#include "fds.h" #include "flog.h" #include "global_safety.h" #include "history.h" #include "history_file.h" #include "io.h" #include "iothread.h" +#include "operation_context.h" #include "lru.h" #include "parse_constants.h" #include "parse_util.h" -#include "parser.h" #include "path.h" -#include "reader.h" #include "wcstringutil.h" #include "wildcard.h" // IWYU pragma: keep #include "wutil.h" // IWYU pragma: keep diff --git a/src/history.h b/src/history.h index e4b66e9de..75f86c103 100644 --- a/src/history.h +++ b/src/history.h @@ -2,14 +2,12 @@ #ifndef FISH_HISTORY_H #define FISH_HISTORY_H -// IWYU pragma: no_include -#include -#include #include #include #include #include +#include #include #include #include @@ -19,6 +17,7 @@ #include #include "common.h" +#include "maybe.h" #include "wutil.h" // IWYU pragma: keep struct io_streams_t; diff --git a/src/history_file.cpp b/src/history_file.cpp index dd2ce7389..e530a8d96 100644 --- a/src/history_file.cpp +++ b/src/history_file.cpp @@ -1,13 +1,23 @@ -#include "config.h" +#include "config.h" // IWYU pragma: keep #include "history_file.h" +#include +#include +#include + +#include +#include #include +#include +#include +#include +#include #include "common.h" -#include "fds.h" #include "history.h" #include "path.h" +#include "wutil.h" // Some forward declarations. static history_item_t decode_item_fish_2_0(const char *base, size_t len); diff --git a/src/history_file.h b/src/history_file.h index 198ee11f1..3a020d9e2 100644 --- a/src/history_file.h +++ b/src/history_file.h @@ -1,19 +1,18 @@ #ifndef FISH_HISTORY_FILE_H #define FISH_HISTORY_FILE_H -#include "config.h" +#include "config.h" // IWYU pragma: keep #include -#include #include #include +#include #include "common.h" #include "maybe.h" class history_item_t; -class history_tests_t; // History file types. enum history_file_type_t { history_type_fish_2_0, history_type_fish_1_x }; diff --git a/src/input.cpp b/src/input.cpp index d5b6a4a24..8dfdb652d 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -2,11 +2,9 @@ #include "config.h" #include -#include -#include #if HAVE_TERM_H -#include +#include // IWYU pragma: keep #include #elif HAVE_NCURSES_TERM_H #include @@ -14,7 +12,6 @@ #include #include -#include #include #include #include @@ -24,10 +21,10 @@ #include "env.h" #include "event.h" #include "fallback.h" // IWYU pragma: keep +#include "flog.h" #include "global_safety.h" #include "input.h" #include "input_common.h" -#include "io.h" #include "parser.h" #include "proc.h" #include "reader.h" diff --git a/src/input.h b/src/input.h index c2343baae..b775ad779 100644 --- a/src/input.h +++ b/src/input.h @@ -4,11 +4,15 @@ #define FISH_INPUT_H #include +#include +#include +#include #include #include "common.h" #include "input_common.h" +#include "maybe.h" #define FISH_BIND_MODE_VAR L"fish_bind_mode" #define DEFAULT_BIND_MODE L"default" diff --git a/src/input_common.cpp b/src/input_common.cpp index a98187b2b..6d4723672 100644 --- a/src/input_common.cpp +++ b/src/input_common.cpp @@ -3,31 +3,26 @@ #include #include -#include - -#include +#include +#include #ifdef HAVE_SYS_SELECT_H #include #endif -#include -#include -#include -#include -#include +#include +#include +#include +#include #include #include -#include -#include -#include #include #include "common.h" #include "env.h" #include "env_universal_common.h" #include "fallback.h" // IWYU pragma: keep +#include "fds.h" #include "flog.h" -#include "global_safety.h" #include "input_common.h" #include "iothread.h" #include "wutil.h" diff --git a/src/input_common.h b/src/input_common.h index da7558137..a53c46b5d 100644 --- a/src/input_common.h +++ b/src/input_common.h @@ -2,9 +2,12 @@ #ifndef INPUT_COMMON_H #define INPUT_COMMON_H -#include +#include -#include +#include +#include +#include +#include #include "common.h" #include "maybe.h" diff --git a/src/io.cpp b/src/io.cpp index 1dbfc68e9..463311c37 100644 --- a/src/io.cpp +++ b/src/io.cpp @@ -5,19 +5,18 @@ #include #include -#include #include #include #include -#include #include +#include #include "common.h" -#include "exec.h" #include "fallback.h" // IWYU pragma: keep #include "fd_monitor.h" -#include "iothread.h" +#include "flog.h" +#include "maybe.h" #include "path.h" #include "redirection.h" #include "wutil.h" // IWYU pragma: keep diff --git a/src/io.h b/src/io.h index e362b880f..436eab965 100644 --- a/src/io.h +++ b/src/io.h @@ -1,23 +1,20 @@ #ifndef FISH_IO_H #define FISH_IO_H -#include #include -#include -#include +#include -#include +#include +#include #include #include -#include +#include +#include #include #include "common.h" -#include "env.h" #include "fds.h" -#include "flog.h" #include "global_safety.h" -#include "maybe.h" #include "redirection.h" using std::shared_ptr; @@ -238,7 +235,6 @@ class io_pipe_t final : public io_data_t { }; class io_buffer_t; -class io_chain_t; /// Represents filling an io_buffer_t. Very similar to io_pipe_t. class io_bufferfill_t final : public io_data_t { @@ -275,8 +271,6 @@ class io_bufferfill_t final : public io_data_t { static separated_buffer_t finish(std::shared_ptr &&filler); }; -class output_stream_t; - /// An io_buffer_t is a buffer which can populate itself by reading from an fd. /// It is not an io_data_t. class io_buffer_t { diff --git a/src/iothread.cpp b/src/iothread.cpp index fcc7eaf65..ee471f42e 100644 --- a/src/iothread.cpp +++ b/src/iothread.cpp @@ -2,28 +2,23 @@ #include "iothread.h" -#include #include #include #include -#include -#include -#include -#include -#include #include -#include +#include // IWYU pragma: keep +#include #include -#include +#include +#include #include -#include #include "common.h" +#include "fallback.h" #include "fds.h" #include "flog.h" -#include "global_safety.h" -#include "wutil.h" +#include "maybe.h" /// We just define a thread limit of 1024. #define IO_MAX_THREADS 1024 diff --git a/src/iothread.h b/src/iothread.h index 672dcdebd..c2797a6c4 100644 --- a/src/iothread.h +++ b/src/iothread.h @@ -2,14 +2,10 @@ #ifndef FISH_IOTHREAD_H #define FISH_IOTHREAD_H -#include - #include // for uint64_t #include #include -#include - -#include "maybe.h" +#include /// \return the fd on which to listen for completion callbacks. int iothread_port(); diff --git a/src/job_group.cpp b/src/job_group.cpp index c2113592c..b210288fb 100644 --- a/src/job_group.cpp +++ b/src/job_group.cpp @@ -1,10 +1,13 @@ -#include "config.h" +#include "config.h" // IWYU pragma: keep #include "job_group.h" +#include +#include +#include + #include "common.h" #include "fallback.h" // IWYU pragma: keep -#include "flog.h" #include "proc.h" // Basic thread safe sorted vector of job IDs in use. diff --git a/src/job_group.h b/src/job_group.h index 0b2b9a511..2697f5e33 100644 --- a/src/job_group.h +++ b/src/job_group.h @@ -4,10 +4,12 @@ #include + #include #include "common.h" #include "global_safety.h" +#include "maybe.h" /// A job ID, corresponding to what is printed in 'jobs'. /// 1 is the first valid job ID. @@ -22,7 +24,6 @@ using job_id_t = int; /// they do not consume a job ID, they do not show up in job lists, and they do not have a pgid /// because they contain no external procs. Note that job_group_t is intended to eventually be /// shared between threads, and so must be thread safe. -class job_t; class job_group_t; using job_group_ref_t = std::shared_ptr; diff --git a/src/kill.cpp b/src/kill.cpp index 19ec2732c..96f7f4949 100644 --- a/src/kill.cpp +++ b/src/kill.cpp @@ -6,12 +6,10 @@ #include "kill.h" -#include - #include #include -#include #include +#include #include "common.h" #include "fallback.h" // IWYU pragma: keep diff --git a/src/null_terminated_array.h b/src/null_terminated_array.h index c8dd93ac4..7a19b4e66 100644 --- a/src/null_terminated_array.h +++ b/src/null_terminated_array.h @@ -4,8 +4,9 @@ #include "config.h" // IWYU pragma: keep -#include +#include #include +#include #include #include "common.h" diff --git a/src/operation_context.cpp b/src/operation_context.cpp index f0f4d301f..478f89eec 100644 --- a/src/operation_context.cpp +++ b/src/operation_context.cpp @@ -1,8 +1,9 @@ // Utilities for io redirection. #include "config.h" // IWYU pragma: keep -#include "operation_context.h" +#include +#include "operation_context.h" #include "env.h" bool no_cancel() { return false; } diff --git a/src/operation_context.h b/src/operation_context.h index 6f89853e6..7cf268bd7 100644 --- a/src/operation_context.h +++ b/src/operation_context.h @@ -1,6 +1,8 @@ #ifndef FISH_OPERATION_CONTEXT_H #define FISH_OPERATION_CONTEXT_H +#include +#include #include #include "common.h" diff --git a/src/output.cpp b/src/output.cpp index d1a02e61f..c0bda9d09 100644 --- a/src/output.cpp +++ b/src/output.cpp @@ -2,11 +2,10 @@ #include "config.h" #include -#include +#include -#include #if HAVE_CURSES_H -#include +#include // IWYU pragma: keep #elif HAVE_NCURSES_H #include #elif HAVE_NCURSES_CURSES_H @@ -17,10 +16,9 @@ #elif HAVE_NCURSES_TERM_H #include #endif -#include #include -#include +#include #include #include @@ -29,6 +27,7 @@ #include "env.h" #include "fallback.h" // IWYU pragma: keep #include "flog.h" +#include "maybe.h" #include "output.h" #include "wcstringutil.h" #include "wutil.h" // IWYU pragma: keep diff --git a/src/output.h b/src/output.h index 91e5d9a95..2b786c31c 100644 --- a/src/output.h +++ b/src/output.h @@ -5,11 +5,14 @@ #ifndef FISH_OUTPUT_H #define FISH_OUTPUT_H -#include - +#include +#include +#include +#include #include #include "color.h" +#include "common.h" #include "fallback.h" // IWYU pragma: keep class env_var_t; diff --git a/src/pager.cpp b/src/pager.cpp index 72632416a..087536218 100644 --- a/src/pager.cpp +++ b/src/pager.cpp @@ -1,11 +1,13 @@ #include "config.h" // IWYU pragma: keep -// IWYU pragma: no_include #include #include #include + +#include #include +#include #include #include #include @@ -14,12 +16,14 @@ #include "common.h" #include "complete.h" #include "fallback.h" -#include "flog.h" #include "highlight.h" +#include "maybe.h" #include "operation_context.h" #include "pager.h" #include "reader.h" #include "screen.h" +#include "termsize.h" +#include "wcstringutil.h" #include "wutil.h" // IWYU pragma: keep using comp_t = pager_t::comp_t; diff --git a/src/pager.h b/src/pager.h index 8d5e443c6..ff74d055b 100644 --- a/src/pager.h +++ b/src/pager.h @@ -4,15 +4,16 @@ #include -#include #include #include #include "common.h" #include "complete.h" +#include "highlight.h" #include "reader.h" #include "screen.h" -#include "termsize.h" + +struct termsize_t; #define PAGER_SELECTION_NONE static_cast(-1) @@ -61,8 +62,6 @@ enum class selection_motion_t { // How many rows we will show in the "initial" pager. #define PAGER_UNDISCLOSED_MAX_ROWS 4 -struct highlight_spec_t; - class pager_t { size_t available_term_width{0}; size_t available_term_height{0}; diff --git a/src/parse_execution.cpp b/src/parse_execution.cpp index 5dfd0c752..09a7e4757 100644 --- a/src/parse_execution.cpp +++ b/src/parse_execution.cpp @@ -9,13 +9,13 @@ #include #include #include -#include -#include #include +#include +#include #include #include -#include +#include #include #include "ast.h" @@ -32,6 +32,7 @@ #include "io.h" #include "job_group.h" #include "maybe.h" +#include "operation_context.h" #include "parse_constants.h" #include "parse_util.h" #include "parser.h" @@ -41,7 +42,6 @@ #include "timer.h" #include "tokenizer.h" #include "trace.h" -#include "util.h" #include "wildcard.h" #include "wutil.h" diff --git a/src/parse_execution.h b/src/parse_execution.h index c2e2e02da..c3e16ca1b 100644 --- a/src/parse_execution.h +++ b/src/parse_execution.h @@ -4,12 +4,17 @@ #include -#include "ast.h" +#include + +#include "ast.h" // IWYU pragma: keep #include "common.h" #include "io.h" +#include "maybe.h" #include "parse_constants.h" #include "parse_tree.h" #include "proc.h" +#include "redirection.h" + class block_t; class operation_context_t; diff --git a/src/parse_tree.cpp b/src/parse_tree.cpp index efb6672d6..da11f58f2 100644 --- a/src/parse_tree.cpp +++ b/src/parse_tree.cpp @@ -3,23 +3,18 @@ #include "parse_tree.h" -#include #include -#include -#include #include #include -#include -#include +#include #include "ast.h" #include "common.h" #include "fallback.h" -#include "flog.h" +#include "enum_map.h" +#include "maybe.h" #include "parse_constants.h" -#include "parse_tree.h" -#include "proc.h" #include "tokenizer.h" #include "wutil.h" // IWYU pragma: keep diff --git a/src/parse_tree.h b/src/parse_tree.h index 6382c17d3..95ae4b603 100644 --- a/src/parse_tree.h +++ b/src/parse_tree.h @@ -2,17 +2,10 @@ #ifndef FISH_PARSE_PRODUCTIONS_H #define FISH_PARSE_PRODUCTIONS_H -#include -#include -#include - -#include #include -#include #include "ast.h" #include "common.h" -#include "maybe.h" #include "parse_constants.h" #include "tokenizer.h" @@ -51,10 +44,6 @@ const wchar_t *keyword_description(parse_keyword_t type); parse_error_code_t parse_error_from_tokenizer_error(tokenizer_error_t err); -namespace ast { -class ast_t; -} - /// A type wrapping up a parse tree and the original source behind it. struct parsed_source_t : noncopyable_t, nonmovable_t { wcstring src; diff --git a/src/parse_util.cpp b/src/parse_util.cpp index dd7787cb2..8ac535765 100644 --- a/src/parse_util.cpp +++ b/src/parse_util.cpp @@ -7,12 +7,12 @@ #include "parse_util.h" #include -#include +#include #include #include #include -#include +#include #include "ast.h" #include "builtin.h" @@ -20,9 +20,9 @@ #include "expand.h" #include "fallback.h" // IWYU pragma: keep #include "future_feature_flags.h" +#include "operation_context.h" #include "parse_constants.h" -#include "parse_util.h" -#include "parser.h" +#include "parse_tree.h" #include "tokenizer.h" #include "wcstringutil.h" #include "wildcard.h" diff --git a/src/parse_util.h b/src/parse_util.h index 961a1308c..96422baaa 100644 --- a/src/parse_util.h +++ b/src/parse_util.h @@ -7,12 +7,14 @@ #include #include "common.h" -#include "parse_tree.h" -#include "tokenizer.h" +#include "maybe.h" +#include "parse_constants.h" namespace ast { -struct argument_t; + struct argument_t; + class ast_t; } +struct tok_t; /// Handles slices: the square brackets in an expression like $foo[5..4] /// \return the length of the slice starting at \p in, or 0 if there is no slice, or -1 on error. diff --git a/src/parser.cpp b/src/parser.cpp index 54fbe5cc6..7b6533ddb 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -8,23 +8,27 @@ #include #include +#include +#include #include +#include +#include #include #include "ast.h" #include "common.h" +#include "complete.h" #include "env.h" #include "event.h" #include "expand.h" +#include "fds.h" #include "fallback.h" // IWYU pragma: keep #include "flog.h" #include "function.h" #include "job_group.h" #include "parse_constants.h" #include "parse_execution.h" -#include "parse_util.h" #include "proc.h" -#include "reader.h" #include "signal.h" #include "wutil.h" // IWYU pragma: keep diff --git a/src/parser.h b/src/parser.h index f75be1b83..a6cad3b48 100644 --- a/src/parser.h +++ b/src/parser.h @@ -3,26 +3,30 @@ #define FISH_PARSER_H #include -#include #include +#include +#include #include #include -#include +#include #include #include "common.h" +#include "env.h" #include "event.h" #include "expand.h" +#include "job_group.h" +#include "maybe.h" #include "operation_context.h" #include "parse_constants.h" -#include "parse_execution.h" #include "parse_tree.h" #include "proc.h" #include "util.h" #include "wait_handle.h" class io_chain_t; +class autoclose_fd_t; /// event_blockage_t represents a block on events. struct event_blockage_t {}; @@ -135,8 +139,6 @@ struct profile_item_t { }; class parse_execution_context_t; -class completion_t; -struct event_t; /// Miscellaneous data used to avoid recursion and others. struct library_data_t { @@ -204,7 +206,7 @@ struct library_data_t { filename_ref_t current_filename{}; /// List of events that have been sent but have not yet been delivered because they are blocked. - std::vector> blocked_events{}; + std::vector> blocked_events{}; /// A stack of fake values to be returned by builtin_commandline. This is used by the completion /// machinery when wrapping: e.g. if `tig` wraps `git` then git completions need to see git on @@ -216,8 +218,6 @@ struct library_data_t { std::shared_ptr cwd_fd{}; }; -class operation_context_t; - /// The result of parser_t::eval family. struct eval_res_t { /// The value for $status. @@ -282,7 +282,7 @@ class parser_t : public std::enable_shared_from_this { std::deque profile_items; /// Adds a job to the beginning of the job list. - void job_add(shared_ptr job); + void job_add(std::shared_ptr job); /// \return whether we are currently evaluating a function. bool is_function() const; diff --git a/src/parser_keywords.cpp b/src/parser_keywords.cpp index c7ae27b46..e5b3ec1c5 100644 --- a/src/parser_keywords.cpp +++ b/src/parser_keywords.cpp @@ -3,6 +3,8 @@ #include "parser_keywords.h" +#include +#include #include #include diff --git a/src/path.cpp b/src/path.cpp index 04332c1ba..ed2b88a3e 100644 --- a/src/path.cpp +++ b/src/path.cpp @@ -6,7 +6,6 @@ #include "path.h" #include -#include #include #if defined(__linux__) #include @@ -14,10 +13,8 @@ #include #include -#include -#include #include -#include +#include #include #include "common.h" diff --git a/src/path.h b/src/path.h index 5e0df6e1f..32b162479 100644 --- a/src/path.h +++ b/src/path.h @@ -4,10 +4,10 @@ #ifndef FISH_PATH_H #define FISH_PATH_H -#include +#include #include "common.h" -#include "env.h" +#include "maybe.h" /// Returns the user configuration directory for fish. If the directory or one of its parents /// doesn't exist, they are first created. @@ -39,11 +39,12 @@ dir_remoteness_t path_get_data_remoteness(); /// Like path_get_data_remoteness but for the config directory. dir_remoteness_t path_get_config_remoteness(); +class env_stack_t; /// Emit any errors if config directories are missing. /// Use the given environment stack to ensure this only occurs once. -class env_stack_t; void path_emit_config_directory_messages(env_stack_t &vars); +class environment_t; /// Finds the path of an executable named \p cmd, by looking in $PATH taken from \p vars. /// \returns the path if found, none if not. maybe_t path_get_path(const wcstring &cmd, const environment_t &vars); diff --git a/src/postfork.cpp b/src/postfork.cpp index 4e2e7bbfe..151556f79 100644 --- a/src/postfork.cpp +++ b/src/postfork.cpp @@ -5,20 +5,20 @@ #include #include #include -#include #include +#include #include -#include #ifdef HAVE_SPAWN_H #include #endif -#include +#include +#include #include "common.h" #include "exec.h" +#include "fds.h" #include "flog.h" -#include "io.h" #include "iothread.h" #include "job_group.h" #include "postfork.h" diff --git a/src/postfork.h b/src/postfork.h index ed44ae4ee..5c09065c1 100644 --- a/src/postfork.h +++ b/src/postfork.h @@ -5,10 +5,6 @@ #include "config.h" -#include -#include - -#include "maybe.h" #ifdef HAVE_SPAWN_H #include #endif @@ -16,6 +12,9 @@ #define FISH_USE_POSIX_SPAWN HAVE_SPAWN_H #endif +#include "common.h" +#include "maybe.h" + class dup2_list_t; class job_t; class process_t; diff --git a/src/proc.cpp b/src/proc.cpp index 57298e49f..86019e8f9 100644 --- a/src/proc.cpp +++ b/src/proc.cpp @@ -3,21 +3,18 @@ // library will call proc to create representations of the running jobs as needed. // // Some of the code in this file is based on code from the Glibc manual. -// IWYU pragma: no_include <__bit_reference> #include "config.h" #include #include #include -#include #include -#include #include #include #if HAVE_TERM_H -#include +#include // IWYU pragma: keep #include #elif HAVE_NCURSES_TERM_H #include @@ -26,32 +23,29 @@ #ifdef HAVE_SIGINFO_H #include #endif -#ifdef HAVE_SYS_SELECT_H -#include -#endif #include // IWYU pragma: keep -#include #include #include // IWYU pragma: keep +#include +#include #include #include #include #include "common.h" +#include "env.h" +#include "fds.h" #include "event.h" #include "fallback.h" // IWYU pragma: keep #include "flog.h" #include "global_safety.h" #include "io.h" #include "job_group.h" -#include "output.h" -#include "parse_tree.h" #include "parser.h" #include "proc.h" #include "reader.h" #include "signal.h" -#include "wcstringutil.h" #include "wutil.h" // IWYU pragma: keep /// The signals that signify crashes to us. diff --git a/src/proc.h b/src/proc.h index 7aa018ea2..331517bea 100644 --- a/src/proc.h +++ b/src/proc.h @@ -5,24 +5,28 @@ #define FISH_PROC_H #include "config.h" // IWYU pragma: keep -#include -#include #include // IWYU pragma: keep #include // IWYU pragma: keep -#include +#include +#include +#include #include #include +#include +#include #include #include "common.h" -#include "event.h" -#include "global_safety.h" -#include "io.h" +#include "job_group.h" +#include "maybe.h" #include "parse_tree.h" +#include "redirection.h" #include "topic_monitor.h" #include "wait_handle.h" +struct statuses_t; + /// Types of processes. enum class process_type_t : uint8_t { /// A regular external command. @@ -54,7 +58,6 @@ namespace ast { struct statement_t; } -class job_group_t; using job_group_ref_t = std::shared_ptr; /// A proc_status_t is a value type that encapsulates logic around exited vs stopped vs signaled, @@ -235,7 +238,6 @@ class tty_transfer_t : nonmovable_t, noncopyable_t { /// /// If the process is of type process_type_t::function, argv is the argument vector, and argv[0] is /// the name of the shellscript function. -class parser_t; class process_t : noncopyable_t { public: process_t(); @@ -342,6 +344,7 @@ class process_t : noncopyable_t { using process_ptr_t = std::unique_ptr; using process_list_t = std::vector; +class parser_t; /// A struct representing a job. A job is a pipeline of one or more processes. class job_t : noncopyable_t { @@ -548,7 +551,6 @@ void set_job_control_mode(job_control_t mode); /// Notify the user about stopped or terminated jobs, and delete completed jobs from the job list. /// If \p interactive is set, allow removing interactive jobs; otherwise skip them. /// \return whether text was printed to stdout. -class parser_t; bool job_reap(parser_t &parser, bool interactive); /// \return the list of background jobs which we should warn the user about, if the user attempts to diff --git a/src/re.cpp b/src/re.cpp index 03079bd6d..9ca2e2c99 100644 --- a/src/re.cpp +++ b/src/re.cpp @@ -1,5 +1,8 @@ #include "config.h" // IWYU pragma: keep +#include +#include + #include "re.h" #include "flog.h" diff --git a/src/re.h b/src/re.h index 5a503099b..197e67122 100644 --- a/src/re.h +++ b/src/re.h @@ -2,6 +2,10 @@ #ifndef FISH_RE_H #define FISH_RE_H +#include +#include +#include + #include "common.h" #include "maybe.h" diff --git a/src/reader.cpp b/src/reader.cpp index 36c757d35..ad065e6fb 100644 --- a/src/reader.cpp +++ b/src/reader.cpp @@ -13,37 +13,37 @@ // end of the list is reached, at which point regular searching will commence. #include "config.h" -// IWYU pragma: no_include #include #include #include #ifdef HAVE_SIGINFO_H #include #endif -#include #include -#include +#include #include -#ifdef HAVE_SYS_SELECT_H -#include -#endif -#include +#include #include #include -#include #include #include #include #include #include +#include +#include #include +#include +#include #include +#include #include +#include #include #include -#include +#include #include "ast.h" #include "color.h" @@ -54,6 +54,7 @@ #include "exec.h" #include "expand.h" #include "fallback.h" // IWYU pragma: keep +#include "fds.h" #include "flog.h" #include "function.h" #include "global_safety.h" @@ -64,9 +65,11 @@ #include "io.h" #include "iothread.h" #include "kill.h" +#include "operation_context.h" #include "output.h" #include "pager.h" #include "parse_constants.h" +#include "parse_tree.h" #include "parse_util.h" #include "parser.h" #include "proc.h" @@ -76,6 +79,7 @@ #include "termsize.h" #include "tokenizer.h" #include "wildcard.h" +#include "wcstringutil.h" #include "wutil.h" // IWYU pragma: keep // Name of the variable that tells how long it took, in milliseconds, for the previous @@ -3903,7 +3907,7 @@ void reader_data_t::handle_readline_command(readline_cmd_t c, readline_loop_stat if (make_uppercase) { chr = towupper(chr); } else { - chr = tolower(chr); + chr = std::tolower(chr); } replacement.push_back(chr); @@ -3935,7 +3939,7 @@ void reader_data_t::handle_readline_command(readline_cmd_t c, readline_loop_stat if (make_uppercase) { chr = towupper(chr); } else { - chr = tolower(chr); + chr = std::tolower(chr); } replacement.push_back(chr); diff --git a/src/reader.h b/src/reader.h index e8ef270b4..0401bd598 100644 --- a/src/reader.h +++ b/src/reader.h @@ -5,19 +5,22 @@ #define FISH_READER_H #include +#include #include +#include #include +#include #include "common.h" #include "complete.h" -#include "highlight.h" +#include "maybe.h" #include "parse_constants.h" +class env_stack_t; class environment_t; class history_t; class io_chain_t; -class operation_context_t; class parser_t; /// An edit action that can be undone. diff --git a/src/redirection.cpp b/src/redirection.cpp index 92a01d04a..59098f02e 100644 --- a/src/redirection.cpp +++ b/src/redirection.cpp @@ -2,7 +2,9 @@ #include "redirection.h" +#include #include +#include #include "io.h" #include "wutil.h" diff --git a/src/redirection.h b/src/redirection.h index fe1f9bb66..c00082960 100644 --- a/src/redirection.h +++ b/src/redirection.h @@ -1,6 +1,8 @@ #ifndef FISH_REDIRECTION_H #define FISH_REDIRECTION_H +#include +#include #include #include "common.h" diff --git a/src/screen.cpp b/src/screen.cpp index 5bb5d0a82..d106cc0a0 100644 --- a/src/screen.cpp +++ b/src/screen.cpp @@ -4,21 +4,20 @@ // keeping an internal representation of the current screen contents and trying to find the most // efficient way for transforming that to the desired screen content. // -// IWYU pragma: no_include #include "config.h" #include #include #include #include -#include #include +#include #include #include #if HAVE_CURSES_H -#include +#include // IWYU pragma: keep #elif HAVE_NCURSES_H #include #elif HAVE_NCURSES_CURSES_H @@ -38,10 +37,12 @@ #include "env.h" #include "fallback.h" // IWYU pragma: keep #include "flog.h" +#include "global_safety.h" #include "highlight.h" #include "output.h" #include "pager.h" #include "screen.h" +#include "termsize.h" /// The number of characters to indent new blocks. #define INDENT_STEP 4u diff --git a/src/screen.h b/src/screen.h index 8bfb0117f..f5737640c 100644 --- a/src/screen.h +++ b/src/screen.h @@ -15,18 +15,18 @@ #include #include -#include +#include #include -#include -#include -#include +#include #include #include #include "common.h" #include "highlight.h" +#include "maybe.h" #include "wcstringutil.h" +class environment_t; class pager_t; class page_rendering_t; diff --git a/src/signal.cpp b/src/signal.cpp index 2873928ab..1e71d4d06 100644 --- a/src/signal.cpp +++ b/src/signal.cpp @@ -2,19 +2,19 @@ #include "config.h" // IWYU pragma: keep #include -#include #ifdef HAVE_SIGINFO_H #include #endif -#include +#include #include +#include +#include #include "common.h" #include "event.h" #include "fallback.h" // IWYU pragma: keep -#include "parser.h" -#include "proc.h" +#include "global_safety.h" #include "reader.h" #include "signal.h" #include "termsize.h" diff --git a/src/termsize.cpp b/src/termsize.cpp index 8a1b231d9..f9269a7da 100644 --- a/src/termsize.cpp +++ b/src/termsize.cpp @@ -2,12 +2,20 @@ #include "termsize.h" +#include + +#include "env.h" +#include "flog.h" #include "maybe.h" #include "parser.h" #include "wcstringutil.h" #include "wutil.h" +#include +#include + #ifdef HAVE_WINSIZE +#include #include #endif diff --git a/src/termsize.h b/src/termsize.h index 46416429b..c3e46a0e5 100644 --- a/src/termsize.h +++ b/src/termsize.h @@ -7,6 +7,7 @@ #include #include "common.h" +#include "maybe.h" #include "global_safety.h" class environment_t; diff --git a/src/timer.cpp b/src/timer.cpp index c424b759a..22b9b6ea4 100644 --- a/src/timer.cpp +++ b/src/timer.cpp @@ -4,21 +4,18 @@ #include "timer.h" #include +#include +#include #include -#include #include -#include -#include +#include +#include +#include +#include -#include "builtin.h" #include "common.h" -#include "exec.h" #include "fallback.h" // IWYU pragma: keep -#include "io.h" -#include "parser.h" -#include "proc.h" -#include "wgetopt.h" #include "wutil.h" // IWYU pragma: keep // Measuring time is always complicated with many caveats. Quite apart from the typical diff --git a/src/timer.h b/src/timer.h index e43ead5d4..ab41a2374 100644 --- a/src/timer.h +++ b/src/timer.h @@ -3,16 +3,11 @@ #define FISH_TIMER_H #include -#include -#include #include #include "common.h" -class parser_t; -struct io_streams_t; - cleanup_t push_timer(bool enabled); struct timer_snapshot_t { diff --git a/src/tokenizer.cpp b/src/tokenizer.cpp index c96d4a846..c44dfb275 100644 --- a/src/tokenizer.cpp +++ b/src/tokenizer.cpp @@ -10,13 +10,11 @@ #include #include -#include -#include +#include #include "common.h" #include "fallback.h" // IWYU pragma: keep #include "future_feature_flags.h" -#include "tokenizer.h" #include "wutil.h" // IWYU pragma: keep // _(s) is already wgettext(s).c_str(), so let's not convert back to wcstring diff --git a/src/tokenizer.h b/src/tokenizer.h index a86ef1849..35a6661c8 100644 --- a/src/tokenizer.h +++ b/src/tokenizer.h @@ -4,6 +4,7 @@ #define FISH_TOKENIZER_H #include +#include #include "common.h" #include "maybe.h" diff --git a/src/topic_monitor.cpp b/src/topic_monitor.cpp index 41ef6885e..626d3eec6 100644 --- a/src/topic_monitor.cpp +++ b/src/topic_monitor.cpp @@ -2,11 +2,13 @@ #include "topic_monitor.h" -#include #include +#include + #include "flog.h" #include "iothread.h" +#include "maybe.h" #include "wcstringutil.h" #include "wutil.h" diff --git a/src/topic_monitor.h b/src/topic_monitor.h index cacb8564f..f589f13ea 100644 --- a/src/topic_monitor.h +++ b/src/topic_monitor.h @@ -5,13 +5,13 @@ #include #include -#include -#include +#include // IWYU pragma: keep +#include #include -#include +#include #include "common.h" -#include "io.h" +#include "fds.h" /** Topic monitoring support. Topics are conceptually "a thing that can happen." For example, delivery of a SIGINT, a child process exits, etc. It is possible to post to a topic, which means diff --git a/src/trace.cpp b/src/trace.cpp index 446436078..4d352848c 100644 --- a/src/trace.cpp +++ b/src/trace.cpp @@ -1,7 +1,10 @@ -#include "config.h" +#include "config.h" // IWYU pragma: keep #include "trace.h" +#include +#include + #include "common.h" #include "flog.h" #include "parser.h" diff --git a/src/trace.h b/src/trace.h index f5a0ff7e1..e891fdbb3 100644 --- a/src/trace.h +++ b/src/trace.h @@ -7,7 +7,6 @@ #include "common.h" class parser_t; -class process_t; /// Trace an "argv": a list of arguments. Each argument is escaped. /// If \p command is not null, it is traced first (and not escaped) diff --git a/src/utf8.cpp b/src/utf8.cpp index 751ed8f29..dfd031708 100644 --- a/src/utf8.cpp +++ b/src/utf8.cpp @@ -18,7 +18,6 @@ #include "utf8.h" #include // IWYU pragma: keep -#include #include #include diff --git a/src/util.cpp b/src/util.cpp index dfc70839e..fae9d9e15 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -3,7 +3,6 @@ #include "util.h" -#include #include #include #include diff --git a/src/wait_handle.cpp b/src/wait_handle.cpp index 2e01ad4d6..43076f801 100644 --- a/src/wait_handle.cpp +++ b/src/wait_handle.cpp @@ -1,8 +1,8 @@ -#include "config.h" +#include "config.h" // IWYU pragma: keep #include "wait_handle.h" -#include "flog.h" +#include wait_handle_store_t::wait_handle_store_t(size_t limit) : limit_(limit) {} diff --git a/src/wait_handle.h b/src/wait_handle.h index 0ae474b36..a040330dd 100644 --- a/src/wait_handle.h +++ b/src/wait_handle.h @@ -9,8 +9,9 @@ #include #include +#include #include -#include +#include #include "common.h" diff --git a/src/wcstringutil.cpp b/src/wcstringutil.cpp index 2bdba17f8..6d8c9e801 100644 --- a/src/wcstringutil.cpp +++ b/src/wcstringutil.cpp @@ -3,11 +3,14 @@ #include "wcstringutil.h" +#include #include #include +#include #include "common.h" +#include "fallback.h" // IWYU pragma: keep #include "flog.h" wcstring truncate(const wcstring &input, int max_len, ellipsis_type etype) { diff --git a/src/wcstringutil.h b/src/wcstringutil.h index d3a8b5bd6..4a768c0bd 100644 --- a/src/wcstringutil.h +++ b/src/wcstringutil.h @@ -2,13 +2,20 @@ #ifndef FISH_WCSTRINGUTIL_H #define FISH_WCSTRINGUTIL_H +#include +#include + #include +#include #include +#include +#include +#include #include -#include #include "common.h" #include "expand.h" +#include "maybe.h" /// Test if a string prefixes another. Returns true if a is a prefix of b. bool string_prefixes_string(const wcstring &proposed_prefix, const wcstring &value); diff --git a/src/wgetopt.cpp b/src/wgetopt.cpp index 2f052b0ff..cd0de046c 100644 --- a/src/wgetopt.cpp +++ b/src/wgetopt.cpp @@ -39,8 +39,8 @@ #include "config.h" // IWYU pragma: keep #include +#include -#include #include // This version of `getopt' appears to the caller like standard Unix `getopt' but it behaves diff --git a/src/wgetopt.h b/src/wgetopt.h index dcfe8abb2..a12674491 100644 --- a/src/wgetopt.h +++ b/src/wgetopt.h @@ -41,8 +41,6 @@ Cambridge, MA 02139, USA. */ #ifndef FISH_WGETOPT_H #define FISH_WGETOPT_H -#include - /// Instanced getopt() wrapper. class wgetopter_t { public: diff --git a/src/wildcard.cpp b/src/wildcard.cpp index f468d0e35..61d20f4fe 100644 --- a/src/wildcard.cpp +++ b/src/wildcard.cpp @@ -6,26 +6,28 @@ #include #include -#include +#include #include #include #include +#include #include -#include +#include #include #include #include +#include #include "common.h" #include "complete.h" +#include "enum_set.h" #include "expand.h" #include "fallback.h" // IWYU pragma: keep #include "future_feature_flags.h" +#include "maybe.h" #include "path.h" -#include "reader.h" #include "wcstringutil.h" -#include "wildcard.h" #include "wutil.h" // IWYU pragma: keep /// Finds an internal (ANY_STRING, etc.) style wildcard, or wcstring::npos. diff --git a/src/wildcard.h b/src/wildcard.h index 4e4babc8b..55a76fb96 100644 --- a/src/wildcard.h +++ b/src/wildcard.h @@ -3,7 +3,7 @@ #ifndef FISH_WILDCARD_H #define FISH_WILDCARD_H -#include +#include #include "common.h" #include "complete.h" diff --git a/src/wutil.cpp b/src/wutil.cpp index 0b58bf4cf..c08a1a3ed 100644 --- a/src/wutil.cpp +++ b/src/wutil.cpp @@ -7,23 +7,28 @@ #include #include #include -#include #include #include #include #include -#include #include #include #include +#ifdef HAVE_XLOCALE_H +#include +#endif + #include -#include #include #include #include +#include +#include #include #include +#include +#include #include "common.h" #include "fallback.h" // IWYU pragma: keep diff --git a/src/wutil.h b/src/wutil.h index cf05fc2df..caa69b35f 100644 --- a/src/wutil.h +++ b/src/wutil.h @@ -2,20 +2,20 @@ #ifndef FISH_WUTIL_H #define FISH_WUTIL_H +#include "config.h" // IWYU pragma: keep + #include -#include #include -#include +#include #include -#include -#include +#include +#include +#include +#include +#include #include -#ifdef HAVE_XLOCALE_H -#include -#endif - #include "common.h" #include "maybe.h"