Subversion Repositories tendra.SVN

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 7u83 1
/*
2
    		 Crown Copyright (c) 1997, 1998
3
 
4
    This TenDRA(r) Computer Program is subject to Copyright
5
    owned by the United Kingdom Secretary of State for Defence
6
    acting through the Defence Evaluation and Research Agency
7
    (DERA).  It is made available to Recipients with a
8
    royalty-free licence for its use, reproduction, transfer
9
    to other parties and amendment for any purpose not excluding
10
    product development provided that any such use et cetera
11
    shall be deemed to be acceptance of the following conditions:-
12
 
13
        (1) Its Recipients shall ensure that this Notice is
14
        reproduced upon any copies or amended versions of it;
15
 
16
        (2) Any amended version of it shall be clearly marked to
17
        show both the nature of and the organisation responsible
18
        for the relevant amendment or amendments;
19
 
20
        (3) Its onward transfer from a recipient to another
21
        party shall be deemed to be that party's acceptance of
22
        these conditions;
23
 
24
        (4) DERA gives no warranty or assurance as to its
25
        quality or suitability for any purpose and DERA accepts
26
        no liability whatsoever in relation to any use to which
27
        it may be put.
28
*/
29
 
30
 
31
/*
32
    ERROR DATABASE
33
 
34
    This file describes the database of errors used within the C++ compiler.
35
    It starts with some standard header information.
36
*/
37
 
38
DATABASE_NAME:
39
    cpp
40
 
41
RIG:
42
    c_err
43
 
44
PREFIX:
45
    compiler_output -> ERR_
46
    from_compiler   -> OPT_
47
    from_database   -> ENO_
48
 
49
 
50
/*
51
    ERROR TYPES
52
 
53
    This section lists all the error parameter types recognised within the
54
    database.
55
*/
56
 
57
TYPES:
58
    ACCESS, BASE_TYPE, CLASS_TYPE, CV_SPEC, DECL_SPEC, FLOAT, HASHID,
59
    IDENTIFIER, LEX, LONG_ID, NAMESPACE, NAT, PPTOKEN_P, PTR_LOC,
60
    QUALIFIER, STRING, TYPE, cint, cstring, string, ucint, ulong,
61
    unsigned, plural
62
 
63
 
64
/*
65
    ERROR PROPERTIES
66
 
67
    This section lists the various categories of error.
68
*/
69
 
70
PROPERTIES:
71
    non_iso, compiler, pragma, printf, syntax, token, dummy
72
 
73
 
74
/*
75
    ERROR KEYS
76
 
77
    This section lists the various key properties associated with each
78
    error message.  These include a cross reference to the ISO standard
79
    (if appropriate), and the actual error message.
80
*/
81
 
82
KEYS:
83
    ISO, STD
84
 
85
 
86
/*
87
    ERROR USAGES
88
 
89
    This section lists the various error usages.  These correspond to
90
    the groups of errors described by the compiler options.  The default
91
    values for the options in C++ and C are given.
92
*/
93
 
94
USAGE:
95
    error, warning, none, whatever, new, wall,
96
    cpp_error = error | none,
97
    c_error = none | error,
98
    addr_register = none | error,
99
    bitf_overflow = wall | error,
100
    bitf_type = none | error,
101
    bool_assign = wall,
102
    case_fall = wall,
103
    cast_explicit = none,
104
    class_scope = on | off,
105
    comma_extra = error,
106
    complete_struct = wall,
107
    concat_string = error,
108
    cond_default = off,
109
    cond_lvalue = none | error,
110
    const_cond = wall,
111
    const_internal = on | off,
112
    const_string = wall,
113
    conv = wall,
114
    conv_int_int = wall,
115
    conv_int_int_expl = none, conv_int_int_impl = wall,
116
    conv_int_enum = error | wall,
117
    conv_int_ptr = wall,
118
    conv_int_ptr_expl = wall, conv_int_ptr_impl = error,
119
    conv_ptr_ptr = wall,
120
    conv_ptr_ptr_expl = wall, conv_ptr_ptr_impl = error,
121
    conv_ptr_ptr_void = wall, conv_ptr_void_ptr = error | wall,
122
    conv_ptr_func = error,
123
    cpplus_comment = none | error,
124
    decl_cond = error,
125
    decl_empty = error,
126
    decl_hide = wall,
127
    decl_none = none | error,
128
    decl_struct_anon = error,
129
    decl_unify = off,
130
    decl_volatile = off,
131
    delete_over = none,
132
    digraph = wall,
133
    discard = wall,
134
    discard_exp = wall, discard_func = wall,
135
    discard_static = wall,
136
    discard_value = wall,
137
    dollar_ident = error,
138
    dspec_none = error,
139
    dspec_none_func = new | wall,
140
    ellipsis_extra = error,
141
    ellipsis_ident = error,
142
    empty_body = wall,
143
    enum_decl = error,
144
    enum_switch = wall,
145
    eof_nline = error,
146
    escape_overflow = error,
147
    escape_unknown = error,
148
    for_scope = on | off,
149
    func_block = error,
150
    func_impl = error | wall,
151
    func_incompat = error,
152
    func_linkage = error,
153
    func_proto = none,
154
    func_ret_void = error | wall,
155
    func_token_undef = wall,
156
    func_weak = none,
157
    gen_ptr_char = error,
158
    hash_ident = error,
159
    include_full = wall,
160
    include_verbose = off,
161
    infer_int = new | wall, infer_int_cv = new | wall,
162
    init_aggregate = wall,
163
    init_dynamic = none | error,
164
    init_struct = none | wall,
165
    inline_internal = off | on,
166
    int_operator = wall,
167
    int_overflow = wall,
168
    interf_incompat = error,
169
    iso_keyword = wall | error,
170
    link_incompat = error | wall,
171
    link_internal = on,
172
    link_resolve = error | wall,
173
    lint_comment = error,
174
    longlong = error,
175
    macro_arg_dir = wall,
176
    macro_nest = error,
177
    macro_redef = error, macro_weak = error,
178
    member_incompat = error,
179
    name_limit = off,
180
    nest_comment = wall,
181
    new_array = on,
182
    overload_ambig = error,
183
    overload_dep = wall,
184
    overload_expl = off,
185
    overload_res = none,
186
    overload_strict = on,
187
    param_impl = error | wall,
188
    paren = wall,
189
    ppdir_id = error,
190
    ppdir_null = none,
191
    ppdir_text = error,
192
    ppdir_unknown = error,
193
    ppdir_assert = error, ppdir_assert_ignore = off,
194
    ppdir_file = error, ppdir_file_ignore = off,
195
    ppdir_ident = error, ppdir_ident_ignore = off,
196
    ppdir_import = error, ppdir_import_ignore = off,
197
    ppdir_indent = none,
198
    ppdir_indent_dir = none,
199
    ppdir_unassert = error, ppdir_unassert_ignore = off,
200
    ppdir_warning = error, ppdir_warning_ignore = off,
201
    ppdir_weak = error, ppdir_weak_ignore = off,
202
    pragma_unknown = wall,
203
    preproc_old = off,
204
    printf_string = warning,
205
    proto_scope = off | on,
206
    ptr_operator = wall,
207
    ptr_void = error,
208
    reached = wall,
209
    semicolon_extra = error,
210
    templ_export = off,
211
    templ_undecl = new,
212
    this_lvalue = error,
213
    throw_bad = wall | none,
214
    token_const = error | wall,
215
    token_redef = wall,
216
    token_undef = error,
217
    trigraph = wall,
218
    type_obj_incompl = none | error,
219
    type_qual_incompat = error,
220
    type_redef = none | error,
221
    type_tag_ignore = error,
222
    unmatched = error,
223
    variable = wall,
224
    weak = off | wall
225
 
226
 
227
/*
228
    ERROR LISTING
229
 
230
    The remainder of this file lists the various error messages comprising
231
    the database.
232
*/
233
 
234
ENTRIES:
235
 
236
 
237
/*
238
    ISO C++ STANDARD (DECEMBER 1996 DRAFT)
239
 
240
    The first section of error messages are derived from the ISO C++
241
    standard.  They are categorised according to the various sections of
242
    the standard.  Note how these errors give traceability between the
243
    compiler and the language it implements.  The alternate values
244
    (following the '|') give the corresponding ISO C settings.
245
 
246
    To reduce the size of the catalogue there are a couple of conventions
247
    for default values.  If no 'KEY (ISO)' entry is given then the ISO
248
    section numbers is the same as that of the previous error.  The usages
249
    have been chosen so that 'error' has value 0.  Thus if no usage is
250
    given, a usage of 'error' may be inferred.  Rather than an 'iso'
251
    property which most errors would have, a 'non_iso' property is used.
252
*/
253
 
254
fail_input ( string: s )
255
{
256
    PROPERTIES: non_iso, compiler
257
    KEY (ISO)	/* empty */
258
    KEY (STD)	"Can't open input file, '"s"'"
259
}
260
 
261
fail_output ( string: s )
262
{
263
    PROPERTIES: non_iso, compiler
264
    KEY (STD)	"Can't open output file, '"s"'"
265
}
266
 
267
fail_dump ( string: s )
268
{
269
    PROPERTIES: non_iso, compiler
270
    KEY (STD)	"Can't open output dump file, '"s"'"
271
}
272
 
273
fail_spec ( string: s )
274
{
275
    PROPERTIES: non_iso, compiler
276
    KEY (STD)	"Can't open output spec file, '"s"'"
277
}
278
 
279
fail_spec_bad ( string: s, string: m )
280
{
281
    PROPERTIES: non_iso, compiler
282
    KEY (STD)	"Ill-formed spec file, '"s"': "m
283
}
284
 
285
fail_port ( string: s )
286
{
287
    PROPERTIES: non_iso, compiler
288
    KEY (STD)	"Can't open portability table, '"s"'"
289
}
290
 
291
fail_too_many ( ulong: n )
292
{
293
    PROPERTIES: non_iso, compiler
294
    KEY (STD)	"Too many errors ("n") - aborting"
295
}
296
 
297
fail_error ( cstring: s )
298
{
299
    PROPERTIES: non_iso, compiler
300
    KEY (STD)	s
301
}
302
 
303
fail_warning ( cstring: s )
304
{
305
    USAGE:	warning
306
    PROPERTIES: non_iso, compiler
307
    KEY (STD)	s
308
}
309
 
310
fail_list_item ( unsigned: n, LONG_ID: id, PTR_LOC: loc )
311
{
312
    USAGE:	whatever
313
    PROPERTIES:	non_iso, dummy
314
    KEY (STD)	"\t"n". '"id"' ("loc")"
315
}
316
 
317
fail_list_end ( unsigned: n )
318
{
319
    USAGE:	none
320
    PROPERTIES:	non_iso, dummy
321
    KEY (STD)	" (total "n")"
322
}
323
 
324
 
325
/*  --------------------------------------------------------------------
326
    1		General
327
		[intro]
328
    --------------------------------------------------------------------  */
329
 
330
 
331
/*  --------------------------------------------------------------------
332
    1.1		Scope
333
		[intro.scope]
334
    --------------------------------------------------------------------  */
335
 
336
 
337
/*  --------------------------------------------------------------------
338
    1.2		Normative references
339
		[intro.refs]
340
    --------------------------------------------------------------------  */
341
 
342
 
343
/*  --------------------------------------------------------------------
344
    1.3		Implementation compliance
345
		[intro.compliance]
346
    --------------------------------------------------------------------  */
347
 
348
 
349
/*  --------------------------------------------------------------------
350
    1.4		Definitions
351
		[intro.defs]
352
    --------------------------------------------------------------------  */
353
 
354
 
355
/*  --------------------------------------------------------------------
356
    1.5		Syntax notation
357
		[syntax]
358
    --------------------------------------------------------------------  */
359
 
360
 
361
/*  --------------------------------------------------------------------
362
    1.6		The C++ memory model
363
		[intro.memory]
364
    --------------------------------------------------------------------  */
365
 
366
 
367
/*  --------------------------------------------------------------------
368
    1.7		The C++ object model
369
		[intro.object]
370
    --------------------------------------------------------------------  */
371
 
372
 
373
/*  --------------------------------------------------------------------
374
    1.8		Program execution
375
		[intro.execution]
376
    --------------------------------------------------------------------  */
377
 
378
 
379
/*  --------------------------------------------------------------------
380
    2		Lexical conventions
381
		[lex]
382
    --------------------------------------------------------------------  */
383
 
384
lex_parse ( PPTOKEN_P: pptok )
385
{
386
    PROPERTIES:	non_iso, syntax
387
    KEY (ISO)	/* none */
388
    KEY (STD)	"Parse error before '"pptok"'"
389
}
390
 
391
lex_expect ( LEX: lex )
392
{
393
    PROPERTIES:	non_iso, syntax
394
    KEY (STD)	"Syntax error, '"lex"' expected"
395
}
396
 
397
lex_extra_comma ()
398
{
399
    USAGE:	comma_extra
400
    PROPERTIES:	non_iso, syntax
401
    KEY (STD)	"Extra comma at end of list"
402
}
403
 
404
lex_abort ()
405
{
406
    PROPERTIES:	non_iso, syntax
407
    KEY (STD)	"Can't recover from this error"
408
}
409
 
410
 
411
/*  --------------------------------------------------------------------
412
    2.1		Phases of translation
413
		[lex.phases]
414
    --------------------------------------------------------------------  */
415
 
416
lex_phases_eof ()
417
{
418
    USAGE:	eof_nline
419
    KEY (ISO)	"2.1" | "5.1.1.2"
420
    KEY (STD)	"File does not end in newline character"
421
}
422
 
423
lex_phases_comm_eof ()
424
{
425
    KEY (STD)	"Unterminated comment"
426
}
427
 
428
lex_phases_str_eof ()
429
{
430
    KEY (STD)	"End of file in string literal"
431
}
432
 
433
 
434
/*  --------------------------------------------------------------------
435
    2.2		Basic source character set
436
		[lex.charset]
437
    --------------------------------------------------------------------  */
438
 
439
lex_charset_len ( cint: c, unsigned: n )
440
{
441
    KEY (ISO)	"2.2" | "5.2.1"
442
    KEY (STD)	"Universal character '\\"c"' should be followed by "n"
443
		 hexadecimal digits"
444
}
445
 
446
lex_charset_replace ( ucint: c )
447
{
448
    USAGE:	trigraph
449
    KEY (STD)	"Universal character '"c"' used"
450
}
451
 
452
lex_charset_bad ( ucint: c )
453
{
454
    KEY (STD)	"Invalid universal character '"c"'"
455
}
456
 
457
 
458
/*  --------------------------------------------------------------------
459
    2.3		Trigraph sequences
460
		[lex.trigraph]
461
    --------------------------------------------------------------------  */
462
 
463
lex_trigraph_replace ( cint: c1, cint: c2 )
464
{
465
    USAGE:	trigraph
466
    KEY (ISO)	"2.3" | "5.2.1.1"
467
    KEY (STD)	"Trigraph '??"c1"' replaced by '"c2"'"
468
}
469
 
470
 
471
/*  --------------------------------------------------------------------
472
    2.4		Preprocessing tokens
473
		[lex.pptoken]
474
    --------------------------------------------------------------------  */
475
 
476
lex_pptoken_unknown ( cint: c )
477
{
478
    KEY (ISO)	"2.4" | "6.1"
479
    KEY (STD)	"Illegal character, '"c"'"
480
}
481
 
482
lex_pptoken_unicode ( ucint: c )
483
{
484
    KEY (STD)	"Illegal universal character, '"c"'"
485
}
486
 
487
 
488
/*  --------------------------------------------------------------------
489
    2.5		Alternative tokens
490
		[lex.digraph]
491
    --------------------------------------------------------------------  */
492
 
493
lex_digraph_replace ( LEX: lex1, LEX: lex2 )
494
{
495
    USAGE:	digraph
496
    KEY (ISO)	"2.5" | "Amendment 1"
497
    KEY (STD)	"Digraph '"lex1"' replaced by '"lex2"'"
498
}
499
 
500
lex_digraph_iso ( HASHID: lex1, LEX: lex2 )
501
{
502
    USAGE:	iso_keyword
503
    KEY (STD)	"ISO keyword '"lex1"' replaced by '"lex2"'"
504
}
505
 
506
 
507
/*  --------------------------------------------------------------------
508
    2.6		Tokens
509
		[lex.token]
510
    --------------------------------------------------------------------  */
511
 
512
 
513
/*  --------------------------------------------------------------------
514
    2.7		Comments
515
		[lex.comment]
516
    --------------------------------------------------------------------  */
517
 
518
lex_comment_nest ()
519
{
520
    USAGE:	nest_comment
521
    KEY (ISO)	"2.7" | "6.1.9"
522
    KEY (STD)	"'/*' in comment"
523
}
524
 
525
 
526
/*  --------------------------------------------------------------------
527
    2.8		Header names
528
		[lex.header]
529
    --------------------------------------------------------------------  */
530
 
531
 
532
/*  --------------------------------------------------------------------
533
    2.9		Preprocessing numbers
534
		[lex.ppnumber]
535
    --------------------------------------------------------------------  */
536
 
537
 
538
/*  --------------------------------------------------------------------
539
    2.10	Identifiers
540
		[lex.name]
541
    --------------------------------------------------------------------  */
542
 
543
lex_name_limit ( HASHID: nm, ulong: m, ulong: n )
544
{
545
    USAGE:	name_limit
546
    KEY (ISO)	"2.10" | "6.1.2"
547
    KEY (STD)	"Length of identifier '"nm"' ("m") exceeds "n
548
}
549
 
550
lex_name_extendid ( ucint: c )
551
{
552
    KEY (STD)	"Invalid universal character, '"c"', in identifier"
553
}
554
 
555
 
556
/*  --------------------------------------------------------------------
557
    2.11	Keywords
558
		[lex.key]
559
    --------------------------------------------------------------------  */
560
 
561
lex_key_word ( LEX: lex )
562
{
563
    KEY (ISO)	"2.11" | "6.1.1"
564
    KEY (STD)	"'"lex"' is now a keyword"
565
}
566
 
567
lex_key_iso ( HASHID: nm )
568
{
569
    USAGE:	wall
570
    KEY (STD)	"ISO keyword '"nm"' is not a valid macro identifier"
571
}
572
 
573
lex_key_reserve ( HASHID: nm )
574
{
575
    USAGE:	wall
576
    KEY (STD)	"'"nm"' is a reserved identifier"
577
}
578
 
579
 
580
/*  --------------------------------------------------------------------
581
    2.12	Operators and punctuators
582
		[lex.op]
583
    --------------------------------------------------------------------  */
584
 
585
lex_op_old_assign ( cint: c1, cint: c2 )
586
{
587
    USAGE:	none
588
    KEY (ISO)	"2.12" | "6.1.5"
589
    KEY (STD)	"Old style assignment operator '="c1"', assuming '= "c2"'"
590
}
591
 
592
 
593
/*  --------------------------------------------------------------------
594
    2.13	Literals
595
		[lex.literal]
596
    --------------------------------------------------------------------  */
597
 
598
lex_literal_bad ( string: num )
599
{
600
    KEY (ISO)	"2.13" | "6.1.3"
601
    KEY (STD)	"Can't convert '"num"' to a number"
602
}
603
 
604
 
605
/*  --------------------------------------------------------------------
606
    2.13.1	Integer literals
607
		[lex.icon]
608
    --------------------------------------------------------------------  */
609
 
610
lex_icon_octal ( string: num )
611
{
612
    KEY (ISO)	"2.13.1" | "6.1.3.2"
613
    KEY (STD)	"Illegal octal digits in '"num"'"
614
}
615
 
616
lex_icon_large ( string: num, NAT: n )
617
{
618
    KEY (STD)	"Integer literal '"num"' exceeds maximum value ("n")"
619
}
620
 
621
lex_icon_llong ( string: num )
622
{
623
    USAGE:	longlong
624
    KEY (STD)	"'long long' integer literal '"num"'"
625
}
626
 
627
 
628
/*  --------------------------------------------------------------------
629
    2.13.2	Character literals
630
		[lex.ccon]
631
    --------------------------------------------------------------------  */
632
 
633
lex_ccon_multibyte ()
634
{
635
    KEY (ISO)	"2.13.2" | "5.2.1.2"
636
    KEY (STD)	"Invalid multibyte character"
637
}
638
 
639
lex_ccon_empty ()
640
{
641
    KEY (ISO)	"2.13.2" | "6.1.3.4"
642
    KEY (STD)	"Empty character literal"
643
}
644
 
645
lex_ccon_multi ( STRING: str )
646
{
647
    USAGE:	wall
648
    KEY (STD)	"Multicharacter character literal, "str
649
}
650
 
651
lex_ccon_escape ( cint: c )
652
{
653
    USAGE:	escape_unknown
654
    KEY (STD)	"Unknown escape sequence, '\\"c"'"
655
}
656
 
657
lex_ccon_hex ( cint: c )
658
{
659
    USAGE:	escape_unknown
660
    KEY (STD)	"Invalid hexadecimal escape sequence, '\\"c"'"
661
}
662
 
663
lex_ccon_large ()
664
{
665
    USAGE:	escape_overflow
666
    KEY (STD)	"Character out of range"
667
}
668
 
669
 
670
/*  --------------------------------------------------------------------
671
    2.13.3	Floating literals
672
		[lex.fcon]
673
    --------------------------------------------------------------------  */
674
 
675
lex_fcon_large ( FLOAT: f )
676
{
677
    KEY (ISO)	"2.13.3" | "6.1.3.1"
678
    KEY (STD)	"Floating point literal '"f"' too large"
679
}
680
 
681
 
682
/*  --------------------------------------------------------------------
683
    2.13.4	String literals
684
		[lex.string]
685
    --------------------------------------------------------------------  */
686
 
687
lex_string_nl ( unsigned: n, plural: s )
688
{
689
    KEY (ISO)	"2.13.4" | "6.1.4"
690
    KEY (STD)	n" newline character"s" in string literal"
691
}
692
 
693
lex_string_pp_nl ()
694
{
695
    KEY (STD)	"End of line in string literal"
696
}
697
 
698
lex_string_concat ()
699
{
700
    USAGE:	concat_string
701
    KEY (STD)	"Concatenation of different string literal types"
702
}
703
 
704
 
705
/*  --------------------------------------------------------------------
706
    2.13.5	Boolean literals
707
		[lex.bool]
708
    --------------------------------------------------------------------  */
709
 
710
 
711
/*  --------------------------------------------------------------------
712
    3		Basic concepts
713
		[basic]
714
    --------------------------------------------------------------------  */
715
 
716
 
717
/*  --------------------------------------------------------------------
718
    3.1		Declarations and definitions
719
		[basic.def]
720
    --------------------------------------------------------------------  */
721
 
722
 
723
/*  --------------------------------------------------------------------
724
    3.2		One definition rule
725
		[basic.def.odr] = [basic.odr]
726
    --------------------------------------------------------------------  */
727
 
728
basic_odr_decl ( IDENTIFIER: id, PTR_LOC: loc )
729
{
730
    KEY (ISO)	"3.2" | "6.5"
731
    KEY (STD)	"'"id"' has already been declared (at "loc")"
732
}
733
 
734
basic_odr_diff ( IDENTIFIER: id, PTR_LOC: loc )
735
{
736
    KEY (STD)	"'"id"' has already been declared as a different kind
737
		 of object (at "loc")"
738
}
739
 
740
basic_odr_typedef ( IDENTIFIER: id, PTR_LOC: loc )
741
{
742
    USAGE:	type_redef
743
    KEY (STD)	"Type '"id"' redeclared (see "loc")"
744
}
745
 
746
basic_odr_def ( IDENTIFIER: id, PTR_LOC: loc )
747
{
748
    KEY (ISO)	"3.2" | "6.7"
749
    KEY (STD)	"'"id"' has already been defined (at "loc")"
750
}
751
 
752
basic_odr_def_func ( LONG_ID: id, PTR_LOC: loc )
753
{
754
    KEY (STD)	"The function '"id"' has already been defined (at "loc")"
755
}
756
 
757
basic_odr_undef ( LONG_ID: id )
758
{
759
    KEY (STD)	"'"id"' has been used but not defined"
760
}
761
 
762
basic_odr_inline ( LONG_ID: id )
763
{
764
    KEY (STD)	"The 'inline' function '"id"' has been used but not defined"
765
}
766
 
767
basic_odr_unused ( LONG_ID: id )
768
{
769
    USAGE:	whatever
770
    KEY (STD)	"'"id"' has been defined but not used"
771
}
772
 
773
basic_odr_redundant ( LONG_ID: id )
774
{
775
    USAGE:	whatever
776
    KEY (STD)	"'"id"' has been declared but not used or defined"
777
}
778
 
779
basic_odr_tentative ( IDENTIFIER: id, PTR_LOC: loc )
780
{
781
    USAGE:	wall
782
    KEY (ISO)	"3.2" | "6.7.2"
783
    KEY (STD)	"Multiple definition of '"id"' (see "loc")"
784
}
785
 
786
basic_odr_def_type ( LONG_ID: id, PTR_LOC: loc )
787
{
788
    KEY (ISO)	"3.2" | "6.5.2.3"
789
    KEY (STD)	"The type '"id"' has already been defined (at "loc")"
790
}
791
 
792
 
793
/*  --------------------------------------------------------------------
794
    3.3		Declarative regions and scopes
795
		[basic.scope]
796
    --------------------------------------------------------------------  */
797
 
798
 
799
/*  --------------------------------------------------------------------
800
    3.3.1	Point of declaration
801
		[basic.scope.pdecl]
802
    --------------------------------------------------------------------  */
803
 
804
basic_scope_pdecl_param ( LONG_ID: id )
805
{
806
    USAGE:	wall
807
    KEY (ISO)	"3.3.1" | "6.1.2.1"
808
    KEY (STD)	"The type '"id"' has function parameter scope - it is only
809
		 in scope in this declaration"
810
}
811
 
812
 
813
/*  --------------------------------------------------------------------
814
    3.3.2	Local scope
815
		[basic.scope.local]
816
    --------------------------------------------------------------------  */
817
 
818
 
819
/*  --------------------------------------------------------------------
820
    3.3.3	Function prototype scope
821
		[basic.scope.proto]
822
    --------------------------------------------------------------------  */
823
 
824
 
825
/*  --------------------------------------------------------------------
826
    3.3.4	Function scope
827
		[basic.scope.function]
828
    --------------------------------------------------------------------  */
829
 
830
 
831
/*  --------------------------------------------------------------------
832
    3.3.5	Namespace scope
833
		[basic.scope.namespace]
834
    --------------------------------------------------------------------  */
835
 
836
 
837
/*  --------------------------------------------------------------------
838
    3.3.6	Class scope
839
		[basic.scope.class]
840
    --------------------------------------------------------------------  */
841
 
842
 
843
/*  --------------------------------------------------------------------
844
    3.3.7	Name hiding
845
		[basic.scope.hiding]
846
    --------------------------------------------------------------------  */
847
 
848
basic_scope_hide ( HASHID: nm, PTR_LOC: loc )
849
{
850
    USAGE:	decl_hide
851
    KEY (ISO)	"3.3.7" | "6.1.2.1"
852
    KEY (STD)	"Declaration of '"nm"' hides a previous declaration
853
		 (at "loc")"
854
}
855
 
856
basic_scope_hide_mem ( HASHID: nm, IDENTIFIER: id )
857
{
858
    USAGE:	decl_hide
859
    KEY (STD)	"Declaration of '"nm"' hides the member '"id"'"
860
}
861
 
862
 
863
/*  --------------------------------------------------------------------
864
    3.4		Name look up
865
		[basic.lookup] = [lookup]
866
    --------------------------------------------------------------------  */
867
 
868
lookup_ambig_id ( IDENTIFIER: id )
869
{
870
    KEY (ISO)	"3.4" | "6.3.1"
871
    KEY (STD)	"The name '"id"' is ambiguous"
872
}
873
 
874
lookup_ambig_mem ( IDENTIFIER: id )
875
{
876
    KEY (STD)	"The member '"id"' is ambiguous"
877
}
878
 
879
lookup_ambig_list ()
880
{
881
    USAGE:	whatever
882
    KEY (STD)	"Ambiguous meanings are as follows"
883
}
884
 
885
 
886
/*  --------------------------------------------------------------------
887
    3.4.1	Unqualified name look up
888
		[basic.lookup.unqual] = [lookup.unqual]
889
    --------------------------------------------------------------------  */
890
 
891
lookup_unqual_undef ( HASHID: nm )
892
{
893
    KEY (ISO)	"3.4.1" | "6.3.1"
894
    KEY (STD)	"The identifier '"nm"' hasn't been declared in this scope"
895
}
896
 
897
lookup_unqual_vis ( IDENTIFIER: id )
898
{
899
    KEY (STD)	"Previous declaration of '"id"' isn't visible in this scope"
900
}
901
 
902
 
903
/*  --------------------------------------------------------------------
904
    3.4.2	Argument-dependent name look up
905
		[basic.lookup.koenig] = [lookup.koenig]
906
    --------------------------------------------------------------------  */
907
 
908
 
909
/*  --------------------------------------------------------------------
910
    3.4.3	Qualified name look up
911
		[basic.lookup.qual] = [lookup.qual]
912
    --------------------------------------------------------------------  */
913
 
914
lookup_qual_undef ( HASHID: nm, NAMESPACE: ns )
915
{
916
    KEY (ISO)	"3.4.3" | "6.5.2.1"
917
    KEY (STD)	"The member '"nm"' of '"ns"' hasn't been declared"
918
}
919
 
920
lookup_qual_bad ( IDENTIFIER: id, NAMESPACE: ns )
921
{
922
    KEY (STD)	"'"id"' is not a member of '"ns"'"
923
}
924
 
925
lookup_qual_decl ( IDENTIFIER: id, NAMESPACE: ns )
926
{
927
    KEY (STD)	"'"id"' is not an immediate member of '"ns"'"
928
}
929
 
930
 
931
/*  --------------------------------------------------------------------
932
    3.4.3.1	Class members
933
		[class.qual]
934
    --------------------------------------------------------------------  */
935
 
936
 
937
/*  --------------------------------------------------------------------
938
    3.4.3.2	Namespace members
939
		[namespace.qual] = [nspace.qual]
940
    --------------------------------------------------------------------  */
941
 
942
 
943
/*  --------------------------------------------------------------------
944
    3.4.4	Elaborate type specifiers
945
		[basic.lookup.elab] = [lookup.elab]
946
    --------------------------------------------------------------------  */
947
 
948
lookup_elab_alias ( BASE_TYPE: bt, IDENTIFIER: id )
949
{
950
    KEY (ISO)	"3.4.4" | "6.5.2.3"
951
    KEY (STD)	"'typedef' name used in '"bt" "id"'"
952
}
953
 
954
lookup_elab_invalid ( BASE_TYPE: bt, IDENTIFIER: id )
955
{
956
    KEY (STD)	"Invalid identifier used in '"bt" "id"'"
957
}
958
 
959
lookup_elab_enum ( LONG_ID: id )
960
{
961
    USAGE:	enum_decl
962
    KEY (STD)	"Can't declare the enumeration '"id"'"
963
}
964
 
965
 
966
/*  --------------------------------------------------------------------
967
    3.4.5	Class member access
968
		[basic.lookup.classref] = [lookup.classref]
969
    --------------------------------------------------------------------  */
970
 
971
lookup_classref_ambig ( IDENTIFIER: id )
972
{
973
    KEY (ISO)	"3.4.5" | "????"
974
    KEY (STD)	"Ambiguous class member look-up for '"id"'"
975
}
976
 
977
 
978
/*  --------------------------------------------------------------------
979
    3.4.6	Using directives and namespace aliases
980
		[basic.lookup.udir] = [lookup.udir]
981
    --------------------------------------------------------------------  */
982
 
983
 
984
/*  --------------------------------------------------------------------
985
    3.5		Program and linkage
986
		[basic.link]
987
    --------------------------------------------------------------------  */
988
 
989
basic_link_mem_extern ( LONG_ID: id )
990
{
991
    KEY (ISO)	"3.5" | "6.1.2.2"
992
    KEY (STD)	"The member '"id"' has external linkage"
993
}
994
 
995
basic_link_none ( TYPE: t, LONG_ID: id )
996
{
997
    USAGE:	cpp_error
998
    KEY (STD)	"A type with no linkage, '"t"', can't be used to declare
999
		 an object with linkage, '"id"'"
1000
}
1001
 
1002
basic_link_qual ( CV_SPEC: cv1, CV_SPEC: cv2 )
1003
{
1004
    USAGE:	type_qual_incompat
1005
    KEY (ISO)	"3.5" | "6.5.3"
1006
    KEY (STD)	"The type qualifiers '"cv1"' and '"cv2"' are incompatible"
1007
}
1008
 
1009
basic_link_incompat ( TYPE: t1, TYPE: t2 )
1010
{
1011
    KEY (ISO)	"3.5" | "6.1.2.6"
1012
    KEY (STD)	"The types '"t1"' and '"t2"' are incompatible"
1013
}
1014
 
1015
basic_link_decl_type ( IDENTIFIER: id, PTR_LOC: loc )
1016
{
1017
    USAGE:	whatever
1018
    KEY (STD)	"The declaration of '"id"' should be compatible with
1019
		 that at "loc
1020
}
1021
 
1022
basic_link_typedef ( IDENTIFIER: id, PTR_LOC: loc )
1023
{
1024
    USAGE:	whatever
1025
    KEY (STD)	"The redefinition of type '"id"' should be compatible
1026
		 with that at "loc
1027
}
1028
 
1029
basic_link_unmatch ( TYPE: t, IDENTIFIER: id )
1030
{
1031
    KEY (STD)	"The type '"t"' does not match any declaration of the
1032
		 member '"id"'"
1033
}
1034
 
1035
 
1036
/*  --------------------------------------------------------------------
1037
    3.6		Start and termination
1038
		[basic.start]
1039
    --------------------------------------------------------------------  */
1040
 
1041
 
1042
/*  --------------------------------------------------------------------
1043
    3.6.1	Main function
1044
		[basic.start.main]
1045
    --------------------------------------------------------------------  */
1046
 
1047
basic_start_main_over ( IDENTIFIER: id )
1048
{
1049
    KEY (ISO)	"3.6.1" | "5.1.2.2"
1050
    KEY (STD)	"Can't overload '"id"'"
1051
}
1052
 
1053
basic_start_main_ret ( TYPE: t, HASHID: nm )
1054
{
1055
    USAGE:	error | wall
1056
    KEY (STD)	"Illegal return type '"t"' for '"nm"'"
1057
}
1058
 
1059
basic_start_main_proto ( TYPE: t, HASHID: nm )
1060
{
1061
    USAGE:	wall
1062
    KEY (STD)	"Unorthodox type '"t"' for '"nm"'"
1063
}
1064
 
1065
basic_start_main_link ( HASHID: nm, DECL_SPEC: ds )
1066
{
1067
    USAGE:	error | wall
1068
    KEY (STD)	"Can't declare '"nm"' to be '"ds"'"
1069
}
1070
 
1071
basic_start_main_call ( IDENTIFIER: id )
1072
{
1073
    USAGE:	cpp_error
1074
    KEY (STD)	"Can't call '"id"' from within a program"
1075
}
1076
 
1077
basic_start_main_addr ( IDENTIFIER: id )
1078
{
1079
    USAGE:	cpp_error
1080
    KEY (STD)	"Can't take the address of '"id"'"
1081
}
1082
 
1083
basic_start_main_fall ( IDENTIFIER: id, TYPE: t )
1084
{
1085
    USAGE:	wall | func_ret_void
1086
    KEY (STD)	"Implicit 'return 0' in function '"id"' which returns '"t"'"
1087
}
1088
 
1089
 
1090
/*  --------------------------------------------------------------------
1091
    3.6.2	Initialization of non-local objects
1092
		[basic.start.init]
1093
    --------------------------------------------------------------------  */
1094
 
1095
 
1096
/*  --------------------------------------------------------------------
1097
    3.6.3	Termination
1098
		[basic.start.term]
1099
    --------------------------------------------------------------------  */
1100
 
1101
 
1102
/*  --------------------------------------------------------------------
1103
    3.7		Storage duration
1104
		[basic.stc]
1105
    --------------------------------------------------------------------  */
1106
 
1107
 
1108
/*  --------------------------------------------------------------------
1109
    3.7.1	Static storage duration
1110
		[basic.stc.static]
1111
    --------------------------------------------------------------------  */
1112
 
1113
 
1114
/*  --------------------------------------------------------------------
1115
    3.7.2	Automatic storage duration
1116
		[basic.stc.auto]
1117
    --------------------------------------------------------------------  */
1118
 
1119
 
1120
/*  --------------------------------------------------------------------
1121
    3.7.3	Dynamic storage duration
1122
		[basic.stc.dynamic]
1123
    --------------------------------------------------------------------  */
1124
 
1125
basic_stc_alloc_ret ( HASHID: nm, TYPE: t )
1126
{
1127
    KEY (ISO)	"3.7.3" | "????"
1128
    KEY (STD)	"'"nm"' should return '"t"'"
1129
}
1130
 
1131
basic_stc_alloc_p1 ( HASHID: nm, TYPE: t )
1132
{
1133
    KEY (STD)	"First parameter of '"nm"' should have type '"t"'"
1134
}
1135
 
1136
basic_stc_alloc_d1 ( HASHID: nm )
1137
{
1138
    KEY (STD)	"First parameter of '"nm"' can't have default argument"
1139
}
1140
 
1141
basic_stc_alloc_p2 ( HASHID: nm, TYPE: t )
1142
{
1143
    USAGE:	delete_over
1144
    KEY (STD)	"Second parameter of '"nm"' should have type '"t"'"
1145
}
1146
 
1147
basic_stc_alloc_pn ( HASHID: nm )
1148
{
1149
    USAGE:	delete_over
1150
    KEY (STD)	"Too many parameters for '"nm"'"
1151
}
1152
 
1153
basic_stc_alloc_templ ( HASHID: nm )
1154
{
1155
    KEY (STD)	"Template '"nm"' should have at least two parameters"
1156
}
1157
 
1158
basic_stc_alloc_nspace ( IDENTIFIER: id )
1159
{
1160
    KEY (STD)	"Should declare '"id"' in global namespace scope"
1161
}
1162
 
1163
basic_stc_alloc_link ( IDENTIFIER: id )
1164
{
1165
    KEY (STD)	"Can't declare '"id"' with internal linkage"
1166
}
1167
 
1168
 
1169
/*  --------------------------------------------------------------------
1170
    3.7.3.1	Allocation functions
1171
		[basic.stc.dynamic.allocation] = [basic.stc.alloc]
1172
    --------------------------------------------------------------------  */
1173
 
1174
 
1175
/*  --------------------------------------------------------------------
1176
    3.7.3.2	Deallocation functions
1177
		[basic.stc.dynamic.deallocation] = [basic.stc.dealloc]
1178
    --------------------------------------------------------------------  */
1179
 
1180
basic_stc_dealloc_over ( IDENTIFIER: id )
1181
{
1182
    USAGE:	delete_over
1183
    KEY (ISO)	"3.7.3.2" | "????"
1184
    KEY (STD)	"Can't overload '"id"'"
1185
}
1186
 
1187
 
1188
/*  --------------------------------------------------------------------
1189
    3.7.4	Duration of sub-objects
1190
		[basic.stc.inherit]
1191
    --------------------------------------------------------------------  */
1192
 
1193
 
1194
/*  --------------------------------------------------------------------
1195
    3.8		Object Lifetime
1196
		[basic.life]
1197
    --------------------------------------------------------------------  */
1198
 
1199
 
1200
/*  --------------------------------------------------------------------
1201
    3.9		Types
1202
		[basic.types]
1203
    --------------------------------------------------------------------  */
1204
 
1205
basic_types_def_incompl ( IDENTIFIER: id )
1206
{
1207
    KEY (ISO)	"3.9" | "6.5"
1208
    KEY (STD)	"The defined object '"id"' must have complete object type"
1209
}
1210
 
1211
basic_types_par_incompl ( IDENTIFIER: id )
1212
{
1213
    KEY (STD)	"The parameter '"id"' must have complete object type"
1214
}
1215
 
1216
basic_types_tent_incompl ( IDENTIFIER: id )
1217
{
1218
    KEY (ISO)	"3.9" | "6.7.2"
1219
    KEY (STD)	"The implicitly defined object '"id"' must have complete
1220
		 object type"
1221
}
1222
 
1223
basic_types_obj_func ( TYPE: t )
1224
{
1225
    USAGE:	whatever
1226
    KEY (ISO)	"3.9" | "6.1.2.5"
1227
    KEY (STD)	"The function type '"t"' is not an object type"
1228
}
1229
 
1230
basic_types_obj_ref ( TYPE: t )
1231
{
1232
    USAGE:	whatever
1233
    KEY (STD)	"The reference type '"t"' is not an object type"
1234
}
1235
 
1236
basic_types_incompl ( TYPE: t )
1237
{
1238
    USAGE:	whatever
1239
    KEY (STD)	"The type '"t"' is incomplete"
1240
}
1241
 
1242
basic_types_completed ( TYPE: t )
1243
{
1244
    USAGE:	complete_struct
1245
    KEY (STD)	"The type '"t"' has not been completed in its scope"
1246
}
1247
 
1248
basic_types_obj_incompl ()
1249
{
1250
    USAGE:	whatever
1251
    KEY (STD)	"An incomplete type is not a complete object type"
1252
}
1253
 
1254
basic_types_obj_void ( TYPE: t )
1255
{
1256
    USAGE:	ptr_void
1257
    KEY (STD)	"'"t"' is not a pointer to a complete object type"
1258
}
1259
 
1260
 
1261
/*  --------------------------------------------------------------------
1262
    3.9.1	Fundamental types
1263
		[basic.fundamental] = [basic.fund]
1264
    --------------------------------------------------------------------  */
1265
 
1266
basic_fund_void_decl ( IDENTIFIER: id, TYPE: t )
1267
{
1268
    KEY (ISO)	"3.9.1" | "6.1.2.5"
1269
    KEY (STD)	"The object '"id"' declared to have type '"t"'"
1270
}
1271
 
1272
basic_fund_void_mem ( IDENTIFIER: id, TYPE: t )
1273
{
1274
    KEY (STD)	"The class member '"id"' declared to have type '"t"'"
1275
}
1276
 
1277
basic_fund_void_exp ( TYPE: t )
1278
{
1279
    KEY (STD)	"Invalid use of expression of type '"t"'"
1280
}
1281
 
1282
 
1283
/*  --------------------------------------------------------------------
1284
    3.9.2	Compound types
1285
		[basic.compound]
1286
    --------------------------------------------------------------------  */
1287
 
1288
 
1289
/*  --------------------------------------------------------------------
1290
    3.9.3	CV-qualifiers
1291
		[basic.type.qualifier]
1292
    --------------------------------------------------------------------  */
1293
 
1294
 
1295
/*  --------------------------------------------------------------------
1296
    3.10	Lvalues and rvalues
1297
		[basic.lval]
1298
    --------------------------------------------------------------------  */
1299
 
1300
basic_lval_not ()
1301
{
1302
    USAGE:	whatever
1303
    KEY (ISO)	"3.10" | "6.2.2.1"
1304
    KEY (STD)	"Expression is not an lvalue"
1305
}
1306
 
1307
basic_lval_mod_rvalue ()
1308
{
1309
    KEY (STD)	"Expression should be an lvalue to be modifiable"
1310
}
1311
 
1312
basic_lval_mod_array ()
1313
{
1314
    KEY (STD)	"Lvalues of array type are not modifiable"
1315
}
1316
 
1317
basic_lval_mod_func ()
1318
{
1319
    KEY (STD)	"Lvalues of function type are not modifiable"
1320
}
1321
 
1322
basic_lval_mod_incompl ()
1323
{
1324
    KEY (STD)	"Lvalues of incomplete types are not modifiable"
1325
}
1326
 
1327
basic_lval_mod_const ()
1328
{
1329
    KEY (STD)	"A 'const' qualified lvalue is not modifiable"
1330
}
1331
 
1332
basic_lval_mod_member ( TYPE: t )
1333
{
1334
    USAGE:	c_error
1335
    KEY (STD)	"A type with a 'const' member, '"t"', is not modifiable"
1336
}
1337
 
1338
 
1339
/*  --------------------------------------------------------------------
1340
    4		Standard conversions
1341
		[conv]
1342
    --------------------------------------------------------------------  */
1343
 
1344
 
1345
/*  --------------------------------------------------------------------
1346
    4.1		Lvalue-to-rvalue conversion
1347
		[conv.lval]
1348
    --------------------------------------------------------------------  */
1349
 
1350
conv_lval_incompl ()
1351
{
1352
    KEY (ISO)	"4.1" | "6.2.2.1"
1353
    KEY (STD)	"Can't perform lvalue conversion on an incomplete type"
1354
}
1355
 
1356
 
1357
/*  --------------------------------------------------------------------
1358
    4.2		Array-to-pointer conversion
1359
		[conv.array]
1360
    --------------------------------------------------------------------  */
1361
 
1362
conv_array_string ()
1363
{
1364
    USAGE:	const_string
1365
    KEY (ISO)	"4.2" | "6.1.4"
1366
    KEY (STD)	"Conversion of string literal to non-'const' type"
1367
}
1368
 
1369
conv_array_str_mod ()
1370
{
1371
    USAGE:	const_string
1372
    KEY (STD)	"String literals are not modifiable"
1373
}
1374
 
1375
 
1376
/*  --------------------------------------------------------------------
1377
    4.3		Function-to-pointer conversion
1378
		[conv.func]
1379
    --------------------------------------------------------------------  */
1380
 
1381
 
1382
/*  --------------------------------------------------------------------
1383
    4.4		Qualification conversions
1384
		[conv.qual]
1385
    --------------------------------------------------------------------  */
1386
 
1387
conv_qual_cast ( CV_SPEC: cv )
1388
{
1389
    USAGE:	type_qual_incompat
1390
    KEY (ISO)	"4.4" | "6.3.16.1"
1391
    KEY (STD)	"Conversion casts away '"cv"'-ness"
1392
}
1393
 
1394
conv_qual_multi ()
1395
{
1396
    USAGE:	type_qual_incompat
1397
    KEY (STD)	"Multi-level qualification conversion should contain
1398
		 'const' at each level"
1399
}
1400
 
1401
 
1402
/*  --------------------------------------------------------------------
1403
    4.5		Integral promotions
1404
		[conv.prom]
1405
    --------------------------------------------------------------------  */
1406
 
1407
 
1408
/*  --------------------------------------------------------------------
1409
    4.6		Floating point promotion
1410
		[conv.fpprom]
1411
    --------------------------------------------------------------------  */
1412
 
1413
 
1414
/*  --------------------------------------------------------------------
1415
    4.7		Integral conversions
1416
		[conv.integral]
1417
    --------------------------------------------------------------------  */
1418
 
1419
conv_integral_cast ( TYPE: t1, TYPE: t2 )
1420
{
1421
    USAGE:	whatever
1422
    KEY (ISO)	"4.7" | "6.2.1"
1423
    KEY (STD)	"Integral conversion from '"t1"' to '"t2"'"
1424
}
1425
 
1426
 
1427
/*  --------------------------------------------------------------------
1428
    4.8		Floating point conversions
1429
		[conv.double]
1430
    --------------------------------------------------------------------  */
1431
 
1432
conv_double_cast ( TYPE: t1, TYPE: t2 )
1433
{
1434
    USAGE:	whatever
1435
    KEY (ISO)	"4.8" | "6.2.1"
1436
    KEY (STD)	"Floating point conversion from '"t1"' to '"t2"'"
1437
}
1438
 
1439
 
1440
/*  --------------------------------------------------------------------
1441
    4.9		Floating-integral conversions
1442
		[conv.fpint]
1443
    --------------------------------------------------------------------  */
1444
 
1445
conv_fpint_trunc ( TYPE: t1, TYPE: t2 )
1446
{
1447
    USAGE:	whatever
1448
    KEY (ISO)	"4.9" | "6.2.1"
1449
    KEY (STD)	"Floating point truncation from '"t1"' to '"t2"'"
1450
}
1451
 
1452
conv_fpint_float ( TYPE: t1, TYPE: t2 )
1453
{
1454
    USAGE:	whatever
1455
    KEY (STD)	"Integer to floating point conversion from '"t1"' to '"t2"'"
1456
}
1457
 
1458
conv_fpint_large ( FLOAT: f )
1459
{
1460
    USAGE:	int_overflow
1461
    KEY (STD)	"Integer overflow in truncation of '"f"'"
1462
}
1463
 
1464
 
1465
/*  --------------------------------------------------------------------
1466
    4.10	Pointer conversions
1467
		[conv.ptr]
1468
    --------------------------------------------------------------------  */
1469
 
1470
conv_ptr_null_complex ()
1471
{
1472
    USAGE:	ptr_operator
1473
    KEY (ISO)	"4.10" | "6.2.2.3"
1474
    KEY (STD)	"Complex null pointer constant"
1475
}
1476
 
1477
conv_ptr_nonzero ( TYPE: t1, TYPE: t2 )
1478
{
1479
    KEY (ISO)	"4.10" | "6.3.4"
1480
    KEY (STD)	"Conversion of nonzero value of type '"t1"' to type '"t2"'"
1481
}
1482
 
1483
conv_ptr_cast ( TYPE: t1, TYPE: t2 )
1484
{
1485
    KEY (STD)	"Pointer conversion from '"t1"' to '"t2"'"
1486
}
1487
 
1488
conv_ptr_incompat ()
1489
{
1490
    USAGE:	whatever
1491
    KEY (STD)	"Types in pointer conversion should be compatible"
1492
}
1493
 
1494
conv_ptr_ambiguous ()
1495
{
1496
    KEY (STD)	"Base class in pointer conversion must be unambiguous"
1497
}
1498
 
1499
conv_ptr_access ()
1500
{
1501
    KEY (STD)	"Accessible base required in base class conversion"
1502
}
1503
 
1504
conv_ptr_common ()
1505
{
1506
    USAGE:	whatever
1507
    KEY (STD)	"Can't bring incompatible types to a common pointer type"
1508
}
1509
 
1510
conv_ptr_gen ( TYPE: t )
1511
{
1512
    USAGE:	gen_ptr_char
1513
    KEY (STD)	"Type '"t"' used as generic pointer type"
1514
}
1515
 
1516
 
1517
/*  --------------------------------------------------------------------
1518
    4.11	Pointer to member conversions
1519
		[conv.mem]
1520
    --------------------------------------------------------------------  */
1521
 
1522
conv_mem_nonzero ( TYPE: t1, TYPE: t2 )
1523
{
1524
    KEY (ISO)	"4.11" | "????"
1525
    KEY (STD)	"Conversion of nonzero value of type '"t1"' to type '"t2"'"
1526
}
1527
 
1528
conv_mem_cast ( TYPE: t1, TYPE: t2 )
1529
{
1530
    KEY (STD)	"Pointer to member conversion from '"t1"' to '"t2"'"
1531
}
1532
 
1533
conv_mem_ambiguous ()
1534
{
1535
    KEY (STD)	"Base class in pointer to member conversion must
1536
		 be unambiguous"
1537
}
1538
 
1539
conv_mem_virtual ()
1540
{
1541
    KEY (STD)	"Base class in pointer to member conversion can't be virtual"
1542
}
1543
 
1544
conv_mem_common ()
1545
{
1546
    USAGE:	whatever
1547
    KEY (STD)	"Can't bring incompatible types to a common pointer to
1548
		 member type"
1549
}
1550
 
1551
 
1552
/*  --------------------------------------------------------------------
1553
    4.12	Boolean conversions
1554
		[conv.bool]
1555
    --------------------------------------------------------------------  */
1556
 
1557
conv_bool_cast ( TYPE: t )
1558
{
1559
    KEY (ISO)	"4.12" | "6.3"
1560
    KEY (STD)	"Can't convert expression of type '"t"' to a boolean"
1561
}
1562
 
1563
conv_bool_assign ()
1564
{
1565
    USAGE:	bool_assign
1566
    KEY (STD)	"Assignment in boolean value"
1567
}
1568
 
1569
 
1570
/*  --------------------------------------------------------------------
1571
    5		Expressions
1572
		[expr]
1573
    --------------------------------------------------------------------  */
1574
 
1575
expr_paren_left ( LEX: op1, LEX: op2 )
1576
{
1577
    USAGE:	paren
1578
    KEY (ISO)	"5" | "6.3"
1579
    KEY (STD)	"Operator precedence is '( a "op1" b ) "op2" c'"
1580
}
1581
 
1582
expr_paren_right ( LEX: op1, LEX: op2 )
1583
{
1584
    USAGE:	paren
1585
    KEY (STD)	"Operator precedence is 'a "op1" ( b "op2" c )'"
1586
}
1587
 
1588
expr_convert_op ( unsigned: n, LEX: op )
1589
{
1590
    USAGE:	whatever
1591
    KEY (STD)	"Conversion of operand "n" in operation '"op"'"
1592
}
1593
 
1594
 
1595
/*  --------------------------------------------------------------------
1596
    5.1		Primary expressions
1597
		[expr.prim]
1598
    --------------------------------------------------------------------  */
1599
 
1600
expr_prim_this ()
1601
{
1602
    KEY (ISO)	"5.1" | "6.3.1"
1603
    KEY (STD)	"'this' is only in scope in non-static member functions"
1604
}
1605
 
1606
expr_prim_mem ( LONG_ID: id )
1607
{
1608
    KEY (STD)	"Can't use non-static member '"id"' in this context"
1609
}
1610
 
1611
expr_prim_type ( LONG_ID: id )
1612
{
1613
    KEY (STD)	"'"id"' denotes a type, not an expression"
1614
}
1615
 
1616
 
1617
/*  --------------------------------------------------------------------
1618
    5.2		Postfix expressions
1619
		[expr.post]
1620
    --------------------------------------------------------------------  */
1621
 
1622
 
1623
/*  --------------------------------------------------------------------
1624
    5.2.1	Subscripting
1625
		[expr.sub]
1626
    --------------------------------------------------------------------  */
1627
 
1628
expr_sub_ptr_op ( TYPE: t1, TYPE: t2 )
1629
{
1630
    KEY (ISO)	"5.2.1" | "6.3.2.1"
1631
    KEY (STD)	"One operand of '[]' should have pointer type, not
1632
		 '"t1"' and '"t2"'"
1633
}
1634
 
1635
expr_sub_int_op ( TYPE: t )
1636
{
1637
    KEY (STD)	"Non-pointer operand of '[]' should have integral type,
1638
		 not '"t"'"
1639
}
1640
 
1641
expr_sub_char_op ( TYPE: t )
1642
{
1643
    USAGE:	ptr_operator
1644
    KEY (STD)	"Non-pointer operand of '[]' has type '"t"'"
1645
}
1646
 
1647
expr_sub_incompl ()
1648
{
1649
    KEY (STD)	"Pointer to complete object type expected in '[]'"
1650
}
1651
 
1652
 
1653
/*  --------------------------------------------------------------------
1654
    5.2.2	Function call
1655
		[expr.call]
1656
    --------------------------------------------------------------------  */
1657
 
1658
expr_call_func ( LONG_ID: id )
1659
{
1660
    USAGE:	whatever
1661
    KEY (ISO)	"5.2.2" | "6.3.2.2"
1662
    KEY (STD)	"In call of function '"id"'"
1663
}
1664
 
1665
expr_call_op ( TYPE: t )
1666
{
1667
    KEY (STD)	"Invalid function type, '"t"'"
1668
}
1669
 
1670
expr_call_ret ()
1671
{
1672
    KEY (STD)	"Function return type should be a complete object type
1673
		 or 'void'"
1674
}
1675
 
1676
expr_call_mem ( LONG_ID: id )
1677
{
1678
    KEY (STD)	"Non-static member function '"id"' should have an
1679
		 associated object"
1680
}
1681
 
1682
expr_call_undecl ( LONG_ID: id )
1683
{
1684
    USAGE:	func_impl
1685
    KEY (STD)	"Implicit declaration of function '"id"'"
1686
}
1687
 
1688
expr_call_arg ( unsigned: n )
1689
{
1690
    USAGE:	whatever
1691
    KEY (STD)	"Argument "n" is converted to parameter type"
1692
}
1693
 
1694
expr_call_ellipsis ( unsigned: n )
1695
{
1696
    USAGE:	whatever
1697
    KEY (STD)	"Argument "n" is converted to its promotion type"
1698
}
1699
 
1700
expr_call_weak_arg ( unsigned: n, PTR_LOC: loc )
1701
{
1702
    USAGE:	weak
1703
    KEY (STD)	"Incompatible type for argument "n" (see "loc")"
1704
}
1705
 
1706
expr_call_args_exact ( unsigned: n, plural: s, unsigned: m )
1707
{
1708
    KEY (STD)	"Function call has "n" argument"s", it should have "m
1709
}
1710
 
1711
expr_call_args_range ( unsigned: n, plural: s, unsigned: m1, unsigned: m2 )
1712
{
1713
    KEY (STD)	"Function call has "n" argument"s", it should have
1714
		 between "m1" and "m2
1715
}
1716
 
1717
expr_call_args_min ( unsigned: n, plural: s, unsigned: m )
1718
{
1719
    KEY (STD)	"Function call has "n" argument"s", it should have at
1720
		 least "m
1721
}
1722
 
1723
expr_call_struct ( TYPE: t )
1724
{
1725
    USAGE:	wall
1726
    KEY (STD)	"Argument of type '"t"' is passed as a data structure"
1727
}
1728
 
1729
expr_call_ell_func ()
1730
{
1731
    KEY (STD)	"Can only use '...' in function defined using '...'"
1732
}
1733
 
1734
expr_call_ell_exp ()
1735
{
1736
    USAGE:	ellipsis_ident
1737
    KEY (STD)	"'...' used as an expression"
1738
}
1739
 
1740
 
1741
/*  --------------------------------------------------------------------
1742
    5.2.3	Explicit type conversion (functional notation)
1743
		[expr.type.conv]
1744
    --------------------------------------------------------------------  */
1745
 
1746
expr_type_conv_incompl ()
1747
{
1748
    KEY (ISO)	"5.2.3" | "6.3.4"
1749
    KEY (STD)	"Complete object type required in type conversion"
1750
}
1751
 
1752
expr_type_conv_array ( TYPE: t )
1753
{
1754
    KEY (STD)	"Can't use array type '"t"' in function-style cast"
1755
}
1756
 
1757
expr_type_conv_bad ()
1758
{
1759
    USAGE:	whatever
1760
    KEY (STD)	"Can't perform this conversion using a function-style cast"
1761
}
1762
 
1763
expr_type_conv_many ( TYPE: t )
1764
{
1765
    KEY (STD)	"A function-style cast with more than one argument
1766
		 requires a class type, not '"t"'"
1767
}
1768
 
1769
 
1770
/*  --------------------------------------------------------------------
1771
    5.2.4	Pseudo-destructor call
1772
		[expr.pseudo]
1773
    --------------------------------------------------------------------  */
1774
 
1775
expr_pseudo_type ( TYPE: t1, TYPE: t2 )
1776
{
1777
    KEY (ISO)	"5.2.4" | "????"
1778
    KEY (STD)	"Type mismatch for pseudo-destructor '"t1"::~"t2"'"
1779
}
1780
 
1781
expr_pseudo_scalar ( TYPE: t )
1782
{
1783
    KEY (STD)	"Can only have pseudo-destructor for scalar types, not '"t"'"
1784
}
1785
 
1786
expr_pseudo_obj ( HASHID: nm, TYPE: t )
1787
{
1788
    KEY (STD)	"Pseudo-destructor '"nm"' applied to type '"t"'"
1789
}
1790
 
1791
expr_pseudo_args ( HASHID: nm )
1792
{
1793
    KEY (STD)	"Can't give arguments to pseudo-destructor '"nm"'"
1794
}
1795
 
1796
 
1797
/*  --------------------------------------------------------------------
1798
    5.2.5	Class member access
1799
		[expr.ref]
1800
    --------------------------------------------------------------------  */
1801
 
1802
expr_ref_arrow_op ( TYPE: t, string: key )
1803
{
1804
    KEY (ISO)	"5.2.5" | "6.3.2.3"
1805
    KEY (STD)	"First operand of '->' should have type pointer to "key",
1806
		 not '"t"'"
1807
}
1808
 
1809
expr_ref_dot_op ( TYPE: t, string: key )
1810
{
1811
    KEY (STD)	"First operand of '.' should have "key" type, not '"t"'"
1812
}
1813
 
1814
expr_ref_arrow_dot ( TYPE: t )
1815
{
1816
    KEY (STD)	"Should use '.' with operand of type '"t"', not '->'"
1817
}
1818
 
1819
expr_ref_dot_arrow ( TYPE: t )
1820
{
1821
    KEY (STD)	"Should use '->' with operand of type '"t"', not '.'"
1822
}
1823
 
1824
expr_ref_incompl ( LEX: op, BASE_TYPE: key )
1825
{
1826
    KEY (STD)	"The "key" associated with the operand of '"op"' should
1827
		 be complete"
1828
}
1829
 
1830
expr_ref_select ( LEX: op, string: key )
1831
{
1832
    KEY (STD)	"Second operand of '"op"' should be a member of the "key"
1833
		 given by the first operand"
1834
}
1835
 
1836
expr_ref_call ()
1837
{
1838
    KEY (STD)	"Can only use member function selector in function call"
1839
}
1840
 
1841
expr_ref_qual ( QUALIFIER: qual, IDENTIFIER: id )
1842
{
1843
    USAGE:	none
1844
    KEY (STD)	"Illegal member access specifier, '"qual id"'"
1845
}
1846
 
1847
expr_ref_func_type ( CLASS_TYPE: ct )
1848
{
1849
    KEY (STD)	"Member function called with unrelated class '"ct"'"
1850
}
1851
 
1852
expr_ref_type ( IDENTIFIER: id )
1853
{
1854
    KEY (STD)	"'"id"' denotes a type member"
1855
}
1856
 
1857
 
1858
/*  --------------------------------------------------------------------
1859
    5.2.6	Increment and decrement
1860
		[expr.post.incr]
1861
    --------------------------------------------------------------------  */
1862
 
1863
expr_post_incr_mod ( LEX: op )
1864
{
1865
    USAGE:	whatever
1866
    KEY (ISO)	"5.2.6" | "6.3.2.4"
1867
    KEY (STD)	"Operand of postfix '"op"' should be modifiable"
1868
}
1869
 
1870
expr_post_incr_op ( LEX: op, TYPE: t )
1871
{
1872
    KEY (STD)	"Operand of postfix '"op"' should have arithmetic or
1873
		 pointer type, not '"t"'"
1874
}
1875
 
1876
expr_post_incr_incompl ( LEX: op )
1877
{
1878
    KEY (STD)	"Pointer to complete object type expected in postfix
1879
		 '"op"' operation"
1880
}
1881
 
1882
expr_post_incr_bool_inc ( LEX: op, TYPE: t )
1883
{
1884
    USAGE:	int_operator
1885
    KEY (STD)	"Use of postfix '"op"' on type '"t"' is deprecated"
1886
}
1887
 
1888
expr_post_incr_bool_dec ( LEX: op, TYPE: t )
1889
{
1890
    KEY (STD)	"Postfix '"op"' can't be applied to type '"t"'"
1891
}
1892
 
1893
 
1894
/*  --------------------------------------------------------------------
1895
    5.2.7	Dynamic cast
1896
		[expr.dynamic.cast] = [expr.cast.dynam]
1897
    --------------------------------------------------------------------  */
1898
 
1899
expr_cast_dynam_typedef ()
1900
{
1901
    KEY (ISO)	"5.2.7" | "6.3.4"
1902
    KEY (STD)	"Can't define a type in a 'dynamic_cast' expression"
1903
}
1904
 
1905
expr_cast_dynam_bad ()
1906
{
1907
    USAGE:	whatever
1908
    KEY (STD)	"Can't perform this conversion using 'dynamic_cast'"
1909
}
1910
 
1911
expr_cast_dynam_type ( TYPE: t )
1912
{
1913
    KEY (STD)	"Pointer or reference to complete class expected in
1914
		 'dynamic_cast', not '"t"'"
1915
}
1916
 
1917
expr_cast_dynam_ptr ( TYPE: t )
1918
{
1919
    KEY (STD)	"Operand to 'dynamic_cast' should be a pointer to
1920
		 complete class, not '"t"'"
1921
}
1922
 
1923
expr_cast_dynam_ref ( TYPE: t )
1924
{
1925
    KEY (STD)	"Operand to 'dynamic_cast' should be an lvalue of
1926
		 complete class type, not '"t"'"
1927
}
1928
 
1929
expr_cast_dynam_poly ( CLASS_TYPE: ct )
1930
{
1931
    KEY (STD)	"Operand to 'dynamic_cast' should have polymorphic
1932
		 class, not '"ct"'"
1933
}
1934
 
1935
 
1936
/*  --------------------------------------------------------------------
1937
    5.2.8	Type identification
1938
		[expr.typeid]
1939
    --------------------------------------------------------------------  */
1940
 
1941
expr_typeid_index ( LEX: op )
1942
{
1943
    USAGE:	wall
1944
    KEY (ISO)	"5.2.8" | "????"
1945
    KEY (STD)	"Index in '"op"' expression is unevaluated"
1946
}
1947
 
1948
expr_typeid_side ( LEX: op )
1949
{
1950
    USAGE:	wall
1951
    KEY (STD)	"Side effects in unevaluated '"op"' expression"
1952
}
1953
 
1954
expr_typeid_typedef ( LEX: op )
1955
{
1956
    KEY (STD)	"Can't define a type in a '"op"' expression"
1957
}
1958
 
