Skip to content

Commit 8c934bf

Browse files
committed
Emit local variable in global unnamed function, closes #814
1 parent b4117ae commit 8c934bf

File tree

6 files changed

+135
-99
lines changed

6 files changed

+135
-99
lines changed

regression-tests/test-results/version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
cppfront compiler v0.3.0 Build 8B19:0904
2+
cppfront compiler v0.3.0 Build 8B19:1018
33
Copyright(c) Herb Sutter All rights reserved
44

55
SPDX-License-Identifier: CC-BY-NC-ND-4.0

source/build.info

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
"8B19:0904"
1+
"8B19:1018"

source/parse.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2850,6 +2850,23 @@ struct declaration_node
28502850
{ return !parent_declaration || parent_declaration->type.index() == a_namespace; }
28512851
auto parent_is_alias () const -> bool
28522852
{ return parent_declaration && parent_declaration->type.index() == an_alias; }
2853+
2854+
auto parent_is_type_alias () const -> bool
2855+
{ return parent_declaration && parent_declaration->is_alias() && std::get<an_alias>(parent_declaration->type)->is_type_alias(); }
2856+
auto parent_is_namespace_alias() const -> bool
2857+
{ return parent_declaration && parent_declaration->is_alias() && std::get<an_alias>(parent_declaration->type)->is_namespace_alias(); }
2858+
auto parent_is_object_alias () const -> bool
2859+
{ return parent_declaration && parent_declaration->is_alias() && std::get<an_alias>(parent_declaration->type)->is_object_alias(); }
2860+
2861+
auto is_inside_global_unnamed_function() const -> bool {
2862+
auto parent = parent_declaration;
2863+
// Get outside all nested function expressions
2864+
while (parent && parent->is_function() && !parent->has_name()) {
2865+
parent = parent->parent_declaration;
2866+
}
2867+
return !parent;
2868+
}
2869+
28532870
auto parent_is_polymorphic() const -> bool
28542871
{ return parent_declaration && parent_declaration->is_polymorphic(); }
28552872

0 commit comments

Comments
 (0)