-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathstring_init.dot.cpp
More file actions
46 lines (33 loc) · 2.28 KB
/
string_init.dot.cpp
File metadata and controls
46 lines (33 loc) · 2.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#ifndef STRING_INIT_INCLUDED
#define STRING_INIT_INCLUDED
#include "common.h"
#define STRING_LITERAL_INIT_HEAD string_literal_initialization_head
#include "zero_init.dot.cpp"
subgraph cluster_string_literal_initialization {
INSTRUCTION_NODE(STRING_LITERAL_INIT_HEAD, "Initialization as follows:", "[dcl.init.string]")
-> INSTRUCTION_NODE(string_literal_verify_kind, "Verify array element type and literal type match.")
-> {
rank=same;
string_literal_kind_char [label="char / ordinary literal"]
string_literal_kind_uchar [label="unsigned char / ordinary literal"]
string_literal_kind_schar [label="signed char / ordinary literal"]
string_literal_kind_char8 [label="char8_t / UTF-8 literal"]
string_literal_kind_utf8_char [label="char / UTF-8 literal"]
string_literal_kind_utf8_uchar [label="unsigned char / UTF-8 literal"]
string_literal_kind_char16 [label="char16_t / UTF-16 literal"]
string_literal_kind_char32 [label="char32_t / UTF-32 literal"]
string_literal_kind_wchar [label="wchar_t / wide literal"]
string_literal_kind_other [label="Anything else"]
// Force these nodes to layout in the following order
string_literal_kind_char -> string_literal_kind_uchar -> string_literal_kind_schar -> string_literal_kind_char8 -> string_literal_kind_utf8_char -> string_literal_kind_utf8_uchar -> string_literal_kind_char16 -> string_literal_kind_char32 -> string_literal_kind_wchar -> string_literal_kind_other [style=invis]
}
string_literal_kind_other -> NEW_ILL_FORMED()
{ string_literal_kind_char, string_literal_kind_uchar, string_literal_kind_schar, string_literal_kind_char8, string_literal_kind_utf8_char, string_literal_kind_utf8_uchar, string_literal_kind_char16, string_literal_kind_char32, string_literal_kind_wchar } -> string_literal_initialize_first
INSTRUCTION_NODE(string_literal_initialize_first, "Initialize the first elements of the array with successive values from the string literal.")
-> string_literal_has_too_many
YN_QUESTION_NODE_NO_CITE(string_literal_has_too_many, "Are there more initializers than array elements?", NEW_ILL_FORMED(), string_literal_initialize_rest)
INSTRUCTION_NODE(string_literal_initialize_rest, "Zero-initialize the remaining elements of the array (if any).")
-> NEW_DONE()
INTERNALLY_ZERO_INITS(string_literal_initialize_rest)
}
#endif