1959
expr_typeid_incompl ( LEX: op )
1960
{
1961
    KEY (STD)	"Can't have incomplete class in a '"op"' expression"
1962
}
1963
 
1964
expr_typeid_vtable ( LEX: op )
1965
{
1966
    KEY (STD)	"Can only apply '"op"' to polymorphic types"
1967
}
1968
 
1969
 
1970
/*  --------------------------------------------------------------------
1971
    5.2.9	Static cast
1972
		[expr.static.cast] = [expr.cast.stat]
1973
    --------------------------------------------------------------------  */
1974
 
1975
expr_cast_stat_typedef ()
1976
{
1977
    KEY (ISO)	"5.2.9" | "6.3.4"
1978
    KEY (STD)	"Can't define a type in a 'static_cast' expression"
1979
}
1980
 
1981
expr_cast_stat_bad ()
1982
{
1983
    USAGE:	whatever
1984
    KEY (STD)	"Can't perform this conversion using 'static_cast'"
1985
}
1986
 
1987
expr_cast_stat_int_enum ( TYPE: t1, TYPE: t2 )
1988
{
1989
    KEY (STD)	"Integer to enumeration conversion from '"t1"' to '"t2"'"
1990
}
1991
 
1992
expr_cast_stat_enum_enum ( TYPE: t1, TYPE: t2 )
1993
{
1994
    KEY (STD)	"Conversion between different enumeration types '"t1"'
1995
		 and '"t2"'"
1996
}
1997
 
1998
expr_cast_stat_virt ()
1999
{
2000
    KEY (STD)	"Base class in pointer up-cast can't be virtual"
2001
}
2002
 
2003
expr_cast_stat_func ( TYPE: t )
2004
{
2005
    KEY (STD)	"Can't cast to the function type '"t"'"
2006
}
2007
 
2008
 
2009
/*  --------------------------------------------------------------------
2010
    5.2.10	Reinterpret cast
2011
		[expr.reinterpret.cast] = [expr.cast.reint]
2012
    --------------------------------------------------------------------  */
2013
 
2014
expr_cast_reint_typedef ()
2015
{
2016
    KEY (ISO)	"5.2.10" | "6.3.4"
2017
    KEY (STD)	"Can't define a type in a 'reinterpret_cast' expression"
2018
}
2019
 
2020
expr_cast_reint_bad ()
2021
{
2022
    USAGE:	whatever
2023
    KEY (STD)	"Can't perform this conversion using 'reinterpret_cast'"
2024
}
2025
 
2026
expr_cast_reint_int_ptr ( TYPE: t1, TYPE: t2 )
2027
{
2028
    KEY (STD)	"Integer to pointer conversion from '"t1"' to '"t2"'"
2029
}
2030
 
2031
expr_cast_reint_ptr_int ( TYPE: t1, TYPE: t2 )
2032
{
2033
    KEY (STD)	"Pointer to integer conversion from '"t1"' to '"t2"'"
2034
}
2035
 
2036
expr_cast_reint_func_ptr ( TYPE: t1, TYPE: t2 )
2037
{
2038
    USAGE:	conv_ptr_func
2039
    KEY (STD)	"Can't convert function pointer '"t1"' to non-function
2040
		 pointer '"t2"'"
2041
}
2042
 
2043
expr_cast_reint_mem_func ( TYPE: t1, TYPE: t2 )
2044
{
2045
    KEY (STD)	"Pointer to member function '"t1"' converted to pointer
2046
		 to function '"t2"'"
2047
}
2048
 
2049
 
2050
/*  --------------------------------------------------------------------
2051
    5.2.11	Const cast
2052
		[expr.const.cast] = [expr.cast.const]
2053
    --------------------------------------------------------------------  */
2054
 
2055
expr_cast_const_typedef ()
2056
{
2057
    KEY (ISO)	"5.2.11" | "6.3.4"
2058
    KEY (STD)	"Can't define a type in a 'const_cast' expression"
2059
}
2060
 
2061
expr_cast_const_bad ()
2062
{
2063
    USAGE:	whatever
2064
    KEY (STD)	"Can't perform this conversion using 'const_cast'"
2065
}
2066
 
2067
 
2068
/*  --------------------------------------------------------------------
2069
    5.3		Unary expressions
2070
		[expr.unary]
2071
    --------------------------------------------------------------------  */
2072
 
2073
 
2074
/*  --------------------------------------------------------------------
2075
    5.3.1	Unary operators
2076
		[expr.unary.op]
2077
    --------------------------------------------------------------------  */
2078
 
2079
expr_unary_op_indir_op ( TYPE: t )
2080
{
2081
    KEY (ISO)	"5.3.1" | "6.3.3.2"
2082
    KEY (STD)	"Operand of unary '*' should have pointer type, not '"t"'"
2083
}
2084
 
2085
expr_unary_op_indir_void ( TYPE: t )
2086
{
2087
    USAGE:	none
2088
    KEY (STD)	"Can't apply unary '*' to a operand of type '"t"'"
2089
}
2090
 
2091
expr_unary_op_indir_null ( LEX: op )
2092
{
2093
    USAGE:	ptr_operator
2094
    KEY (STD)	"'"op"' is undefined on null pointers"
2095
}
2096
 
2097
expr_unary_op_ref_lvalue ()
2098
{
2099
    KEY (STD)	"Operand of unary '&' should be an lvalue"
2100
}
2101
 
2102
expr_unary_op_ref_void ( TYPE: t )
2103
{
2104
    KEY (STD)	"Can't apply unary '&' to a operand of type '"t"'"
2105
}
2106
 
2107
expr_unary_op_ref_incompl ()
2108
{
2109
    USAGE:	none
2110
    KEY (STD)	"Operand of unary '&' can't be incomplete"
2111
}
2112
 
2113
expr_unary_op_ref_post ( IDENTIFIER: id )
2114
{
2115
    USAGE:	wall
2116
    KEY (STD)	"Function '"id"' declared in class previously taken address
2117
		 of as incomplete type"
2118
}
2119
 
2120
expr_unary_op_ref_bitf ()
2121
{
2122
    KEY (STD)	"Operand of unary '&' can't be a bitfield"
2123
}
2124
 
2125
expr_unary_op_ref_register ( IDENTIFIER: id )
2126
{
2127
    USAGE:	addr_register
2128
    KEY (STD)	"Can't take the address of the 'register' variable '"id"'"
2129
}
2130
 
2131
expr_unary_op_ref_paren ()
2132
{
2133
    KEY (STD)	"Member operand to unary '&' can't be parenthesized"
2134
}
2135
 
2136
expr_unary_op_ref_full ()
2137
{
2138
    USAGE:	none
2139
    KEY (STD)	"Member operand to unary '&' can't be a fully qualified
2140
		 identifier"
2141
}
2142
 
2143
expr_unary_op_ref_unqual ()
2144
{
2145
    KEY (STD)	"Member operand to unary '&' must be a qualified identifier"
2146
}
2147
 
2148
expr_unary_op_uplus_op ( LEX: op, TYPE: t )
2149
{
2150
    KEY (ISO)	"5.3.1" | "6.3.3.3"
2151
    KEY (STD)	"Operand of unary '"op"' should have arithmetic or pointer
2152
		 type, not '"t"'"
2153
}
2154
 
2155
expr_unary_op_uminus_op ( LEX: op, TYPE: t )
2156
{
2157
    KEY (STD)	"Operand of unary '"op"' should have arithmetic type,
2158
		 not '"t"'"
2159
}
2160
 
2161
expr_unary_op_compl_op ( LEX: op, TYPE: t )
2162
{
2163
    KEY (STD)	"Operand of '"op"' should have integral type, not '"t"'"
2164
}
2165
 
2166
expr_unary_op_not_op ()
2167
{
2168
    USAGE:	whatever
2169
    KEY (STD)	"Operand of '!' is converted to a boolean"
2170
}
2171
 
2172
 
2173
/*  --------------------------------------------------------------------
2174
    5.3.2	Increment and decrement
2175
		[expr.pre.incr]
2176
    --------------------------------------------------------------------  */
2177
 
2178
expr_pre_incr_mod ( LEX: op )
2179
{
2180
    USAGE:	whatever
2181
    KEY (ISO)	"5.3.2" | "6.3.3.1"
2182
    KEY (STD)	"Operand of prefix '"op"' should be modifiable"
2183
}
2184
 
2185
expr_pre_incr_op ( LEX: op, TYPE: t )
2186
{
2187
    KEY (STD)	"Operand of prefix '"op"' should have arithmetic or
2188
		 pointer type, not '"t"'"
2189
}
2190
 
2191
expr_pre_incr_incompl ( LEX: op )
2192
{
2193
    KEY (STD)	"Pointer to complete object type expected in prefix
2194
		 '"op"' operation"
2195
}
2196
 
2197
expr_pre_incr_bool_inc ( LEX: op, TYPE: t )
2198
{
2199
    USAGE:	int_operator
2200
    KEY (STD)	"Use of prefix '"op"' on type '"t"' is deprecated"
2201
}
2202
 
2203
expr_pre_incr_bool_dec ( LEX: op, TYPE: t )
2204
{
2205
    KEY (STD)	"Postfix '"op"' can't be applied to type '"t"'"
2206
}
2207
 
2208
 
2209
/*  --------------------------------------------------------------------
2210
    5.3.3	Sizeof
2211
		[expr.sizeof]
2212
    --------------------------------------------------------------------  */
2213
 
2214
expr_sizeof_func ( LEX: op )
2215
{
2216
    KEY (ISO)	"5.3.3" | "6.3.3.4"
2217
    KEY (STD)	"Can't apply '"op"' to a function type"
2218
}
2219
 
2220
expr_sizeof_bitf ( LEX: op )
2221
{
2222
    KEY (STD)	"Can't apply '"op"' to a bitfield type"
2223
}
2224
 
2225
expr_sizeof_incompl ( LEX: op )
2226
{
2227
    KEY (STD)	"Can't apply '"op"' to an incomplete type"
2228
}
2229
 
2230
expr_sizeof_typedef ( LEX: op )
2231
{
2232
    USAGE:	cpp_error
2233
    KEY (STD)	"Can't define a type in a '"op"' expression"
2234
}
2235
 
2236
expr_sizeof_side ( LEX: op )
2237
{
2238
    USAGE:	wall
2239
    KEY (STD)	"Side effects in unevaluated '"op"' expression"
2240
}
2241
 
2242
 
2243
/*  --------------------------------------------------------------------
2244
    5.3.4	New
2245
		[expr.new]
2246
    --------------------------------------------------------------------  */
2247
 
2248
expr_new_typedef ()
2249
{
2250
    KEY (ISO)	"5.3.4" | "????"
2251
    KEY (STD)	"Can't declare types in a 'new' expression"
2252
}
2253
 
2254
expr_new_incompl ()
2255
{
2256
    KEY (STD)	"Type in 'new' expression should be a complete object type"
2257
}
2258
 
2259
expr_new_abstract ()
2260
{
2261
    KEY (STD)	"Type in 'new' expression can't be abstract"
2262
}
2263
 
2264
expr_new_dim ( TYPE: t )
2265
{
2266
    KEY (STD)	"Array bound in 'new' expression should have integral
2267
		 type, not '"t"'"
2268
}
2269
 
2270
expr_new_init ( LEX: op )
2271
{
2272
    USAGE:	whatever
2273
    KEY (STD)	"In '"op"' expression initializer"
2274
}
2275
 
2276
expr_new_array_init ( LEX: op )
2277
{
2278
    KEY (STD)	"Can't have an initializer in '"op"' expression"
2279
}
2280
 
2281
 
2282
/*  --------------------------------------------------------------------
2283
    5.3.5	Delete
2284
		[expr.delete]
2285
    --------------------------------------------------------------------  */
2286
 
2287
expr_delete_ptr ( LEX: op, TYPE: t )
2288
{
2289
    KEY (ISO)	"5.3.5" | "????"
2290
    KEY (STD)	"Operand of '"op"' expression should have pointer type,
2291
		 not '"t"'"
2292
}
2293
 
2294
expr_delete_conv ( LEX: op )
2295
{
2296
    USAGE:	whatever
2297
    KEY (STD)	"Operand of '"op"' expression is converted to a pointer type"
2298
}
2299
 
2300
expr_delete_void ( LEX: op, TYPE: t )
2301
{
2302
    USAGE:	wall
2303
    KEY (STD)	"Operand of '"op"' expression can't have type '"t"'"
2304
}
2305
 
2306
expr_delete_obj ( LEX: op )
2307
{
2308
    KEY (STD)	"Pointer in '"op"' expression should be to an object type"
2309
}
2310
 
2311
expr_delete_incompl ( LEX: op )
2312
{
2313
    USAGE:	wall
2314
    KEY (STD)	"Pointer in '"op"' expression should be to a complete type"
2315
}
2316
 
2317
expr_delete_post ( IDENTIFIER: id )
2318
{
2319
    USAGE:	wall
2320
    KEY (STD)	"Function '"id"' declared in class deleted through
2321
		 pointer to incomplete type"
2322
}
2323
 
2324
expr_delete_const ( CV_SPEC: cv )
2325
{
2326
    USAGE:	none
2327
    KEY (STD)	"Can't delete a '"cv"' object"
2328
}
2329
 
2330
expr_delete_array ( LEX: op )
2331
{
2332
    KEY (STD)	"The array bound in '"op"' is anachronistic"
2333
}
2334
 
2335
 
2336
/*  --------------------------------------------------------------------
2337
    5.4		Explicit type conversion (cast notation)
2338
		[expr.cast]
2339
    --------------------------------------------------------------------  */
2340
 
2341
expr_cast_expl_used ()
2342
{
2343
    USAGE:	cast_explicit
2344
    KEY (ISO)	"5.4" | "6.3.4"
2345
    KEY (STD)	"Explicit cast expression"
2346
}
2347
 
2348
expr_cast_expl_typedef ()
2349
{
2350
    USAGE:	cpp_error
2351
    KEY (STD)	"Can't define a type in a cast expression"
2352
}
2353
 
2354
expr_cast_expl_scalar ( TYPE: t )
2355
{
2356
    USAGE:	c_error
2357
    KEY (STD)	"Can't cast to the non-scalar type '"t"'"
2358
}
2359
 
2360
expr_cast_invalid ( TYPE: t1, TYPE: t2 )
2361
{
2362
    KEY (STD)	"Illegal conversion from type '"t1"' to type '"t2"'"
2363
}
2364
 
2365
expr_cast_expl_bad ()
2366
{
2367
    USAGE:	whatever
2368
    KEY (STD)	"Can't perform this conversion using an explicit cast"
2369
}
2370
 
2371
expr_cast_ref ( TYPE: t1, TYPE: t2 )
2372
{
2373
    USAGE:	whatever
2374
    KEY (STD)	"'cast < "t1" > ( a )' is equivalent to
2375
		 '*cast < "t2" > ( &a )'"
2376
}
2377
 
2378
 
2379
/*  --------------------------------------------------------------------
2380
    5.5		Pointer-to-member operators
2381
		[expr.mptr.oper]
2382
    --------------------------------------------------------------------  */
2383
 
2384
expr_mptr_oper_arrow_op ( LONG_ID: id, TYPE: t )
2385
{
2386
    KEY (ISO)	"5.5" | "????"
2387
    KEY (STD)	"First operand of '->*' should have type pointer to
2388
		 '"id"', not '"t"'"
2389
}
2390
 
2391
expr_mptr_oper_dot_op ( LONG_ID: id, TYPE: t )
2392
{
2393
    KEY (STD)	"First operand of '.*' should have type '"id"', not '"t"'"
2394
}
2395
 
2396
expr_mptr_oper_arrow_dot ( TYPE: t )
2397
{
2398
    KEY (STD)	"Should use '.*' with operand of type '"t"', not '->*'"
2399
}
2400
 
2401
expr_mptr_oper_dot_arrow ( TYPE: t )
2402
{
2403
    KEY (STD)	"Should use '->*' with operand of type '"t"', not '.*'"
2404
}
2405
 
2406
expr_mptr_oper_op2 ( LEX: op, TYPE: t )
2407
{
2408
    KEY (STD)	"Second operand of '"op"' should have pointer to member
2409
		 type, not '"t"'"
2410
}
2411
 
2412
expr_mptr_oper_compl ( LEX: op )
2413
{
2414
    KEY (STD)	"Class in '"op"' should be complete"
2415
}
2416
 
2417
expr_mptr_oper_ambig ( LEX: op )
2418
{
2419
    KEY (STD)	"Base class conversion in '"op"' must be unambiguous"
2420
}
2421
 
2422
expr_mptr_oper_call ()
2423
{
2424
    KEY (STD)	"Can only use function member selector in a function call"
2425
}
2426
 
2427
expr_mptr_oper_null ( LEX: op )
2428
{
2429
    USAGE:	ptr_operator
2430
    KEY (STD)	"'"op"' is undefined on null pointer to members"
2431
}
2432
 
2433
expr_mptr_oper_paren ()
2434
{
2435
    USAGE:	whatever
2436
    KEY (STD)	"Possible precedence error involving '.*' or '->*'"
2437
}
2438
 
2439
 
2440
/*  --------------------------------------------------------------------
2441
    5.6		Multiplicative operators
2442
		[expr.mul]
2443
    --------------------------------------------------------------------  */
2444
 
2445
expr_mul_mul_op ( LEX: op, TYPE: t1, TYPE: t2 )
2446
{
2447
    KEY (ISO)	"5.6" | "6.3.5"
2448
    KEY (STD)	"Operands of binary '"op"' should be arithmetic, not
2449
		 '"t1"' and '"t2"'"
2450
}
2451
 
2452
expr_mul_rem_op ( LEX: op, TYPE: t1, TYPE: t2 )
2453
{
2454
    KEY (STD)	"Operands of '"op"' should be integral, not '"t1"' and '"t2"'"
2455
}
2456
 
2457
expr_mul_div_zero ( LEX: op )
2458
{
2459
    USAGE:	int_overflow
2460
    KEY (STD)	"Division operation '"op"' with zero divisor is undefined"
2461
}
2462
 
2463
expr_mul_div_neg ( LEX: op, NAT: n )
2464
{
2465
    USAGE:	int_operator
2466
    KEY (STD)	"Division operation '"op"' involving negative operand
2467
		 '"n"' is implementation dependent"
2468
}
2469
 
2470
 
2471
/*  --------------------------------------------------------------------
2472
    5.7		Additive operators
2473
		[expr.add]
2474
    --------------------------------------------------------------------  */
2475
 
2476
expr_add_op ( LEX: op, TYPE: t1, TYPE: t2 )
2477
{
2478
    KEY (ISO)	"5.7" | "6.3.6"
2479
    KEY (STD)	"Can't perform binary '"op"' on operands of types '"t1"'
2480
		 and '"t2"'"
2481
}
2482
 
2483
expr_add_incompl ( LEX: op )
2484
{
2485
    KEY (STD)	"Pointer to complete object type expected in binary '"op"'"
2486
}
2487
 
2488
expr_add_ptrdiff ()
2489
{
2490
    USAGE:	whatever
2491
    KEY (STD)	"Pointers in '-' should be to compatible types"
2492
}
2493
 
2494
expr_add_array ( NAT: n, TYPE: t, LEX: op )
2495
{
2496
    USAGE:	ptr_operator
2497
    KEY (STD)	"Can't address element '"n"' of array of type '"t"'
2498
		 using '"op"'"
2499
}
2500
 
2501
expr_add_different ()
2502
{
2503
    USAGE:	ptr_operator
2504
    KEY (STD)	"Pointers in '-' should be to elements of the same array"
2505
}
2506
 
2507
 
2508
/*  --------------------------------------------------------------------
2509
    5.8		Shift operators
2510
		[expr.shift]
2511
    --------------------------------------------------------------------  */
2512
 
2513
expr_shift_op ( LEX: op, TYPE: t1, TYPE: t2 )
2514
{
2515
    KEY (ISO)	"5.8" | "6.3.7"
2516
    KEY (STD)	"Operands of '"op"' should be integral, not '"t1"' and '"t2"'"
2517
}
2518
 
2519
expr_shift_op1_sign ( LEX: op )
2520
{
2521
    USAGE:	int_operator
2522
    KEY (STD)	"Shift operation '"op"' with signed first operand is
2523
		 implementation dependent"
2524
}
2525
 
2526
expr_shift_op1_neg ( LEX: op, NAT: n )
2527
{
2528
    USAGE:	int_operator
2529
    KEY (STD)	"Shift operation '"op"' with negative first operand '"n"'
2530
		 is implementation dependent"
2531
}
2532
 
2533
expr_shift_op2_neg ( LEX: op, NAT: n )
2534
{
2535
    USAGE:	int_operator
2536
    KEY (STD)	"Shift operation '"op"' with negative second operand '"n"'
2537
		 is undefined"
2538
}
2539
 
2540
expr_shift_op2_big ( LEX: op, NAT: n, TYPE: t )
2541
{
2542
    USAGE:	int_operator
2543
    KEY (STD)	"Shift operation '"op"' second operand '"n"' exceeds
2544
		 the minimum size of first operand type, '"t"'"
2545
}
2546
 
2547
 
2548
/*  --------------------------------------------------------------------
2549
    5.9		Relational operators
2550
		[expr.rel]
2551
    --------------------------------------------------------------------  */
2552
 
2553
expr_rel_op ( LEX: op, TYPE: t1, TYPE: t2 )
2554
{
2555
    KEY (ISO)	"5.9" | "6.3.8"
2556
    KEY (STD)	"Can't perform '"op"' on operands of types '"t1"' and '"t2"'"
2557
}
2558
 
2559
expr_rel_nonzero ( LEX: op, TYPE: t1, TYPE: t2 )
2560
{
2561
    KEY (STD)	"Can't perform '"op"' on an operand of type '"t1"' and a
2562
		 nonzero value of type '"t2"'"
2563
}
2564
 
2565
expr_rel_ptr ( LEX: op )
2566
{
2567
    USAGE:	whatever
2568
    KEY (STD)	"Pointer operands of '"op"' are converted to a common type"
2569
}
2570
 
2571
expr_rel_ptr_void ( LEX: op, TYPE: t1, TYPE: t2 )
2572
{
2573
    USAGE:	ptr_operator | error
2574
    KEY (STD)	"Comparison '"op"' performed on operands of types '"t1"'
2575
		 and '"t2"'"
2576
}
2577
 
2578
expr_rel_paren ( LEX: op1, LEX: op2 )
2579
{
2580
    USAGE:	paren
2581
    KEY (STD)	"Expressions like 'a "op1" b "op2" c' do not have their
2582
		 mathematical meaning"
2583
}
2584
 
2585
expr_rel_true ()
2586
{
2587
    USAGE:	int_operator
2588
    KEY (STD)	"The relation 'a >= 0' is always true for unsigned
2589
		 comparisons"
2590
}
2591
 
2592
expr_rel_false ()
2593
{
2594
    USAGE:	int_operator
2595
    KEY (STD)	"The relation 'a < 0' is always false for unsigned
2596
		 comparisons"
2597
}
2598
 
2599
expr_rel_null ( LEX: op )
2600
{
2601
    USAGE:	ptr_operator | error
2602
    KEY (STD)	"Can't have null pointer operand to '"op"'"
2603
}
2604
 
2605
 
2606
/*  --------------------------------------------------------------------
2607
    5.10	Equality operators
2608
		[expr.eq]
2609
    --------------------------------------------------------------------  */
2610
 
2611
expr_eq_op ( LEX: op, TYPE: t1, TYPE: t2 )
2612
{
2613
    KEY (ISO)	"5.10" | "6.3.9"
2614
    KEY (STD)	"Can't perform '"op"' on operands of types '"t1"' and '"t2"'"
2615
}
2616
 
2617
expr_eq_nonzero ( LEX: op, TYPE: t1, TYPE: t2 )
2618
{
2619
    KEY (STD)	"Can't perform '"op"' on an operand of type '"t1"' and
2620
		 a nonzero value of type '"t2"'"
2621
}
2622
 
2623
expr_eq_ptr ( LEX: op )
2624
{
2625
    USAGE:	whatever
2626
    KEY (STD)	"Pointer operands of '"op"' are converted to a common type"
2627
}
2628
 
2629
expr_eq_mptr ( LEX: op )
2630
{
2631
    USAGE:	whatever
2632
    KEY (STD)	"Pointer to member operands of '"op"' are converted to a
2633
		 common type"
2634
}
2635
 
2636
expr_eq_float ( LEX: op )
2637
{
2638
    USAGE:	int_operator
2639
    KEY (STD)	"Floating point '"op"' operation"
2640
}
2641
 
2642
 
2643
/*  --------------------------------------------------------------------
2644
    5.11	Bitwise AND operator
2645
		[expr.bit.and]
2646
    --------------------------------------------------------------------  */
2647
 
2648
expr_bit_and_op ( LEX: op, TYPE: t1, TYPE: t2 )
2649
{
2650
    KEY (ISO)	"5.11" | "6.3.10"
2651
    KEY (STD)	"Operands of binary '"op"' should be integral, not
2652
		 '"t1"' and '"t2"'"
2653
}
2654
 
2655
 
2656
/*  --------------------------------------------------------------------
2657
    5.12	Bitwise exclusive OR operator
2658
		[expr.xor]
2659
    --------------------------------------------------------------------  */
2660
 
2661
expr_xor_op ( LEX: op, TYPE: t1, TYPE: t2 )
2662
{
2663
    KEY (ISO)	"5.12" | "6.3.11"
2664
    KEY (STD)	"Operands of '"op"' should be integral, not '"t1"'
2665
		 and '"t2"'"
2666
}
2667
 
2668
 
2669
/*  --------------------------------------------------------------------
2670
    5.13	Bitwise inclusive OR operator
2671
		[expr.or]
2672
    --------------------------------------------------------------------  */
2673
 
2674
expr_or_op ( LEX: op, TYPE: t1, TYPE: t2 )
2675
{
2676
    KEY (ISO)	"5.13" | "6.3.12"
2677
    KEY (STD)	"Operands of '"op"' should be integral, not '"t1"'
2678
		 and '"t2"'"
2679
}
2680
 
2681
 
2682
/*  --------------------------------------------------------------------
2683
    5.14	Logical AND operator
2684
		[expr.log.and]
2685
    --------------------------------------------------------------------  */
2686
 
2687
expr_log_and_op ( LEX: op )
2688
{
2689
    USAGE:	whatever
2690
    KEY (ISO)	"5.14" | "6.3.13"
2691
    KEY (STD)	"Operands of '"op"' are converted to booleans"
2692
}
2693
 
2694
 
2695
/*  --------------------------------------------------------------------
2696
    5.15	Logical OR operator
2697
		[expr.log.or]
2698
    --------------------------------------------------------------------  */
2699
 
2700
expr_log_or_op ( LEX: op )
2701
{
2702
    USAGE:	whatever
2703
    KEY (ISO)	"5.15" | "6.3.14"
2704
    KEY (STD)	"Operands of '"op"' are converted to booleans"
2705
}
2706
 
2707
 
2708
/*  --------------------------------------------------------------------
2709
    5.16	Conditional operator
2710
		[expr.cond]
2711
    --------------------------------------------------------------------  */
2712
 
2713
expr_cond_bool ()
2714
{
2715
    USAGE:	whatever
2716
    KEY (ISO)	"5.16" | "6.3.15"
2717
    KEY (STD)	"The condition of '?:' is converted to a boolean"
2718
}
2719
 
2720
expr_cond_const ()
2721
{
2722
    USAGE:	const_cond
2723
    KEY (STD)	"Constant condition in '?:' expression"
2724
}
2725
 
2726
expr_cond_op ( TYPE: t1, TYPE: t2 )
2727
{
2728
    KEY (STD)	"Can't perform '?:' on operands of types '"t1"' and '"t2"'"
2729
}
2730
 
2731
expr_cond_qual ( TYPE: t1, TYPE: t2 )
2732
{
2733
    USAGE:	none
2734
    KEY (STD)	"Qualifier mismatch for operands of types '"t1"' and
2735
		 '"t2"' in '?:'"
2736
}
2737
 
2738
expr_cond_nonzero ( TYPE: t1, TYPE: t2 )
2739
{
2740
    KEY (STD)	"Can't perform '?:' on an operand of type '"t1"' and a
2741
		 nonzero value of type '"t2"'"
2742
}
2743
 
2744
expr_cond_ptr ()
2745
{
2746
    USAGE:	whatever
2747
    KEY (STD)	"Pointer operands of '?:' are converted to a common type"
2748
}
2749
 
2750
expr_cond_mptr ()
2751
{
2752
    USAGE:	whatever
2753
    KEY (STD)	"Pointer to member operands of '?:' are converted
2754
		 to a common type"
2755
}
2756
 
2757
 
2758
/*  --------------------------------------------------------------------
2759
    5.17	Assignment operators
2760
		[expr.ass]
2761
    --------------------------------------------------------------------  */
2762
 
2763
expr_ass_mod ( LEX: op )
2764
{
2765
    USAGE:	whatever
2766
    KEY (ISO)	"5.17" | "6.3.16"
2767
    KEY (STD)	"Left operand of '"op"' should be modifiable"
2768
}
2769
 
2770
expr_ass_op ( LEX: op, TYPE: t1, TYPE: t2 )
2771
{
2772
    KEY (STD)	"Can't perform '"op"' on operands of types '"t1"' and '"t2"'"
2773
}
2774
 
2775
expr_ass_incompl ( LEX: op )
2776
{
2777
    KEY (STD)	"Pointer to complete object type expected in '"op"'"
2778
}
2779
 
2780
expr_ass_conv ()
2781
{
2782
    USAGE:	whatever
2783
    KEY (STD)	"Can't perform this conversion by assignment"
2784
}
2785
 
2786
expr_ass_twice ( IDENTIFIER: id )
2787
{
2788
    USAGE:	variable
2789
    KEY (STD)	"Variable '"id"' modified twice in expression"
2790
}
2791
 
2792
 
2793
/*  --------------------------------------------------------------------
2794
    5.18	Comma operator
2795
		[expr.comma]
2796
    --------------------------------------------------------------------  */
2797
 
2798
 
2799
/*  --------------------------------------------------------------------
2800
    5.19	Constant expressions
2801
		[expr.const]
2802
    --------------------------------------------------------------------  */
2803
 
2804
expr_const_bad ()
2805
{
2806
    USAGE:	whatever
2807
    KEY (ISO)	"5.19" | "6.4"
2808
    KEY (STD)	"Illegal integer constant expression"
2809
}
2810
 
2811
expr_const_int ( TYPE: t )
2812
{
2813
    USAGE:	whatever
2814
    KEY (STD)	"Constant expression should have integral type, not '"t"'"
2815
}
2816
 
2817
expr_const_off_mem ( LONG_ID: id )
2818
{
2819
    KEY (STD)	"Member '"id"' doesn't designate a constant offset"
2820
}
2821
 
2822
expr_const_off_array ( TYPE: t )
2823
{
2824
    KEY (STD)	"Array type required in constant offset, not '"t"'"
2825
}
2826
 
2827
expr_const_off_dim ()
2828
{
2829
    KEY (STD)	"Constant index required in constant offset"
2830
}
2831
 
2832
 
2833
/*  --------------------------------------------------------------------
2834
    6		Statements
2835
		[stmt.stmt]
2836
    --------------------------------------------------------------------  */
2837
 
2838
stmt_stmt_unreach ()
2839
{
2840
    USAGE:	reached
2841
    KEY (ISO)	"6" | "6.6"
2842
    KEY (STD)	"Statement not reached"
2843
}
2844
 
2845
stmt_stmt_empty ( LEX: op )
2846
{
2847
    USAGE:	empty_body
2848
    KEY (STD)	"Empty body in '"op"' statement"
2849
}
2850
 
2851
 
2852
/*  --------------------------------------------------------------------
2853
    6.1		Labeled statement
2854
		[stmt.label]
2855
    --------------------------------------------------------------------  */
2856
 
2857
stmt_label_redef ( IDENTIFIER: lab, LONG_ID: fn, PTR_LOC: loc )
2858
{
2859
    KEY (ISO)	"6.1" | "6.6.1"
2860
    KEY (STD)	"Label '"lab"' already defined in function '"fn"' (at "loc")"
2861
}
2862
 
2863
stmt_label_unused ( IDENTIFIER: lab, LONG_ID: fn )
2864
{
2865
    USAGE:	reached
2866
    KEY (STD)	"Label '"lab"' defined but not used in function '"fn"'"
2867
}
2868
 
2869
stmt_label_case ()
2870
{
2871
    KEY (STD)	"'case' should be inside a 'switch' statement"
2872
}
2873
 
2874
stmt_label_default ()
2875
{
2876
    KEY (STD)	"'default' should be inside a 'switch' statement"
2877
}
2878
 
2879
stmt_label_fall ( LEX: op )
2880
{
2881
    USAGE:	case_fall
2882
    KEY (STD)	"Fall into '"op"' statement"
2883
}
2884
 
