jsx_no_leaked_render

package
v0.5.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 27, 2026 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var JsxNoLeakedRenderRule = rule.Rule{
	Name: "react/jsx-no-leaked-render",
	Run: func(ctx rule.RuleContext, raw any) rule.RuleListeners {
		opts := parseOptions(raw)
		var fixStrategy string
		if len(opts.validStrategies) > 0 {
			fixStrategy = opts.validStrategies[0]
		}
		coerceAllowed := hasStrategy(opts.validStrategies, strategyCoerce)
		ternaryAllowed := hasStrategy(opts.validStrategies, strategyTernary)
		isReact18Plus := !reactutil.ReactVersionLessThan(ctx.Settings, 18, 0, 0)

		return rule.RuleListeners{
			ast.KindJsxExpression: func(node *ast.Node) {
				je := node.AsJsxExpression()
				if je == nil || je.DotDotDotToken != nil {
					return
				}
				expr := je.Expression
				if expr == nil {
					return
				}
				inner := ast.SkipParentheses(expr)

				if ast.IsBinaryExpression(inner) {
					bin := inner.AsBinaryExpression()
					if bin.OperatorToken != nil && bin.OperatorToken.Kind == ast.KindAmpersandAmpersandToken {
						handleLogicalAnd(ctx, node, inner, bin, opts, coerceAllowed, isReact18Plus, fixStrategy)
						return
					}
				}

				if ast.IsConditionalExpression(inner) {
					handleConditional(ctx, node, inner, opts, ternaryAllowed, fixStrategy)
					return
				}
			},
		}
	},
}

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL