@@ -345,7 +345,7 @@ var RulesOfHooksRule = rule.Rule{
345345 if isInsideClass (codePathNode ) {
346346 ctx .ReportNode (hook , buildClassHookMessage (hookText ))
347347 } else if codePathFunctionName != "" {
348- // Custom message if we found an invalid function name.kj
348+ // Custom message if we found an invalid function name.
349349 ctx .ReportNode (hook , buildFunctionHookMessage (hookText , codePathFunctionName ))
350350 } else if isTopLevel (codePathNode ) {
351351 // These are dangerous if you have inline requires enabled.
@@ -656,49 +656,6 @@ func isFunctionLike(node *ast.Node) bool {
656656 kind == ast .KindMethodDeclaration
657657}
658658
659- // Helper function to check if node is inside a loop
660- // func isInsideLoop(node *ast.Node) bool {
661- // current := node.Parent
662- // for current != nil {
663- // kind := current.Kind
664- // if kind == ast.KindForStatement ||
665- // kind == ast.KindForInStatement ||
666- // kind == ast.KindForOfStatement ||
667- // kind == ast.KindWhileStatement ||
668- // kind == ast.KindDoStatement {
669- // return true
670- // }
671- // current = current.Parent
672- // }
673- // return false
674- // }
675-
676- // Helper function to check if node is inside a conditional
677- // func isInsideConditional(node *ast.Node) bool {
678- // current := node.Parent
679- // for current != nil {
680- // kind := current.Kind
681- // if kind == ast.KindIfStatement ||
682- // kind == ast.KindConditionalExpression {
683- // return true
684- // }
685- // // TODO: Check for logical operators (&& || ??)
686- // if kind == ast.KindBinaryExpression {
687- // binExpr := current.AsBinaryExpression()
688- // if binExpr != nil {
689- // op := binExpr.OperatorToken.Kind
690- // if op == ast.KindAmpersandAmpersandToken ||
691- // op == ast.KindBarBarToken ||
692- // op == ast.KindQuestionQuestionToken {
693- // return true
694- // }
695- // }
696- // }
697- // current = current.Parent
698- // }
699- // return false
700- // }
701-
702659// Helper function to check if node is inside a class
703660func isInsideClass (node * ast.Node ) bool {
704661 current := node .Parent
@@ -742,64 +699,8 @@ func isUseIdentifier(node *ast.Node) bool {
742699 return isReactFunction (node , "use" )
743700}
744701
745- // Helper function to check if call expression is a hook call
746- // func isHookCall(node *ast.Node) (bool, string) {
747- // if node.Kind != ast.KindCallExpression {
748- // return false, ""
749- // }
750-
751- // callExpr := node.AsCallExpression()
752- // if callExpr == nil {
753- // return false, ""
754- // }
755-
756- // // Get the callee and extract the hook name
757- // // Handle different call patterns:
758- // // - useHook()
759- // // - React.useHook()
760- // // - obj.useHook()
761- // callee := callExpr.Expression
762- // if callee == nil {
763- // return false, ""
764- // }
765-
766- // switch callee.Kind {
767- // case ast.KindIdentifier:
768- // // Direct call: useHook()
769- // identifier := callee.AsIdentifier()
770- // if identifier != nil {
771- // name := scanner.GetTextOfNode(&identifier.Node)
772- // if isHookName(name) {
773- // return true, name
774- // }
775- // }
776- // case ast.KindPropertyAccessExpression:
777- // // Property access: React.useHook(), obj.useHook()
778- // propAccess := callee.AsPropertyAccessExpression()
779- // if propAccess != nil {
780- // nameNode := propAccess.Name()
781- // if nameNode != nil {
782- // name := scanner.GetTextOfNode(nameNode)
783- // if isHookName(name) {
784- // return true, name
785- // }
786- // }
787- // }
788- // }
789-
790- // return false, ""
791- // }
792-
793702// Helper function to check if node is at top level
794703func isTopLevel (node * ast.Node ) bool {
795- // current := node.Parent
796- // for current != nil {
797- // if isFunctionLike(current) {
798- // return false
799- // }
800- // current = current.Parent
801- // }
802- // return true
803704 return node .Kind == ast .KindSourceFile
804705}
805706
0 commit comments