2885
 
2886
/*  --------------------------------------------------------------------
2887
    6.2		Expression statement
2888
		[stmt.expr]
2889
    --------------------------------------------------------------------  */
2890
 
2891
stmt_expr_discard_func ()
2892
{
2893
    USAGE:	discard_func
2894
    KEY (ISO)	"6.2" | "6.6.3"
2895
    KEY (STD)	"Discarded function return"
2896
}
2897
 
2898
stmt_expr_discard_val ()
2899
{
2900
    USAGE:	discard_value
2901
    KEY (STD)	"Discarded value"
2902
}
2903
 
2904
stmt_expr_incompl ()
2905
{
2906
    USAGE:	none
2907
    KEY (STD)	"Incomplete value discarded"
2908
}
2909
 
2910
 
2911
/*  --------------------------------------------------------------------
2912
    6.3		Compound statement or block
2913
		[stmt.block]
2914
    --------------------------------------------------------------------  */
2915
 
2916
 
2917
/*  --------------------------------------------------------------------
2918
    6.4		Selection statements
2919
		[stmt.select]
2920
    --------------------------------------------------------------------  */
2921
 
2922
stmt_select_type ( TYPE: t )
2923
{
2924
    KEY (ISO)	"6.4" | "6.6.4"
2925
    KEY (STD)	"Invalid type for condition declaration, '"t"'"
2926
}
2927
 
2928
stmt_select_typedef ()
2929
{
2930
    KEY (STD)	"Can't declare a type in a condition declaration"
2931
}
2932
 
2933
 
2934
/*  --------------------------------------------------------------------
2935
    6.4.1	The if statement
2936
		[stmt.if]
2937
    --------------------------------------------------------------------  */
2938
 
2939
stmt_if_cond ()
2940
{
2941
    USAGE:	whatever
2942
    KEY (ISO)	"6.4.1" | "6.6.4.1"
2943
    KEY (STD)	"Condition of an 'if' statement is converted to a boolean"
2944
}
2945
 
2946
stmt_if_const ()
2947
{
2948
    USAGE:	const_cond
2949
    KEY (STD)	"Constant condition in 'if' statement"
2950
}
2951
 
2952
stmt_if_no_else ()
2953
{
2954
    USAGE:	cond_default
2955
    KEY (STD)	"No 'else' in 'if' statement"
2956
}
2957
 
2958
 
2959
/*  --------------------------------------------------------------------
2960
    6.4.2	The switch statement
2961
		[stmt.switch]
2962
    --------------------------------------------------------------------  */
2963
 
2964
stmt_switch_control ( TYPE: t )
2965
{
2966
    KEY (ISO)	"6.4.2" | "6.6.4.2"
2967
    KEY (STD)	"Control expression of a 'switch' statement should have
2968
		 integral type, not '"t"'"
2969
}
2970
 
2971
stmt_switch_conv ()
2972
{
2973
    USAGE:	whatever
2974
    KEY (STD)	"Control expression of a 'switch' statement is converted
2975
		 to an integral type"
2976
}
2977
 
2978
stmt_switch_const ()
2979
{
2980
    USAGE:	const_cond
2981
    KEY (STD)	"Constant control expression in 'switch' statement"
2982
}
2983
 
2984
stmt_switch_case_const ()
2985
{
2986
    KEY (STD)	"Expression in a 'case' statement should be an integer
2987
		 constant"
2988
}
2989
 
2990
stmt_switch_case_dup ( NAT: n, PTR_LOC: loc )
2991
{
2992
    KEY (STD)	"'case "n"' already defined in 'switch' (at "loc")"
2993
}
2994
 
2995
stmt_switch_default_dup ( PTR_LOC: loc )
2996
{
2997
    KEY (STD)	"'default' already defined in 'switch' (at "loc")"
2998
}
2999
 
3000
stmt_switch_case_not ( NAT: n )
3001
{
3002
    KEY (STD)	"'case "n"' not defined in 'switch'"
3003
}
3004
 
3005
stmt_switch_default_not ()
3006
{
3007
    KEY (STD)	"'default' not defined in 'switch'"
3008
}
3009
 
3010
stmt_switch_exhaust_none ()
3011
{
3012
    KEY (STD)	"No cases in exhaustive 'switch' statement"
3013
}
3014
 
3015
stmt_switch_exhaust_default ()
3016
{
3017
    KEY (STD)	"Can't have 'default' in exhaustive 'switch' statement"
3018
}
3019
 
3020
stmt_switch_case_none ()
3021
{
3022
    USAGE:	const_cond
3023
    KEY (STD)	"No cases in 'switch' statement"
3024
}
3025
 
3026
stmt_switch_no_default ()
3027
{
3028
    USAGE:	cond_default
3029
    KEY (STD)	"No 'default' in 'switch' statement"
3030
}
3031
 
3032
stmt_switch_case_enum ( LONG_ID: id )
3033
{
3034
    USAGE:	enum_switch
3035
    KEY (STD)	"Enumerator '"id"' not covered in 'switch'"
3036
}
3037
 
3038
stmt_switch_case_extra ( NAT: n, TYPE: t )
3039
{
3040
    USAGE:	enum_switch
3041
    KEY (STD)	"'case "n"' is not a valid value for type '"t"'"
3042
}
3043
 
3044
 
3045
/*  --------------------------------------------------------------------
3046
    6.5		Iteration statements
3047
		[stmt.iter]
3048
    --------------------------------------------------------------------  */
3049
 
3050
 
3051
/*  --------------------------------------------------------------------
3052
    6.5.1	The while statement
3053
		[stmt.while]
3054
    --------------------------------------------------------------------  */
3055
 
3056
stmt_while_cond ()
3057
{
3058
    USAGE:	whatever
3059
    KEY (ISO)	"6.5.1" | "6.6.5.1"
3060
    KEY (STD)	"Condition of a 'while' statement is converted to a boolean"
3061
}
3062
 
3063
stmt_while_const ()
3064
{
3065
    USAGE:	const_cond
3066
    KEY (STD)	"Constant condition in 'while' statement"
3067
}
3068
 
3069
 
3070
/*  --------------------------------------------------------------------
3071
    6.5.2	The do statement
3072
		[stmt.do]
3073
    --------------------------------------------------------------------  */
3074
 
3075
stmt_do_cond ()
3076
{
3077
    USAGE:	whatever
3078
    KEY (ISO)	"6.5.2" | "6.6.5.2"
3079
    KEY (STD)	"Condition of a 'do' statement is converted to a boolean"
3080
}
3081
 
3082
stmt_do_const ()
3083
{
3084
    USAGE:	const_cond
3085
    KEY (STD)	"Constant condition in 'do' statement"
3086
}
3087
 
3088
 
3089
/*  --------------------------------------------------------------------
3090
    6.5.3	The for statement
3091
		[stmt.for]
3092
    --------------------------------------------------------------------  */
3093
 
3094
stmt_for_cond ()
3095
{
3096
    USAGE:	whatever
3097
    KEY (ISO)	"6.5.3" | "6.6.5.3"
3098
    KEY (STD)	"Condition of a 'for' statement is converted to a boolean"
3099
}
3100
 
3101
stmt_for_const ()
3102
{
3103
    USAGE:	const_cond
3104
    KEY (STD)	"Constant condition in 'for' statement"
3105
}
3106
 
3107
stmt_for_init ( IDENTIFIER: id )
3108
{
3109
    USAGE:	for_scope
3110
    KEY (STD)	"Variable '"id"' used outside its 'for' statement"
3111
}
3112
 
3113
 
3114
/*  --------------------------------------------------------------------
3115
    6.6		Jump statements
3116
		[stmt.jump]
3117
    --------------------------------------------------------------------  */
3118
 
3119
 
3120
/*  --------------------------------------------------------------------
3121
    6.6.1	The break statement
3122
		[stmt.break]
3123
    --------------------------------------------------------------------  */
3124
 
3125
stmt_break_bad ()
3126
{
3127
    KEY (ISO)	"6.6.1" | "6.6.6.3"
3128
    KEY (STD)	"'break' should be inside an iteration or 'switch' statement"
3129
}
3130
 
3131
 
3132
/*  --------------------------------------------------------------------
3133
    6.6.2	The continue statement
3134
		[stmt.cont]
3135
    --------------------------------------------------------------------  */
3136
 
3137
stmt_cont_bad ()
3138
{
3139
    KEY (ISO)	"6.6.2" | "6.6.6.2"
3140
    KEY (STD)	"'continue' should be inside an iteration statement"
3141
}
3142
 
3143
 
3144
/*  --------------------------------------------------------------------
3145
    6.6.3	The return statement
3146
		[stmt.return]
3147
    --------------------------------------------------------------------  */
3148
 
3149
stmt_return_void ( IDENTIFIER: id, TYPE: t )
3150
{
3151
    USAGE:	func_ret_void
3152
    KEY (ISO)	"6.6.3" | "6.6.6.4"
3153
    KEY (STD)	"'return' with no value in function '"id"' which
3154
		 returns '"t"'"
3155
}
3156
 
3157
stmt_return_none ( IDENTIFIER: id, TYPE: t )
3158
{
3159
    KEY (STD)	"'return' with value in function '"id"' which returns '"t"'"
3160
}
3161
 
3162
stmt_return_bottom ( IDENTIFIER: id, TYPE: t )
3163
{
3164
    KEY (STD)	"Can't return from function '"id"' which returns '"t"'"
3165
}
3166
 
3167
stmt_return_conv ()
3168
{
3169
    USAGE:	whatever
3170
    KEY (STD)	"'return' value is converted to function return type"
3171
}
3172
 
3173
stmt_return_fall ( IDENTIFIER: id, TYPE: t )
3174
{
3175
    USAGE:	func_ret_void
3176
    KEY (STD)	"Fall out of function '"id"' which returns '"t"'"
3177
}
3178
 
3179
stmt_return_auto ( LONG_ID: id, LEX: op )
3180
{
3181
    USAGE:	ptr_operator
3182
    KEY (STD)	"Reference to local variable '"id"' in '"op"'"
3183
}
3184
 
3185
 
3186
/*  --------------------------------------------------------------------
3187
    6.6.4	The goto statement
3188
		[stmt.goto]
3189
    --------------------------------------------------------------------  */
3190
 
3191
stmt_goto_undef ( IDENTIFIER: lab, LONG_ID: fn )
3192
{
3193
    KEY (ISO)	"6.6.4" | "6.6.6.1"
3194
    KEY (STD)	"Label '"lab"' used but not defined in function '"fn"'"
3195
}
3196
 
3197
stmt_goto_case ( LEX: op )
3198
{
3199
    KEY (STD)	"Can't have 'goto "op"'"
3200
}
3201
 
3202
 
3203
/*  --------------------------------------------------------------------
3204
    6.7		Declaration statement
3205
		[stmt.dcl]
3206
    --------------------------------------------------------------------  */
3207
 
3208
stmt_dcl_start ()
3209
{
3210
    USAGE:	c_error
3211
    KEY (ISO)	"6.7" | "6.6.2"
3212
    KEY (STD)	"Declaration statement should be at start of block"
3213
}
3214
 
3215
stmt_dcl_bypass_lab ( IDENTIFIER: lab, IDENTIFIER: id )
3216
{
3217
    USAGE:	error | variable
3218
    KEY (STD)	"Jump to label '"lab"' bypasses initialization of '"id"'"
3219
}
3220
 
3221
stmt_dcl_bypass_case ( NAT: n, IDENTIFIER: id )
3222
{
3223
    USAGE:	error | variable
3224
    KEY (STD)	"Jump to 'case "n"' bypasses initialization of '"id"'"
3225
}
3226
 
3227
stmt_dcl_bypass_default ( IDENTIFIER: id )
3228
{
3229
    USAGE:	error | variable
3230
    KEY (STD)	"Jump to 'default' bypasses initialization of '"id"'"
3231
}
3232
 
3233
stmt_dcl_unused ( LONG_ID: id )
3234
{
3235
    USAGE:	variable
3236
    KEY (STD)	"Variable '"id"' not used"
3237
}
3238
 
3239
stmt_dcl_unset ( LONG_ID: id )
3240
{
3241
    USAGE:	variable
3242
    KEY (STD)	"Variable '"id"' may be used without being set"
3243
}
3244
 
3245
stmt_dcl_reset ( LONG_ID: id )
3246
{
3247
    USAGE:	variable
3248
    KEY (STD)	"Variable '"id"' not used since previous assignment"
3249
}
3250
 
3251
 
3252
/*  --------------------------------------------------------------------
3253
    6.8		Ambiguity resolution
3254
		[stmt.ambig]
3255
    --------------------------------------------------------------------  */
3256
 
3257
 
3258
/*  --------------------------------------------------------------------
3259
    7		Declarations
3260
		[dcl.dcl]
3261
    --------------------------------------------------------------------  */
3262
 
3263
dcl_dcl_none ()
3264
{
3265
    USAGE:	decl_none
3266
    KEY (ISO)	"7" | "6.7"
3267
    KEY (STD)	"No declarations in translation unit"
3268
}
3269
 
3270
dcl_dcl_empty ()
3271
{
3272
    USAGE:	decl_empty
3273
    KEY (ISO)	"7" | "6.5"
3274
    KEY (STD)	"Every declaration must introduce a name"
3275
}
3276
 
3277
dcl_dcl_semicolon ()
3278
{
3279
    USAGE:	semicolon_extra
3280
    KEY (STD)	"Can't have empty declaration"
3281
}
3282
 
3283
dcl_dcl_anon ()
3284
{
3285
    USAGE:	decl_struct_anon
3286
    KEY (STD)	"Every type definition must introduce a name"
3287
}
3288
 
3289
dcl_dcl_ds_empty ()
3290
{
3291
    USAGE:	dspec_none
3292
    KEY (STD)	"No declaration specifiers in declaration"
3293
}
3294
 
3295
dcl_dcl_ds_func ()
3296
{
3297
    USAGE:	dspec_none_func
3298
    KEY (STD)	"No declaration specifiers in function definition"
3299
}
3300
 
3301
 
3302
/*  --------------------------------------------------------------------
3303
    7.1		Specifiers
3304
		[dcl.spec]
3305
    --------------------------------------------------------------------  */
3306
 
3307
dcl_spec_dup ( DECL_SPEC: ds )
3308
{
3309
    KEY (ISO)	"7.1" | "6.5.1"
3310
    KEY (STD)	"Duplicate declaration specifier, '"ds" "ds"'"
3311
}
3312
 
3313
dcl_spec_order ( DECL_SPEC: ds )
3314
{
3315
    USAGE:	wall
3316
    KEY (STD)	"Declaration specifier, '"ds"' after type specifier"
3317
}
3318
 
3319
 
3320
/*  --------------------------------------------------------------------
3321
    7.1.1	Storage class specifiers
3322
		[dcl.stc]
3323
    --------------------------------------------------------------------  */
3324
 
3325
dcl_stc_dup ( DECL_SPEC: ds1, DECL_SPEC: ds2 )
3326
{
3327
    KEY (ISO)	"7.1.1" | "6.5.1"
3328
    KEY (STD)	"Multiple storage class specifiers '"ds1"', assuming '"ds2"'"
3329
}
3330
 
3331
dcl_stc_stat_block ()
3332
{
3333
    USAGE:	func_block
3334
    KEY (STD)	"Can't declare 'static' functions inside a block"
3335
}
3336
 
3337
dcl_stc_bad ( DECL_SPEC: ds )
3338
{
3339
    USAGE:	cpp_error
3340
    KEY (ISO)	"7.1.1" | "6.7"
3341
    KEY (STD)	"Storage class specifier '"ds"' must be applied to an object"
3342
}
3343
 
3344
dcl_stc_expl_spec ( DECL_SPEC: ds )
3345
{
3346
    KEY (STD)	"Can't apply '"ds"' to an explicit specialization or
3347
		 instantiation"
3348
}
3349
 
3350
dcl_stc_auto_bad ( DECL_SPEC: ds )
3351
{
3352
    KEY (STD)	"Can only apply '"ds"' to a function parameter or variable"
3353
}
3354
 
3355
dcl_stc_auto_func ( DECL_SPEC: ds )
3356
{
3357
    KEY (STD)	"Can't apply '"ds"' to a function declaration"
3358
}
3359
 
3360
dcl_stc_ext_inline ()
3361
{
3362
    USAGE:	none
3363
    KEY (STD)	"Can't declare a function 'extern inline'"
3364
}
3365
 
3366
dcl_stc_ext_mem ()
3367
{
3368
    KEY (STD)	"Can't apply 'extern' to a class member"
3369
}
3370
 
3371
dcl_stc_mut_bad ()
3372
{
3373
    KEY (STD)	"Can only apply 'mutable' to a data member"
3374
}
3375
 
3376
dcl_stc_mut_const ( LONG_ID: id )
3377
{
3378
    KEY (STD)	"Can't apply 'mutable' to the 'const' member '"id"'"
3379
}
3380
 
3381
dcl_stc_param ( DECL_SPEC: ds )
3382
{
3383
    KEY (ISO)	"7.1.1" | "6.7.1"
3384
    KEY (STD)	"Can't apply '"ds"' to a function parameter"
3385
}
3386
 
3387
dcl_stc_auto_par ()
3388
{
3389
    USAGE:	c_error
3390
    KEY (STD)	"Can't apply 'auto' to a function parameter"
3391
}
3392
 
3393
dcl_stc_internal ( LONG_ID: id, PTR_LOC: loc )
3394
{
3395
    USAGE:	link_incompat
3396
    KEY (ISO)	"7.1.1" | "6.1.2.2"
3397
    KEY (STD)	"'"id"' previously declared with internal linkage (at "loc")"
3398
}
3399
 
3400
dcl_stc_external ( LONG_ID: id, PTR_LOC: loc )
3401
{
3402
    USAGE:	link_resolve
3403
    KEY (STD)	"'"id"' previously declared with external linkage (at "loc")"
3404
}
3405
 
3406
 
3407
/*  --------------------------------------------------------------------
3408
    7.1.2	Function specifiers
3409
		[dcl.fct.spec]
3410
    --------------------------------------------------------------------  */
3411
 
3412
dcl_fct_spec_inline_bad ()
3413
{
3414
    KEY (ISO)	"7.1.2" | "6.5.1"
3415
    KEY (STD)	"The specifier 'inline' can only applied to function
3416
		 declarations"
3417
}
3418
 
3419
dcl_fct_spec_block ()
3420
{
3421
    KEY (STD)	"Can't declare 'inline' functions inside a block"
3422
}
3423
 
3424
dcl_fct_spec_virtual ()
3425
{
3426
    KEY (STD)	"The specifier 'virtual' can only applied to function members"
3427
}
3428
 
3429
dcl_fct_spec_explicit ()
3430
{
3431
    KEY (STD)	"The specifier 'explicit' can only applied to function members"
3432
}
3433
 
3434
dcl_fct_spec_expl_constr ()
3435
{
3436
    KEY (STD)	"Can only apply 'explicit' to a constructor"
3437
}
3438
 
3439
dcl_fct_spec_expl_conv ()
3440
{
3441
    KEY (STD)	"Can't apply 'explicit' to a conversion function"
3442
}
3443
 
3444
dcl_fct_spec_inline_call ( LONG_ID: id )
3445
{
3446
    USAGE:	none
3447
    KEY (STD)	"The inline function '"id"' has been called before it
3448
		 is defined"
3449
}
3450
 
3451
 
3452
/*  --------------------------------------------------------------------
3453
    7.1.3	The typedef specifier
3454
		[dcl.typedef]
3455
    --------------------------------------------------------------------  */
3456
 
3457
dcl_typedef_func ()
3458
{
3459
    KEY (ISO)	"7.1.3" | "6.5.1"
3460
    KEY (STD)	"Can't apply 'typedef' to a function definition"
3461
}
3462
 
3463
dcl_typedef_par ()
3464
{
3465
    KEY (STD)	"Can't apply 'typedef' to a function parameter"
3466
}
3467
 
3468
dcl_typedef_dspec ( DECL_SPEC: ds )
3469
{
3470
    KEY (STD)	"Can't use declaration specifier(s) '"ds"' with 'typedef'"
3471
}
3472
 
3473
dcl_typedef_dcl ()
3474
{
3475
    USAGE:	none
3476
    KEY (STD)	"The 'typedef' specifier must define a type"
3477
}
3478
 
3479
dcl_typedef_constr ( IDENTIFIER: id, HASHID: nm )
3480
{
3481
    KEY (STD)	"Can't use 'typedef' name '"id"' in constructor '"nm"'"
3482
}
3483
 
3484
dcl_typedef_destr ( IDENTIFIER: id, HASHID: nm )
3485
{
3486
    KEY (STD)	"Can't use 'typedef' name '"id"' in destructor '"nm"'"
3487
}
3488
 
3489
 
3490
/*  --------------------------------------------------------------------
3491
    7.1.4	The friend specifier
3492
		[dcl.friend]
3493
    --------------------------------------------------------------------  */
3494
 
3495
dcl_friend_class ()
3496
{
3497
    KEY (ISO)	"7.1.4" | "????"
3498
    KEY (STD)	"The specifier 'friend' can only be used in a class
3499
		 definition"
3500
}
3501
 
3502
 
3503
/*  --------------------------------------------------------------------
3504
    7.1.5	Type specifiers
3505
		[dcl.type]
3506
    --------------------------------------------------------------------  */
3507
 
3508
dcl_type_infer ( TYPE: t )
3509
{
3510
    USAGE:	whatever
3511
    KEY (ISO)	"7.1.5" | "6.5.2"
3512
    KEY (STD)	"Type '"t"' inferred"
3513
}
3514
 
3515
dcl_type_none ()
3516
{
3517
    USAGE:	infer_int
3518
    KEY (STD)	"No type specifier given in declaration"
3519
}
3520
 
3521
dcl_type_qual ()
3522
{
3523
    USAGE:	infer_int_cv
3524
    KEY (STD)	"Only type qualifiers given in type specifier"
3525
}
3526
 
3527
dcl_type_cv_dup ( CV_SPEC: cv )
3528
{
3529
    KEY (ISO)	"7.1.5" | "6.5.3"
3530
    KEY (STD)	"Duplicate type qualifier, '"cv" "cv"'"
3531
}
3532
 
3533
dcl_type_type_cv ( LONG_ID: id, CV_SPEC: cv )
3534
{
3535
    USAGE:	wall | error
3536
    KEY (STD)	"Type '"id"' is already '"cv"' qualified"
3537
}
3538
 
3539
 
3540
/*  --------------------------------------------------------------------
3541
    7.1.5.1	The cv-qualifiers
3542
		[dcl.type.cv]
3543
    --------------------------------------------------------------------  */
3544
 
3545
dcl_type_cv_unused ( CV_SPEC: cv )
3546
{
3547
    USAGE:	cpp_error
3548
    KEY (ISO)	"7.1.5.1" | "6.5.3"
3549
    KEY (STD)	"Type specifier(s) '"cv"' not used"
3550
}
3551
 
3552
 
3553
/*  --------------------------------------------------------------------
3554
    7.1.5.2	Simple type specifiers
3555
		[dcl.type.simple]
3556
    --------------------------------------------------------------------  */
3557
 
3558
dcl_type_simple_dup ( BASE_TYPE: bt )
3559
{
3560
    KEY (ISO)	"7.1.5.2" | "6.5.2"
3561
    KEY (STD)	"Duplicate type specifier, '"bt" "bt"'"
3562
}
3563
 
3564
dcl_type_simple_bad ( BASE_TYPE: bt1, BASE_TYPE: bt2 )
3565
{
3566
    KEY (STD)	"Illegal type specifier, '"bt1"', assuming '"bt2"'"
3567
}
3568
 
3569
dcl_type_simple_llong ( BASE_TYPE: bt )
3570
{
3571
    USAGE:	longlong
3572
    KEY (STD)	"Type specifier '"bt"' used"
3573
}
3574
 
3575
dcl_type_simple_many ( TYPE: t1, TYPE: t2 )
3576
{
3577
    KEY (STD)	"Duplicate type names, '"t1"' and '"t2"'"
3578
}
3579
 
3580
dcl_type_simple_undecl ( BASE_TYPE: bt, TYPE: t )
3581
{
3582
    KEY (STD)	"Can't use type specifiers '"bt"' with '"t"'"
3583
}
3584
 
3585
dcl_type_simple_undef ( IDENTIFIER: id )
3586
{
3587
    KEY (STD)	"The type '"id"' hasn't been declared"
3588
}
3589
 
3590
 
3591
/*  --------------------------------------------------------------------
3592
    7.1.5.3	Elaborated type specifiers
3593
		[dcl.type.elab]
3594
    --------------------------------------------------------------------  */
3595
 
3596
dcl_type_elab_bad ( BASE_TYPE: bt1, BASE_TYPE: bt2, IDENTIFIER: id, PTR_LOC: loc )
3597
{
3598
    USAGE:	type_tag_ignore
3599
    KEY (ISO)	"7.1.5.3" | "6.5.2.3"
3600
    KEY (STD)	"Inconsistent key '"bt1"' used for '"bt2" "id"' (see "loc")"
3601
}
3602
 
3603
dcl_type_elab_qual ( BASE_TYPE: bt )
3604
{
3605
    KEY (STD)	"A type declaration should have the form '"bt" identifier'"
3606
}
3607
 
3608
 
3609
/*  --------------------------------------------------------------------
3610
    7.2		Enumeration declarations
3611
		[dcl.enum]
3612
    --------------------------------------------------------------------  */
3613
 
3614
dcl_enum_none ()
3615
{
3616
    USAGE:	c_error
3617
    KEY (ISO)	"7.2" | "6.5.2.2"
3618
    KEY (STD)	"No enumerators in enumeration type"
3619
}
3620
 
3621
dcl_enum_const ( LONG_ID: id )
3622
{
3623
    KEY (STD)	"Value for enumerator '"id"' should be an integer
3624
		 constant expression"
3625
}
3626
 
3627
dcl_enum_zero ( TYPE: t )
3628
{
3629
    USAGE:	wall
3630
    KEY (STD)	"Zero is not a valid enumerator value for '"t"'"
3631
}
3632
 
3633
 
3634
/*  --------------------------------------------------------------------
3635
    7.3		Namespaces
3636
		[basic.namespace] = [dcl.nspace]
3637
    --------------------------------------------------------------------  */
3638
 
3639
dcl_nspace_scope ()
3640
{
3641
    KEY (ISO)	"7.3" | "????"
3642
    KEY (STD)	"A namespace can only be defined in namespace scope"
3643
}
3644
 
3645
dcl_nspace_undef ( IDENTIFIER: id )
3646
{
3647
    KEY (STD)	"The namespace '"id"' hasn't been defined"
3648
}
3649
 
3650
 
3651
/*  --------------------------------------------------------------------
3652
    7.3.1	Namespace definition
3653
		[namespace.def] = [dcl.nspace.def]
3654
    --------------------------------------------------------------------  */
3655
 
3656
dcl_nspace_def_orig ( IDENTIFIER: id1, IDENTIFIER: id2 )
3657
{
3658
    KEY (ISO)	"7.3.1" | "????"
3659
    KEY (STD)	"Namespace extension should use original name, '"id1"',
3660
		 not the alias '"id2"'"
3661
}
3662
 
3663
 
3664
/*  --------------------------------------------------------------------
3665
    7.3.1.1	Unnamed namespaces
3666
		[namespace.unnamed] = [dcl.nspace.unnamed]
3667
    --------------------------------------------------------------------  */
3668
 
3669
dcl_nspace_unnamed_static ()
3670
{
3671
    USAGE:	none
3672
    KEY (ISO)	"7.3.1.1" | "????"
3673
    KEY (STD)	"Use of 'static' in namespace scope is deprecated"
3674
}
3675
 
3676
 
3677
/*  --------------------------------------------------------------------
3678
    7.3.1.2	Namespace member definitions
3679
		[namespace.memdef] = [dcl.nspace.memdef]
3680
    --------------------------------------------------------------------  */
3681
 
3682
dcl_nspace_memdef_scope ( LONG_ID: id )
3683
{
3684
    KEY (ISO)	"7.3.1.2" | "6.5.7"
3685
    KEY (STD)	"'"id"' can only be defined in an enclosing namespace scope"
3686
}
3687
 
3688
 
3689
/*  --------------------------------------------------------------------
3690
    7.3.2	Namespace or class alias
3691
		[namespace.alias] = [dcl.nspace.alias]
3692
    --------------------------------------------------------------------  */
3693
 
3694
dcl_nspace_alias_class ( NAMESPACE: ns )
3695
{
3696
    KEY (ISO)	"7.3.2" | "????"
3697
    KEY (STD)	"Namespace alias can't refer to the class '"ns"'"
3698
}
3699
 
3700
dcl_nspace_alias_bad ( IDENTIFIER: id, PTR_LOC: loc )
3701
{
3702
    KEY (STD)	"Namespace alias '"id"' has already been defined as an
3703
		 original namespace name (at "loc")"
3704
}
3705
 
3706
dcl_nspace_alias_redef ( IDENTIFIER: id, PTR_LOC: loc )
3707
{
3708
    KEY (STD)	"Namespace '"id"' redefined inconsistently (see "loc")"
3709
}
3710
 
3711
 
3712
/*  --------------------------------------------------------------------
3713
    7.3.3	The using declaration
3714
		[namespace.udecl] = [dcl.nspace.udecl]
3715
    --------------------------------------------------------------------  */
3716
 
3717
dcl_nspace_udecl_unqual ()
3718
{
3719
    KEY (ISO)	"7.3.3" | "????"
3720
    KEY (STD)	"The identifier in a 'using' declaration must be qualified"
3721
}
3722
 
3723
dcl_nspace_udecl_mem ( IDENTIFIER: id )
3724
{
3725
    KEY (STD)	"Can't use '"id"' in its own scope"
3726
}
3727
 
3728
dcl_nspace_udecl_base ( IDENTIFIER: id, CLASS_TYPE: ct )
3729
{
3730
    KEY (STD)	"Used identifier '"id"' is not a member of a base class
3731
		 of '"ct"'"
3732
}
3733
 
3734
dcl_nspace_udecl_vis ( IDENTIFIER: id, CLASS_TYPE: ct )
3735
{
3736
    KEY (STD)	"Used identifier '"id"' is not visible in '"ct"'"
3737
}
3738
 
3739
dcl_nspace_udecl_id ( IDENTIFIER: id )
3740
{
3741
    KEY (STD)	"'"id"' can only be used in a derived class"
3742
}
3743
 
3744
dcl_nspace_udecl_constr ( IDENTIFIER: id )
3745
{
3746
    KEY (STD)	"Can't use the member '"id"'"
3747
}
3748
 
3749
dcl_nspace_udecl_acc ( IDENTIFIER: id, PTR_LOC: loc )
3750
{
3751
    USAGE:	wall
3752
    KEY (STD)	"Declaration reduces access to '"id"' (see "loc")"
3753
}
3754
 
3755
dcl_nspace_udecl_multi ( IDENTIFIER: id, PTR_LOC: loc )
3756
{
3757
    KEY (STD)	"Invalid redeclaration of '"id"' (see "loc")"
3758
}
3759
 
3760
dcl_nspace_udecl_redecl ( IDENTIFIER: id, PTR_LOC: loc )
3761
{
3762
    KEY (STD)	"Can't redeclare '"id"' (see "loc")"
3763
}
3764
 
3765
 
3766
/*  --------------------------------------------------------------------
3767
    7.3.4	Using directive
3768
		[namespace.udir] = [dcl.nspace.udir]
3769
    --------------------------------------------------------------------  */
3770
 
3771
 
3772
dcl_nspace_udir_class ( NAMESPACE: ns )
3773
{
3774
    KEY (ISO)	"7.3.4" | "????"
3775
    KEY (STD)	"Can't use the class namespace '"ns"'"
3776
}
3777
 
3778
dcl_nspace_udir_dup ( NAMESPACE: ns )
3779
{
3780
    USAGE:	none
3781
    KEY (STD)	"Namespace '"ns"' already used in this scope"
3782
}
3783
 
3784
 
3785
/*  --------------------------------------------------------------------
3786
    7.4		The asm declaration
3787
		[dcl.asm]
3788
    --------------------------------------------------------------------  */
3789
 
3790
dcl_asm_ti ()
3791
{
3792
    USAGE:	wall
3793
    KEY (ISO)	"7.4" | "Annex G"
3794
    KEY (STD)	"'asm' declarations are not portable"
3795
}
3796
 
3797
dcl_asm_args ()
3798
{
3799
    KEY (STD)	"Can't have arguments with 'asm'"
3800
}
3801
 
3802
 
3803
/*  --------------------------------------------------------------------
3804
    7.5		Linkage specifications
3805
		[dcl.link]
3806
    --------------------------------------------------------------------  */
3807
 
3808
dcl_link_unknown ( STRING: str )
3809
{
3810
    KEY (ISO)	"7.5" | "????"
3811
    KEY (STD)	"Unknown linkage specifier, "str
3812
}
3813
 
