Home | History | Annotate | Line # | Download | only in lint1
externs1.h revision 1.231
      1  1.231    rillig /*	$NetBSD: externs1.h,v 1.231 2024/09/04 04:15:30 rillig Exp $	*/
      2    1.2       cgd 
      3    1.1       cgd /*
      4    1.1       cgd  * Copyright (c) 1994, 1995 Jochen Pohl
      5    1.1       cgd  * All Rights Reserved.
      6    1.1       cgd  *
      7    1.1       cgd  * Redistribution and use in source and binary forms, with or without
      8    1.1       cgd  * modification, are permitted provided that the following conditions
      9    1.1       cgd  * are met:
     10    1.1       cgd  * 1. Redistributions of source code must retain the above copyright
     11    1.1       cgd  *    notice, this list of conditions and the following disclaimer.
     12    1.1       cgd  * 2. Redistributions in binary form must reproduce the above copyright
     13    1.1       cgd  *    notice, this list of conditions and the following disclaimer in the
     14    1.1       cgd  *    documentation and/or other materials provided with the distribution.
     15    1.1       cgd  * 3. All advertising materials mentioning features or use of this software
     16    1.1       cgd  *    must display the following acknowledgement:
     17  1.194    rillig  *	This product includes software developed by Jochen Pohl for
     18    1.1       cgd  *	The NetBSD Project.
     19    1.1       cgd  * 4. The name of the author may not be used to endorse or promote products
     20    1.1       cgd  *    derived from this software without specific prior written permission.
     21    1.1       cgd  *
     22    1.1       cgd  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     23    1.1       cgd  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     24    1.1       cgd  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     25    1.1       cgd  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     26    1.1       cgd  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     27    1.1       cgd  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     28    1.1       cgd  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     29    1.1       cgd  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     30    1.1       cgd  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     31    1.1       cgd  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     32    1.1       cgd  */
     33    1.1       cgd 
     34  1.175    rillig #include <signal.h>
     35  1.175    rillig 
     36    1.1       cgd /*
     37  1.175    rillig  * main1.c
     38    1.1       cgd  */
     39  1.220    rillig extern bool Fflag;
     40  1.220    rillig extern bool Pflag;
     41  1.220    rillig extern bool Tflag;
     42  1.208    rillig extern int aflag;
     43  1.208    rillig extern bool bflag;
     44  1.208    rillig extern bool cflag;
     45  1.208    rillig extern bool eflag;
     46  1.208    rillig extern bool hflag;
     47  1.208    rillig extern bool pflag;
     48  1.208    rillig extern bool rflag;
     49  1.208    rillig extern bool vflag;
     50  1.220    rillig extern bool wflag;
     51  1.208    rillig extern bool yflag;
     52  1.208    rillig extern bool zflag;
     53  1.208    rillig 
     54  1.208    rillig extern bool allow_trad;
     55  1.208    rillig extern bool allow_c90;
     56  1.208    rillig extern bool allow_c99;
     57  1.208    rillig extern bool allow_c11;
     58  1.208    rillig extern bool allow_c23;
     59  1.208    rillig extern bool allow_gcc;
     60  1.155    rillig 
     61  1.175    rillig extern sig_atomic_t fpe;
     62  1.175    rillig 
     63  1.208    rillig void norecover(void);
     64    1.1       cgd 
     65    1.1       cgd /*
     66    1.1       cgd  * cgram.y
     67    1.1       cgd  */
     68  1.208    rillig extern int block_level;
     69  1.208    rillig extern size_t mem_block_level;
     70  1.208    rillig extern int yydebug;
     71    1.1       cgd 
     72  1.208    rillig int yyerror(const char *);
     73  1.208    rillig int yyparse(void);
     74  1.227    rillig extern char *yytext;
     75    1.1       cgd 
     76    1.1       cgd /*
     77  1.220    rillig  * lex.c
     78    1.1       cgd  */
     79  1.208    rillig extern bool in_gcc_attribute;
     80  1.208    rillig extern pos_t curr_pos;
     81  1.208    rillig extern pos_t csrc_pos;
     82  1.208    rillig extern bool in_system_header;
     83  1.212    rillig extern symbol_kind sym_kind;
     84  1.208    rillig extern FILE *yyin;
     85  1.208    rillig 
     86  1.214    rillig void init_lex(void);
     87  1.208    rillig int64_t convert_integer(int64_t, tspec_t, unsigned int);
     88  1.221    rillig void reset_suppressions(void);
     89  1.208    rillig sym_t *getsym(sbuf_t *);
     90  1.208    rillig void clean_up_after_error(void);
     91  1.208    rillig sym_t *pushdown(const sym_t *);
     92  1.208    rillig sym_t *mktempsym(type_t *);
     93  1.221    rillig void symtab_remove_forever(sym_t *);
     94  1.208    rillig void symtab_remove_level(sym_t *);
     95  1.208    rillig void inssym(int, sym_t *);
     96  1.208    rillig void freeyyv(void *, int);
     97  1.208    rillig int yylex(void);
     98    1.1       cgd 
     99    1.1       cgd /*
    100    1.1       cgd  * mem1.c
    101    1.1       cgd  */
    102  1.208    rillig const char *record_filename(const char *, size_t);
    103  1.208    rillig int get_filename_id(const char *);
    104  1.208    rillig void add_directory_replacement(char *);
    105  1.178    rillig const char *transform_filename(const char *, size_t);
    106  1.178    rillig 
    107  1.196    rillig #ifdef DEBUG_MEM
    108  1.208    rillig void *block_zero_alloc(size_t, const char *);
    109  1.208    rillig void *level_zero_alloc(size_t, size_t, const char *);
    110  1.196    rillig #else
    111  1.208    rillig void *block_zero_alloc(size_t);
    112  1.208    rillig void *level_zero_alloc(size_t, size_t);
    113  1.196    rillig #define block_zero_alloc(size, descr) (block_zero_alloc)(size)
    114  1.196    rillig #define level_zero_alloc(level, size, descr) (level_zero_alloc)(level, size)
    115  1.196    rillig #endif
    116  1.208    rillig void level_free_all(size_t);
    117  1.178    rillig 
    118  1.196    rillig #ifdef DEBUG_MEM
    119  1.208    rillig void *expr_zero_alloc(size_t, const char *);
    120  1.196    rillig #else
    121  1.208    rillig void *expr_zero_alloc(size_t);
    122  1.196    rillig #define expr_zero_alloc(size, descr) (expr_zero_alloc)(size)
    123  1.196    rillig #endif
    124  1.208    rillig tnode_t *expr_alloc_tnode(void);
    125  1.208    rillig void expr_free_all(void);
    126  1.178    rillig memory_pool expr_save_memory(void);
    127  1.208    rillig void expr_restore_memory(memory_pool);
    128    1.1       cgd 
    129    1.1       cgd /*
    130  1.124    rillig  * debug.c
    131  1.124    rillig  */
    132  1.124    rillig 
    133  1.124    rillig #ifdef DEBUG
    134  1.183    rillig const char *decl_level_kind_name(decl_level_kind);
    135  1.149    rillig const char *scl_name(scl_t);
    136  1.212    rillig const char *symbol_kind_name(symbol_kind);
    137  1.195    rillig const char *type_qualifiers_string(type_qualifiers);
    138  1.191    rillig const char *function_specifier_name(function_specifier);
    139  1.225    rillig const char *named_constant_name(named_constant);
    140  1.208    rillig void debug_dcs(void);
    141  1.208    rillig void debug_dcs_all(void);
    142  1.208    rillig void debug_node(const tnode_t *);
    143  1.208    rillig void debug_type(const type_t *);
    144  1.208    rillig void debug_sym(const char *, const sym_t *, const char *);
    145  1.208    rillig void debug_symtab(void);
    146  1.208    rillig void debug_printf(const char *fmt, ...) __printflike(1, 2);
    147  1.208    rillig void debug_skip_indent(void);
    148  1.208    rillig void debug_indent_inc(void);
    149  1.208    rillig void debug_indent_dec(void);
    150  1.208    rillig bool debug_push_indented(bool);
    151  1.208    rillig void debug_pop_indented(bool);
    152  1.208    rillig void debug_enter_func(const char *);
    153  1.208    rillig void debug_step(const char *fmt, ...) __printflike(1, 2);
    154  1.208    rillig void debug_leave_func(const char *);
    155  1.226    rillig void debug_attribute_list(const attribute_list *);
    156  1.176    rillig #define	debug_enter()		debug_enter_func(__func__)
    157  1.176    rillig #define	debug_leave()		debug_leave_func(__func__)
    158  1.124    rillig #else
    159  1.124    rillig #define	debug_noop()		do { } while (false)
    160  1.204    rillig #define	debug_dcs()		debug_noop()
    161  1.204    rillig #define	debug_dcs_all()		debug_noop()
    162  1.151    rillig #define	debug_sym(p, sym, s)	debug_noop()
    163  1.151    rillig #define	debug_symtab()		debug_noop()
    164  1.128    rillig #define	debug_node(tn)		debug_noop()
    165  1.164    rillig #define	debug_type(tp)		debug_noop()
    166  1.125    rillig #define	debug_printf(...)	debug_noop()
    167  1.203    rillig #define	debug_skip_indent()	debug_noop()
    168  1.124    rillig #define	debug_indent_inc()	debug_noop()
    169  1.124    rillig #define	debug_indent_dec()	debug_noop()
    170  1.204    rillig #define debug_push_indented(c)	true
    171  1.204    rillig #define debug_pop_indented(c)	(void)(c)
    172  1.124    rillig #define	debug_enter()		debug_noop()
    173  1.144    rillig #define	debug_step(...)		debug_noop()
    174  1.124    rillig #define	debug_leave()		debug_noop()
    175  1.226    rillig #define	debug_attribute_list(list) debug_noop()
    176  1.124    rillig #endif
    177  1.124    rillig 
    178  1.124    rillig /*
    179    1.1       cgd  * err.c
    180    1.1       cgd  */
    181  1.208    rillig extern bool seen_error;
    182  1.208    rillig extern bool seen_warning;
    183  1.208    rillig extern int sytxerr;
    184  1.208    rillig extern bool any_query_enabled;
    185  1.209    rillig extern bool is_query_enabled[];
    186  1.208    rillig 
    187  1.208    rillig void msglist(void);
    188  1.208    rillig void error_at(int, const pos_t *, ...);
    189  1.208    rillig void warning_at(int, const pos_t *, ...);
    190  1.208    rillig void message_at(int, const pos_t *, ...);
    191  1.208    rillig void error(int, ...);
    192  1.208    rillig void warning(int, ...);
    193  1.208    rillig bool gnuism(int, ...);
    194  1.208    rillig void c99ism(int, ...);
    195  1.208    rillig void c11ism(int, ...);
    196  1.208    rillig void c23ism(int, ...);
    197  1.208    rillig void assert_failed(const char *, int, const char *, const char *) __dead;
    198  1.208    rillig void update_location(const char *, int, bool, bool);
    199  1.208    rillig void suppress_messages(const char *);
    200    1.1       cgd 
    201  1.208    rillig void query_message(int, ...);
    202  1.208    rillig void enable_queries(const char *);
    203  1.165    rillig 
    204    1.1       cgd /*
    205    1.1       cgd  * decl.c
    206    1.1       cgd  */
    207  1.208    rillig extern decl_level *dcs;
    208  1.208    rillig extern const char unnamed[];
    209  1.208    rillig extern int enumval;
    210  1.208    rillig 
    211  1.214    rillig void init_decl(void);
    212  1.208    rillig type_t *gettyp(tspec_t);
    213  1.208    rillig type_t *block_dup_type(const type_t *);
    214  1.208    rillig type_t *expr_dup_type(const type_t *);
    215  1.208    rillig type_t *expr_unqualified_type(const type_t *);
    216  1.208    rillig bool is_incomplete(const type_t *);
    217  1.208    rillig void dcs_add_function_specifier(function_specifier);
    218  1.208    rillig void dcs_add_storage_class(scl_t);
    219  1.208    rillig void dcs_add_type(type_t *);
    220  1.208    rillig void dcs_add_qualifiers(type_qualifiers);
    221  1.223    rillig void dcs_add_alignas(tnode_t *);
    222  1.208    rillig void dcs_add_packed(void);
    223  1.208    rillig void dcs_set_used(void);
    224  1.208    rillig void begin_declaration_level(decl_level_kind);
    225  1.208    rillig void end_declaration_level(void);
    226  1.208    rillig void dcs_set_asm(void);
    227  1.208    rillig void dcs_begin_type(void);
    228  1.208    rillig void dcs_end_type(void);
    229  1.208    rillig int length_in_bits(const type_t *, const char *);
    230  1.224    rillig unsigned int alignment(const type_t *);
    231  1.208    rillig sym_t *concat_symbols(sym_t *, sym_t *);
    232  1.208    rillig void check_type(sym_t *);
    233  1.208    rillig sym_t *declare_unnamed_member(void);
    234  1.208    rillig sym_t *declare_member(sym_t *);
    235  1.208    rillig sym_t *set_bit_field_width(sym_t *, int);
    236  1.208    rillig void add_type_qualifiers(type_qualifiers *, type_qualifiers);
    237  1.195    rillig qual_ptr *append_qualified_pointer(qual_ptr *, qual_ptr *);
    238  1.208    rillig sym_t *add_pointer(sym_t *, qual_ptr *);
    239  1.208    rillig sym_t *add_array(sym_t *, bool, int);
    240  1.219    rillig sym_t *add_function(sym_t *, parameter_list);
    241  1.208    rillig void check_extern_declaration(const sym_t *);
    242  1.208    rillig void check_function_definition(sym_t *, bool);
    243  1.208    rillig sym_t *declarator_name(sym_t *);
    244  1.208    rillig sym_t *old_style_function_parameter_name(sym_t *);
    245  1.208    rillig type_t *make_tag_type(sym_t *, tspec_t, bool, bool);
    246  1.208    rillig type_t *complete_struct_or_union(sym_t *);
    247  1.208    rillig type_t *complete_enum(sym_t *);
    248  1.208    rillig sym_t *enumeration_constant(sym_t *, int, bool);
    249  1.208    rillig void declare(sym_t *, bool, sbuf_t *);
    250  1.231    rillig void copy_usage_info(sym_t *, const sym_t *);
    251  1.208    rillig bool check_redeclaration(sym_t *, bool *);
    252  1.208    rillig bool pointer_types_are_compatible(const type_t *, const type_t *, bool);
    253  1.208    rillig bool types_compatible(const type_t *, const type_t *, bool, bool, bool *);
    254  1.231    rillig void complete_type(sym_t *, const sym_t *);
    255  1.208    rillig sym_t *declare_parameter(sym_t *, bool);
    256  1.208    rillig void check_func_lint_directives(void);
    257  1.208    rillig void check_func_old_style_parameters(void);
    258  1.208    rillig 
    259  1.208    rillig void declare_local(sym_t *, bool);
    260  1.208    rillig sym_t *abstract_name(void);
    261  1.208    rillig sym_t *abstract_enclosing_name(void);
    262  1.208    rillig void global_clean_up(void);
    263  1.208    rillig sym_t *declare_abstract_type(sym_t *);
    264  1.208    rillig void check_size(const sym_t *);
    265  1.208    rillig void mark_as_set(sym_t *);
    266  1.208    rillig void mark_as_used(sym_t *, bool, bool);
    267  1.208    rillig void check_usage(const decl_level *);
    268  1.208    rillig void check_usage_sym(bool, const sym_t *);
    269  1.208    rillig void end_translation_unit(void);
    270  1.208    rillig void print_previous_declaration(const sym_t *);
    271  1.208    rillig int to_int_constant(tnode_t *, bool);
    272    1.1       cgd 
    273    1.1       cgd /*
    274    1.1       cgd  * tree.c
    275    1.1       cgd  */
    276  1.178    rillig const tnode_t *before_conversion(const tnode_t *);
    277  1.208    rillig type_t *block_derive_type(type_t *, tspec_t);
    278  1.208    rillig type_t *expr_derive_type(type_t *, tspec_t);
    279  1.208    rillig bool is_compiler_builtin(const char *);
    280  1.208    rillig tnode_t *build_constant(type_t *, val_t *);
    281  1.208    rillig tnode_t *build_name(sym_t *, bool);
    282  1.213    rillig tnode_t *build_string(buffer *);
    283  1.208    rillig tnode_t *build_generic_selection(const tnode_t *,
    284  1.115    rillig 		    struct generic_association *);
    285  1.112    rillig 
    286  1.208    rillig tnode_t *build_binary(tnode_t *, op_t, bool, tnode_t *);
    287  1.208    rillig tnode_t *build_unary(op_t, bool, tnode_t *);
    288  1.208    rillig tnode_t *build_member_access(tnode_t *, op_t, bool, sbuf_t *);
    289  1.208    rillig tnode_t *cconv(tnode_t *);
    290  1.228    rillig bool is_typeok_bool_compares_with_zero(const tnode_t *, bool);
    291  1.208    rillig bool typeok(op_t, int, const tnode_t *, const tnode_t *);
    292  1.208    rillig tnode_t *promote(op_t, bool, tnode_t *);
    293  1.208    rillig tnode_t *convert(op_t, int, type_t *, tnode_t *);
    294  1.208    rillig void convert_constant(op_t, int, const type_t *, val_t *, val_t *);
    295  1.208    rillig tnode_t *build_sizeof(const type_t *);
    296  1.210    rillig tnode_t *build_offsetof(const type_t *, designation);
    297  1.208    rillig tnode_t *build_alignof(const type_t *);
    298  1.211    rillig tnode_t *cast(tnode_t *, bool, type_t *);
    299  1.216    rillig void add_function_argument(function_call *, tnode_t *);
    300  1.216    rillig tnode_t *build_function_call(tnode_t *, bool, function_call *);
    301  1.208    rillig val_t *integer_constant(tnode_t *, bool);
    302  1.208    rillig void expr(tnode_t *, bool, bool, bool, bool);
    303  1.208    rillig void check_expr_misc(const tnode_t *, bool, bool, bool, bool, bool, bool);
    304  1.208    rillig bool constant_addr(const tnode_t *, const sym_t **, ptrdiff_t *);
    305  1.213    rillig buffer *cat_strings(buffer *, buffer *);
    306  1.178    rillig unsigned int type_size_in_bits(const type_t *);
    307  1.208    rillig sym_t *find_member(const struct_or_union *, const char *);
    308  1.218    rillig uint64_t possible_bits(const tnode_t *);
    309  1.230    rillig bool attributes_contain(const attribute_list *, const char *);
    310    1.1       cgd 
    311  1.146    rillig void begin_statement_expr(void);
    312  1.145    rillig void do_statement_expr(tnode_t *);
    313  1.145    rillig tnode_t *end_statement_expr(void);
    314  1.197    rillig bool in_statement_expr(void);
    315  1.145    rillig 
    316    1.1       cgd /*
    317    1.1       cgd  * func.c
    318    1.1       cgd  */
    319  1.208    rillig extern sym_t *funcsym;
    320  1.208    rillig extern bool reached;
    321  1.208    rillig extern bool warn_about_unreachable;
    322  1.208    rillig extern bool suppress_fallthrough;
    323  1.208    rillig extern int nargusg;
    324  1.208    rillig extern pos_t argsused_pos;
    325  1.208    rillig extern int nvararg;
    326  1.208    rillig extern pos_t vapos;
    327  1.208    rillig extern int printflike_argnum;
    328  1.208    rillig extern pos_t printflike_pos;
    329  1.208    rillig extern int scanflike_argnum;
    330  1.208    rillig extern pos_t scanflike_pos;
    331  1.208    rillig extern bool suppress_constcond;
    332  1.208    rillig extern bool llibflg;
    333  1.208    rillig extern int lwarn;
    334  1.208    rillig extern bool suppress_bitfieldtype;
    335  1.208    rillig extern bool plibflg;
    336  1.208    rillig extern bool suppress_longlong;
    337  1.208    rillig 
    338  1.208    rillig void begin_control_statement(control_statement_kind);
    339  1.208    rillig void end_control_statement(control_statement_kind);
    340  1.208    rillig void check_statement_reachable(void);
    341  1.208    rillig void begin_function(sym_t *);
    342  1.208    rillig void end_function(void);
    343  1.208    rillig void named_label(sym_t *);
    344  1.208    rillig void case_label(tnode_t *);
    345  1.208    rillig void default_label(void);
    346  1.208    rillig void stmt_if_expr(tnode_t *);
    347  1.208    rillig void stmt_if_then_stmt(void);
    348  1.208    rillig void stmt_if_else_stmt(bool);
    349  1.208    rillig void stmt_switch_expr(tnode_t *);
    350  1.208    rillig void stmt_switch_expr_stmt(void);
    351  1.208    rillig void stmt_while_expr(tnode_t *);
    352  1.208    rillig void stmt_while_expr_stmt(void);
    353  1.208    rillig void stmt_do(void);
    354  1.208    rillig void stmt_do_while_expr(tnode_t *);
    355  1.208    rillig void stmt_for_exprs(tnode_t *, tnode_t *, tnode_t *);
    356  1.208    rillig void stmt_for_exprs_stmt(void);
    357  1.208    rillig void stmt_goto(sym_t *);
    358  1.208    rillig void stmt_continue(void);
    359  1.208    rillig void stmt_break(void);
    360  1.208    rillig void stmt_return(bool, tnode_t *);
    361  1.208    rillig void global_clean_up_decl(bool);
    362  1.208    rillig void handle_lint_comment(lint_comment, int);
    363    1.1       cgd 
    364    1.1       cgd /*
    365    1.1       cgd  * init.c
    366    1.1       cgd  */
    367  1.208    rillig void begin_initialization(sym_t *);
    368  1.208    rillig void end_initialization(void);
    369  1.208    rillig sym_t *current_initsym(void);
    370  1.208    rillig 
    371  1.208    rillig void init_rbrace(void);
    372  1.208    rillig void init_lbrace(void);
    373  1.208    rillig void init_expr(tnode_t *);
    374  1.208    rillig void begin_designation(void);
    375  1.208    rillig void add_designator_member(sbuf_t *);
    376  1.208    rillig void add_designator_subscript(range_t);
    377  1.210    rillig void designation_push(designation *, designator_kind, const sym_t *, size_t);
    378    1.1       cgd 
    379    1.1       cgd /*
    380    1.1       cgd  * emit.c
    381    1.1       cgd  */
    382  1.208    rillig void outtype(const type_t *);
    383  1.208    rillig void outsym(const sym_t *, scl_t, def_t);
    384  1.208    rillig void outfdef(const sym_t *, const pos_t *, bool, bool, const sym_t *);
    385  1.208    rillig void outcall(const tnode_t *, bool, bool);
    386  1.208    rillig void outusg(const sym_t *);
    387   1.22  christos 
    388   1.22  christos /*
    389   1.60    rillig  * lex.c
    390   1.60    rillig  */
    391  1.208    rillig int lex_name(const char *, size_t);
    392  1.208    rillig int lex_integer_constant(const char *, size_t, int);
    393  1.208    rillig int lex_floating_constant(const char *, size_t);
    394  1.208    rillig int lex_operator(int, op_t);
    395  1.208    rillig int lex_string(void);
    396  1.208    rillig int lex_wide_string(void);
    397  1.208    rillig int lex_character_constant(void);
    398  1.208    rillig int lex_wide_character_constant(void);
    399  1.208    rillig void lex_directive(const char *);
    400  1.208    rillig void lex_next_line(void);
    401  1.208    rillig void lex_comment(void);
    402  1.208    rillig void lex_slash_slash_comment(void);
    403  1.208    rillig void lex_unknown_character(int);
    404  1.208    rillig int lex_input(void);
    405  1.215    rillig bool quoted_next(const buffer *, quoted_iterator *);
    406  1.227    rillig balanced_token_sequence lex_balanced(void);
    407   1.60    rillig 
    408   1.60    rillig /*
    409  1.101    rillig  * ckbool.c
    410  1.101    rillig  */
    411  1.208    rillig bool typeok_scalar_strict_bool(op_t, const mod_t *, int,
    412  1.101    rillig 		    const tnode_t *, const tnode_t *);
    413  1.208    rillig bool fallback_symbol_strict_bool(sym_t *);
    414  1.101    rillig 
    415  1.101    rillig /*
    416  1.100    rillig  * ckctype.c
    417  1.100    rillig  */
    418  1.216    rillig void check_ctype_function_call(const function_call *);
    419  1.208    rillig void check_ctype_macro_invocation(const tnode_t *, const tnode_t *);
    420  1.100    rillig 
    421  1.100    rillig /*
    422   1.66    rillig  * ckgetopt.c
    423   1.66    rillig  */
    424  1.208    rillig void check_getopt_begin_while(const tnode_t *);
    425  1.208    rillig void check_getopt_begin_switch(void);
    426  1.208    rillig void check_getopt_case_label(int64_t);
    427  1.208    rillig void check_getopt_end_switch(void);
    428  1.208    rillig void check_getopt_end_while(void);
    429  1.217    rillig 
    430  1.217    rillig /* cksnprintb.c */
    431  1.222    rillig void check_snprintb(const function_call *);
    432