Skip to content

Commit 5156dcd

Browse files
committed
Fixes
1 parent 9d8bd63 commit 5156dcd

File tree

4 files changed

+40
-32
lines changed

4 files changed

+40
-32
lines changed

cpp23/aggregate_init.dot.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,13 +89,14 @@ subgraph cluster_aggregate_initialization {
8989

9090
INSTRUCTION_NODE(aggregate_initialize_explicit_copy_init_list, "Copy-initialize the element from the corresponding initializer-clause.", "[dcl.init.aggr]/4.2")
9191
-> NEW_RECURSE_SUBOBJECT()
92-
-> aggregate_initialize_explicit_is_narrowing_checked
92+
-> aggregate_initialize_explicit_is_narrowing_checked_no_eq
9393

9494
INSTRUCTION_NODE(aggregate_initialize_explicit_copy_designated, "Initialize the element with the brace-or-equal-initializer of the corresponding designated-initializer-clause.", "[dcl.init.aggr]/4.2")
9595
-> NEW_RECURSE_SUBOBJECT()
96-
-> aggregate_initialize_explicit_is_narrowing_checked
96+
-> aggregate_initialize_explicit_is_narrowing_checked_no_eq
9797

98-
YN_QUESTION_NODE(aggregate_initialize_explicit_is_narrowing_checked, "Is the initializer of the form \"assignment-expression\" or \"= assignment-expression\"?", "[dcl.init.aggr]/4.2", aggregate_initialize_explicit_is_narrowing, aggregate_initialize_explicit_repeat_next)
98+
YN_QUESTION_NODE(aggregate_initialize_explicit_is_narrowing_checked_no_eq, "Is the initializer of the form \"assignment-expression\"?", "[dcl.init.aggr]/4.2", aggregate_initialize_explicit_is_narrowing, aggregate_initialize_explicit_is_narrowing_checked_eq)
99+
YN_QUESTION_NODE(aggregate_initialize_explicit_is_narrowing_checked_eq, "Is the initializer of the form \"= assignment-expression\"?", "[dcl.init.aggr]/4.2", aggregate_initialize_explicit_is_narrowing, aggregate_initialize_explicit_repeat_next)
99100
YN_QUESTION_NODE(aggregate_initialize_explicit_is_narrowing, "Is a narrowing conversion required to convert the expression?", "[dcl.init.aggr]/4.2", NEW_ILL_FORMED(), aggregate_initialize_explicit_repeat_next)
100101
}
101102