3814
dcl_link_scope ()
3815
{
3816
    KEY (STD)	"Linkage specifications can only occur in namespace scope"
3817
}
3818
 
3819
dcl_link_lang ( LONG_ID: id, string: s, PTR_LOC: loc )
3820
{
3821
    USAGE:	link_incompat
3822
    KEY (STD)	"'"id"' previously declared with "s" linkage (at "loc")"
3823
}
3824
 
3825
dcl_link_func ( string: s )
3826
{
3827
    USAGE:	func_linkage
3828
    KEY (STD)	"Function type previously declared with "s" linkage"
3829
}
3830
 
3831
dcl_link_conv ()
3832
{
3833
    USAGE:	func_linkage
3834
    KEY (STD)	"Differing function linkage specifications in conversion"
3835
}
3836
 
3837
dcl_link_over ()
3838
{
3839
    USAGE:	whatever
3840
    KEY (STD)	"Only one function in a set of overloaded functions
3841
		 can have C linkage"
3842
}
3843
 
3844
dcl_link_redecl ( HASHID: nm, PTR_LOC: loc )
3845
{
3846
    USAGE:	whatever | none
3847
    KEY (STD)	"Two objects with C linkage named '"nm"' are the same"
3848
}
3849
 
3850
 
3851
/*  --------------------------------------------------------------------
3852
    8		Declarators
3853
		[dcl.decl]
3854
    --------------------------------------------------------------------  */
3855
 
3856
 
3857
/*  --------------------------------------------------------------------
3858
    8.1		Type names
3859
		[dcl.name]
3860
    --------------------------------------------------------------------  */
3861
 
3862
 
3863
/*  --------------------------------------------------------------------
3864
    8.2		Ambiguity resolution
3865
		[dcl.ambig.res]
3866
    --------------------------------------------------------------------  */
3867
 
3868
 
3869
/*  --------------------------------------------------------------------
3870
    8.3		Meaning of declarators
3871
		[dcl.meaning]
3872
    --------------------------------------------------------------------  */
3873
 
3874
dcl_meaning_id ( QUALIFIER: qual, IDENTIFIER: id )
3875
{
3876
    KEY (ISO)	"8.3" | "6.5.4"
3877
    KEY (STD)	"The identifier '"qual id"' can't be used in this context"
3878
}
3879
 
3880
dcl_meaning_full ( QUALIFIER: qual, IDENTIFIER: id )
3881
{
3882
    USAGE:	none
3883
    KEY (STD)	"The fully qualified identifier '"qual id"' can't be
3884
		 used in this context"
3885
}
3886
 
3887
dcl_meaning_mem ( QUALIFIER: qual, IDENTIFIER: id )
3888
{
3889
    KEY (STD)	"Illegally qualified member declaration '"qual id"'"
3890
}
3891
 
3892
dcl_meaning_paren ()
3893
{
3894
    USAGE:	wall
3895
    KEY (STD)	"Redundant parentheses in declarator"
3896
}
3897
 
3898
 
3899
/*  --------------------------------------------------------------------
3900
    8.3.1	Pointers
3901
		[dcl.ptr]
3902
    --------------------------------------------------------------------  */
3903
 
3904
 
3905
/*  --------------------------------------------------------------------
3906
    8.3.2	References
3907
		[dcl.ref]
3908
    --------------------------------------------------------------------  */
3909
 
3910
dcl_ref_cv ( CV_SPEC: cv )
3911
{
3912
    KEY (ISO)	"8.3.2" | "????"
3913
    KEY (STD)	"Can't have '"cv"' qualified references"
3914
}
3915
 
3916
dcl_ref_cv_type ( CV_SPEC: cv, LONG_ID: id )
3917
{
3918
    USAGE:	wall
3919
    KEY (STD)	"'"cv"' qualifier for reference type '"id"'"
3920
}
3921
 
3922
dcl_ref_void ( TYPE: t )
3923
{
3924
    KEY (STD)	"Can't have references to '"t"'"
3925
}
3926
 
3927
dcl_ref_ref ()
3928
{
3929
    KEY (STD)	"Can't have references to references"
3930
}
3931
 
3932
dcl_ref_ptr ()
3933
{
3934
    KEY (STD)	"Can't have pointers to references"
3935
}
3936
 
3937
dcl_ref_array ()
3938
{
3939
    KEY (STD)	"Can't have arrays of references"
3940
}
3941
 
3942
 
3943
/*  --------------------------------------------------------------------
3944
    8.3.3	Pointers to members
3945
		[dcl.mptr]
3946
    --------------------------------------------------------------------  */
3947
 
3948
dcl_mptr_type ( IDENTIFIER: id )
3949
{
3950
    KEY (ISO)	"8.3.3" | "????"
3951
    KEY (STD)	"Class name required in pointer to member, not '"id"'"
3952
}
3953
 
3954
dcl_mptr_class ( TYPE: t )
3955
{
3956
    KEY (STD)	"Class type required in pointer to member, not '"t"'"
3957
}
3958
 
3959
dcl_mptr_void ( TYPE: t )
3960
{
3961
    KEY (STD)	"Can't have pointers to '"t"' members"
3962
}
3963
 
3964
dcl_mptr_ref ()
3965
{
3966
    KEY (STD)	"Can't have pointers to reference members"
3967
}
3968
 
3969
 
3970
/*  --------------------------------------------------------------------
3971
    8.3.4	Arrays
3972
		[dcl.array]
3973
    --------------------------------------------------------------------  */
3974
 
3975
dcl_array_void ( TYPE: t )
3976
{
3977
    KEY (ISO)	"8.3.4" | "6.1.2.5"
3978
    KEY (STD)	"Can't have arrays of '"t"'"
3979
}
3980
 
3981
dcl_array_incompl ()
3982
{
3983
    USAGE:	type_obj_incompl
3984
    KEY (STD)	"Can't have arrays of incomplete types"
3985
}
3986
 
3987
dcl_array_abstract ()
3988
{
3989
    KEY (STD)	"Can't have arrays of abstract types"
3990
}
3991
 
3992
dcl_array_array ()
3993
{
3994
    KEY (STD)	"Can't have arrays of incomplete arrays"
3995
}
3996
 
3997
dcl_array_bitf ()
3998
{
3999
    KEY (STD)	"Can't have arrays of bitfields"
4000
}
4001
 
4002
dcl_array_func ()
4003
{
4004
    KEY (STD)	"Can't have arrays of functions"
4005
}
4006
 
4007
dcl_array_dim_const ()
4008
{
4009
    KEY (ISO)	"8.3.4" | "6.5.4.2"
4010
    KEY (STD)	"Array bound should be an integer constant expression"
4011
}
4012
 
4013
dcl_array_dim_zero ()
4014
{
4015
    KEY (STD)	"Array bound can't be zero"
4016
}
4017
 
4018
dcl_array_dim_neg ( NAT: n )
4019
{
4020
    KEY (STD)	"Array bound should be greater than zero, not "n
4021
}
4022
 
4023
 
4024
/*  --------------------------------------------------------------------
4025
    8.3.5	Functions
4026
		[dcl.fct]
4027
    --------------------------------------------------------------------  */
4028
 
4029
dcl_fct_par_void ( IDENTIFIER: id, TYPE: t )
4030
{
4031
    KEY (ISO)	"8.3.5" | "6.5.4.3"
4032
    KEY (STD)	"Parameter '"id"' declared to have type '"t"'"
4033
}
4034
 
4035
dcl_fct_par_array ( IDENTIFIER: id, TYPE: t )
4036
{
4037
    USAGE:	cpp_error
4038
    KEY (STD)	"Parameter '"id"' declared to have incomplete array
4039
		 type '"t"'"
4040
}
4041
 
4042
dcl_fct_par_weak ()
4043
{
4044
    KEY (STD)	"Parameter required in weak function prototype"
4045
}
4046
 
4047
dcl_fct_par_empty ()
4048
{
4049
    KEY (STD)	"Precisely '( void )' required in empty parameter list"
4050
}
4051
 
4052
dcl_fct_par_ellipsis ()
4053
{
4054
    USAGE:	none | ellipsis_ident
4055
    KEY (STD)	"Need at least one parameter before '...'"
4056
}
4057
 
4058
dcl_fct_weak ()
4059
{
4060
    KEY (STD)	"Can only have parameter list in function definition"
4061
}
4062
 
4063
dcl_fct_proto ()
4064
{
4065
    USAGE:	func_proto
4066
    KEY (STD)	"Function prototype used"
4067
}
4068
 
4069
dcl_fct_nonproto ()
4070
{
4071
    USAGE:	func_weak
4072
    KEY (STD)	"Non-prototype function used"
4073
}
4074
 
4075
dcl_fct_array ()
4076
{
4077
    KEY (STD)	"Can't have functions returning arrays"
4078
}
4079
 
4080
dcl_fct_bitf ()
4081
{
4082
    KEY (STD)	"Can't have functions returning bitfields"
4083
}
4084
 
4085
dcl_fct_func ()
4086
{
4087
    KEY (STD)	"Can't have functions returning functions"
4088
}
4089
 
4090
dcl_fct_typedef_par ()
4091
{
4092
    USAGE:	cpp_error
4093
    KEY (STD)	"Can't define a type in a function parameter"
4094
}
4095
 
4096
dcl_fct_typedef_ret ()
4097
{
4098
    USAGE:	cpp_error
4099
    KEY (STD)	"Can't define a type in a function return"
4100
}
4101
 
4102
dcl_fct_cv_ret ( CV_SPEC: cv )
4103
{
4104
    USAGE:	none
4105
    KEY (STD)	"A function can't return a '"cv"' qualified type"
4106
}
4107
 
4108
dcl_fct_cv ( CV_SPEC: cv )
4109
{
4110
    KEY (STD)	"Invalid use of '"cv"' qualified function"
4111
}
4112
 
4113
dcl_fct_cv_decl ( CV_SPEC: cv )
4114
{
4115
    KEY (STD)	"Only non-static member functions can be '"cv"' qualified"
4116
}
4117
 
4118
dcl_fct_compat_ellipsis ()
4119
{
4120
    USAGE:	ellipsis_extra
4121
    KEY (STD)	"Compatible function types should agree on use of ellipsis"
4122
}
4123
 
4124
dcl_fct_compat_prom ( TYPE: t )
4125
{
4126
    USAGE:	func_incompat
4127
    KEY (STD)	"The type '"t"' is not compatible with its argument
4128
		 promotion type"
4129
}
4130
 
4131
dcl_fct_qual ( CV_SPEC: cv, LONG_ID: id )
4132
{
4133
    KEY (ISO)	"8.3.5" | "6.5.3"
4134
    KEY (STD)	"'"cv"' qualifier for function type '"id"'"
4135
}
4136
 
4137
dcl_fct_ret ()
4138
{
4139
    KEY (ISO)	"8.3.5" | "6.7.1"
4140
    KEY (STD)	"Function return type should be a complete object type or
4141
		 'void'"
4142
}
4143
 
4144
dcl_fct_ret_void ( TYPE: t )
4145
{
4146
    KEY (STD)	"Function return type can't be '"t"'"
4147
}
4148
 
4149
dcl_fct_typedef ()
4150
{
4151
    KEY (STD)	"Can't define a function using a 'typedef' function type"
4152
}
4153
 
4154
dcl_fct_par_proto ()
4155
{
4156
    KEY (STD)	"Can't have parameter list with prototype"
4157
}
4158
 
4159
dcl_fct_par_anon ()
4160
{
4161
    USAGE:	c_error
4162
    KEY (STD)	"Must have parameter name in function definition"
4163
}
4164
 
4165
dcl_fct_par_undecl ( HASHID: nm )
4166
{
4167
    KEY (STD)	"Parameter '"nm"' doesn't appear in parameter list"
4168
}
4169
 
4170
dcl_fct_par_typedef ( IDENTIFIER: id )
4171
{
4172
    KEY (STD)	"Can't use type name '"id"' in parameter list"
4173
}
4174
 
4175
dcl_fct_par_none ()
4176
{
4177
    KEY (STD)	"Parameter declaration should contain a declarator"
4178
}
4179
 
4180
dcl_fct_par_impl ( IDENTIFIER: id )
4181
{
4182
    USAGE:	param_impl
4183
    KEY (STD)	"Implicit declaration of parameter '"id"'"
4184
}
4185
 
4186
dcl_fct_par_order ()
4187
{
4188
    USAGE:	wall
4189
    KEY (STD)	"Function parameters declared out of sequence"
4190
}
4191
 
4192
 
4193
/*  --------------------------------------------------------------------
4194
    8.3.6	Default arguments
4195
		[dcl.fct.default]
4196
    --------------------------------------------------------------------  */
4197
 
4198
dcl_fct_default_bad ()
4199
{
4200
    KEY (ISO)	"8.3.6" | "6.7.1"
4201
    KEY (STD)	"Can only have default arguments in a function declaration"
4202
}
4203
 
4204
dcl_fct_default_missing ( IDENTIFIER: id )
4205
{
4206
    KEY (STD)	"Parameter '"id"' should have a default argument"
4207
}
4208
 
4209
dcl_fct_default_dup ( IDENTIFIER: id, PTR_LOC: loc )
4210
{
4211
    KEY (STD)	"Duplicate default argument for parameter '"id"' (see "loc")"
4212
}
4213
 
4214
dcl_fct_default_redef ( IDENTIFIER: id, PTR_LOC: loc )
4215
{
4216
    KEY (STD)	"Default argument for parameter '"id"' redefined
4217
		 inconsistently (see "loc")"
4218
}
4219
 
4220
dcl_fct_default_templ ()
4221
{
4222
    KEY (STD)	"Can't add default arguments to template functions"
4223
}
4224
 
4225
dcl_fct_default_param ( IDENTIFIER: id )
4226
{
4227
    KEY (STD)	"'"id"' can't be used in a default argument"
4228
}
4229
 
4230
dcl_fct_default_weak ( IDENTIFIER: id )
4231
{
4232
    USAGE:	c_error
4233
    KEY (STD)	"Can't initialize the parameter '"id"'"
4234
}
4235
 
4236
 
4237
/*  --------------------------------------------------------------------
4238
    8.4		Function definitions
4239
		[dcl.fct.def]
4240
    --------------------------------------------------------------------  */
4241
 
4242
dcl_fct_def_scope ()
4243
{
4244
    KEY (ISO)	"8.4" | "6.7.1"
4245
    KEY (STD)	"A function can only be defined in namespace or class scope"
4246
}
4247
 
4248
dcl_fct_def_comment ( LONG_ID: id )
4249
{
4250
    USAGE:	whatever
4251
    KEY (STD)	"In definition of function '"id"'"
4252
}
4253
 
4254
 
4255
/*  --------------------------------------------------------------------
4256
    8.5		Initializers
4257
		[dcl.init]
4258
    --------------------------------------------------------------------  */
4259
 
4260
dcl_init_decl ( IDENTIFIER: id, string: s )
4261
{
4262
    USAGE:	whatever
4263
    KEY (ISO)	"8.5" | "6.5.7"
4264
    KEY (STD)	"In initialization of '"id s"'"
4265
}
4266
 
4267
dcl_init_typedef ( IDENTIFIER: id )
4268
{
4269
    KEY (STD)	"Can't initialize the type '"id"'"
4270
}
4271
 
4272
dcl_init_incompl ()
4273
{
4274
    KEY (STD)	"Can't initialize objects of incomplete type"
4275
}
4276
 
4277
dcl_init_func ( LONG_ID: id )
4278
{
4279
    KEY (STD)	"Can't initialize the function '"id"'"
4280
}
4281
 
4282
dcl_init_bad ()
4283
{
4284
    KEY (STD)	"Badly placed function style initializer"
4285
}
4286
 
4287
dcl_init_const ()
4288
{
4289
    USAGE:	cpp_error
4290
    KEY (STD)	"'const' objects should be initialized"
4291
}
4292
 
4293
dcl_init_ctor ( TYPE: t )
4294
{
4295
    KEY (STD)	"A constructor-style initializer with more than one
4296
		 argument requires a class type, not '"t"'"
4297
}
4298
 
4299
dcl_init_conv ()
4300
{
4301
    USAGE:	whatever
4302
    KEY (STD)	"Can't perform this conversion by initialization"
4303
}
4304
 
4305
dcl_init_assign ()
4306
{
4307
    USAGE:	whatever
4308
    KEY (STD)	"Initializers are converted as if by assignment"
4309
}
4310
 
4311
dcl_init_dynamic ()
4312
{
4313
    USAGE:	init_dynamic
4314
    KEY (STD)	"Object initializer should be a constant expression"
4315
}
4316
 
4317
 
4318
/*  --------------------------------------------------------------------
4319
    8.5.1	Aggregates
4320
		[dcl.init.aggr]
4321
    --------------------------------------------------------------------  */
4322
 
4323
dcl_init_aggr_array_bad ()
4324
{
4325
    KEY (ISO)	"8.5.1" | "6.5.7"
4326
    KEY (STD)	"Bad array initializer"
4327
}
4328
 
4329
dcl_init_aggr_dynamic ()
4330
{
4331
    USAGE:	init_dynamic
4332
    KEY (STD)	"Expression in aggregate initializer should be constant"
4333
}
4334
 
4335
dcl_init_aggr_array_ti ( NAT: n, TYPE: t )
4336
{
4337
    USAGE:	init_aggregate
4338
    KEY (STD)	"Target dependent initialization, '"n"' elements for
4339
		 array of type '"t"'"
4340
}
4341
 
4342
dcl_init_aggr_excess ( TYPE: t )
4343
{
4344
    KEY (STD)	"Too many elements in initializer for type '"t"'"
4345
}
4346
 
4347
dcl_init_aggr_pad ( NAT: n, TYPE: t )
4348
{
4349
    USAGE:	init_aggregate
4350
    KEY (STD)	"'"n"' too few elements in initializer for type '"t"'"
4351
}
4352
 
4353
dcl_init_aggr_type ( TYPE: t )
4354
{
4355
    KEY (STD)	"Can't initialize objects of type '"t"' using aggregate
4356
		 initializers"
4357
}
4358
 
4359
dcl_init_aggr_empty ()
4360
{
4361
    USAGE:	c_error
4362
    KEY (STD)	"Empty aggregate initializer"
4363
}
4364
 
4365
dcl_init_aggr_no_scalar ()
4366
{
4367
    KEY (STD)	"Scalar aggregate initializers can't be empty"
4368
}
4369
 
4370
dcl_init_aggr_nest ()
4371
{
4372
    KEY (STD)	"Scalar aggregate initializers can't be nested"
4373
}
4374
 
4375
dcl_init_aggr_partial ()
4376
{
4377
    USAGE:	init_aggregate
4378
    KEY (STD)	"Partially bracketed aggregate initializer"
4379
}
4380
 
4381
dcl_init_aggr_auto ( IDENTIFIER: id )
4382
{
4383
    USAGE:	init_struct
4384
    KEY (STD)	"Initializer for local aggregate variable '"id"'"
4385
}
4386
 
4387
 
4388
/*  --------------------------------------------------------------------
4389
    8.5.2	Character arrays
4390
		[dcl.init.string]
4391
    --------------------------------------------------------------------  */
4392
 
4393
dcl_init_string_char ()
4394
{
4395
    KEY (ISO)	"8.5.2" | "6.5.7"
4396
    KEY (STD)	"Can only initialize character arrays with string literals"
4397
}
4398
 
4399
dcl_init_string_wchar ()
4400
{
4401
    KEY (STD)	"Can only initialize wide character arrays with wide
4402
		 string literals"
4403
}
4404
 
4405
dcl_init_string_excess ( TYPE: t )
4406
{
4407
    KEY (STD)	"Initializer string too long for type '"t"'"
4408
}
4409
 
4410
dcl_init_string_zero ( TYPE: t )
4411
{
4412
    USAGE:	cpp_error
4413
    KEY (STD)	"Initializer string (including terminal zero) too long
4414
		 for type '"t"'"
4415
}
4416
 
4417
 
4418
/*  --------------------------------------------------------------------
4419
    8.5.3	References
4420
		[dcl.init.ref]
4421
    --------------------------------------------------------------------  */
4422
 
4423
dcl_init_ref_none ()
4424
{
4425
    KEY (ISO)	"8.5.3" | "6.5.7"
4426
    KEY (STD)	"References should be initialized"
4427
}
4428
 
4429
dcl_init_ref_ambig ()
4430
{
4431
    KEY (STD)	"Base class in reference binding must be unambiguous"
4432
}
4433
 
4434
dcl_init_ref_const ()
4435
{
4436
    KEY (STD)	"A non-'const' reference can't be initialized using
4437
		 an rvalue"
4438
}
4439
 
4440
dcl_init_ref_qual ( CV_SPEC: cv )
4441
{
4442
    KEY (STD)	"Reference binding from more '"cv"' qualified type"
4443
}
4444
 
4445
dcl_init_ref_func ()
4446
{
4447
    KEY (STD)	"A reference to function can only be initialized
4448
		 by a function"
4449
}
4450
 
4451
dcl_init_ref_tmp ( TYPE: t )
4452
{
4453
    USAGE:	wall
4454
    KEY (STD)	"Introducing temporary variable of type '"t"'"
4455
}
4456
 
4457
 
4458
/*  --------------------------------------------------------------------
4459
    9		Classes
4460
		[class]
4461
    --------------------------------------------------------------------  */
4462
 
4463
class_none ()
4464
{
4465
    USAGE:	c_error
4466
    KEY (ISO)	"9" | "6.5.2.1"
4467
    KEY (STD)	"No members in class definition"
4468
}
4469
 
4470
 
4471
/*  --------------------------------------------------------------------
4472
    9.1		Class names
4473
		[class.name]
4474
    --------------------------------------------------------------------  */
4475
 
4476
 
4477
/*  --------------------------------------------------------------------
4478
    9.2		Class members
4479
		[class.mem]
4480
    --------------------------------------------------------------------  */
4481
 
4482
class_mem_empty ()
4483
{
4484
    USAGE:	decl_empty
4485
    KEY (ISO)	"9.2" | "6.5.2.1"
4486
    KEY (STD)	"Every member declaration must introduce a name"
4487
}
4488
 
4489
class_mem_declarator ()
4490
{
4491
    USAGE:	c_error
4492
    KEY (STD)	"A member declaration should contain a declarator"
4493
}
4494
 
4495
class_mem_semicolon ()
4496
{
4497
    USAGE:	semicolon_extra
4498
    KEY (STD)	"Can't have empty member declaration"
4499
}
4500
 
4501
class_mem_anon ()
4502
{
4503
    USAGE:	decl_struct_anon
4504
    KEY (STD)	"Every type definition must introduce a member name"
4505
}
4506
 
4507
class_mem_ds_empty ()
4508
{
4509
    USAGE:	dspec_none
4510
    KEY (STD)	"No declaration specifiers in member declaration"
4511
}
4512
 
4513
class_mem_redecl ( IDENTIFIER: id, PTR_LOC: loc )
4514
{
4515
    KEY (STD)	"The member '"id"' has already been declared (at "loc")"
4516
}
4517
 
4518
class_mem_incompl_mem ( IDENTIFIER: id )
4519
{
4520
    KEY (STD)	"The member '"id"' must have complete object type"
4521
}
4522
 
4523
class_mem_init_mem ( LONG_ID: id )
4524
{
4525
    KEY (STD)	"Can't have initializer with non-static member '"id"'"
4526
}
4527
 
4528
class_mem_def ( LONG_ID: id )
4529
{
4530
    KEY (STD)	"Can't define the non-static member '"id"'"
4531
}
4532
 
4533
class_mem_init_const ()
4534
{
4535
    KEY (STD)	"A member initializer should be a constant expression"
4536
}
4537
 
4538
class_mem_incompl_stat ( IDENTIFIER: id )
4539
{
4540
    KEY (STD)	"The static member '"id"' must have complete object type"
4541
}
4542
 
4543
class_mem_ctor ( IDENTIFIER: id )
4544
{
4545
    USAGE:	cpp_error
4546
    KEY (STD)	"The member '"id"' can't have the same name as its class"
4547
}
4548
 
4549
class_mem_ctor_data ( IDENTIFIER: id )
4550
{
4551
    USAGE:	new | none
4552
    KEY (STD)	"The data member '"id"' can't have the same name as its class"
4553
}
4554
 
4555
class_mem_ref ( CLASS_TYPE: ct )
4556
{
4557
    USAGE:	whatever
4558
    KEY (STD)	"'"ct"' has a non-static reference member"
4559
}
4560
 
4561
class_mem_const ( CLASS_TYPE: ct )
4562
{
4563
    USAGE:	whatever
4564
    KEY (STD)	"'"ct"' has a non-static 'const' member"
4565
}
4566
 
4567
 
4568
/*  --------------------------------------------------------------------
4569
    9.3		Member functions
4570
		[class.mfct]
4571
    --------------------------------------------------------------------  */
4572
 
4573
class_mfct_eof ( LONG_ID: id )
4574
{
4575
    KEY (ISO)	"9.3" | "????"
4576
    KEY (STD)	"End of file encountered in rewriting '"id"'"
4577
}
4578
 
4579
class_mfct_scope ( LONG_ID: id )
4580
{
4581
    KEY (STD)	"'"id"' can only be defined in its class or an enclosing
4582
		 namespace scope"
4583
}
4584
 
4585
class_mfct_redecl ( LONG_ID: id )
4586
{
4587
    KEY (STD)	"Can't redeclare the member function '"id"'"
4588
}
4589
 
4590
 
4591
/*  --------------------------------------------------------------------
4592
    9.3.1	Nonstatic member functions
4593
		[class.mfct.nonstatic]
4594
    --------------------------------------------------------------------  */
4595
 
4596
 
4597
/*  --------------------------------------------------------------------
4598
    9.3.2	The this pointer
4599
		[class.this]
4600
    --------------------------------------------------------------------  */
4601
 
4602
class_this_qual ( CV_SPEC: cv )
4603
{
4604
    KEY (ISO)	"9.3.2" | "????"
4605
    KEY (STD)	"Member function called for more '"cv"' qualified object"
4606
}
4607
 
4608
 
4609
/*  --------------------------------------------------------------------
4610
    9.4		Static members
4611
		[class.static]
4612
    --------------------------------------------------------------------  */
4613
 
4614
 
4615
/*  --------------------------------------------------------------------
4616
    9.4.1	Static member functions
4617
		[class.static.mfct]
4618
    --------------------------------------------------------------------  */
4619
 
4620
class_static_mfct_virt ()
4621
{
4622
    KEY (ISO)	"9.4.1" | "????"
4623
    KEY (STD)	"Can't have virtual static member functions"
4624
}
4625
 
4626
 
4627
/*  --------------------------------------------------------------------
4628
    9.4.2	Static data members
4629
		[class.static.data]
4630
    --------------------------------------------------------------------  */
4631
 
4632
class_static_data_init ( IDENTIFIER: id, TYPE: t )
4633
{
4634
    KEY (ISO)	"9.4.2" | "????"
4635
    KEY (STD)	"The static member '"id"' can only have an initializer
4636
		 if it has integral type, not '"t"'"
4637
}
4638
 
4639
class_static_data_const ( IDENTIFIER: id, TYPE: t )
4640
{
4641
    KEY (STD)	"The static member '"id"' can only have an initializer
4642
		 if it has 'const' type, not '"t"'"
4643
}
4644
 
4645
class_static_data_def ( IDENTIFIER: id, PTR_LOC: loc )
4646
{
4647
    KEY (STD)	"'"id"' was initialized in its class (at "loc"),
4648
		 and so can't be assigned a value in its definition"
4649
}
4650
 
4651
class_static_data_scope ( IDENTIFIER: id )
4652
{
4653
    KEY (STD)	"'"id"' can only be defined in its class or an enclosing
4654
		 namespace scope"
4655
}
4656
 
4657
class_static_data_anon ( IDENTIFIER: id )
4658
{
4659
    KEY (STD)	"Can't have static member '"id"' in an anonymous class"
4660
}
4661
 
4662
 
4663
/*  --------------------------------------------------------------------
4664
    9.5		Unions
4665
		[class.union]
4666
    --------------------------------------------------------------------  */
4667
 
4668
class_union_deriv ( CLASS_TYPE: ct )
4669
{
4670
    KEY (ISO)	"9.5" | "6.5.2.1"
4671
    KEY (STD)	"The union '"ct"' can't have base classes"
4672
}
4673
 
4674
class_union_base ( CLASS_TYPE: ct )
4675
{
4676
    KEY (STD)	"The union '"ct"' can't be used as a base class"
4677
}
4678
 
4679
class_union_static ( CLASS_TYPE: ct )
4680
{
4681
    KEY (STD)	"The union '"ct"' can't contain a static data member"
4682
}
4683
 
4684
class_union_virtual ( CLASS_TYPE: ct )
4685
{
4686
    KEY (STD)	"The union '"ct"' can't contain a virtual function"
4687
}
4688
 
4689
class_union_ref ( CLASS_TYPE: ct, TYPE: t )
4690
{
4691
    KEY (STD)	"The union '"ct"' can't have a member of reference type '"t"'"
4692
}
4693
 
4694
class_union_mem ( CLASS_TYPE: ct, TYPE: t )
4695
{
4696
    KEY (STD)	"The union '"ct"' can't have a member of type '"t"'"
4697
}
4698
 
4699
class_union_anon_private ()
4700
{
4701
    KEY (STD)	"An anonymous union can't have 'private' or 'protected'
4702
		 members"
4703
}
4704
 
4705
class_union_anon_func ()
4706
{
4707
    KEY (STD)	"An anonymous union can't have function members"
4708
}
4709
 
4710
class_union_anon_static ()
4711
{
4712
    KEY (STD)	"An anonymous union can't have external linkage"
4713
}
4714
 
4715
class_union_anon_mem ()
4716
{
4717
    KEY (STD)	"An anonymous union can't be a static data member of a class"
4718
}
4719
 
4720
 
4721
/*  --------------------------------------------------------------------
4722
    9.6		Bit-fields
4723
		[class.bit]
4724
    --------------------------------------------------------------------  */
4725
 
4726
class_bit_base ( TYPE: t )
4727
{
4728
    KEY (ISO)	"9.6" | "6.5.2.1"
4729
    KEY (STD)	"Bitfield base type should be integral, not '"t"'"
4730
}
4731
 
4732
class_bit_base_int ( TYPE: t )
4733
{
4734
    USAGE:	bitf_type
4735
    KEY (STD)	"Only 'int' types allowed in bitfields, not '"t"'"
4736
}
4737
 
4738
class_bit_sign ( BASE_TYPE: bt )
4739
{
4740
    USAGE:	wall
4741
    KEY (STD)	"Sign of a bitfield of type '"bt"' is implementation dependent"
4742
}
4743
 
4744
class_bit_dim_const ()
4745
{
4746
    KEY (STD)	"Bitfield width should be an integer constant expression"
4747
}
4748
 
4749
class_bit_dim_zero ()
4750
{
4751
    KEY (STD)	"Only unnamed bitfields can have width zero"
4752
}
4753
 
4754
class_bit_dim_neg ( NAT: n )
4755
{
4756
    KEY (STD)	"Bitfield width should be non-negative, not '"n"'"
4757
}
4758
 
4759
class_bit_dim_big ( NAT: n, TYPE: t )
4760
{
4761
    USAGE:	bitf_overflow
4762
    KEY (STD)	"Bitfield width '"n"' exceeds minimum size for base
4763
		 type, '"t"'"
4764
}
4765
 
4766
class_bit_static ()
4767
{
4768
    KEY (STD)	"A bitfield can't be a static member"
4769
}
4770
 
4771
class_bit_typedef ()
4772
{
4773
    KEY (STD)	"Can't use 'typedef' to define a bitfield type"
4774
}
4775
 
4776
class_bit_ptr ()
4777
{
4778
    KEY (STD)	"Can't have pointers to bitfields"
4779
}
4780
 
4781
class_bit_ref ()
4782
{
4783
    KEY (STD)	"Can't have references to bitfields"
4784
}
4785
 
4786
class_bit_mptr ()
4787
{
4788
    KEY (STD)	"Can't have pointers to bitfield members"
4789
}
4790
 
4791
 
4792
/*  --------------------------------------------------------------------
4793
    9.7		Nested class declarations
4794
		[class.nest]
4795
    --------------------------------------------------------------------  */
4796
 
4797
 
4798
/*  --------------------------------------------------------------------
4799
    9.8		Local class declarations
4800
		[class.local]
4801
    --------------------------------------------------------------------  */
4802
 
4803
class_local_func ( LONG_ID: id )
4804
{
4805
    USAGE:	none
4806
    KEY (ISO)	"9.8" | "6.5.2.1"
4807
    KEY (STD)	"Member function '"id"' of a local class should be
4808
		 defined in that class"
4809
}
4810
 
4811
class_local_static ( IDENTIFIER: id )
4812
{
4813
    KEY (STD)	"Can't have static member '"id"' in a local class"
4814
}
4815
 
