Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var PreferSpreadRule = rule.Rule{ Name: "prefer-spread", Run: func(ctx rule.RuleContext, options any) rule.RuleListeners { return rule.RuleListeners{ ast.KindCallExpression: func(node *ast.Node) { call := node.AsCallExpression() callee := ast.SkipParentheses(call.Expression) if !utils.IsSpecificMemberAccess(callee, "", "apply") { return } if call.Arguments == nil { return } args := call.Arguments.Nodes if len(args) != 2 { return } arg1 := ast.SkipParentheses(args[1]) if arg1.Kind == ast.KindArrayLiteralExpression || arg1.Kind == ast.KindSpreadElement { return } var memberObject *ast.Node switch callee.Kind { case ast.KindPropertyAccessExpression: memberObject = callee.AsPropertyAccessExpression().Expression case ast.KindElementAccessExpression: memberObject = callee.AsElementAccessExpression().Expression default: return } applied := ast.SkipParentheses(memberObject) var expectedThis *ast.Node switch applied.Kind { case ast.KindPropertyAccessExpression: expectedThis = applied.AsPropertyAccessExpression().Expression case ast.KindElementAccessExpression: expectedThis = applied.AsElementAccessExpression().Expression } thisArg := args[0] if !isValidThisArg(ctx.SourceFile, expectedThis, thisArg) { return } ctx.ReportNode(node, rule.RuleMessage{ Id: "preferSpread", Description: "Use the spread operator instead of '.apply()'.", }) }, } }, }
Functions ¶
This section is empty.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.