@@ -3,23 +3,24 @@ use std::str::FromStr;
33
44use biome_js_syntax:: {
55 AnyJsArrayBindingPatternElement , AnyJsArrayElement , AnyJsArrowFunctionParameters ,
6- AnyJsBindingPattern , AnyJsCallArgument , AnyJsClass , AnyJsClassMember , AnyJsDeclaration ,
6+ AnyJsBindingPattern , AnyJsCallArgument , AnyJsClassMember , AnyJsDeclaration ,
77 AnyJsDeclarationClause , AnyJsExportDefaultDeclaration , AnyJsExpression , AnyJsFormalParameter ,
8- AnyJsFunctionBody , AnyJsLiteralExpression , AnyJsName , AnyJsObjectBindingPatternMember ,
9- AnyJsObjectMember , AnyJsObjectMemberName , AnyJsParameter , AnyTsModuleName , AnyTsName ,
10- AnyTsReturnType , AnyTsTupleTypeElement , AnyTsType , AnyTsTypeMember ,
8+ AnyJsFunction , AnyJsFunctionBody , AnyJsLiteralExpression , AnyJsName ,
9+ AnyJsObjectBindingPatternMember , AnyJsObjectMember , AnyJsObjectMemberName , AnyJsParameter ,
10+ AnyTsModuleName , AnyTsName , AnyTsReturnType , AnyTsTupleTypeElement , AnyTsType , AnyTsTypeMember ,
1111 AnyTsTypePredicateParameterName , ClassMemberName , JsArrayBindingPattern ,
1212 JsArrowFunctionExpression , JsBinaryExpression , JsBinaryOperator , JsCallArguments ,
1313 JsClassDeclaration , JsClassExportDefaultDeclaration , JsClassExpression , JsForInStatement ,
1414 JsForOfStatement , JsForVariableDeclaration , JsFormalParameter , JsFunctionBody ,
15- JsFunctionDeclaration , JsFunctionExpression , JsGetterObjectMember , JsLogicalExpression ,
16- JsLogicalOperator , JsMethodObjectMember , JsNewExpression , JsObjectBindingPattern ,
17- JsObjectExpression , JsParameters , JsReferenceIdentifier , JsReturnStatement ,
18- JsSetterObjectMember , JsSyntaxNode , JsSyntaxToken , JsUnaryExpression , JsUnaryOperator ,
19- JsVariableDeclaration , JsVariableDeclarator , TsDeclareFunctionDeclaration ,
20- TsExternalModuleDeclaration , TsInterfaceDeclaration , TsModuleDeclaration , TsReferenceType ,
21- TsReturnTypeAnnotation , TsTypeAliasDeclaration , TsTypeAnnotation , TsTypeArguments , TsTypeList ,
22- TsTypeParameter , TsTypeParameters , TsTypeofType , inner_string_text, unescape_js_string,
15+ JsFunctionDeclaration , JsFunctionExpression , JsGetterObjectMember , JsInitializerClause ,
16+ JsLogicalExpression , JsLogicalOperator , JsMethodObjectMember , JsNewExpression ,
17+ JsObjectBindingPattern , JsObjectExpression , JsParameters , JsPropertyClassMember ,
18+ JsPropertyObjectMember , JsReferenceIdentifier , JsReturnStatement , JsSetterObjectMember ,
19+ JsSyntaxNode , JsSyntaxToken , JsUnaryExpression , JsUnaryOperator , JsVariableDeclaration ,
20+ JsVariableDeclarator , TsDeclareFunctionDeclaration , TsExternalModuleDeclaration ,
21+ TsInterfaceDeclaration , TsModuleDeclaration , TsReferenceType , TsReturnTypeAnnotation ,
22+ TsTypeAliasDeclaration , TsTypeAnnotation , TsTypeArguments , TsTypeList , TsTypeParameter ,
23+ TsTypeParameters , TsTypeofType , inner_string_text, unescape_js_string,
2324} ;
2425use biome_rowan:: { AstNode , SyntaxResult , Text , TokenText } ;
2526
@@ -2292,16 +2293,16 @@ fn is_direct_class_or_object_member(node: &JsSyntaxNode) -> bool {
22922293 ) {
22932294 None
22942295 } else {
2295- Some ( matches ! (
2296- node,
2297- AnyJsExpression :: JsObjectExpression ( _)
2298- | AnyJsExpression :: JsClassExpression ( _)
2299- ) )
2296+ Some ( false )
23002297 }
2301- } else if AnyJsClass :: can_cast ( node. kind ( ) ) {
2302- Some ( true )
23032298 } else {
2304- None
2299+ Some (
2300+ JsInitializerClause :: can_cast ( node. kind ( ) )
2301+ && node
2302+ . parent ( )
2303+ . is_some_and ( |parent| JsPropertyClassMember :: can_cast ( parent. kind ( ) ) )
2304+ || JsPropertyObjectMember :: can_cast ( node. kind ( ) ) ,
2305+ )
23052306 }
23062307 } )
23072308 . unwrap_or_default ( )
@@ -2548,7 +2549,7 @@ fn type_from_function_body(
25482549) -> TypeData {
25492550 let mut return_types: Vec < _ > = body
25502551 . syntax ( )
2551- . descendants ( )
2552+ . pruned_descendents ( |node| ! AnyJsFunction :: can_cast ( node . kind ( ) ) )
25522553 . filter_map ( JsReturnStatement :: cast)
25532554 . map ( |return_statement| {
25542555 return_statement. argument ( ) . map_or (
0 commit comments