Blame view

node_modules/eslint-plugin-promise/rules/no-return-in-finally.js 1.03 KB
ce4c83ff   wxy   初始提交
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
  'use strict'
  
  const getDocsUrl = require('./lib/get-docs-url')
  const isPromise = require('./lib/is-promise')
  
  module.exports = {
    meta: {
      docs: {
        url: getDocsUrl('no-return-in-finally')
      }
    },
    create: function(context) {
      return {
        CallExpression: function(node) {
          if (isPromise(node)) {
            if (
              node.callee &&
              node.callee.property &&
              node.callee.property.name === 'finally'
            ) {
              if (
                node.arguments &&
                node.arguments[0] &&
                node.arguments[0].body &&
                node.arguments[0].body.body
              ) {
                if (
                  node.arguments[0].body.body.some(function(statement) {
                    return statement.type === 'ReturnStatement'
                  })
                ) {
                  context.report({
                    node: node.callee.property,
                    message: 'No return in finally'
                  })
                }
              }
            }
          }
        }
      }
    }
  }