@@ -1098,6 +1098,64 @@ TEST_F(
1098
1098
}
1099
1099
}
1100
1100
1101
+ TEST_F (Test_Parse_TypeScript_Generic,
1102
+ greater_equal_greater_is_split_into_two_tokens) {
1103
+ {
1104
+ Spy_Visitor p = test_parse_and_visit_statement (
1105
+ u8" let f = (): RT<T>=>{};" _sv, no_diags, typescript_options);
1106
+ EXPECT_THAT (p.visits , ElementsAreArray ({
1107
+ " visit_enter_function_scope" , //
1108
+ " visit_enter_type_scope" , // :
1109
+ " visit_variable_type_use" , // RT
1110
+ " visit_variable_type_use" , // T
1111
+ " visit_exit_type_scope" , //
1112
+ " visit_enter_function_scope_body" , // {
1113
+ " visit_exit_function_scope" , // }
1114
+ " visit_variable_declaration" , // let f
1115
+ }));
1116
+ EXPECT_THAT (p.variable_declarations ,
1117
+ ElementsAreArray ({let_init_decl (u8" f" )}));
1118
+ }
1119
+ {
1120
+ Spy_Visitor p = test_parse_and_visit_statement (
1121
+ u8" let f = (): RT<RT<T>>=> {};" _sv, no_diags, typescript_options);
1122
+ EXPECT_THAT (p.visits , ElementsAreArray ({
1123
+ " visit_enter_function_scope" , //
1124
+ " visit_enter_type_scope" , // :
1125
+ " visit_variable_type_use" , // RT
1126
+ " visit_variable_type_use" , // RT
1127
+ " visit_variable_type_use" , // T
1128
+ " visit_exit_type_scope" , //
1129
+ " visit_enter_function_scope_body" , // {
1130
+ " visit_exit_function_scope" , // }
1131
+ " visit_variable_declaration" , // let f
1132
+ }));
1133
+ EXPECT_THAT (p.variable_declarations ,
1134
+ ElementsAreArray ({let_init_decl (u8" f" )}));
1135
+ }
1136
+ {
1137
+ Spy_Visitor p = test_parse_and_visit_statement (
1138
+ u8" class C<T> { method(): C<T>=> {} }" _sv, //
1139
+ u8" ^^ Diag_Functions_Or_Methods_Should_Not_Have_Arrow_Operator" _diag,
1140
+ typescript_options);
1141
+ EXPECT_THAT (p.visits , ElementsAreArray ({
1142
+ " visit_enter_class_scope" , //
1143
+ " visit_variable_declaration" ,
1144
+ " visit_enter_class_scope_body" , //
1145
+ " visit_enter_function_scope" , //
1146
+ " visit_enter_type_scope" , // :
1147
+ " visit_variable_type_use" , // T
1148
+ " visit_variable_type_use" , // C
1149
+ " visit_exit_type_scope" , //
1150
+ " visit_enter_function_scope_body" , //
1151
+ " visit_exit_function_scope" , //
1152
+ " visit_property_declaration" , // method
1153
+ " visit_exit_class_scope" ,
1154
+ " visit_variable_declaration" , // C
1155
+ }));
1156
+ }
1157
+ }
1158
+
1101
1159
TEST_F (Test_Parse_TypeScript_Generic,
1102
1160
unambiguous_generic_arguments_are_parsed_in_javascript) {
1103
1161
{
0 commit comments