From ea945cc4377d91ceeeb0954ae8ad862f82f91918 Mon Sep 17 00:00:00 2001 From: Kurtis Rader Date: Mon, 2 May 2016 12:31:33 -0700 Subject: restyle parse_execution module to match project style Reduces lint errors from 184 to 84 (-54%). Line count from 2139 to 1943 (-9%). Another step in resolving issue #2902. --- src/parse_constants.h | 324 +++++++++++++++++++++----------------------------- 1 file changed, 134 insertions(+), 190 deletions(-) (limited to 'src/parse_constants.h') diff --git a/src/parse_constants.h b/src/parse_constants.h index 49721504..c43ba7de 100644 --- a/src/parse_constants.h +++ b/src/parse_constants.h @@ -1,19 +1,19 @@ -/**\file parse_constants.h - - Constants used in the programmatic representation of fish code. -*/ +// Constants used in the programmatic representation of fish code. #ifndef FISH_PARSE_CONSTANTS_H #define FISH_PARSE_CONSTANTS_H #include "config.h" #define PARSE_ASSERT(a) assert(a) -#define PARSER_DIE() do { fprintf(stderr, "Parser dying!\n"); exit_without_destructors(-1); } while (0) +#define PARSER_DIE() \ + do { \ + fprintf(stderr, "Parser dying!\n"); \ + exit_without_destructors(-1); \ + } while (0) // IMPORTANT: If the following enum is modified you must update the corresponding parser_token_types // array in parse_tree.cpp. -enum parse_token_type_t -{ +enum parse_token_type_t { token_type_invalid, // Non-terminal tokens @@ -47,8 +47,8 @@ enum parse_token_type_t symbol_argument_list, - // "freestanding" argument lists are parsed from the argument list supplied to 'complete -a' - // They are not generated by parse trees rooted in symbol_job_list + // Freestanding argument lists are parsed from the argument list supplied to 'complete -a' + // They are not generated by parse trees rooted in symbol_job_list. symbol_freestanding_argument_list, symbol_argument, @@ -58,17 +58,17 @@ enum parse_token_type_t symbol_end_command, - // Terminal types + // Terminal types. parse_token_type_string, parse_token_type_pipe, parse_token_type_redirection, parse_token_type_background, parse_token_type_end, - // Special terminal type that means no more tokens forthcoming + // Special terminal type that means no more tokens forthcoming. parse_token_type_terminate, - // Very special terminal types that don't appear in the production list + // Very special terminal types that don't appear in the production list. parse_special_type_parse_error, parse_special_type_tokenizer_error, parse_special_type_comment, @@ -83,15 +83,14 @@ enum parse_token_type_t LAST_PARSE_TOKEN_TYPE = parse_token_type_end } __packed; // Array of strings corresponding to the enums above instantiated in parse_tree.cpp. -extern const wchar_t * const parser_token_types[]; +extern const wchar_t *const parser_token_types[]; // These must be maintained in sorted order (except for none, which isn't a keyword). This enables // us to do binary search. // // IMPORTANT: If the following enum is modified you must update the corresponding keyword_map array // in parse_tree.cpp. -enum parse_keyword_t -{ +enum parse_keyword_t { parse_keyword_none, parse_keyword_and, parse_keyword_begin, @@ -112,261 +111,206 @@ enum parse_keyword_t LAST_KEYWORD = parse_keyword_while } __packed; -/* Node tag values */ +// Node tag values. -/* Statement decorations, stored in node tag */ -enum parse_statement_decoration_t -{ +// Statement decorations, stored in node tag. +enum parse_statement_decoration_t { parse_statement_decoration_none, parse_statement_decoration_command, parse_statement_decoration_builtin, parse_statement_decoration_exec }; -/* Boolean statement types, stored in node tag */ -enum parse_bool_statement_type_t -{ - parse_bool_and, - parse_bool_or, - parse_bool_not -}; +// Boolean statement types, stored in node tag. +enum parse_bool_statement_type_t { parse_bool_and, parse_bool_or, parse_bool_not }; -/* Whether a statement is backgrounded */ -enum parse_optional_background_t -{ - parse_no_background, - parse_background -}; +// Whether a statement is backgrounded. +enum parse_optional_background_t { parse_no_background, parse_background }; -/* Parse error code list */ -enum parse_error_code_t -{ +// Parse error code list. +enum parse_error_code_t { parse_error_none, - /* Matching values from enum parser_error */ + // Matching values from enum parser_error. parse_error_syntax, parse_error_eval, parse_error_cmdsubst, - parse_error_generic, // unclassified error types + parse_error_generic, // unclassified error types - //tokenizer errors + // Tokenizer errors. parse_error_tokenizer_unterminated_quote, parse_error_tokenizer_unterminated_subshell, parse_error_tokenizer_unterminated_slice, parse_error_tokenizer_unterminated_escape, parse_error_tokenizer_other, - parse_error_unbalancing_end, //end outside of block - parse_error_unbalancing_else, //else outside of if - parse_error_unbalancing_case, //case outside of switch + parse_error_unbalancing_end, // end outside of block + parse_error_unbalancing_else, // else outside of if + parse_error_unbalancing_case, // case outside of switch - parse_error_double_pipe, // foo || bar, has special error message - parse_error_double_background // foo && bar, has special error message + parse_error_double_pipe, // foo || bar, has special error message + parse_error_double_background // foo && bar, has special error message }; -enum -{ - PARSER_TEST_ERROR = 1, - PARSER_TEST_INCOMPLETE = 2 -}; +enum { PARSER_TEST_ERROR = 1, PARSER_TEST_INCOMPLETE = 2 }; typedef unsigned int parser_test_error_bits_t; -struct parse_error_t -{ - /** Text of the error */ +struct parse_error_t { + /// Text of the error. wcstring text; - - /** Code for the error */ + /// Code for the error. enum parse_error_code_t code; - - /** Offset and length of the token in the source code that triggered this error */ + /// Offset and length of the token in the source code that triggered this error. size_t source_start; size_t source_length; - - /** Return a string describing the error, suitable for presentation to the user. If skip_caret is false, the offending line with a caret is printed as well */ + /// Return a string describing the error, suitable for presentation to the user. If skip_caret + /// is false, the offending line with a caret is printed as well. wcstring describe(const wcstring &src) const; - - /** Return a string describing the error, suitable for presentation to the user, with the given prefix. If skip_caret is false, the offending line with a caret is printed as well */ - wcstring describe_with_prefix(const wcstring &src, const wcstring &prefix, bool is_interactive, bool skip_caret) const; + /// Return a string describing the error, suitable for presentation to the user, with the given + /// prefix. If skip_caret is false, the offending line with a caret is printed as well. + wcstring describe_with_prefix(const wcstring &src, const wcstring &prefix, bool is_interactive, + bool skip_caret) const; }; typedef std::vector parse_error_list_t; -/* Special source_start value that means unknown */ +// Special source_start value that means unknown. #define SOURCE_LOCATION_UNKNOWN (static_cast(-1)) -/* Helper function to offset error positions by the given amount. This is used when determining errors in a substring of a larger source buffer. */ +/// Helper function to offset error positions by the given amount. This is used when determining +/// errors in a substring of a larger source buffer. void parse_error_offset_source_start(parse_error_list_t *errors, size_t amt); -/** Maximum number of function calls. */ +/// Maximum number of function calls. #define FISH_MAX_STACK_DEPTH 128 -/** Error message on a function that calls itself immediately */ -#define INFINITE_FUNC_RECURSION_ERR_MSG _( L"The function '%ls' calls itself immediately, which would result in an infinite loop.") - -/** Error message on reaching maximum call stack depth */ -#define CALL_STACK_LIMIT_EXCEEDED_ERR_MSG _( L"The function call stack limit has been exceeded. Do you have an accidental infinite loop?") - -/** Error message when encountering an illegal command name */ -#define ILLEGAL_CMD_ERR_MSG _( L"Illegal command name '%ls'") - -/** Error message when encountering an unknown builtin name */ -#define UNKNOWN_BUILTIN_ERR_MSG _( L"Unknown builtin '%ls'") - -/** Error message when encountering a failed expansion, e.g. for the variable name in for loops */ -#define FAILED_EXPANSION_VARIABLE_NAME_ERR_MSG _( L"Unable to expand variable name '%ls'") - -/** Error message when encountering a failed process expansion, e.g. %notaprocess */ -#define FAILED_EXPANSION_PROCESS_ERR_MSG _( L"Unable to find a process '%ls'") - -/** Error message when encountering an illegal file descriptor */ -#define ILLEGAL_FD_ERR_MSG _( L"Illegal file descriptor in redirection '%ls'") - -/** Error message for wildcards with no matches */ -#define WILDCARD_ERR_MSG _( L"No matches for wildcard '%ls'.") - -/** Error when using break outside of loop */ -#define INVALID_BREAK_ERR_MSG _( L"'break' while not inside of loop" ) - -/** Error when using continue outside of loop */ -#define INVALID_CONTINUE_ERR_MSG _( L"'continue' while not inside of loop" ) - -/** Error when using return builtin outside of function definition */ -#define INVALID_RETURN_ERR_MSG _( L"'return' outside of function definition" ) - - -/*** Error messages. The number is a reminder of how many format specifiers are contained. */ - -/** Error for (e.g.) $^ */ -#define ERROR_BAD_VAR_CHAR1 _( L"$%lc is not a valid variable in fish." ) - -/** Error for ${a} */ -#define ERROR_BRACKETED_VARIABLE1 _( L"Variables cannot be bracketed. In fish, please use {$%ls}." ) - -/** Error for "${a}" */ -#define ERROR_BRACKETED_VARIABLE_QUOTED1 _( L"Variables cannot be bracketed. In fish, please use \"$%ls\"." ) - -/** Error issued on $? */ -#define ERROR_NOT_STATUS _( L"$? is not the exit status. In fish, please use $status.") +/// Error message on a function that calls itself immediately. +#define INFINITE_FUNC_RECURSION_ERR_MSG \ + _(L"The function '%ls' calls itself immediately, which would result in an infinite loop.") -/** Error issued on $$ */ -#define ERROR_NOT_PID _( L"$$ is not the pid. In fish, please use %%self.") +/// Error message on reaching maximum call stack depth. +#define CALL_STACK_LIMIT_EXCEEDED_ERR_MSG \ + _(L"The function call stack limit has been exceeded. Do you have an accidental infinite " \ + L"loop?") -/** Error issued on $# */ -#define ERROR_NOT_ARGV_COUNT _( L"$# is not supported. In fish, please use 'count $argv'.") +/// Error message when encountering an illegal command name. +#define ILLEGAL_CMD_ERR_MSG _(L"Illegal command name '%ls'") -/** Error issued on $@ */ -#define ERROR_NOT_ARGV_AT _( L"$@ is not supported. In fish, please use $argv.") +/// Error message when encountering an unknown builtin name. +#define UNKNOWN_BUILTIN_ERR_MSG _(L"Unknown builtin '%ls'") -/** Error issued on $(...) */ -#define ERROR_BAD_VAR_SUBCOMMAND1 _( L"$(...) is not supported. In fish, please use '(%ls)'." ) +/// Error message when encountering a failed expansion, e.g. for the variable name in for loops. +#define FAILED_EXPANSION_VARIABLE_NAME_ERR_MSG _(L"Unable to expand variable name '%ls'") -/** Error issued on $* */ -#define ERROR_NOT_ARGV_STAR _( L"$* is not supported. In fish, please use $argv." ) +/// Error message when encountering a failed process expansion, e.g. %notaprocess. +#define FAILED_EXPANSION_PROCESS_ERR_MSG _(L"Unable to find a process '%ls'") -/** Error issued on $ */ -#define ERROR_NO_VAR_NAME _( L"Expected a variable name after this $.") +/// Error message when encountering an illegal file descriptor. +#define ILLEGAL_FD_ERR_MSG _(L"Illegal file descriptor in redirection '%ls'") -/** Error on || */ -#define ERROR_BAD_OR _( L"Unsupported use of '||'. In fish, please use 'COMMAND; or COMMAND'.") +/// Error message for wildcards with no matches. +#define WILDCARD_ERR_MSG _(L"No matches for wildcard '%ls'.") -/** Error on && */ -#define ERROR_BAD_AND _( L"Unsupported use of '&&'. In fish, please use 'COMMAND; and COMMAND'.") +/// Error when using break outside of loop. +#define INVALID_BREAK_ERR_MSG _(L"'break' while not inside of loop") -/** Error on foo=bar */ -#define ERROR_BAD_EQUALS_IN_COMMAND5 _( L"Unsupported use of '='. To run '%ls' with a modified environment, please use 'env %ls=%ls %ls%ls'") +/// Error when using continue outside of loop. +#define INVALID_CONTINUE_ERR_MSG _(L"'continue' while not inside of loop") -/** Error message for Posix-style assignment: foo=bar */ -#define ERROR_BAD_COMMAND_ASSIGN_ERR_MSG _( L"Unsupported use of '='. In fish, please use 'set %ls %ls'.") +/// Error when using return builtin outside of function definition. +#define INVALID_RETURN_ERR_MSG _(L"'return' outside of function definition") +// Error messages. The number is a reminder of how many format specifiers are contained. +/// Error for $^. +#define ERROR_BAD_VAR_CHAR1 _(L"$%lc is not a valid variable in fish.") -/** - While block description -*/ -#define WHILE_BLOCK N_( L"'while' block" ) +/// Error for ${a}. +#define ERROR_BRACKETED_VARIABLE1 _(L"Variables cannot be bracketed. In fish, please use {$%ls}.") -/** - For block description -*/ -#define FOR_BLOCK N_( L"'for' block" ) +/// Error for "${a}". +#define ERROR_BRACKETED_VARIABLE_QUOTED1 \ + _(L"Variables cannot be bracketed. In fish, please use \"$%ls\".") -/** - Breakpoint block -*/ -#define BREAKPOINT_BLOCK N_( L"Block created by breakpoint" ) +/// Error issued on $?. +#define ERROR_NOT_STATUS _(L"$? is not the exit status. In fish, please use $status.") +/// Error issued on $$. +#define ERROR_NOT_PID _(L"$$ is not the pid. In fish, please use %%self.") +/// Error issued on $#. +#define ERROR_NOT_ARGV_COUNT _(L"$# is not supported. In fish, please use 'count $argv'.") -/** - If block description -*/ -#define IF_BLOCK N_( L"'if' conditional block" ) +/// Error issued on $@. +#define ERROR_NOT_ARGV_AT _(L"$@ is not supported. In fish, please use $argv.") +/// Error issued on $(...). +#define ERROR_BAD_VAR_SUBCOMMAND1 _(L"$(...) is not supported. In fish, please use '(%ls)'.") -/** - Function definition block description -*/ -#define FUNCTION_DEF_BLOCK N_( L"function definition block" ) +/// Error issued on $*. +#define ERROR_NOT_ARGV_STAR _(L"$* is not supported. In fish, please use $argv.") +/// Error issued on $. +#define ERROR_NO_VAR_NAME _(L"Expected a variable name after this $.") -/** - Function invocation block description -*/ -#define FUNCTION_CALL_BLOCK N_( L"function invocation block" ) +/// Error on ||. +#define ERROR_BAD_OR _(L"Unsupported use of '||'. In fish, please use 'COMMAND; or COMMAND'.") -/** - Function invocation block description -*/ -#define FUNCTION_CALL_NO_SHADOW_BLOCK N_( L"function invocation block with no variable shadowing" ) +/// Error on &&. +#define ERROR_BAD_AND _(L"Unsupported use of '&&'. In fish, please use 'COMMAND; and COMMAND'.") +/// Error on foo=bar. +#define ERROR_BAD_EQUALS_IN_COMMAND5 \ + _(L"Unsupported use of '='. To run '%ls' with a modified environment, please use 'env " \ + L"%ls=%ls %ls%ls'") -/** - Switch block description -*/ -#define SWITCH_BLOCK N_( L"'switch' block" ) +/// Error message for Posix-style assignment: foo=bar. +#define ERROR_BAD_COMMAND_ASSIGN_ERR_MSG \ + _(L"Unsupported use of '='. In fish, please use 'set %ls %ls'.") +/// While block description. +#define WHILE_BLOCK N_(L"'while' block") -/** - Fake block description -*/ -#define FAKE_BLOCK N_( L"unexecutable block" ) +/// For block description. +#define FOR_BLOCK N_(L"'for' block") +/// Breakpoint block. +#define BREAKPOINT_BLOCK N_(L"Block created by breakpoint") -/** - Top block description -*/ -#define TOP_BLOCK N_( L"global root block" ) +/// If block description. +#define IF_BLOCK N_(L"'if' conditional block") +/// Function definition block description. +#define FUNCTION_DEF_BLOCK N_(L"function definition block") -/** - Command substitution block description -*/ -#define SUBST_BLOCK N_( L"command substitution block" ) +/// Function invocation block description. +#define FUNCTION_CALL_BLOCK N_(L"function invocation block") +/// Function invocation block description. +#define FUNCTION_CALL_NO_SHADOW_BLOCK N_(L"function invocation block with no variable shadowing") -/** - Begin block description -*/ -#define BEGIN_BLOCK N_( L"'begin' unconditional block" ) +/// Switch block description. +#define SWITCH_BLOCK N_(L"'switch' block") +/// Fake block description. +#define FAKE_BLOCK N_(L"unexecutable block") -/** - Source block description -*/ -#define SOURCE_BLOCK N_( L"Block created by the . builtin" ) +/// Top block description. +#define TOP_BLOCK N_(L"global root block") -/** - Source block description -*/ -#define EVENT_BLOCK N_( L"event handler block" ) +/// Command substitution block description. +#define SUBST_BLOCK N_(L"command substitution block") +/// Begin block description. +#define BEGIN_BLOCK N_(L"'begin' unconditional block") -/** - Unknown block description -*/ -#define UNKNOWN_BLOCK N_( L"unknown/invalid block" ) +/// Source block description. +#define SOURCE_BLOCK N_(L"Block created by the . builtin") +/// Source block description. +#define EVENT_BLOCK N_(L"event handler block") +/// Unknown block description. +#define UNKNOWN_BLOCK N_(L"unknown/invalid block") #endif -- cgit v1.2.3