Skip to content

Commit 49ee834

Browse files
committed
feat(test): ensure interfaces and type aliases work inside 'declare namespace'
1 parent 35b4365 commit 49ee834

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

test/test-parse-typescript-declare-namespace.cpp

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,43 @@ TEST_F(test_parse_typescript_declare_namespace,
443443
}
444444
}
445445

446+
TEST_F(test_parse_typescript_declare_namespace,
447+
interface_inside_declare_namespace_is_supported) {
448+
{
449+
test_parser p(u8"declare namespace ns { interface I { } }"_sv,
450+
typescript_options, capture_diags);
451+
p.parse_and_visit_module();
452+
EXPECT_THAT(p.visits, ElementsAreArray({
453+
"visit_variable_declaration", // ns
454+
"visit_enter_namespace_scope", // {
455+
"visit_variable_declaration", // I
456+
"visit_enter_interface_scope", // {
457+
"visit_exit_interface_scope", // }
458+
"visit_exit_namespace_scope", // }
459+
"visit_end_of_module", //
460+
}));
461+
}
462+
}
463+
464+
TEST_F(test_parse_typescript_declare_namespace,
465+
type_alias_inside_declare_namespace_is_supported) {
466+
{
467+
test_parser p(u8"declare namespace ns { type T = U; }"_sv,
468+
typescript_options, capture_diags);
469+
p.parse_and_visit_module();
470+
EXPECT_THAT(p.visits, ElementsAreArray({
471+
"visit_variable_declaration", // ns
472+
"visit_enter_namespace_scope", // {
473+
"visit_variable_declaration", // T
474+
"visit_enter_type_alias_scope", // {
475+
"visit_variable_type_use", // U
476+
"visit_exit_type_alias_scope", // }
477+
"visit_exit_namespace_scope", // }
478+
"visit_end_of_module", //
479+
}));
480+
}
481+
}
482+
446483
TEST_F(test_parse_typescript_declare_namespace,
447484
enum_inside_declare_namespace_acts_like_declare_enum) {
448485
{

0 commit comments

Comments
 (0)