4816
class_local_auto ( IDENTIFIER: id )
4817
{
4818
    KEY (STD)	"Can't use variable '"id"' in local class"
4819
}
4820
 
4821
 
4822
/*  --------------------------------------------------------------------
4823
    9.9		Nested type names
4824
		[class.nested.type]
4825
    --------------------------------------------------------------------  */
4826
 
4827
 
4828
/*  --------------------------------------------------------------------
4829
    10		Derived classes
4830
		[class.derived]
4831
    --------------------------------------------------------------------  */
4832
 
4833
class_derived_class ( TYPE: t )
4834
{
4835
    KEY (ISO)	"10" | "????"
4836
    KEY (STD)	"A base class should have class type, not '"t"'"
4837
}
4838
 
4839
class_derived_incompl ()
4840
{
4841
    KEY (STD)	"A base class should be complete"
4842
}
4843
 
4844
class_derived_empty ( CLASS_TYPE: ct )
4845
{
4846
    KEY (STD)	"Empty base class list for '"ct"'"
4847
}
4848
 
4849
class_derived_base ( CLASS_TYPE: ct, CLASS_TYPE: cs )
4850
{
4851
    USAGE:	whatever
4852
    KEY (STD)	"'"ct"' has a base class, '"cs"'"
4853
}
4854
 
4855
class_derived_virt ( CLASS_TYPE: ct, CLASS_TYPE: cs )
4856
{
4857
    USAGE:	whatever
4858
    KEY (STD)	"'"ct"' is a virtual base class of '"cs"'"
4859
}
4860
 
4861
 
4862
/*  --------------------------------------------------------------------
4863
    10.1	Multiple base classes
4864
		[class.mi]
4865
    --------------------------------------------------------------------  */
4866
 
4867
class_mi_dup ( CLASS_TYPE: ct, CLASS_TYPE: cs )
4868
{
4869
    KEY (ISO)	"10.1" | "????"
4870
    KEY (STD)	"Class '"ct"' already has a base class '"cs"'"
4871
}
4872
 
4873
 
4874
/*  --------------------------------------------------------------------
4875
    10.2	Member name lookup
4876
		[class.member.lookup]
4877
    --------------------------------------------------------------------  */
4878
 
4879
class_member_lookup_ambig ( CLASS_TYPE: ct, CLASS_TYPE: cs )
4880
{
4881
    USAGE:	whatever
4882
    KEY (ISO)	"10.2" | "????"
4883
    KEY (STD)	"'"ct"' is an ambiguous base class of '"cs"'"
4884
}
4885
 
4886
class_member_lookup_func ()
4887
{
4888
    KEY (STD)	"Can't call a member function inherited from an ambiguous
4889
		 base class"
4890
}
4891
 
4892
 
4893
/*  --------------------------------------------------------------------
4894
    10.3	Virtual functions
4895
		[class.virtual]
4896
    --------------------------------------------------------------------  */
4897
 
4898
class_virtual_poly ( CLASS_TYPE: ct )
4899
{
4900
    USAGE:	whatever
4901
    KEY (ISO)	"10.3" | "????"
4902
    KEY (STD)	"'"ct"' is a polymorphic type"
4903
}
4904
 
4905
class_virtual_override ( HASHID: nm )
4906
{
4907
    USAGE:	wall
4908
    KEY (STD)	"'"nm"' is an overriding virtual function"
4909
}
4910
 
4911
class_virtual_hide ( HASHID: nm, LONG_ID: id )
4912
{
4913
    USAGE:	wall
4914
    KEY (STD)	"'"nm"' hides rather than overrides the virtual
4915
		 function '"id"'"
4916
}
4917
 
4918
class_virtual_ret ( IDENTIFIER: id1, LONG_ID: id2, PTR_LOC: loc )
4919
{
4920
    KEY (STD)	"Return type for overriding virtual function '"id1"'
4921
		 differs from that for '"id2"' (see "loc")"
4922
}
4923
 
4924
class_virtual_darg ( IDENTIFIER: id )
4925
{
4926
    USAGE:	wall
4927
    KEY (STD)	"Default arguments for virtual function '"id"' differ
4928
		 from those of overridden function"
4929
}
4930
 
4931
class_virtual_ambig ( IDENTIFIER: id1, LONG_ID: id2 )
4932
{
4933
    KEY (STD)	"Conversion from return type of '"id1"' to that of
4934
		 '"id2"' must be unambiguous"
4935
}
4936
 
4937
class_virtual_final ( LONG_ID: id, CLASS_TYPE: ct )
4938
{
4939
    KEY (STD)	"Virtual function '"id"' doesn't have a unique final
4940
		 overrider in '"ct"'"
4941
}
4942
 
4943
class_virtual_destr ( CLASS_TYPE: ct )
4944
{
4945
    USAGE:	wall
4946
    KEY (STD)	"The polymorphic type '"ct"' doesn't have a virtual destructor"
4947
}
4948
 
4949
class_virtual_not ( LONG_ID: id )
4950
{
4951
    USAGE:	wall
4952
    KEY (STD)	"Call to '"id"' is not virtual"
4953
}
4954
 
4955
 
4956
/*  --------------------------------------------------------------------
4957
    10.4	Abstract classes
4958
		[class.abstract]
4959
    --------------------------------------------------------------------  */
4960
 
4961
class_abstract_virt ()
4962
{
4963
    KEY (ISO)	"10.4" | "????"
4964
    KEY (STD)	"Only virtual functions can be pure"
4965
}
4966
 
4967
class_abstract_zero ()
4968
{
4969
    KEY (STD)	"A pure specifier should be precisely '0'"
4970
}
4971
 
4972
class_abstract_class ( CLASS_TYPE: ct )
4973
{
4974
    USAGE:	whatever
4975
    KEY (STD)	"The class '"ct"' is abstract"
4976
}
4977
 
4978
class_abstract_pure ( LONG_ID: id )
4979
{
4980
    USAGE:	whatever
4981
    KEY (STD)	"'"id"' is a pure virtual function"
4982
}
4983
 
4984
class_abstract_decl ( IDENTIFIER: id )
4985
{
4986
    KEY (STD)	"The object '"id"' can't have abstract type"
4987
}
4988
 
4989
class_abstract_mem ( IDENTIFIER: id )
4990
{
4991
    KEY (STD)	"The member '"id"' can't have abstract type"
4992
}
4993
 
4994
class_abstract_par ()
4995
{
4996
    KEY (STD)	"A function parameter can't have abstract type"
4997
}
4998
 
4999
class_abstract_ret ()
5000
{
5001
    KEY (STD)	"A function can't return an abstract type"
5002
}
5003
 
5004
class_abstract_cast ()
5005
{
5006
    KEY (STD)	"Can't explicitly cast to an abstract type"
5007
}
5008
 
5009
class_abstract_call ( LONG_ID: id )
5010
{
5011
    USAGE:	wall
5012
    KEY (STD)	"Calling the pure virtual function '"id"' is undefined"
5013
}
5014
 
5015
 
5016
/*  --------------------------------------------------------------------
5017
    11		Member access control
5018
		[class.access]
5019
    --------------------------------------------------------------------  */
5020
 
5021
 
5022
/*  --------------------------------------------------------------------
5023
    11.1	Access specifiers
5024
		[class.access.spec]
5025
    --------------------------------------------------------------------  */
5026
 
5027
class_access_spec_priv ( CLASS_TYPE: ct )
5028
{
5029
    USAGE:	whatever
5030
    KEY (ISO)	"11.1" | "????"
5031
    KEY (STD)	"'"ct"' has a 'private' or 'protected' member"
5032
}
5033
 
5034
class_access_spec_id ( LONG_ID: id, ACCESS: acc, LONG_ID: fn )
5035
{
5036
    KEY (STD)	"The '"acc"' member '"id"' can't be accessed by '"fn"'"
5037
}
5038
 
5039
class_access_spec_none ( LONG_ID: id, ACCESS: acc )
5040
{
5041
    KEY (STD)	"Can't access the '"acc"' member '"id"'"
5042
}
5043
 
5044
class_access_spec_change ( LONG_ID: id, PTR_LOC: loc )
5045
{
5046
    KEY (STD)	"Can't change access in redeclaration of '"id"' (see "loc")"
5047
}
5048
 
5049
 
5050
/*  --------------------------------------------------------------------
5051
    11.2	Access of base classes and base class members
5052
		[class.access.base]
5053
    --------------------------------------------------------------------  */
5054
 
5055
class_access_base_acc ( LONG_ID: id, ACCESS: acc )
5056
{
5057
    USAGE:	wall
5058
    KEY (ISO)	"11.2" | "????"
5059
    KEY (STD)	"Missing base class access, '"acc" "id"'"
5060
}
5061
 
5062
class_access_base_id ( CLASS_TYPE: b, CLASS_TYPE: d, ACCESS: acc, LONG_ID: fn )
5063
{
5064
    KEY (STD)	"The '"acc"' base '"b"' of '"d"' can't be accessed by '"fn"'"
5065
}
5066
 
5067
class_access_base_none ( CLASS_TYPE: b, CLASS_TYPE: d, ACCESS: acc )
5068
{
5069
    KEY (STD)	"Can't access the '"acc"' base '"b"' of '"d"'"
5070
}
5071
 
5072
 
5073
/*  --------------------------------------------------------------------
5074
    11.3	Access declarations
5075
		[class.access.dcl]
5076
    --------------------------------------------------------------------  */
5077
 
5078
class_access_dcl_using ( IDENTIFIER: id )
5079
{
5080
    USAGE:	none
5081
    KEY (ISO)	"11.3" | "????"
5082
    KEY (STD)	"Access declarations are deprecated: use 'using "id"'"
5083
}
5084
 
5085
 
5086
/*  --------------------------------------------------------------------
5087
    11.4	Friends
5088
		[class.friend]
5089
    --------------------------------------------------------------------  */
5090
 
5091
class_friend_decl ()
5092
{
5093
    KEY (ISO)	"11.4" | "????"
5094
    KEY (STD)	"Only functions and classes can be friends"
5095
}
5096
 
5097
class_friend_elab ()
5098
{
5099
    KEY (STD)	"Elaborated type specifier required in friend declaration"
5100
}
5101
 
5102
class_friend_storage ( DECL_SPEC: ds )
5103
{
5104
    KEY (STD)	"The 'friend' specifier can't be used with the storage
5105
		 class specifier '"ds"'"
5106
}
5107
 
5108
class_friend_def ()
5109
{
5110
    KEY (STD)	"Can't apply 'friend' to a class definition"
5111
}
5112
 
5113
class_friend_local ()
5114
{
5115
    KEY (STD)	"Can't define a 'friend' function in a local class"
5116
}
5117
 
5118
class_friend_pre ( IDENTIFIER: id )
5119
{
5120
    USAGE:	wall
5121
    KEY (STD)	"'"id"' first declared in a friend declaration"
5122
}
5123
 
5124
class_friend_dup_func ( LONG_ID: id, CLASS_TYPE: ct )
5125
{
5126
    USAGE:	wall
5127
    KEY (STD)	"Function '"id"' is already a friend of '"ct"'"
5128
}
5129
 
5130
class_friend_dup_class ( CLASS_TYPE: cs, CLASS_TYPE: ct )
5131
{
5132
    USAGE:	wall
5133
    KEY (STD)	"Class '"cs"' is already a friend of '"ct"'"
5134
}
5135
 
5136
 
5137
/*  --------------------------------------------------------------------
5138
    11.5	Protected member access
5139
		[class.protected]
5140
    --------------------------------------------------------------------  */
5141
 
5142
 
5143
/*  --------------------------------------------------------------------
5144
    11.6	Access to virtual functions
5145
		[class.access.virt]
5146
    --------------------------------------------------------------------  */
5147
 
5148
 
5149
/*  --------------------------------------------------------------------
5150
    11.7	Multiple access
5151
		[class.paths]
5152
    --------------------------------------------------------------------  */
5153
 
5154
 
5155
/*  --------------------------------------------------------------------
5156
    12		Special member functions
5157
		[special]
5158
    --------------------------------------------------------------------  */
5159
 
5160
class_special_decl ( LONG_ID: id )
5161
{
5162
    KEY (ISO)	"12" | "????"
5163
    KEY (STD)	"Can't explicitly declare the implicit function '"id"'"
5164
}
5165
 
5166
 
5167
/*  --------------------------------------------------------------------
5168
    12.1	Constructors
5169
		[class.ctor]
5170
    --------------------------------------------------------------------  */
5171
 
5172
class_ctor_static ()
5173
{
5174
    KEY (ISO)	"12.1" | "????"
5175
    KEY (STD)	"Constructors can't be static members"
5176
}
5177
 
5178
class_ctor_virtual ()
5179
{
5180
    KEY (STD)	"Constructors can't be virtual members"
5181
}
5182
 
5183
class_ctor_ret ( HASHID: nm )
5184
{
5185
    KEY (STD)	"Can't give return type for constructor '"nm"'"
5186
}
5187
 
5188
class_ctor_qual ( HASHID: nm, CV_SPEC: cv )
5189
{
5190
    KEY (STD)	"The constructor '"nm"' can't be '"cv"' qualified"
5191
}
5192
 
5193
class_ctor_result ( LONG_ID: id )
5194
{
5195
    KEY (STD)	"Can't return a value from the constructor '"id"'"
5196
}
5197
 
5198
class_ctor_addr ( LONG_ID: id )
5199
{
5200
    KEY (STD)	"Can't take the address of the constructor '"id"'"
5201
}
5202
 
5203
class_ctor_default ( CLASS_TYPE: ct )
5204
{
5205
    KEY (STD)	"'"ct"' has no default constructor"
5206
}
5207
 
5208
class_ctor_user ( CLASS_TYPE: ct )
5209
{
5210
    USAGE:	whatever
5211
    KEY (STD)	"'"ct"' has a user-defined constructor"
5212
}
5213
 
5214
class_ctor_nontriv ( CLASS_TYPE: ct )
5215
{
5216
    USAGE:	whatever
5217
    KEY (STD)	"'"ct"' has a non-trivial constructor"
5218
}
5219
 
5220
class_ctor_make ( CLASS_TYPE: ct )
5221
{
5222
    USAGE:	wall
5223
    KEY (STD)	"'"ct"' has only copy constructors"
5224
}
5225
 
5226
class_ctor_private ( CLASS_TYPE: ct )
5227
{
5228
    USAGE:	wall
5229
    KEY (STD)	"'"ct"' has only private non-copy constructors and
5230
		 no friends"
5231
}
5232
 
5233
 
5234
/*  --------------------------------------------------------------------
5235
    12.2	Temporary objects
5236
		[class.temporary]
5237
    --------------------------------------------------------------------  */
5238
 
5239
 
5240
/*  --------------------------------------------------------------------
5241
    12.3	Conversions
5242
		[class.conv]
5243
    --------------------------------------------------------------------  */
5244
 
5245
 
5246
/*  --------------------------------------------------------------------
5247
    12.3.1	Conversion by constructor
5248
		[class.conv.ctor]
5249
    --------------------------------------------------------------------  */
5250
 
5251
 
5252
/*  --------------------------------------------------------------------
5253
    12.3.2	Conversion functions
5254
		[class.conv.fct]
5255
    --------------------------------------------------------------------  */
5256
 
5257
class_conv_fct_typedef ( HASHID: nm )
5258
{
5259
    KEY (ISO)	"12.3.2" | "????"
5260
    KEY (STD)	"Can't declare type in conversion function name '"nm"'"
5261
}
5262
 
5263
class_conv_fct_ret ( HASHID: nm )
5264
{
5265
    KEY (STD)	"Can't give return type for conversion function '"nm"'"
5266
}
5267
 
5268
class_conv_fct_ret_bad ( HASHID: nm, TYPE: t )
5269
{
5270
    KEY (STD)	"Conversion function '"nm"' declared to return '"t"'"
5271
}
5272
 
5273
class_conv_fct_pars ( HASHID: nm )
5274
{
5275
    KEY (STD)	"Can't give parameter types for conversion function '"nm"'"
5276
}
5277
 
5278
class_conv_fct_void ( HASHID: nm )
5279
{
5280
    USAGE:	none
5281
    KEY (STD)	"Illegal conversion function '"nm"'"
5282
}
5283
 
5284
class_conv_fct_mem ()
5285
{
5286
    KEY (STD)	"A conversion function must be a non-static member"
5287
}
5288
 
5289
 
5290
/*  --------------------------------------------------------------------
5291
    12.4	Destructors
5292
		[class.dtor]
5293
    --------------------------------------------------------------------  */
5294
 
5295
class_dtor_static ()
5296
{
5297
    KEY (ISO)	"12.4" | "????"
5298
    KEY (STD)	"Destructors can't be static members"
5299
}
5300
 
5301
class_dtor_ret ( HASHID: nm )
5302
{
5303
    KEY (STD)	"Can't give return type for destructor '"nm"'"
5304
}
5305
 
5306
class_dtor_pars ( HASHID: nm )
5307
{
5308
    KEY (STD)	"Can't give parameter types for destructor '"nm"'"
5309
}
5310
 
5311
class_dtor_func ( HASHID: nm )
5312
{
5313
    KEY (STD)	"The destructor '"nm"' must be a member function"
5314
}
5315
 
5316
class_dtor_inherit ( HASHID: nm, NAMESPACE: ns )
5317
{
5318
    KEY (STD)	"The destructor '"nm"' can't be inherited by '"ns"'"
5319
}
5320
 
5321
class_dtor_qual ( HASHID: nm, CV_SPEC: cv )
5322
{
5323
    KEY (STD)	"The destructor '"nm"' can't be '"cv"' qualified"
5324
}
5325
 
5326
class_dtor_default ( CLASS_TYPE: ct )
5327
{
5328
    KEY (STD)	"'"ct"' has no default destructor"
5329
}
5330
 
5331
class_dtor_nontriv ( CLASS_TYPE: ct )
5332
{
5333
    USAGE:	whatever
5334
    KEY (STD)	"'"ct"' has a non-trivial destructor"
5335
}
5336
 
5337
class_dtor_result ( LONG_ID: id )
5338
{
5339
    KEY (STD)	"Can't return a value from the destructor '"id"'"
5340
}
5341
 
5342
class_dtor_addr ( LONG_ID: id )
5343
{
5344
    KEY (STD)	"Can't take the address of the destructor '"id"'"
5345
}
5346
 
5347
class_dtor_private ( CLASS_TYPE: ct )
5348
{
5349
    USAGE:	wall
5350
    KEY (STD)	"'"ct"' has a private destructor and no friends"
5351
}
5352
 
5353
class_dtor_three ( CLASS_TYPE: ct )
5354
{
5355
    USAGE:	wall
5356
    KEY (STD)	"A class '"ct"' with a destructor, copy constructor
5357
		 or copy assignment operator should have all three"
5358
}
5359
 
5360
 
5361
/*  --------------------------------------------------------------------
5362
    12.5	Free store
5363
		[class.free]
5364
    --------------------------------------------------------------------  */
5365
 
5366
class_free_static ( HASHID: nm )
5367
{
5368
    USAGE:	whatever
5369
    KEY (ISO)	"12.5" | "????"
5370
    KEY (STD)	"'"nm"' is implicitly declared static"
5371
}
5372
 
5373
 
5374
/*  --------------------------------------------------------------------
5375
    12.6	Initialization
5376
		[class.init]
5377
    --------------------------------------------------------------------  */
5378
 
5379
 
5380
/*  --------------------------------------------------------------------
5381
    12.6.1	Explicit initialization
5382
		[class.expl.init]
5383
    --------------------------------------------------------------------  */
5384
 
5385
 
5386
/*  --------------------------------------------------------------------
5387
    12.6.2	Initializing bases and members
5388
		[class.base.init]
5389
    --------------------------------------------------------------------  */
5390
 
5391
class_base_init_bad ( LONG_ID: id )
5392
{
5393
    KEY (ISO)	"12.6.2" | "????"
5394
    KEY (STD)	"The function '"id"' can't have constructor-style
5395
		 initializers"
5396
}
5397
 
5398
class_base_init_empty ( LONG_ID: id )
5399
{
5400
    KEY (STD)	"Empty constructor-style initializer for function '"id"'"
5401
}
5402
 
5403
class_base_init_old ( LONG_ID: id )
5404
{
5405
    KEY (STD)	"Anachronistic base class initializer in '"id"'"
5406
}
5407
 
5408
class_base_init_uniq ( CLASS_TYPE: ct )
5409
{
5410
    KEY (STD)	"Class '"ct"' does not have a unique base class"
5411
}
5412
 
5413
class_base_init_static ( IDENTIFIER: id )
5414
{
5415
    KEY (STD)	"Initializer '"id"' isn't a non-static member or a base class"
5416
}
5417
 
5418
class_base_init_inherit ( IDENTIFIER: id )
5419
{
5420
    KEY (STD)	"Can't use inherited member '"id"' as an initializer"
5421
}
5422
 
5423
class_base_init_base ( CLASS_TYPE: ct )
5424
{
5425
    KEY (STD)	"The base class initializer '"ct"' should be a direct
5426
		 or a virtual base"
5427
}
5428
 
5429
class_base_init_ambig ( CLASS_TYPE: ct )
5430
{
5431
    KEY (STD)	"The base class initializer '"ct"' is both a direct and
5432
		 a virtual base"
5433
}
5434
 
5435
class_base_init_dup ( IDENTIFIER: id )
5436
{
5437
    KEY (STD)	"Initializer for '"id"' already given"
5438
}
5439
 
5440
class_base_init_none ( IDENTIFIER: id )
5441
{
5442
    USAGE:	variable
5443
    KEY (STD)	"No initializer for '"id"' in constructor"
5444
}
5445
 
5446
class_base_init_order ( IDENTIFIER: id )
5447
{
5448
    USAGE:	variable
5449
    KEY (STD)	"Constructor initializer for '"id"' out of sequence"
5450
}
5451
 
5452
class_base_init_union ( CLASS_TYPE: ct )
5453
{
5454
    KEY (STD)	"More than one initializer given for union '"ct"'"
5455
}
5456
 
5457
class_base_init_anon ( IDENTIFIER: id )
5458
{
5459
    KEY (STD)	"More than one initializer given for anonymous union
5460
		 member '"id"'"
5461
}
5462
 
5463
class_base_init_err ( LONG_ID: id )
5464
{
5465
    USAGE:	whatever
5466
    KEY (STD)	"In special member function '"id"'"
5467
}
5468
 
5469
class_base_init_impl ( LONG_ID: id )
5470
{
5471
    USAGE:	whatever
5472
    KEY (STD)	"In implicit definition of '"id"'"
5473
}
5474
 
5475
 
5476
/*  --------------------------------------------------------------------
5477
    12.7	Construction and destruction
5478
		[class.cdtor]
5479
    --------------------------------------------------------------------  */
5480
 
5481
 
5482
/*  --------------------------------------------------------------------
5483
    12.8	Copying class objects
5484
		[class.copy]
5485
    --------------------------------------------------------------------  */
5486
 
5487
class_copy_bad ( HASHID: nm )
5488
{
5489
    KEY (ISO)	"12.8" | "????"
5490
    KEY (STD)	"Copy constructor '"nm"' should have a reference parameter"
5491
}
5492
 
5493
class_copy_constr ( CLASS_TYPE: ct )
5494
{
5495
    KEY (STD)	"'"ct"' has no copy constructor"
5496
}
5497
 
5498
class_copy_assign ( CLASS_TYPE: ct )
5499
{
5500
    KEY (STD)	"'"ct"' has no copy assignment operator"
5501
}
5502
 
5503
class_copy_nontriv_constr ( CLASS_TYPE: ct )
5504
{
5505
    USAGE:	whatever
5506
    KEY (STD)	"'"ct"' has a non-trivial copy constructor"
5507
}
5508
 
5509
class_copy_nontriv_assign ( CLASS_TYPE: ct )
5510
{
5511
    USAGE:	whatever
5512
    KEY (STD)	"'"ct"' has a non-trivial copy assignment operator"
5513
}
5514
 
5515
class_copy_ptr ()
5516
{
5517
    USAGE:	wall
5518
    KEY (STD)	"Pointers are shallow copied"
5519
}
5520
 
5521
 
5522
/*  --------------------------------------------------------------------
5523
    13		Overloading
5524
		[over]
5525
    --------------------------------------------------------------------  */
5526
 
5527
 
5528
/*  --------------------------------------------------------------------
5529
    13.1	Overloadable declarations
5530
		[over.load]
5531
    --------------------------------------------------------------------  */
5532
 
5533
over_load_pars ()
5534
{
5535
    USAGE:	whatever
5536
    KEY (ISO)	"13.1" | "????"
5537
    KEY (STD)	"Can't overload functions with indistinguishable
5538
		 parameter types"
5539
}
5540
 
5541
 
5542
/*  --------------------------------------------------------------------
5543
    13.2	Declaration matching
5544
		[over.dcl]
5545
    --------------------------------------------------------------------  */
5546
 
5547
 
5548
/*  --------------------------------------------------------------------
5549
    13.3	Overload resolution
5550
		[over.match]
5551
    --------------------------------------------------------------------  */
5552
 
5553
 
5554
/*  --------------------------------------------------------------------
5555
    13.3.1	Candidate functions and argument lists
5556
		[over.match.funcs]
5557
    --------------------------------------------------------------------  */
5558
 
5559
 
5560
/*  --------------------------------------------------------------------
5561
    13.3.1.1	Function call syntax
5562
		[over.match.call]
5563
    --------------------------------------------------------------------  */
5564
 
5565
over_match_call_mem ( IDENTIFIER: id )
5566
{
5567
    KEY (ISO)	"13.3.1.1" | "????"
5568
    KEY (STD)	"Can't have member function '&"id"' in call"
5569
}
5570
 
5571
over_match_call_ok ( LONG_ID: id )
5572
{
5573
    USAGE:	overload_res
5574
    KEY (STD)	"Overloaded function call resolves to '"id"'"
5575
}
5576
 
5577
over_match_call_target ( IDENTIFIER: id )
5578
{
5579
    USAGE:	overload_dep
5580
    KEY (STD)	"Target dependent resolution for call to overloaded
5581
		 function '"id"'"
5582
}
5583
 
5584
over_match_call_ambig ( IDENTIFIER: id )
5585
{
5586
    USAGE:	overload_ambig
5587
    KEY (STD)	"Ambiguous call to overloaded function '"id"'"
5588
}
5589
 
5590
 
5591
/*  --------------------------------------------------------------------
5592
    13.3.1.1.1	Call to named function
5593
		[over.call.func]
5594
    --------------------------------------------------------------------  */
5595
 
5596
 
5597
/*  --------------------------------------------------------------------
5598
    13.3.1.1.2	Call to object of class type
5599
		[over.call.object]
5600
    --------------------------------------------------------------------  */
5601
 
5602
 
5603
/*  --------------------------------------------------------------------
5604
    13.3.1.2	Operators in expressions
5605
		[over.match.oper]
5606
    --------------------------------------------------------------------  */
5607
 
5608
over_match_oper_ok ( LONG_ID: id )
5609
{
5610
    USAGE:	overload_res
5611
    KEY (ISO)	"13.3.1.2" | "????"
5612
    KEY (STD)	"Overloaded operator resolves to '"id"'"
5613
}
5614
 
5615
over_match_oper_target ( LEX: op )
5616
{
5617
    USAGE:	overload_dep
5618
    KEY (STD)	"Target dependent resolution for overloaded operator '"op"'"
5619
}
5620
 
5621
over_match_oper_ambig ( LEX: op )
5622
{
5623
    USAGE:	overload_ambig
5624
    KEY (STD)	"Ambiguous overloaded operator '"op"'"
5625
}
5626
 
5627
over_match_oper_arrow ()
5628
{
5629
    KEY (STD)	"Infinite loop in overloading of '->'"
5630
}
5631
 
5632
 
5633
/*  --------------------------------------------------------------------
5634
    13.3.1.3	Initialization by constructor
5635
		[over.match.ctor]
5636
    --------------------------------------------------------------------  */
5637
 
5638
over_match_ctor_ok ( LONG_ID: id )
5639
{
5640
    USAGE:	overload_res
5641
    KEY (ISO)	"13.3.1.3" | "????"
5642
    KEY (STD)	"Overloaded constructor call resolves to '"id"'"
5643
}
5644
 
5645
over_match_ctor_target ( IDENTIFIER: id )
5646
{
5647
    USAGE:	overload_dep
5648
    KEY (STD)	"Target dependent resolution for call to overloaded
5649
		 constructor '"id"'"
5650
}
5651
 
5652
over_match_ctor_ambig ( IDENTIFIER: id )
5653
{
5654
    USAGE:	overload_ambig
5655
    KEY (STD)	"Ambiguous call to overloaded constructor '"id"'"
5656
}
5657
 
5658
over_match_ctor_none ( IDENTIFIER: id )
5659
{
5660
    KEY (STD)	"None of the overloaded constructors '"id"' is viable
5661
		 for given call"
5662
}
5663
 
5664
 
5665
/*  --------------------------------------------------------------------
5666
    13.3.1.4	Copy-initialization of class by user-defined conversion
5667
		[over.match.copy]
5668
    --------------------------------------------------------------------  */
5669
 
5670
 
5671
/*  --------------------------------------------------------------------
5672
    13.3.1.5	Initialization by conversion function
5673
		[over.match.conv]
5674
    --------------------------------------------------------------------  */
5675
 
5676
over_match_conv_ok ( LONG_ID: id )
5677
{
5678
    USAGE:	overload_res
5679
    KEY (ISO)	"13.3.1.5" | "????"
5680
    KEY (STD)	"Overloaded user-defined conversion resolves to '"id"'"
5681
}
5682
 
5683
over_match_conv_target ( TYPE: t1, TYPE: t2 )
5684
{
5685
    USAGE:	overload_dep
5686
    KEY (STD)	"Target dependent resolution for user-defined conversion
5687
		 from '"t1"' to '"t2"'"
5688
}
5689
 
5690
over_match_conv_ambig ( TYPE: t1, TYPE: t2 )
5691
{
5692
    USAGE:	overload_ambig
5693
    KEY (STD)	"Ambiguous user-defined conversion from '"t1"' to '"t2"'"
5694
}
5695
 
5696
over_match_conv_dup ( TYPE: t )
5697
{
5698
    KEY (STD)	"Ambiguous user-defined conversions from '"t"'"
5699
}
5700
 
5701
 
5702
/*  --------------------------------------------------------------------
5703
    13.3.1.6	Initialization by conversion function for direct
5704
		reference binding
5705
		[over.match.ref]
5706
    --------------------------------------------------------------------  */
5707
 
5708
 
5709
/*  --------------------------------------------------------------------
5710
    13.3.2	Viable functions
5711
		[over.match.viable]
5712
    --------------------------------------------------------------------  */
5713
 
5714
over_match_viable_none ( IDENTIFIER: id )
5715
{
5716
    KEY (ISO)	"13.3.2" | "????"
5717
    KEY (STD)	"None of the overloaded functions '"id"' is viable for
5718
		 given call"
5719
}
5720
 
5721
over_match_viable_list ()
5722
{
5723
    USAGE:	whatever
5724
    KEY (STD)	"Viable candidates are as follows"
5725
}
5726
 
5727
 
5728
/*  --------------------------------------------------------------------
5729
    13.3.3	Best Viable Function
5730
		[over.match.best]
5731
    --------------------------------------------------------------------  */
5732
 
5733
over_match_best_install ()
5734
{
5735
    USAGE:	overload_ambig
5736
    KEY (ISO)	"13.3.3" | "????"
5737
    KEY (STD)	"Failed target dependent overload resolution"
5738
}
5739
 
5740
over_match_best_common ()
5741
{
5742
    KEY (STD)	"Can't find common return type for target dependent
5743
		 overload resolution"
5744
}
5745
 
5746
 
5747
/*  --------------------------------------------------------------------
5748
    13.3.3.1	Implicit conversion sequences
5749
		[over.best.ics]
5750
    --------------------------------------------------------------------  */
5751
 
5752
 
5753
/*  --------------------------------------------------------------------
5754
    13.3.3.1.1	Standard conversion sequences
5755
		[over.ics.scs]
5756
    --------------------------------------------------------------------  */
5757
 
5758
 
5759
/*  --------------------------------------------------------------------
5760
    13.3.3.1.2	User-defined conversion sequences
5761
		[over.ics.user]
5762
    --------------------------------------------------------------------  */
5763
 
5764
 
5765
/*  --------------------------------------------------------------------
5766
    13.3.3.1.3	Ellipsis conversion sequences
5767
		[over.ics.ellipsis]
5768
    --------------------------------------------------------------------  */
5769
 
5770
 
5771
/*  --------------------------------------------------------------------
5772
    13.3.3.1.4	Reference binding
5773
		[over.ics.ref]
5774
    --------------------------------------------------------------------  */
5775
 
5776
 
5777
/*  --------------------------------------------------------------------
5778
    13.3.3.2	Ranking implicit conversion sequences
5779
		[over.ics.rank]
5780
    --------------------------------------------------------------------  */