cpp23/flowchart.dot.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ digraph initialization {
8888
INSTRUCTION_NODE(class_is_direct_init, "The initialization is direct-initialization.", "[dcl.init.general]/16.6.2")
8989
class_is_direct_init -> class_consider_constructors
9090

91-
INSTRUCTION_NODE(class_consider_constructors, "Enumerate constructors and select the best through overload resolution.", "[dcl.init.general]/16.6.2")
91+
INSTRUCTION_NODE(class_consider_constructors, "Enumerate applicable constructors and select the best through overload resolution.", "[dcl.init.general]/16.6.2")
9292
class_consider_constructors -> class_constructors_is_resolution_successful
9393

9494
YN_QUESTION_NODE(class_constructors_is_resolution_successful, "Is overload resolution succesful?", "[dcl.init.general]/16.6.2.1", class_constructors_use_selected, class_is_constructor_viable)
@@ -119,13 +119,13 @@ digraph initialization {
119119

120120
subgraph class_user_defined_conv {
121121
INIT_AS_FOLLOWS(class_user_defined_conv_head, "[dcl.init.general]/16.6.3")
122-
-> INSTRUCTION_NODE(class_user_defined_conv_enumerate, "Enumerate the user-defined conversions that can convert from the source type to the destination type or (when a conversion function is used) to a derived class thereof (as described in [over.match.copy])")
122+
-> INSTRUCTION_NODE(class_user_defined_conv_enumerate, "Enumerate the user-defined conversions that can convert from the source type to the destination type or (when a conversion function is used) to a derived class thereof (as described in [over.match.copy]).")
123123
-> INSTRUCTION_NODE(class_user_defined_conv_overload_resolution, "Use overload resolution to select the best conversion.")
124124
-> class_user_defined_conv_is_possible
125125

126126
YN_QUESTION_NODE_NO_CITE(class_user_defined_conv_is_possible, "Is the conversion ambiguous or impossible?", NEW_ILL_FORMED(), class_user_defined_conv_do_conversion)
127127

128-
INSTRUCTION_NODE(class_user_defined_conv_do_conversion, "Call the selected function with the initializer-expression as its argument.")
128+
INSTRUCTION_NODE(class_user_defined_conv_do_conversion, "Call the selected function with the initializer expression as its argument.")
129129
-> call_user_defined_conv_is_constructor
130130

131131
YN_QUESTION_NODE_NO_CITE(call_user_defined_conv_is_constructor, "Is the selected function a constructor?", call_user_defined_conv_constructor, class_user_defined_conv_initialize)

cpp23/list_init.dot.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ subgraph list_initialization {
1717
{
1818
YN_QUESTION_NODE(list_has_designated_initializer, "Does the braced-init-list contain a designated-initializer-list?", "[dcl.init.list]/3.1", list_designated_initalizer_is_aggregate, list_is_aggregate_class)
1919
YN_QUESTION_NODE(list_designated_initalizer_is_aggregate, "Is the type an aggregate class?", "[dcl.init.list]/3.1", list_designated_initializer_are_identifiers_valid, NEW_ILL_FORMED())
20-
YN_QUESTION_NODE(list_designated_initializer_are_identifiers_valid, "Do the designators form a subsequence of the ordered idenitifiers in the direct non-static data members of the type?", "[dcl.init.list]/3.1", list_designated_initializer_aggregate_init, NEW_ILL_FORMED())
20+
YN_QUESTION_NODE(list_designated_initializer_are_identifiers_valid, "Do the ordered identifiers in the designators of the designated-initializer-list form a subsequence of the ordered idenitifiers in the direct non-static data members of the type?", "[dcl.init.list]/3.1", list_designated_initializer_aggregate_init, NEW_ILL_FORMED())
2121

2222
INSTRUCTION_NODE(list_designated_initializer_aggregate_init, "Aggregate initialization is performed.", "[dcl.init.list]/3.1")
2323
-> AGGREGATE_INIT_HEAD
@@ -58,7 +58,7 @@ subgraph list_initialization {
5858

5959
// 3.4
6060
{
61-
YN_QUESTION_NODE(list_is_aggregate, "Is the type an aggregate?", "[dcl.init.list]/3.4", list_aggregate_aggregate_initialization, list_is_list_empty)
61+
YN_QUESTION_NODE(list_is_aggregate, "Is T an aggregate?", "[dcl.init.list]/3.4", list_aggregate_aggregate_initialization, list_is_list_empty)
6262

6363
INSTRUCTION_NODE(list_aggregate_aggregate_initialization, "Aggregate initialization is performed.", "[dcl.init.list]/3.4")
6464
-> AGGREGATE_INIT_HEAD
@@ -68,14 +68,14 @@ subgraph list_initialization {
6868
{
6969
YN_QUESTION_NODE(list_is_list_empty, "Is the initializer list empty?", "[dcl.init.list]/3.5", list_empty_is_class, list_dest_is_initializer_list)
7070
YN_QUESTION_NODE(list_empty_is_class, "Is T a class type?", "[dcl.init.list]/3.5", list_empty_has_default_constructor, list_dest_is_initializer_list)
71-
YN_QUESTION_NODE(list_empty_has_default_constructor, "Does the class have a default constructor?", "[dcl.init.list]/3.5", list_empty_value_initialize, list_dest_is_initializer_list)
71+
YN_QUESTION_NODE(list_empty_has_default_constructor, "Does T have a default constructor?", "[dcl.init.list]/3.5", list_empty_value_initialize, list_dest_is_initializer_list)
7272

7373
INST_VALUE_INIT(list_empty_value_initialize, "[dcl.init.list]/3.5")
7474
}
7575

7676
// 3.6
7777
{
78-
YN_QUESTION_NODE(list_dest_is_initializer_list, "Is the type a specialization of std::initializer_list?", "[dcl.init.list]/3.6", list_initializer_list_init, list_is_class)
78+
YN_QUESTION_NODE(list_dest_is_initializer_list, "Is T a specialization of std::initializer_list?", "[dcl.init.list]/3.6", list_initializer_list_init, list_is_class)
7979

8080
INIT_AS_FOLLOWS(list_initializer_list_init, "[dcl.init.list]/5")
8181
-> INSTRUCTION_NODE(list_initializer_list_defn_e, "Let the object be of type std::initializer_list<E>.")
@@ -117,12 +117,12 @@ subgraph list_initialization {
117117
-> list_enum_is_convertible
118118

119119
YN_QUESTION_NODE(list_enum_is_convertible, "Can v be implicitly converted to U?", "[dcl.init.list]/3.8", list_enum_is_direct, list_final_is_singleton)
120-
YN_QUESTION_NODE(list_enum_is_direct, "Is the initialization direct-list-initialization?", "[dcl.init.list]/3.8", list_enum_is_narrowing, list_final_is_singleton)
120+
YN_QUESTION_NODE(list_enum_is_direct, "Is the initialization direct-list-initialization?", "[dcl.init.list]/3.8", list_enum_initialization, list_final_is_singleton)
121121

122-
YN_QUESTION_NODE(list_enum_is_narrowing, "Is a narrowing conversion required to convert v to U?", "[dcl.init.list]/3.8", NEW_ILL_FORMED(), list_enum_initialization)
122+
INSTRUCTION_NODE(list_enum_initialization, "The object is initialized with the value \"T(v)\" (an explicit type conversion).")
123+
-> list_enum_is_narrowing
123124

124-
INSTRUCTION_NODE(list_enum_initialization, "The object is initialized with the value \"T(u)\" (an explicit type conversion).")
125-
-> NEW_DONE()
125+
YN_QUESTION_NODE(list_enum_is_narrowing, "Is a narrowing conversion required to convert v to U?", "[dcl.init.list]/3.8", NEW_ILL_FORMED(), NEW_DONE())
126126
}
127127

128128
// 3.9

cpp23/reference_init.dot.cpp

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ subgraph cluster_reference_initialization {
2020
YN_QUESTION_NODE(reference_dest_lval_is_source_lval_bitfield, "Is the initializer expression a bit-field?", "[dcl.init.ref]/5.1.1", reference_dest_lval_is_source_class, reference_lvals_is_compatible)
2121
YN_QUESTION_NODE(reference_lvals_is_compatible, "Is cv1 T1 reference-compatible with cv2 T2?", "[dcl.init.ref]/5.1.1", reference_lvals_compatible_bind, reference_dest_lval_is_source_class)
2222

23-
INSTRUCTION_NODE(reference_lvals_compatible_bind, "The destination reference is bound to the initializer expression lvalue (or appropriate base).", "[dcl.init.ref]/5.1")
23+
INSTRUCTION_NODE(reference_lvals_compatible_bind, "Bind the destination reference to the initializer expression lvalue (or appropriate base class subobject).", "[dcl.init.ref]/5.1")
2424
-> NEW_DONE()
2525
}
2626

@@ -32,7 +32,7 @@ subgraph cluster_reference_initialization {
3232

3333
INSTRUCTION_NODE(reference_class_enumerate_conversions, "Enumerate applicable conversion functions.", "[dcl.init.ref]/5.1.2")
3434
-> INSTRUCTION_NODE(reference_class_select_conversion, "Select the best applicable conversion function.", "[dcl.init.ref]/5.1.2")
35-
-> INSTRUCTION_NODE(reference_class_do_initialization, "The destination reference is bound to the lvalue result of the conversion (or appropriate base).", "[dcl.init.ref]/5.1")
35+
-> INSTRUCTION_NODE(reference_class_do_initialization, "Bind the destination reference to the lvalue result of the conversion (or appropriate base class subobject).", "[dcl.init.ref]/5.1")
3636
-> NEW_DONE()
3737
}
3838
}
@@ -62,49 +62,56 @@ subgraph cluster_reference_initialization {
6262

6363
// 5.3.2
6464
{
65-
YN_QUESTION_NODE(reference_rval_conv_source_is_class, "Is T2 a class type?", "[dcl.init.ref]/5.3.2", reference_rval_conv_source_class_is_ref_related, reference_temp_is_reference_related)
66-
YN_QUESTION_NODE(reference_rval_conv_source_class_is_ref_related, "Is T1 reference-related to T2?", "[dcl.init.ref]/5.3.2", reference_temp_is_reference_related, reference_rval_conv_source_class_convertible_target)
67-
YN_QUESTION_NODE(reference_rval_conv_source_class_convertible_target, "Is the initializer convertible to an rvalue or function lvalue of type \"cv3 T3\", where \"cv1 T1\" is reference-compatible with \"cv3 T3\"?", "[dcl.init.ref]/5.3.2", reference_rval_conv_bind_converted, reference_temp_is_reference_related)
65+
YN_QUESTION_NODE(reference_rval_conv_source_is_class, "Is T2 a class type?", "[dcl.init.ref]/5.3.2", reference_rval_conv_source_class_is_ref_related, reference_temp_is_dest_class)
66+
YN_QUESTION_NODE(reference_rval_conv_source_class_is_ref_related, "Is T1 reference-related to T2?", "[dcl.init.ref]/5.3.2", reference_temp_is_dest_class, reference_rval_conv_source_class_convertible_target)
67+
YN_QUESTION_NODE(reference_rval_conv_source_class_convertible_target, "Is the initializer convertible to an rvalue or function lvalue of type \"cv3 T3\", where \"cv1 T1\" is reference-compatible with \"cv3 T3\"?", "[dcl.init.ref]/5.3.2", reference_rval_conv_bind_converted, reference_temp_is_dest_class)
6868

69-
INSTRUCTION_NODE(reference_rval_conv_bind_converted, "The converted initializer is the result of the conversion.", "[dcl.init.ref]/5.3")
69+
INSTRUCTION_NODE(reference_rval_conv_bind_converted, "The converted initializer is the converted expression.", "[dcl.init.ref]/5.3")
7070
-> reference_rval_conv_is_converted_prval
7171
}
7272

7373
YN_QUESTION_NODE(reference_rval_conv_is_converted_prval, "Is the converted initializer a prvalue?", "[dcl.init.ref]/5.3", reference_rval_conv_prval_t4_defn, reference_rval_conv_bind_glval)
7474

7575
INSTRUCTION_NODE(reference_rval_conv_prval_t4_defn, "Let the prvalue have type \"T4\".", "[dcl.init.ref]/5.3")
76-
-> INSTRUCTION_NODE(reference_rval_conv_prval_materialize, "The prvalue is materialized, considering its type to be \"cv1 T4\".", "[dcl.init.ref]/5.3")
76+
-> INSTRUCTION_NODE(reference_rval_conv_prval_adjust_type, "Adjust the prvalue's type to \"cv1 T4\".")
77+
-> INSTRUCTION_NODE(reference_rval_conv_prval_materialize, "The prvalue is materialized.", "[dcl.init.ref]/5.3")
7778
-> reference_rval_conv_bind_glval
7879

79-
INSTRUCTION_NODE(reference_rval_conv_bind_glval, "The destination reference is bound to the resulting glvalue (or to an appropriate base class subobject).", "[dcl.init.ref]/5.3")
80+
INSTRUCTION_NODE(reference_rval_conv_bind_glval, "Bind the destination reference to the resulting glvalue (or to an appropriate base class subobject).", "[dcl.init.ref]/5.3")
8081
-> NEW_DONE()
8182
}
8283

8384
// 5.4
8485
{
8586
// 5.4.1
8687
{
87-
YN_QUESTION_NODE(reference_temp_is_reference_related, "Is T1 reference-related to T2?", "[dcl.init.ref]/5.4", NEW_ILL_FORMED(), reference_temp_is_dest_class)
88+
YN_QUESTION_NODE(reference_temp_is_dest_class, "Is T1 a class type?", "[dcl.init.ref]/5.4.1", reference_temp_is_related, reference_temp_is_source_class)
89+
YN_QUESTION_NODE(reference_temp_is_source_class, "Is T2 a class type?", "[dcl.init.ref]/5.4.1", reference_temp_is_related, reference_temp_implicit_conv)
90+
YN_QUESTION_NODE(reference_temp_is_related, "Is T1 reference-related to T2?", "[dcl.init.ref]/5.4.1", reference_temp_implicit_conv, reference_temp_user_defined_conv)
8891

89-
YN_QUESTION_NODE(reference_temp_is_dest_class, "Is T1 a class type?", "[dcl.init.ref]/5.4.1", reference_temp_user_defined_conv, reference_temp_is_source_class)
90-
YN_QUESTION_NODE(reference_temp_is_source_class, "Is T2 a class type?", "[dcl.init.ref]/5.4.1", reference_temp_user_defined_conv, reference_temp_implicit_conv)
91-
92-
INSTRUCTION_NODE(reference_temp_user_defined_conv, "Consider user-defined conversions for the copy-initialization of an object of type \"cv1 T1\" by user-defined-conversion.", "[dcl.init.ref]/5.4.1")
92+
INSTRUCTION_NODE(reference_temp_user_defined_conv, "Consider user-defined conversions for the copy-initialization of an object of type \"cv1 T1\" by user-defined conversion.", "[dcl.init.ref]/5.4.1")
9393
-> reference_temp_user_defined_conv_is_ill_formed
9494

9595
YN_QUESTION_NODE(reference_temp_user_defined_conv_is_ill_formed, "Would the non-reference copy-initialization be ill-formed?", "[dcl.init.ref]/5.4.1", NEW_ILL_FORMED(), reference_temp_user_defined_conv_direct_initialize)
9696

97-
INSTRUCTION_NODE(reference_temp_user_defined_conv_direct_initialize, "Use the result \"E\" of the call to the conversion function, as described by non-reference copy-initialization, to direct-initialize the reference using the form \"(E)\". For this direct-initialization, user-defined conversions are not considered.", "[dcl.init.ref]/5.4.1")
97+
INSTRUCTION_NODE(reference_temp_user_defined_conv_direct_initialize, "The result of the call to the conversion function, as described by non-reference copy-initialization, is used to direct-initialize the reference. For the direct-initialization, user-defined conversions are not considered.", "[dcl.init.ref]/5.4.1")
9898
-> NEW_RECURSE()
99+
-> reference_temp_implicit_conv_is_reference_related
99100
}
100101

101102
// 5.4.2
102103
{
103104
INSTRUCTION_NODE(reference_temp_implicit_conv, "The initializer expression is implicitly converted to a prvalue of type \"T1\".", "[dcl.init.ref]/5.4.2")
104-
-> INSTRUCTION_NODE(reference_temp_implicit_conv_materialize, "The temporary is materialized, considering the type of the prvalue to be \"cv1 T1\".", "[dcl.init.ref]/5.4.2")
105-
-> INSTRUCTION_NODE(reference_temp_implicit_conv_materialize_bind, "The reference is bound to the result.", "[dcl.init.ref]/5.4.2")
106-
-> NEW_DONE()
107-
}
105+
-> INSTRUCTION_NODE(reference_temp_implicit_conv_materialize, "The temporary is materialized, considering the type of the prvalue to be \"cv1 T1\".", "[dcl.init.ref]/5.4.2")
106+
-> INSTRUCTION_NODE(reference_temp_implicit_conv_materialize_bind, "Bind reference to the result.", "[dcl.init.ref]/5.4.2")
107+
-> reference_temp_implicit_conv_is_reference_related
108+
}
109+
110+
YN_QUESTION_NODE(reference_temp_implicit_conv_is_reference_related, "Is T1 reference-related to T2?", "[dcl.init.ref]/5.4", reference_temp_implicit_conv_is_cv_okay, NEW_DONE())
111+
YN_QUESTION_NODE(reference_temp_implicit_conv_is_cv_okay, "Is cv1 at least as qualified as cv2?", "[dcl.init.ref]/5.4.3", reference_temp_implicit_conv_is_dest_rval, NEW_ILL_FORMED())
112+
113+
YN_QUESTION_NODE(reference_temp_implicit_conv_is_dest_rval, "Is the destination an rvalue reference?", "[dcl.init.ref]/5.4.4", reference_temp_implicit_conv_is_source_lval, NEW_DONE())
114+
YN_QUESTION_NODE(reference_temp_implicit_conv_is_source_lval, "Is the initializer an lvalue?", "[dcl.init.ref]/5.4.4", NEW_ILL_FORMED(), NEW_DONE())
108115
}
109116
}
110117

0 commit comments

Comments
 (0)