@@ -3243,6 +3243,40 @@ mod tests {
32433243 assert_eq ! ( client. language_id( ) , "typescript" ) ;
32443244 }
32453245
3246+ #[ test]
3247+ fn test_get_client_for_file_prefers_exact_react_server ( ) {
3248+ let temp_dir = TempDir :: new ( ) . unwrap ( ) ;
3249+ let test_file = temp_dir. path ( ) . join ( "component.tsx" ) ;
3250+ fs:: write ( & test_file, "export const Component = () => <div />" ) . unwrap ( ) ;
3251+
3252+ let mut extension_map = HashMap :: new ( ) ;
3253+ extension_map. insert ( "tsx" . to_string ( ) , "typescriptreact" . to_string ( ) ) ;
3254+
3255+ let typescript_react_config = crate :: config:: LspServerConfig {
3256+ language_id : "typescriptreact" . to_string ( ) ,
3257+ command : "typescript-language-server" . to_string ( ) ,
3258+ args : vec ! [ "--stdio" . to_string( ) ] ,
3259+ env : HashMap :: new ( ) ,
3260+ file_patterns : vec ! [ "**/*.tsx" . to_string( ) ] ,
3261+ initialization_options : None ,
3262+ timeout_seconds : 30 ,
3263+ heuristics : None ,
3264+ } ;
3265+
3266+ let mut translator = Translator :: new ( ) . with_extensions ( extension_map) ;
3267+ translator. register_client (
3268+ "typescript" . to_string ( ) ,
3269+ LspClient :: new ( crate :: config:: LspServerConfig :: typescript ( ) ) ,
3270+ ) ;
3271+ translator. register_client (
3272+ "typescriptreact" . to_string ( ) ,
3273+ LspClient :: new ( typescript_react_config) ,
3274+ ) ;
3275+
3276+ let client = translator. get_client_for_file ( & test_file) . unwrap ( ) ;
3277+ assert_eq ! ( client. language_id( ) , "typescriptreact" ) ;
3278+ }
3279+
32463280 #[ test]
32473281 fn test_get_client_for_file_routes_jsx_to_javascript_server ( ) {
32483282 let temp_dir = TempDir :: new ( ) . unwrap ( ) ;
0 commit comments