5781
 
5782
 
5783
/*  --------------------------------------------------------------------
5784
    13.4	Address of overloaded function
5785
		[over.over]
5786
    --------------------------------------------------------------------  */
5787
 
5788
over_over_context ( IDENTIFIER: id )
5789
{
5790
    KEY (ISO)	"13.4" | "????"
5791
    KEY (STD)	"Can't use the overloaded function '"id"' in this context"
5792
}
5793
 
5794
over_over_none ( IDENTIFIER: id, TYPE: t )
5795
{
5796
    KEY (STD)	"None of the overloaded functions '"id"' has type '"t"'"
5797
}
5798
 
5799
over_over_ok ( LONG_ID: id )
5800
{
5801
    USAGE:	overload_res
5802
    KEY (STD)	"Address of overloaded function resolves to '"id"'"
5803
}
5804
 
5805
 
5806
/*  --------------------------------------------------------------------
5807
    13.5	Overloaded operators
5808
		[over.oper]
5809
    --------------------------------------------------------------------  */
5810
 
5811
over_oper_bad ( LEX: op )
5812
{
5813
    KEY (ISO)	"13.5" | "????"
5814
    KEY (STD)	"Can't overload '"op"'"
5815
}
5816
 
5817
over_oper_static ()
5818
{
5819
    KEY (STD)	"Overloaded operators can't be static members"
5820
}
5821
 
5822
over_oper_type ( HASHID: nm )
5823
{
5824
    KEY (STD)	"'"nm"' should have an overloadable parameter type"
5825
}
5826
 
5827
over_oper_default ( HASHID: nm )
5828
{
5829
    KEY (STD)	"'"nm"' can't have default arguments"
5830
}
5831
 
5832
over_oper_func ( IDENTIFIER: id )
5833
{
5834
    KEY (STD)	"'"id"' is not a function"
5835
}
5836
 
5837
 
5838
/*  --------------------------------------------------------------------
5839
    13.5.1	Unary operators
5840
		[over.unary]
5841
    --------------------------------------------------------------------  */
5842
 
5843
over_unary_pars ( HASHID: nm, unsigned: n, plural: s )
5844
{
5845
    KEY (ISO)	"13.5.1" | "????"
5846
    KEY (STD)	"'"nm"' should have "n" parameter"s
5847
}
5848
 
5849
 
5850
/*  --------------------------------------------------------------------
5851
    13.5.2	Binary operators
5852
		[over.binary]
5853
    --------------------------------------------------------------------  */
5854
 
5855
over_binary_pars_p2 ( HASHID: nm, unsigned: n, plural: s )
5856
{
5857
    KEY (ISO)	"13.5.2" | "????"
5858
    KEY (STD)	"'"nm"' should have "n" parameter"s
5859
}
5860
 
5861
over_binary_pars_p1 ( HASHID: nm, unsigned: n, unsigned: m, plural: s )
5862
{
5863
    KEY (STD)	"'"nm"' should have "n" or "m" parameter"s
5864
}
5865
 
5866
 
5867
/*  --------------------------------------------------------------------
5868
    13.5.3	Assignment
5869
		[over.ass]
5870
    --------------------------------------------------------------------  */
5871
 
5872
over_ass_mem ( HASHID: nm )
5873
{
5874
    KEY (ISO)	"13.5.3" | "????"
5875
    KEY (STD)	"'"nm"' should be a member function"
5876
}
5877
 
5878
over_ass_pars ( HASHID: nm, unsigned: n, plural: s )
5879
{
5880
    KEY (STD)	"'"nm"' should have "n" parameter"s
5881
}
5882
 
5883
 
5884
/*  --------------------------------------------------------------------
5885
    13.5.4	Function call
5886
		[over.call]
5887
    --------------------------------------------------------------------  */
5888
 
5889
over_call_mem ( HASHID: nm )
5890
{
5891
    KEY (ISO)	"13.5.4" | "????"
5892
    KEY (STD)	"'"nm"' should be a member function"
5893
}
5894
 
5895
 
5896
/*  --------------------------------------------------------------------
5897
    13.5.5	Subscripting
5898
		[over.sub]
5899
    --------------------------------------------------------------------  */
5900
 
5901
over_sub_mem ( HASHID: nm )
5902
{
5903
    KEY (ISO)	"13.5.5" | "????"
5904
    KEY (STD)	"'"nm"' should be a member function"
5905
}
5906
 
5907
over_sub_pars ( HASHID: nm, unsigned: n, plural: s )
5908
{
5909
    KEY (STD)	"'"nm"' should have "n" parameter"s
5910
}
5911
 
5912
 
5913
/*  --------------------------------------------------------------------
5914
    13.5.6	Class member access
5915
		[over.ref]
5916
    --------------------------------------------------------------------  */
5917
 
5918
over_ref_mem ( HASHID: nm )
5919
{
5920
    KEY (ISO)	"13.5.6" | "????"
5921
    KEY (STD)	"'"nm"' should be a member function"
5922
}
5923
 
5924
over_ref_pars ( HASHID: nm, unsigned: n, plural: s )
5925
{
5926
    KEY (STD)	"'"nm"' should have "n" parameter"s
5927
}
5928
 
5929
 
5930
/*  --------------------------------------------------------------------
5931
    13.5.7	Increment and decrement
5932
		[over.inc]
5933
    --------------------------------------------------------------------  */
5934
 
5935
over_inc_pars ( HASHID: nm, unsigned: n, unsigned: m, plural: s )
5936
{
5937
    KEY (ISO)	"13.5.7" | "????"
5938
    KEY (STD)	"'"nm"' should have "n" or "m" parameter"s
5939
}
5940
 
5941
over_inc_pars_p2 ( HASHID: nm, TYPE: t )
5942
{
5943
    KEY (STD)	"Extra parameter to '"nm"' should be of type '"t"'"
5944
}
5945
 
5946
 
5947
/*  --------------------------------------------------------------------
5948
    13.6	Built-in operators
5949
		[over.built]
5950
    --------------------------------------------------------------------  */
5951
 
5952
 
5953
/*  --------------------------------------------------------------------
5954
    14		Templates
5955
		[temp]
5956
    --------------------------------------------------------------------  */
5957
 
5958
temp_decl_bad ()
5959
{
5960
    KEY (ISO)	"14" | "????"
5961
    KEY (STD)	"Invalid template declaration"
5962
}
5963
 
5964
temp_decl_scope ()
5965
{
5966
    KEY (STD)	"A template can only be declared in namespace or class scope"
5967
}
5968
 
5969
temp_decl_func ()
5970
{
5971
    KEY (STD)	"Can't have partially specialized template functions"
5972
}
5973
 
5974
temp_decl_one ()
5975
{
5976
    KEY (STD)	"Can only declare a single object in a template declaration"
5977
}
5978
 
5979
temp_decl_linkage ()
5980
{
5981
    KEY (STD)	"A template can't have C linkage"
5982
}
5983
 
5984
temp_decl_export ( IDENTIFIER: id )
5985
{
5986
    KEY (STD)	"Can't export the template '"id"'"
5987
}
5988
 
5989
temp_decl_undef ( LONG_ID: id )
5990
{
5991
    KEY (STD)	"The non-exported template '"id"' has not been defined"
5992
}
5993
 
5994
 
5995
/*  --------------------------------------------------------------------
5996
    14.1	Template parameters
5997
		[temp.param]
5998
    --------------------------------------------------------------------  */
5999
 
6000
temp_param_eof ()
6001
{
6002
    KEY (ISO)	"14.1" | "????"
6003
    KEY (STD)	"End of file in template parameters"
6004
}
6005
 
6006
temp_param_dup ( HASHID: nm )
6007
{
6008
    KEY (STD)	"Duplicate template parameter '"nm"'"
6009
}
6010
 
6011
temp_param_type ( IDENTIFIER: id, TYPE: t )
6012
{
6013
    KEY (STD)	"The template parameter '"id"' can't have type '"t"'"
6014
}
6015
 
6016
temp_param_dcl_stc ( DECL_SPEC: ds )
6017
{
6018
    KEY (STD)	"Can't apply '"ds"' to a template parameter"
6019
}
6020
 
6021
temp_param_default ( IDENTIFIER: id )
6022
{
6023
    KEY (STD)	"The template parameter '"id"' should have a default argument"
6024
}
6025
 
6026
temp_param_func ()
6027
{
6028
    KEY (STD)	"Can't have default arguments in template function"
6029
}
6030
 
6031
temp_param_redecl ()
6032
{
6033
    KEY (STD)	"Can't have default arguments in template redeclaration"
6034
}
6035
 
6036
temp_param_none ( LONG_ID: id )
6037
{
6038
    KEY (STD)	"No template from which to specialize '"id"'"
6039
}
6040
 
6041
 
6042
/*  --------------------------------------------------------------------
6043
    14.2	Names of template specializations
6044
		[temp.names]
6045
    --------------------------------------------------------------------  */
6046
 
6047
temp_names_eof ( LONG_ID: id )
6048
{
6049
    KEY (ISO)	"14.2" | "????"
6050
    KEY (STD)	"End of file in arguments for template '"id"'"
6051
}
6052
 
6053
temp_names_hack ()
6054
{
6055
    KEY (STD)	"'>>' in template arguments interpreted as '> >'"
6056
}
6057
 
6058
temp_names_bad ()
6059
{
6060
    KEY (STD)	"Bad 'template' qualifier"
6061
}
6062
 
6063
temp_names_not ( IDENTIFIER: id )
6064
{
6065
    KEY (STD)	"'template "id"' doesn't name a template member"
6066
}
6067
 
6068
temp_names_mem ( IDENTIFIER: id )
6069
{
6070
    KEY (STD)	"Member '"id"' should be prefixed by 'template'"
6071
}
6072
 
6073
 
6074
/*  --------------------------------------------------------------------
6075
    14.3	Template arguments
6076
		[temp.arg]
6077
    --------------------------------------------------------------------  */
6078
 
6079
temp_arg_type ( IDENTIFIER: pid, LONG_ID: id )
6080
{
6081
    KEY (ISO)	"14.3" | "????"
6082
    KEY (STD)	"Type expected for parameter '"pid"' of template '"id"'"
6083
}
6084
 
6085
temp_arg_exp ( IDENTIFIER: pid, LONG_ID: id )
6086
{
6087
    KEY (STD)	"Expression expected for parameter '"pid"' of template '"id"'"
6088
}
6089
 
6090
temp_arg_less ( LONG_ID: id )
6091
{
6092
    KEY (STD)	"Not enough arguments for template '"id"'"
6093
}
6094
 
6095
temp_arg_more ( LONG_ID: id )
6096
{
6097
    KEY (STD)	"Too many arguments for template '"id"'"
6098
}
6099
 
6100
temp_arg_local ( TYPE: t )
6101
{
6102
    KEY (STD)	"Type argument '"t"' should have external linkage"
6103
}
6104
 
6105
temp_arg_const ()
6106
{
6107
    KEY (STD)	"A non-type template argument should be constant"
6108
}
6109
 
6110
temp_arg_internal ()
6111
{
6112
    KEY (STD)	"A non-type template argument should have external linkage"
6113
}
6114
 
6115
temp_arg_over ()
6116
{
6117
    KEY (STD)	"A non-type template argument can't be an overloaded
6118
		 pointer to member"
6119
}
6120
 
6121
temp_arg_bad ()
6122
{
6123
    KEY (STD)	"Invalid non-type template argument"
6124
}
6125
 
6126
temp_arg_init ( IDENTIFIER: pid, LONG_ID: id )
6127
{
6128
    USAGE:	whatever
6129
    KEY (STD)	"In initialization of template parameter '"pid"' of '"id"'"
6130
}
6131
 
6132
temp_arg_templ ( IDENTIFIER: pid, LONG_ID: id )
6133
{
6134
    KEY (STD)	"Template name expected for parameter '"pid"' of
6135
		 template '"id"'"
6136
}
6137
 
6138
temp_arg_templ_not ( IDENTIFIER: pid, IDENTIFIER: id )
6139
{
6140
    KEY (STD)	"Value for template parameter '"pid"', '"id"' does
6141
		 not denote a type name"
6142
}
6143
 
6144
temp_arg_templ_bad ( IDENTIFIER: pid, TYPE: t )
6145
{
6146
    KEY (STD)	"Invalid type for template parameter '"pid"', '"t"'"
6147
}
6148
 
6149
 
6150
/*  --------------------------------------------------------------------
6151
    14.4	Type equivalence
6152
		[temp.type]
6153
    --------------------------------------------------------------------  */
6154
 
6155
 
6156
/*  --------------------------------------------------------------------
6157
    14.5	Template declarations
6158
		[temp.decls]
6159
    --------------------------------------------------------------------  */
6160
 
6161
 
6162
/*  --------------------------------------------------------------------
6163
    14.5.1	Class templates
6164
		[temp.class]
6165
    --------------------------------------------------------------------  */
6166
 
6167
 
6168
/*  --------------------------------------------------------------------
6169
    14.5.1.1	Member functions of class templates
6170
		[temp.mem.func]
6171
    --------------------------------------------------------------------  */
6172
 
6173
 
6174
/*  --------------------------------------------------------------------
6175
    14.5.1.2	Member classes of class templates
6176
		[temp.mem.class]
6177
    --------------------------------------------------------------------  */
6178
 
6179
 
6180
/*  --------------------------------------------------------------------
6181
    14.5.1.3	Static data members of class templates
6182
		[temp.static]
6183
    --------------------------------------------------------------------  */
6184
 
6185
 
6186
/*  --------------------------------------------------------------------
6187
    14.5.2	Member templates
6188
		[temp.mem]
6189
    --------------------------------------------------------------------  */
6190
 
6191
temp_mem_virtual ()
6192
{
6193
    KEY (ISO)	"14.5.2" | "????"
6194
    KEY (STD)	"A template member function can't be virtual"
6195
}
6196
 
6197
temp_mem_destr ()
6198
{
6199
    KEY (STD)	"A destructor can't be a template member function"
6200
}
6201
 
6202
temp_mem_local ()
6203
{
6204
    KEY (STD)	"A local class can't have a template member or friend"
6205
}
6206
 
6207
 
6208
/*  --------------------------------------------------------------------
6209
    14.5.3	Friends
6210
		[temp.friend]
6211
    --------------------------------------------------------------------  */
6212
 
6213
 
6214
/*  --------------------------------------------------------------------
6215
    14.5.4	Class template partial specializations
6216
		[temp.class.spec]
6217
    --------------------------------------------------------------------  */
6218
 
6219
temp_class_spec_primary ( TYPE: t )
6220
{
6221
    KEY (ISO)	"14.5.4" | "????"
6222
    KEY (STD)	"Specialization '"t"' should be more specialized than
6223
		 its primary template"
6224
}
6225
 
6226
temp_class_spec_depend ( TYPE: t )
6227
{
6228
    KEY (STD)	"Dependent non-type argument in specialization '"t"'"
6229
}
6230
 
6231
temp_class_spec_darg ()
6232
{
6233
    KEY (STD)	"Can't have default arguments in template specialization"
6234
}
6235
 
6236
 
6237
/*  --------------------------------------------------------------------
6238
    14.5.4.1	Matching of class template partial specializations
6239
		[temp.class.spec.match]
6240
    --------------------------------------------------------------------  */
6241
 
6242
temp_class_spec_ambig ( TYPE: t )
6243
{
6244
    KEY (ISO)	"14.5.4.1" | "????"
6245
    KEY (STD)	"Ambiguous specialization for template '"t"'"
6246
}
6247
 
6248
temp_class_spec_match ( LONG_ID: id )
6249
{
6250
    USAGE:	wall
6251
    KEY (STD)	"Specialization '"id"' used"
6252
}
6253
 
6254
 
6255
/*  --------------------------------------------------------------------
6256
    14.5.4.2	Partial ordering of class template specializations
6257
		[temp.class.order]
6258
    --------------------------------------------------------------------  */
6259
 
6260
 
6261
/*  --------------------------------------------------------------------
6262
    14.5.4.3	Member functions of class template specializations
6263
		[temp.class.spec.mfunc]
6264
    --------------------------------------------------------------------  */
6265
 
6266
 
6267
/*  --------------------------------------------------------------------
6268
    14.5.5	Function templates
6269
		[temp.fct]
6270
    --------------------------------------------------------------------  */
6271
 
6272
 
6273
/*  --------------------------------------------------------------------
6274
    14.5.5.1	Function template overloading
6275
		[temp.over.link]
6276
    --------------------------------------------------------------------  */
6277
 
6278
 
6279
/*  --------------------------------------------------------------------
6280
    14.5.5.2	Partial ordering of function templates
6281
		[temp.func.order]
6282
    --------------------------------------------------------------------  */
6283
 
6284
 
6285
/*  --------------------------------------------------------------------
6286
    14.6	Name resolution
6287
		[temp.res]
6288
    --------------------------------------------------------------------  */
6289
 
6290
temp_res_nspace ( NAMESPACE: ns, TYPE: t )
6291
{
6292
    KEY (ISO)	"14.6" | "????"
6293
    KEY (STD)	"Qualifier '"ns"' expands to the non-class type '"t"'"
6294
}
6295
 
6296
temp_res_qual ()
6297
{
6298
    KEY (STD)	"Qualifier in 'typename' doesn't depend on a template
6299
		 parameter"
6300
}
6301
 
6302
temp_res_type ( NAMESPACE: ns, HASHID: nm )
6303
{
6304
    KEY (STD)	"'typename "ns"::"nm"' doesn't denote a type"
6305
}
6306
 
6307
temp_res_key ( BASE_TYPE: key, IDENTIFIER: id, LONG_ID: tid, TYPE: t )
6308
{
6309
    KEY (STD)	"Template parameter '"id"' of '"tid"' should be '"key"',
6310
		 not '"t"'"
6311
}
6312
 
6313
 
6314
/*  --------------------------------------------------------------------
6315
    14.6.1	Locally declared names
6316
		[temp.local]
6317
    --------------------------------------------------------------------  */
6318
 
6319
temp_local_not ( TYPE: t )
6320
{
6321
    KEY (ISO)	"14.6.1" | "????"
6322
    KEY (STD)	"Can't use the template type '"t"' in this context"
6323
}
6324
 
6325
temp_local_hide ( IDENTIFIER: id )
6326
{
6327
    KEY (STD)	"Can't hide the template parameter '"id"'"
6328
}
6329
 
6330
 
6331
/*  --------------------------------------------------------------------
6332
    14.6.2	Dependent names
6333
		[temp.dep]
6334
    --------------------------------------------------------------------  */
6335
 
6336
 
6337
/*  --------------------------------------------------------------------
6338
    14.6.2.1	Dependent types
6339
		[temp.dep.type]
6340
    --------------------------------------------------------------------  */
6341
 
6342
 
6343
/*  --------------------------------------------------------------------
6344
    14.6.2.2	Type-dependent expressions
6345
		[temp.dep.expr]
6346
    --------------------------------------------------------------------  */
6347
 
6348
 
6349
/*  --------------------------------------------------------------------
6350
    14.6.2.3	Value-dependent expressions
6351
		[temp.dep.constexpr]
6352
    --------------------------------------------------------------------  */
6353
 
6354
 
6355
/*  --------------------------------------------------------------------
6356
    14.6.2.4	Dependent template arguments
6357
		[temp.dep.temp]
6358
    --------------------------------------------------------------------  */
6359
 
6360
 
6361
/*  --------------------------------------------------------------------
6362
    14.6.3	Non-dependent names
6363
		[temp.nondep]
6364
    --------------------------------------------------------------------  */
6365
 
6366
 
6367
/*  --------------------------------------------------------------------
6368
    14.6.4	Dependent name resolution
6369
		[temp.dep.res]
6370
    --------------------------------------------------------------------  */
6371
 
6372
 
6373
/*  --------------------------------------------------------------------
6374
    14.6.4.1	Point of instantiation
6375
		[temp.point]
6376
    --------------------------------------------------------------------  */
6377
 
6378
 
6379
/*  --------------------------------------------------------------------
6380
    14.6.4.2	Candidate functions
6381
		[temp.dep.candidate]
6382
    --------------------------------------------------------------------  */
6383
 
6384
 
6385
/*  --------------------------------------------------------------------
6386
    14.6.4.3	Conversions
6387
		[temp.dep.conv]
6388
    --------------------------------------------------------------------  */
6389
 
6390
 
6391
/*  --------------------------------------------------------------------
6392
    14.6.5	Friend names declared within a class template
6393
		[temp.inject]
6394
    --------------------------------------------------------------------  */
6395
 
6396
 
6397
/*  --------------------------------------------------------------------
6398
    14.7	Template specialization
6399
		[temp.spec]
6400
    --------------------------------------------------------------------  */
6401
 
6402
temp_spec_type ( TYPE: t, IDENTIFIER: id )
6403
{
6404
    KEY (ISO)	"14.7" | "????"
6405
    KEY (STD)	"Invalid type '"t"' for specialization of template '"id"'"
6406
}
6407
 
6408
temp_spec_bad ( TYPE: t )
6409
{
6410
    KEY (STD)	"Invalid specialization for template '"t"'"
6411
}
6412
 
6413
temp_spec_member ( LONG_ID: id )
6414
{
6415
    KEY (STD)	"Can't specialize '"id"' in a class"
6416
}
6417
 
6418
temp_spec_prefix ()
6419
{
6420
    USAGE:	new
6421
    KEY (STD)	"'template <>' required in template specialization"
6422
}
6423
 
6424
temp_spec_reinst ( TYPE: t )
6425
{
6426
    KEY (STD)	"Template '"t"' already explicitly instantiated"
6427
}
6428
 
6429
temp_spec_respec ( TYPE: t )
6430
{
6431
    USAGE:	none
6432
    KEY (STD)	"Template '"t"' already explicitly specialized"
6433
}
6434
 
6435
temp_spec_redecl ( TYPE: t )
6436
{
6437
    KEY (STD)	"Template '"t"' both explicitly instantiated and
6438
		 explicitly specialized"
6439
}
6440
 
6441
temp_spec_used ( TYPE: t )
6442
{
6443
    KEY (STD)	"Template '"t"' specialized after use"
6444
}
6445
 
6446
temp_spec_post ( TYPE: t, TYPE: s )
6447
{
6448
    KEY (STD)	"Template specialization '"t"' matches previously
6449
		 used instance '"s"'"
6450
}
6451
 
6452
 
6453
/*  --------------------------------------------------------------------
6454
    14.7.1	Implicit instantiation
6455
		[temp.inst]
6456
    --------------------------------------------------------------------  */
6457
 
6458
temp_inst_def ( TYPE: t )
6459
{
6460
    USAGE:	wall
6461
    KEY (ISO)	"14.7.1" | "????"
6462
    KEY (STD)	"Instantiating template '"t"'"
6463
}
6464
 
6465
temp_inst_depth ( ulong: n )
6466
{
6467
    KEY (STD)	"Template instantiation depth too great ("n")"
6468
}
6469
 
6470
temp_inst_comment ( TYPE: t, PTR_LOC: loc )
6471
{
6472
    USAGE:	whatever
6473
    KEY (STD)	"In instantiation of template '"t"' (at "loc")"
6474
}
6475
 
6476
 
6477
/*  --------------------------------------------------------------------
6478
    14.7.2	Explicit instantiation
6479
		[temp.explicit]
6480
    --------------------------------------------------------------------  */
6481
 
6482
temp_explicit_bad ( LONG_ID: id )
6483
{
6484
    KEY (ISO)	"14.7.2" | "????"
6485
    KEY (STD)	"No template from which to instantiate '"id"'"
6486
}
6487
 
6488
temp_explicit_id ( IDENTIFIER: id )
6489
{
6490
    USAGE:	none
6491
    KEY (STD)	"'"id" <>' required in explicit template instantiation"
6492
}
6493
 
6494
temp_explicit_def ()
6495
{
6496
    KEY (STD)	"Can't have definition in explicit template instantiation"
6497
}
6498
 
6499
temp_explicit_incompl ()
6500
{
6501
    KEY (STD)	"Complete class required in explicit template instantiation"
6502
}
6503
 
6504
temp_explicit_templ ()
6505
{
6506
    KEY (STD)	"Invalid template instantiation"
6507
}
6508
 
6509
 
6510
/*  --------------------------------------------------------------------
6511
    14.7.3	Explicit specialization
6512
		[temp.expl.spec]
6513
    --------------------------------------------------------------------  */
6514
 
6515
temp_expl_spec_dargs ()
6516
{
6517
    KEY (ISO)	"14.7.3" | "????"
6518
    KEY (STD)	"Can't have default function arguments in explicit
6519
		 specialization"
6520
}
6521
 
6522
 
6523
/*  --------------------------------------------------------------------
6524
    14.8	Function template specializations
6525
		[temp.fct.spec]
6526
    --------------------------------------------------------------------  */
6527
 
6528
 
6529
/*  --------------------------------------------------------------------
6530
    14.8.1	Explicit template argument specification
6531
		[temp.arg.explicit]
6532
    --------------------------------------------------------------------  */
6533
 
6534
 
6535
/*  --------------------------------------------------------------------
6536
    14.8.2	Template argument deduction
6537
		[temp.deduct]
6538
    --------------------------------------------------------------------  */
6539
 
6540
temp_deduct_fail ( LONG_ID: id )
6541
{
6542
    KEY (ISO)	"14.8.2" | "????"
6543
    KEY (STD)	"Template argument deduction failed for '"id"'"
6544
}
6545
 
6546
temp_deduct_undef ( IDENTIFIER: pid, LONG_ID: id )
6547
{
6548
    KEY (STD)	"Can't deduce value of template parameter '"pid"'"
6549
}
6550
 
6551
 
6552
/*  --------------------------------------------------------------------
6553
    14.8.3	Overload resolution
6554
		[temp.over]
6555
    --------------------------------------------------------------------  */
6556
 
6557
 
6558
/*  --------------------------------------------------------------------
6559
    15		Exception handling
6560
		[except]
6561
    --------------------------------------------------------------------  */
6562
 
6563
except_handlers ()
6564
{
6565
    KEY (ISO)	"15" | "????"
6566
    KEY (STD)	"A 'try' block must have at least one associated
6567
		 'catch' handler"
6568
}
6569
 
6570
except_not ()
6571
{
6572
    USAGE:	throw_bad
6573
    KEY (STD)	"Body of 'try' block doesn't throw an exception"
6574
}
6575
 
6576
except_jump_into ()
6577
{
6578
    KEY (STD)	"Can't jump into a 'try' block or handler"
6579
}
6580
 
6581
 
6582
/*  --------------------------------------------------------------------
6583
    15.1	Throwing an exception
6584
		[except.throw]
6585
    --------------------------------------------------------------------  */
6586
 
6587
except_throw_type ()
6588
{
6589
    KEY (ISO)	"15.1" | "????"
6590
    KEY (STD)	"Can only throw an expression, not a type"
6591
}
6592
 
6593
except_throw_typedef ()
6594
{
6595
    KEY (STD)	"Can't define a type in a 'throw' expression"
6596
}
6597
 
6598
except_throw_copy ()
6599
{
6600
    USAGE:	whatever
6601
    KEY (STD)	"'throw' expression is copied to temporary variable"
6602
}
6603
 
6604
except_throw_incompl ()
6605
{
6606
    KEY (STD)	"Can't throw a reference to an incomplete class"
6607
}
6608
 
6609
except_throw_ambig ()
6610
{
6611
    USAGE:	none
6612
    KEY (STD)	"Can't throw an expression with an ambiguous base class"
6613
}
6614
 
6615
 
6616
/*  --------------------------------------------------------------------
6617
    15.2	Constructors and destructors
6618
		[except.ctor]
6619
    --------------------------------------------------------------------  */
6620
 
6621
 
6622
/*  --------------------------------------------------------------------
6623
    15.3	Handling an exception
6624
		[except.handle]
6625
    --------------------------------------------------------------------  */
6626
 
6627
except_handle_typedef ()
6628
{
6629
    KEY (ISO)	"15.3" | "????"
6630
    KEY (STD)	"Can't define a type in an exception declaration"
6631
}
6632
 
6633
except_handle_unreach ( TYPE: t1, TYPE: t2 )
6634
{
6635
    USAGE:	throw_bad
6636
    KEY (STD)	"Exceptions of type '"t1"' will be caught by the
6637
		 previous '"t2"' handler"
6638
}
6639
 
6640
except_handle_ellipsis ()
6641
{
6642
    KEY (STD)	"A '...' exception handler must be the last in its block"
6643
}
6644
 
6645
except_handle_incompl ()
6646
{
6647
    KEY (STD)	"Can't catch a reference to an incomplete class"
6648
}
6649
 
6650
except_handle_return ( IDENTIFIER: id )
6651
{
6652
    KEY (STD)	"Can't return from exception handler in '"id"'"
6653
}
6654
 
6655
 
6656
/*  --------------------------------------------------------------------
6657
    15.4	Exception specifications
6658
		[except.spec]
6659
    --------------------------------------------------------------------  */
6660
 
6661
except_spec_bad ()
6662
{
6663
    KEY (ISO)	"15.4" | "????"
6664
    KEY (STD)	"Can only use exception specification in a function declarator"
6665
}
6666
 
6667
except_spec_typedef ()
6668
{
6669
    KEY (STD)	"Can't define a type in an exception specification"
6670
}
6671
 
6672
except_spec_ellipsis ()
6673
{
6674
    KEY (STD)	"Can't use '...' in an exception specification"
6675
}
6676
 
6677
except_spec_incompl ()
6678
{
6679
    USAGE:	new
6680
    KEY (STD)	"Can't have a reference to an incomplete class in
6681
		 an exception specification"
6682
}
6683
 
6684
except_spec_wrong ( IDENTIFIER: id, PTR_LOC: loc )
6685
{
6686
    KEY (STD)	"Redeclaration of '"id"' should have the same exception
6687
		 specifiers (see "loc")"
6688
}
6689
 
6690
except_spec_virtual ( IDENTIFIER: id1, LONG_ID: id2, PTR_LOC: loc )
6691
{
6692
    KEY (STD)	"Exception specifiers for overriding virtual function
6693
		 '"id1"' should be more restrictive than those for
6694
		 '"id2"' (see "loc")"
6695
}
6696
 
6697
except_spec_assign ()
6698
{
6699
    KEY (STD)	"Exception specifiers in conversion should be more restrictive"
6700
}
6701
 
6702
except_spec_init ()
6703
{
6704
    KEY (STD)	"Exception specifiers in initialization should match"
6705
}
6706
 
6707
except_spec_throw ( TYPE: t )
6708
{
6709
    USAGE:	throw_bad
6710
    KEY (STD)	"Uncaught exception of type '"t"' thrown"
6711
}
6712
 
6713
except_spec_call ( LONG_ID: id, TYPE: t )
6714
{
6715
    USAGE:	throw_bad
6716
    KEY (STD)	"Function '"id"' may throw an uncaught exception of type '"t"'"
6717
}
6718
 
6719
 
6720
/*  --------------------------------------------------------------------
6721
    15.5	Special functions
6722
		[except.special]
6723
    --------------------------------------------------------------------  */
6724
 
6725
 
6726
/*  --------------------------------------------------------------------
6727
    15.5.1	The terminate() function
6728
		[except.terminate]
6729
    --------------------------------------------------------------------  */
6730
 
6731
 
6732
/*  --------------------------------------------------------------------
6733
    15.5.2	The unexpected() function
6734
		[except.unexpected]
6735
    --------------------------------------------------------------------  */
6736
 
6737
 
6738
/*  --------------------------------------------------------------------
6739
    15.6	Exceptions and access
6740
		[except.access]
6741
    --------------------------------------------------------------------  */
6742
 
6743
 
6744
/*  --------------------------------------------------------------------
6745
    16		Preprocessing directives
6746
		[cpp]
6747
    --------------------------------------------------------------------  */
6748
 
6749
cpp_bad ()
6750
{
6751
    USAGE:	ppdir_id
6752
    KEY (ISO)	"16" | "6.8"
6753
    KEY (STD)	"Bad preprocessing directive"
6754
}
6755
 
6756
cpp_unknown ( HASHID: nm )
6757
{
6758
    USAGE:	ppdir_unknown
6759
    KEY (STD)	"Unknown preprocessing directive, '#"nm"'"
6760
}
6761
 
6762
cpp_end ( LEX: dir )
6763
{
6764
    KEY (STD)	"End of '#"dir"' directive expected"
6765
}
6766
 
6767
cpp_indent ()
6768
{
6769
    USAGE:	ppdir_indent
6770
    KEY (STD)	"Indented preprocessing directive"
6771
}
6772
 
6773
cpp_indent_dir ()
6774
{
6775
    USAGE:	ppdir_indent_dir
6776
    KEY (STD)	"Space after '#' in preprocessing directive"
6777
}
6778
 
6779
cpp_space_replace ()
6780
{
6781
    KEY (STD)	"White space required before illegal character in
6782
		 replacement list"
6783
}
6784
 
