Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var AwaitThenableRule = rule.CreateRule(rule.Rule{ Name: "await-thenable", Run: func(ctx rule.RuleContext, options any) rule.RuleListeners { return rule.RuleListeners{ ast.KindAwaitExpression: func(node *ast.Node) { awaitArgument := node.AsAwaitExpression().Expression awaitArgumentType := ctx.TypeChecker.GetTypeAtLocation(awaitArgument) certainty := utils.NeedsToBeAwaited(ctx.TypeChecker, awaitArgument, awaitArgumentType) if certainty == utils.TypeAwaitableNever { ctx.ReportNodeWithSuggestions(node, buildAwaitMessage(), rule.RuleSuggestion{ Message: buildRemoveAwaitMessage(), FixesArr: []rule.RuleFix{ rule.RuleFixRemoveRange(scanner.GetRangeOfTokenAtPosition(ctx.SourceFile, node.Pos())), }, }) } }, ast.KindForOfStatement: func(node *ast.Node) { stmt := node.AsForInOrOfStatement() if stmt.AwaitModifier == nil { return } exprType := ctx.TypeChecker.GetTypeAtLocation(stmt.Expression) if utils.IsTypeAnyType(exprType) { return } for _, typePart := range utils.UnionTypeParts(exprType) { if utils.GetWellKnownSymbolPropertyOfType(typePart, "asyncIterator", ctx.TypeChecker) != nil { return } } ctx.ReportRangeWithSuggestions( utils.GetForStatementHeadLoc(ctx.SourceFile, node), buildForAwaitOfNonAsyncIterableMessage(), rule.RuleSuggestion{ Message: buildConvertToOrdinaryForMessage(), FixesArr: []rule.RuleFix{ rule.RuleFixRemove(ctx.SourceFile, stmt.AwaitModifier), }, }, ) }, ast.KindVariableDeclarationList: func(node *ast.Node) { if !ast.IsVarAwaitUsing(node) { return } declaration := node.AsVariableDeclarationList() DeclaratorLoop: for _, declarator := range declaration.Declarations.Nodes { init := declarator.Initializer() if init == nil { continue } initType := ctx.TypeChecker.GetTypeAtLocation(init) if utils.IsTypeAnyType(initType) { continue } for _, typePart := range utils.UnionTypeParts(initType) { if utils.GetWellKnownSymbolPropertyOfType(typePart, "asyncDispose", ctx.TypeChecker) != nil { continue DeclaratorLoop } } var suggestions []rule.RuleSuggestion if len(declaration.Declarations.Nodes) == 1 { suggestions = append(suggestions, rule.RuleSuggestion{ Message: buildRemoveAwaitMessage(), FixesArr: []rule.RuleFix{ rule.RuleFixRemoveRange(scanner.GetRangeOfTokenAtPosition(ctx.SourceFile, node.Pos())), }, }) } ctx.ReportNodeWithSuggestions(init, buildAwaitUsingOfNonAsyncDisposableMessage(), suggestions...) } }, } }, })
Functions ¶
This section is empty.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.