@@ -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+
446483TEST_F (test_parse_typescript_declare_namespace,
447484 enum_inside_declare_namespace_acts_like_declare_enum) {
448485 {
0 commit comments