6785
cpp_old ( LEX: dir )
6786
{
6787
    USAGE:	none
6788
    KEY (STD)	"Pre-ISO preprocessors don't handle '#"dir"'"
6789
}
6790
 
6791
 
6792
/*  --------------------------------------------------------------------
6793
    16.1	Conditional inclusion
6794
		[cpp.cond]
6795
    --------------------------------------------------------------------  */
6796
 
6797
cpp_cond_if_match ( LEX: dir1, LEX: dir2 )
6798
{
6799
    KEY (ISO)	"16.1" | "6.8.1"
6800
    KEY (STD)	"'#"dir1"' without matching '#"dir2"'"
6801
}
6802
 
6803
cpp_cond_else_dup ( LEX: dir1, LEX: dir2, PTR_LOC: loc )
6804
{
6805
    KEY (STD)	"'#"dir1"' after '#"dir2"' (at "loc")"
6806
}
6807
 
6808
cpp_cond_def_id ()
6809
{
6810
    KEY (STD)	"Bad 'defined' operation"
6811
}
6812
 
6813
cpp_cond_def_replace ()
6814
{
6815
    USAGE:	wall
6816
    KEY (STD)	"Macro expansion gives 'defined'"
6817
}
6818
 
6819
cpp_cond_ifdef_id ( LEX: dir )
6820
{
6821
    KEY (STD)	"Macro identifier expected after '#"dir"'"
6822
}
6823
 
6824
cpp_cond_zero ( HASHID: nm )
6825
{
6826
    USAGE:	none
6827
    KEY (STD)	"Identifier '"nm"' replaced by '0'"
6828
}
6829
 
6830
cpp_cond_if_const ( LEX: dir )
6831
{
6832
    KEY (STD)	"Integer constant expression expected after '#"dir"'"
6833
}
6834
 
6835
cpp_cond_if_ti ( LEX: dir )
6836
{
6837
    USAGE:	wall
6838
    KEY (STD)	"Target dependent '#"dir"'"
6839
}
6840
 
6841
cpp_cond_if_ti_decl ( LEX: dir )
6842
{
6843
    USAGE:	decl_cond
6844
    KEY (STD)	"Can't have target dependent '#"dir"' at outer level"
6845
}
6846
 
6847
cpp_cond_if_jump_into ()
6848
{
6849
    KEY (STD)	"Can't jump into a target dependent '#if' statement"
6850
}
6851
 
6852
cpp_cond_if_macro ( HASHID: nm )
6853
{
6854
    KEY (ISO)   "16.1" | "6.8.1"
6855
    KEY (STD)	"Can't define macro '"nm"' in a target dependent '#if'
6856
		 statement"
6857
}
6858
cpp_cond_endif_end ( LEX: dir )
6859
{
6860
    USAGE:	ppdir_text
6861
    KEY (STD)	"No text allowed after '#"dir"' directive"
6862
}
6863
 
6864
 
6865
/*  --------------------------------------------------------------------
6866
    16.2	Source file inclusion
6867
		[cpp.include]
6868
    --------------------------------------------------------------------  */
6869
 
6870
cpp_include_bad ()
6871
{
6872
    KEY (ISO)	"16.2" | "6.8.2"
6873
    KEY (STD)	"Illegal header name"
6874
}
6875
 
6876
cpp_include_incompl ()
6877
{
6878
    KEY (STD)	"Incomplete header name"
6879
}
6880
 
6881
cpp_include_undef ( string: str )
6882
{
6883
    USAGE:	wall
6884
    KEY (STD)	"Undefined header name, '"str"'"
6885
}
6886
 
6887
cpp_include_empty ()
6888
{
6889
    KEY (STD)	"Empty header name"
6890
}
6891
 
6892
cpp_include_full ( string: str )
6893
{
6894
    USAGE:	include_full
6895
    KEY (STD)	"Inclusion of '"str"' may not be portable"
6896
}
6897
 
6898
cpp_include_unknown ( string: str )
6899
{
6900
    KEY (STD)	"Can't open included file, '"str"'"
6901
}
6902
 
6903
cpp_include_open ( string: str )
6904
{
6905
    USAGE:	include_verbose
6906
    KEY (STD)	"Opening included file, '"str"'"
6907
}
6908
 
6909
cpp_include_close ( string: str )
6910
{
6911
    USAGE:	include_verbose
6912
    KEY (STD)	"Closing included file, '"str"'"
6913
}
6914
 
6915
cpp_include_depth ( ulong: n )
6916
{
6917
    KEY (STD)	"Include depth too great ("n")"
6918
}
6919
 
6920
cpp_include_dup ( string: str, PTR_LOC: loc )
6921
{
6922
    USAGE:	include_verbose
6923
    KEY (STD)	"File '"str"' has already been included (from "loc")"
6924
}
6925
 
6926
cpp_include_date ()
6927
{
6928
    USAGE:	wall
6929
    KEY (STD)	"Date stamp on file has changed"
6930
}
6931
 
6932
 
6933
/*  --------------------------------------------------------------------
6934
    16.3	Macro replacement
6935
		[cpp.replace]
6936
    --------------------------------------------------------------------  */
6937
 
6938
cpp_replace_id ( LEX: dir )
6939
{
6940
    KEY (ISO)	"16.3" | "6.8.3"
6941
    KEY (STD)	"Macro identifier expected after '#"dir"'"
6942
}
6943
 
6944
cpp_replace_redef_ok ( IDENTIFIER: id, PTR_LOC: loc )
6945
{
6946
    USAGE:	none
6947
    KEY (STD)	"Macro '"id"' redefined (see "loc")"
6948
}
6949
 
6950
cpp_replace_redef_bad ( IDENTIFIER: id, PTR_LOC: loc )
6951
{
6952
    USAGE:	macro_redef
6953
    KEY (STD)	"Macro '"id"' redefined inconsistently (see "loc")"
6954
}
6955
 
6956
cpp_replace_redef_weak ( IDENTIFIER: id, PTR_LOC: loc )
6957
{
6958
    USAGE:	macro_weak
6959
    KEY (STD)	"Macro '"id"' redefined with parameter renaming (see "loc")"
6960
}
6961
 
6962
cpp_replace_redef_space ( IDENTIFIER: id, PTR_LOC: loc )
6963
{
6964
    USAGE:	macro_weak
6965
    KEY (STD)	"Macro '"id"' redefined with differing white space (see "loc")"
6966
}
6967
 
6968
cpp_replace_redef_nest ( IDENTIFIER: id, PTR_LOC: loc )
6969
{
6970
    USAGE:	macro_nest
6971
    KEY (STD)	"Nested definition of macro '"id"' (see "loc")"
6972
}
6973
 
6974
cpp_replace_par_dup ( HASHID: nm1, HASHID: nm2 )
6975
{
6976
    KEY (STD)	"Parameter '"nm1"' already defined for macro '"nm2"'"
6977
}
6978
 
6979
cpp_replace_par_bad ( HASHID: nm )
6980
{
6981
    KEY (STD)	"Badly punctuated parameters for macro '"nm"'"
6982
}
6983
 
6984
cpp_replace_arg_none ( HASHID: nm )
6985
{
6986
    USAGE:	wall
6987
    KEY (STD)	"Macro '"nm"' invoked without arguments"
6988
}
6989
 
6990
cpp_replace_arg_empty ( unsigned: n, HASHID: nm )
6991
{
6992
    USAGE:	wall
6993
    KEY (STD)	"Argument "n" for macro '"nm"' is empty"
6994
}
6995
 
6996
cpp_replace_arg_ppdir ( HASHID: nm )
6997
{
6998
    USAGE:	macro_arg_dir
6999
    KEY (STD)	"Preprocessing directive in arguments for macro '"nm"'"
7000
}
7001
 
7002
cpp_replace_arg_eof ( HASHID: nm )
7003
{
7004
    KEY (STD)	"Unterminated arguments for macro '"nm"'"
7005
}
7006
 
7007
cpp_replace_arg_number ( HASHID: nm, unsigned: n, plural: s, unsigned: m )
7008
{
7009
    KEY (STD)	"Macro '"nm"' applied with "n" argument"s", not "m
7010
}
7011
 
7012
 
7013
/*  --------------------------------------------------------------------
7014
    16.3.1	Argument substitution
7015
		[cpp.subst]
7016
    --------------------------------------------------------------------  */
7017
 
7018
 
7019
/*  --------------------------------------------------------------------
7020
    16.3.2	The # operator
7021
		[cpp.stringize]
7022
    --------------------------------------------------------------------  */
7023
 
7024
cpp_stringize_par ( HASHID: nm )
7025
{
7026
    USAGE:	hash_ident
7027
    KEY (ISO)	"16.3.2" | "6.8.3.2"
7028
    KEY (STD)	"'#' should be followed by a parameter for macro '"nm"'"
7029
}
7030
 
7031
cpp_stringize_bad ( HASHID: nm )
7032
{
7033
    KEY (STD)	"Invalid string formed by macro '"nm"'"
7034
}
7035
 
7036
cpp_stringize_old ( HASHID: par, HASHID: nm )
7037
{
7038
    USAGE:	wall
7039
    KEY (STD)	"Quoted parameter '"par"' in definition of macro '"nm"'"
7040
}
7041
 
7042
 
7043
/*  --------------------------------------------------------------------
7044
    16.3.3	The ## operator
7045
		[cpp.concat]
7046
    --------------------------------------------------------------------  */
7047
 
7048
cpp_concat_place ( HASHID: nm )
7049
{
7050
    KEY (ISO)	"16.3.3" | "6.8.3.3"
7051
    KEY (STD)	"Badly placed '##' operator in macro '"nm"'"
7052
}
7053
 
7054
cpp_concat_bad ( HASHID: nm )
7055
{
7056
    KEY (STD)	"Invalid result for '##' operator in macro '"nm"'"
7057
}
7058
 
7059
 
7060
/*  --------------------------------------------------------------------
7061
    16.3.4	Rescanning and further replacement
7062
		[cpp.rescan]
7063
    --------------------------------------------------------------------  */
7064
 
7065
cpp_rescan_recursive ( HASHID: nm )
7066
{
7067
    USAGE:	wall
7068
    KEY (ISO)	"16.3.4" | "6.8.3.4"
7069
    KEY (STD)	"Macro '"nm"' used recursively"
7070
}
7071
 
7072
 
7073
/*  --------------------------------------------------------------------
7074
    16.3.5	Scope of macro definitions
7075
		[cpp.scope]
7076
    --------------------------------------------------------------------  */
7077
 
7078
cpp_scope_id ( LEX: dir )
7079
{
7080
    KEY (ISO)	"16.3.5" | "6.8.3.5"
7081
    KEY (STD)	"Macro identifier expected after '#"dir"'"
7082
}
7083
 
7084
cpp_scope_undef ( HASHID: nm )
7085
{
7086
    USAGE:	none
7087
    KEY (STD)	"Undefined macro '"nm"' was not defined"
7088
}
7089
 
7090
 
7091
/*  --------------------------------------------------------------------
7092
    16.4	Line control
7093
		[cpp.line]
7094
    --------------------------------------------------------------------  */
7095
 
7096
cpp_line_bad ( LEX: dir )
7097
{
7098
    KEY (ISO)	"16.4" | "6.8.4"
7099
    KEY (STD)	"Line number expected after '#"dir"'"
7100
}
7101
 
7102
cpp_line_float ( LEX: dir )
7103
{
7104
    KEY (STD)	"Invalid line number in '#"dir"'"
7105
}
7106
 
7107
cpp_line_range ( LEX: dir )
7108
{
7109
    KEY (STD)	"Line number out of range in '#"dir"'"
7110
}
7111
 
7112
 
7113
/*  --------------------------------------------------------------------
7114
    16.5	Error directive
7115
		[cpp.error]
7116
    --------------------------------------------------------------------  */
7117
 
7118
cpp_error_msg ( string: str )
7119
{
7120
    KEY (ISO)	"16.5" | "6.8.5"
7121
    KEY (STD)	str
7122
}
7123
 
7124
 
7125
/*  --------------------------------------------------------------------
7126
    16.6	Pragma directive
7127
		[cpp.pragma]
7128
    --------------------------------------------------------------------  */
7129
 
7130
cpp_pragma_unknown ( LEX: dir )
7131
{
7132
    USAGE:	pragma_unknown
7133
    KEY (ISO)	"16.6" | "6.8.6"
7134
    KEY (STD)	"Unknown '#"dir"' directive"
7135
}
7136
 
7137
 
7138
/*  --------------------------------------------------------------------
7139
    16.7	Null directive
7140
		[cpp.null]
7141
    --------------------------------------------------------------------  */
7142
 
7143
cpp_null ()
7144
{
7145
    USAGE:	wall
7146
    KEY (ISO)	"16.7" | "6.8.7"
7147
    KEY (STD)	"Null preprocessing directive"
7148
}
7149
 
7150
 
7151
/*  --------------------------------------------------------------------
7152
    16.8	Predefined macro names
7153
		[cpp.predefined] = [cpp.predef]
7154
    --------------------------------------------------------------------  */
7155
 
7156
cpp_predef_bad ( HASHID: nm, LEX: dir )
7157
{
7158
    KEY (ISO)	"16.8" | "6.8.8"
7159
    KEY (STD)	"Identifier '"nm"' subject of '#"dir"' directive"
7160
}
7161
 
7162
cpp_predef_undef ( IDENTIFIER: id )
7163
{
7164
    KEY (STD)	"Undefining built-in macro '"id"'"
7165
}
7166
 
7167
cpp_predef_redef ( IDENTIFIER: id )
7168
{
7169
    KEY (STD)	"Built-in macro '"id"' redefined"
7170
}
7171
 
7172
cpp_predef_keyword ( HASHID: nm )
7173
{
7174
    USAGE:	wall
7175
    KEY (STD)	"Keyword '"nm"' redefined using '#define'"
7176
}
7177
 
7178
 
7179
/*  --------------------------------------------------------------------
7180
    18		Language support library
7181
		[lib.language.support]
7182
    --------------------------------------------------------------------  */
7183
 
7184
lib_builtin ( string: ns, HASHID: nm )
7185
{
7186
    KEY (ISO)	"18" | "????"
7187
    KEY (STD)	"Built-in '"ns"::"nm"' not declared"
7188
}
7189
 
7190
 
7191
/*  --------------------------------------------------------------------
7192
    27		Input/output library
7193
		[lib.input.output]
7194
    --------------------------------------------------------------------  */
7195
 
7196
printf_unknown ( string: s )
7197
{
7198
    USAGE:	printf_string
7199
    PROPERTIES:	non_iso, printf
7200
    KEY (STD)	"Unknown format string, '"s"'"
7201
}
7202
 
7203
printf_invalid ( string: s )
7204
{
7205
    USAGE:	printf_string
7206
    PROPERTIES:	non_iso, printf
7207
    KEY (STD)	"Invalid format string, '"s"'"
7208
}
7209
 
7210
printf_unterm ( string: s )
7211
{
7212
    USAGE:	printf_string
7213
    PROPERTIES:	non_iso, printf
7214
    KEY (STD)	"Unterminated '"s"' format string"
7215
}
7216
 
7217
printf_flags ( string: t, string: s )
7218
{
7219
    USAGE:	printf_string
7220
    PROPERTIES:	non_iso, printf
7221
    KEY (STD)	"Can't have flags '"t"' with '"s"' format string"
7222
}
7223
 
7224
printf_width ( string: s )
7225
{
7226
    USAGE:	printf_string
7227
    PROPERTIES:	non_iso, printf
7228
    KEY (STD)	"Can't have field width with '"s"' format string"
7229
}
7230
 
7231
printf_precision ( string: s )
7232
{
7233
    USAGE:	printf_string
7234
    PROPERTIES:	non_iso, printf
7235
    KEY (STD)	"Can't have precision with '"s"' format string"
7236
}
7237
 
7238
printf_arg_zero ()
7239
{
7240
    USAGE:	printf_string
7241
    PROPERTIES:	non_iso, printf
7242
    KEY (STD)	"Can't have argument zero in format string"
7243
}
7244
 
7245
printf_arg_large ( unsigned: n )
7246
{
7247
    USAGE:	printf_string
7248
    PROPERTIES:	non_iso, printf
7249
    KEY (STD)	"Argument "n" in format string out of range"
7250
}
7251
 
7252
printf_arg_compat ( unsigned: n )
7253
{
7254
    USAGE:	printf_string
7255
    PROPERTIES:	non_iso, printf
7256
    KEY (STD)	"Incompatible format string for argument "n
7257
}
7258
 
7259
printf_arg_none ( unsigned: n )
7260
{
7261
    USAGE:	printf_string
7262
    PROPERTIES:	non_iso, printf
7263
    KEY (STD)	"No format string given for argument "n
7264
}
7265
 
7266
printf_arg_mix ()
7267
{
7268
    USAGE:	printf_string
7269
    PROPERTIES:	non_iso, printf
7270
    KEY (STD)	"Can't mix numbered and unnumbered arguments in format string"
7271
}
7272
 
7273
 
7274
/*  --------------------------------------------------------------------
7275
    Annex B	Implementation quantities
7276
		[lib.language.support]
7277
    --------------------------------------------------------------------  */
7278
 
7279
limits_max ( string: s, ulong: m, ulong: n )
7280
{
7281
    KEY (ISO)	"Annex B" | "5.2.4.1"
7282
    KEY (STD)	"Value for '"s"' ("m") exceeds implementation limit ("n")"
7283
}
7284
 
7285
limits_min ( string: s, ulong: m, ulong: n )
7286
{
7287
    USAGE:	wall
7288
    KEY (STD)	"Value for '"s"' ("m") exceeds minimum implementation
7289
		 limit ("n")"
7290
}
7291
 
7292
 
7293
/*  --------------------------------------------------------------------
7294
    A.1		Pragma syntax
7295
		[pragma]
7296
    --------------------------------------------------------------------  */
7297
 
7298
pragma_scope_undef ( HASHID: nm )
7299
{
7300
    PROPERTIES:	non_iso, pragma
7301
    KEY (ISO)	/* none */
7302
    KEY (STD)	"Checking scope '"nm"' not defined"
7303
}
7304
 
7305
pragma_scope_redef ( HASHID: nm )
7306
{
7307
    PROPERTIES:	non_iso, pragma
7308
    KEY (STD)	"Checking scope '"nm"' already defined"
7309
}
7310
 
7311
pragma_scope_end ()
7312
{
7313
    PROPERTIES:	non_iso, pragma
7314
    KEY (STD)	"Unexpected end of checking scope"
7315
}
7316
 
7317
pragma_scope_set ( string: s )
7318
{
7319
    PROPERTIES:	non_iso, pragma
7320
    KEY (STD)	"Option '"s"' has already been set in this scope"
7321
}
7322
 
7323
pragma_dblock_name ( HASHID: nm )
7324
{
7325
    PROPERTIES:	non_iso, pragma
7326
    KEY (STD)	"Name mismatch for end of declaration block '"nm"'"
7327
}
7328
 
7329
pragma_dblock_end ()
7330
{
7331
    PROPERTIES:	non_iso, pragma
7332
    KEY (STD)	"Unexpected end of declaration block"
7333
}
7334
 
7335
pragma_dir_undef ( string: d )
7336
{
7337
    PROPERTIES:	non_iso, pragma
7338
    KEY (STD)	"Directory '"d"' not defined"
7339
}
7340
 
7341
pragma_dir_mode ( string: d )
7342
{
7343
    PROPERTIES:	non_iso, pragma
7344
    KEY (STD)	"Checking mode for directory '"d"' already defined"
7345
}
7346
 
7347
pragma_error_bad ( STRING: s )
7348
{
7349
    PROPERTIES:	non_iso, pragma
7350
    KEY (STD)	"Unknown error, "s
7351
}
7352
 
7353
pragma_option_bad ( STRING: s )
7354
{
7355
    PROPERTIES:	non_iso, pragma
7356
    KEY (STD)	"Unknown option, "s
7357
}
7358
 
7359
pragma_keyword_bad ( HASHID: nm )
7360
{
7361
    PROPERTIES:	non_iso, pragma
7362
    KEY (STD)	"Unknown keyword, '"nm"'"
7363
}
7364
 
7365
pragma_char_lit ( TYPE: t )
7366
{
7367
    PROPERTIES:	non_iso, pragma
7368
    KEY (STD)	"Character literal should have integral type, not '"t"'"
7369
}
7370
 
7371
pragma_builtin_type ( TYPE: t )
7372
{
7373
    PROPERTIES:	non_iso, pragma
7374
    KEY (STD)	"Built-in type should be integral, not '"t"'"
7375
}
7376
 
7377
pragma_promote_type ( TYPE: t )
7378
{
7379
    PROPERTIES:	non_iso, pragma
7380
    KEY (STD)	"Promotion type should be integral, not '"t"'"
7381
}
7382
 
7383
pragma_promote_compat ( TYPE: t )
7384
{
7385
    USAGE:	whatever
7386
    PROPERTIES:	non_iso, pragma
7387
    KEY (STD)	"Promotion types for '"t"' should be compatible"
7388
}
7389
 
7390
pragma_compat_type ()
7391
{
7392
    PROPERTIES:	non_iso, pragma
7393
    KEY (STD)	"Invalid arguments for directive"
7394
}
7395
 
7396
pragma_arg_dup ( TYPE: t )
7397
{
7398
    PROPERTIES:	non_iso, pragma
7399
    KEY (STD)	"Inconsistent compatible argument type for '"t"'"
7400
}
7401
 
7402
pragma_arg_cycle ()
7403
{
7404
    PROPERTIES:	non_iso, pragma
7405
    KEY (STD)	"Directive completes a cycle of compatible argument types"
7406
}
7407
 
7408
pragma_lit_type ( TYPE: t )
7409
{
7410
    PROPERTIES:	non_iso, pragma
7411
    KEY (STD)	"Literal type should be a promoted integral type, not '"t"'"
7412
}
7413
 
7414
pragma_lit_range ( NAT: n, TYPE: t )
7415
{
7416
    USAGE:	none
7417
    PROPERTIES:	non_iso, pragma
7418
    KEY (STD)	"Literal limit '"n"' doesn't fit into type '"t"'"
7419
}
7420
 
7421
pragma_lit_question ()
7422
{
7423
    PROPERTIES:	non_iso, pragma
7424
    KEY (STD)	"Type required in '?:' literal limit"
7425
}
7426
 
7427
pragma_token_sort ( IDENTIFIER: id )
7428
{
7429
    PROPERTIES:	non_iso, token
7430
    KEY (STD)	"Invalid sort for token '"id"'"
7431
}
7432
 
7433
pragma_preserve_undecl ( LEX: op, IDENTIFIER: id )
7434
{
7435
    PROPERTIES:	non_iso, pragma
7436
    KEY (STD)	"Identifier in '"op"' directive, '"id"', doesn't have linkage"
7437
}
7438
 
7439
pragma_weak_redef ( IDENTIFIER: id )
7440
{
7441
    PROPERTIES:	non_iso, pragma
7442
    KEY (STD)	"Weak symbol '"id"' already defined"
7443
}
7444
 
7445
pragma_cpp_known ( LEX: dir )
7446
{
7447
    PROPERTIES:	non_iso, pragma
7448
    KEY (STD)	"Preprocessing directive '#"dir"' used"
7449
}
7450
 
7451
pragma_cpp_ident ( LEX: dir )
7452
{
7453
    PROPERTIES:	non_iso, pragma
7454
    KEY (STD)	"String literal expected after '#"dir"'"
7455
}
7456
 
7457
pragma_assert_id ( LEX: dir )
7458
{
7459
    PROPERTIES:	non_iso, pragma
7460
    KEY (STD)	"Predicate identifier expected after '#"dir"'"
7461
}
7462
 
7463
pragma_assert_open ( LEX: dir )
7464
{
7465
    PROPERTIES:	non_iso, pragma
7466
    KEY (STD)	"Open bracket expected after predicate in '#"dir"'"
7467
}
7468
 
7469
pragma_assert_paren ( LEX: dir )
7470
{
7471
    PROPERTIES:	non_iso, pragma
7472
    KEY (STD)	"Unterminated predicate token sequence in '#"dir"'"
7473
}
7474
 
7475
pragma_assert_empty ( LEX: dir )
7476
{
7477
    PROPERTIES:	non_iso, pragma
7478
    KEY (STD)	"Empty predicate token sequence in '#"dir"'"
7479
}
7480
 
7481
pragma_assert_pred ( HASHID: nm )
7482
{
7483
    USAGE:	ppdir_assert
7484
    PROPERTIES:	non_iso, pragma
7485
    KEY (STD)	"Predicate '"nm"' used"
7486
}
7487
 
7488
port_entry_undef ( string: s )
7489
{
7490
    PROPERTIES:	non_iso, pragma
7491
    KEY (STD)	"Portability table entry '"s"' not defined"
7492
}
7493
 
7494
port_entry_redef ( string: s )
7495
{
7496
    PROPERTIES:	non_iso, pragma
7497
    KEY (STD)	"Portability table entry '"s"' already defined"
7498
}
7499
 
7500
 
7501
/*  --------------------------------------------------------------------
7502
    A.2		Token syntax
7503
		[token]
7504
    --------------------------------------------------------------------  */
7505
 
7506
token_info ( IDENTIFIER: id )
7507
{
7508
    USAGE:	whatever
7509
    PROPERTIES:	non_iso, token
7510
    KEY (ISO)	/* none */
7511
    KEY (STD)	"'"id"' is tokenized"
7512
}
7513
 
7514
token_redecl ( IDENTIFIER: id, PTR_LOC: loc )
7515
{
7516
    PROPERTIES:	non_iso, token
7517
    KEY (STD)	"Token '"id"' declared inconsistently (see "loc")"
7518
}
7519
 
7520
token_redef ( IDENTIFIER: id, PTR_LOC: loc )
7521
{
7522
    PROPERTIES:	non_iso, token
7523
    KEY (STD)	"Incompatible redefinition for token '"id"' (see "loc")"
7524
}
7525
 
7526
token_redef_ok ( IDENTIFIER: id, PTR_LOC: loc )
7527
{
7528
    USAGE:	token_redef
7529
    PROPERTIES:	non_iso, token
7530
    KEY (STD)	"Redefinition of token '"id"' (see "loc")"
7531
}
7532
 
7533
token_undef ( IDENTIFIER: id )
7534
{
7535
    USAGE:	token_undef
7536
    PROPERTIES:	non_iso, token
7537
    KEY (STD)	"Token '"id"' not defined"
7538
}
7539
 
7540
token_undecl ( IDENTIFIER: id )
7541
{
7542
    PROPERTIES:	non_iso, token
7543
    KEY (STD)	"Token '"id"' not declared"
7544
}
7545
 
7546
token_qual ( IDENTIFIER: id )
7547
{
7548
    PROPERTIES:	non_iso, token
7549
    KEY (STD)	"Can't qualify the token name '"id"'"
7550
}
7551
 
7552
token_scope ( IDENTIFIER: id )
7553
{
7554
    PROPERTIES:	non_iso, token
7555
    KEY (STD)	"Identifier '"id"' used out of scope"
7556
}
7557
 
7558
token_no_def ( IDENTIFIER: id, PTR_LOC: loc )
7559
{
7560
    PROPERTIES:	non_iso, token
7561
    KEY (STD)	"Token in 'no_def' directive, '"id"', has already been
7562
		 defined (at "loc")"
7563
}
7564
 
7565
token_def_not ( IDENTIFIER: id )
7566
{
7567
    PROPERTIES:	non_iso, token
7568
    KEY (STD)	"Can't define token '"id"'"
7569
}
7570
 
7571
token_def_args ( IDENTIFIER: id )
7572
{
7573
    PROPERTIES:	non_iso, token
7574
    KEY (STD)	"Wrong number of parameters in definition of token '"id"'"
7575
}
7576
 
7577
token_def_func ( IDENTIFIER: id, TYPE: t )
7578
{
7579
    PROPERTIES:	non_iso, token
7580
    KEY (STD)	"Function of type '"t"' required in 'FUNC' token
7581
		 definition, not '"id"'"
7582
}
7583
 
7584
token_def_ambig ( IDENTIFIER: id )
7585
{
7586
    PROPERTIES:	non_iso, token
7587
    KEY (STD)	"Ambiguous 'FUNC' token '"id"' in definition"
7588
}
7589
 
7590
token_def_except ()
7591
{
7592
    PROPERTIES:	non_iso, token
7593
    KEY (STD)	"Exception specifiers should match in 'FUNC' token definition"
7594
}
7595
 
7596
token_def_implicit ( IDENTIFIER: id )
7597
{
7598
    USAGE:	func_token_undef
7599
    PROPERTIES:	non_iso, token
7600
    KEY (STD)	"Implicit definition of token '"id"'"
7601
}
7602
 
7603
token_proc_high ()
7604
{
7605
    PROPERTIES:	non_iso, token
7606
    KEY (STD)	"High-level 'PROC' tokens not allowed"
7607
}
7608
 
7609
token_func ( TYPE: t )
7610
{
7611
    PROPERTIES:	non_iso, token
7612
    KEY (STD)	"A 'FUNC' token should have function type, not '"t"'"
7613
}
7614
 
7615
token_mem ( TYPE: t )
7616
{
7617
    PROPERTIES:	non_iso, token
7618
    KEY (STD)	"The second type in a 'MEMBER' token should have class
7619
		 type, not '"t"'"
7620
}
7621
 
7622
token_mem_off ()
7623
{
7624
    USAGE:	whatever
7625
    PROPERTIES:	non_iso, token
7626
    KEY (STD)	"Constant offset required in 'MEMBER' token"
7627
}
7628
 
7629
token_stmt_ret ( IDENTIFIER: id )
7630
{
7631
    PROPERTIES:	non_iso, token
7632
    KEY (STD)	"Can't have 'return' statement in 'STATEMENT' token '"id"'"
7633
}
7634
 
7635
token_stmt_jump ()
7636
{
7637
    PROPERTIES:	non_iso, token
7638
    KEY (STD)	"Jump into 'STATEMENT' token"
7639
}
7640
 
7641
token_const ( IDENTIFIER: id )
7642
{
7643
    USAGE:	token_const
7644
    PROPERTIES:	non_iso, token
7645
    KEY (STD)	"Non-constant 'EXP' token '"id"' used in constant expression"
7646
}
7647
 
7648
token_arg_sort ( IDENTIFIER: id )
7649
{
7650
    PROPERTIES:	non_iso, token
7651
    KEY (STD)	"Wrong sort for 'PROC' token parameter '"id"'"
7652
}
7653
 
7654
token_arg_bad ( IDENTIFIER: id )
7655
{
7656
    PROPERTIES:	non_iso, token
7657
    KEY (STD)	"Invalid 'PROC' token parameter '"id"'"
7658
}
7659
 
7660
token_arg_exp ( IDENTIFIER: id )
7661
{
7662
    USAGE:	whatever
7663
    PROPERTIES:	non_iso, token
7664
    KEY (STD)	"Values for 'EXP' token '"id"' are converted to the token type"
7665
}
7666
 
7667
token_arg_const ( IDENTIFIER: id )
7668
{
7669
    PROPERTIES:	non_iso, token
7670
    KEY (STD)	"Non-constant value for constant 'EXP' token '"id"'"
7671
}
7672
 
7673
token_arg_lvalue ( IDENTIFIER: id )
7674
{
7675
    PROPERTIES:	non_iso, token
7676
    KEY (STD)	"Value for lvalue 'EXP' token '"id"' is an rvalue"
7677
}
7678
 
7679
token_arg_mem ( IDENTIFIER: id )
7680
{
7681
    USAGE:	whatever
7682
    PROPERTIES:	non_iso, token
7683
    KEY (STD)	"Types for 'MEMBER' token '"id"' should be compatible"
7684
}
7685
 
7686
token_arg_nat ( IDENTIFIER: id )
7687
{
7688
    PROPERTIES:	non_iso, token
7689
    KEY (STD)	"Non-negative integer constant required in 'NAT' token '"id"'"
7690
}
7691
 
7692
token_arg_type ( LEX: tok, IDENTIFIER: id, TYPE: t )
7693
{
7694
    PROPERTIES:	non_iso, token
7695
    KEY (STD)	"Invalid type for '"tok"' token '"id"', '"t"'"
7696
}
7697
 
7698
token_recursive ( IDENTIFIER: id )
7699
{
7700
    PROPERTIES:	non_iso, token
7701
    KEY (STD)	"Token '"id"' defined recursively"
7702
}
7703
 
7704
token_arg_undef ( IDENTIFIER: pid, IDENTIFIER: id )
7705
{
7706
    PROPERTIES:	non_iso, token
7707
    KEY (STD)	"Can't deduce value of token parameter '"pid"' in
7708
		 application of token '"id"'"
7709
}
7710
 
7711
token_conv ( IDENTIFIER: id, TYPE: t, TYPE: s )
7712
{
7713
    USAGE:	none
7714
    PROPERTIES:	non_iso, token
7715
    KEY (STD)	"Using token '"id"' for conversion from '"t"' to '"s"'"
7716
}