module.exports = {
  meta: {
    docs: {},
    schema: []
  },

  create(context) {
    return {
      Program() {
        const scope = context.getScope()

        for (const variable of scope.variables) {
          if (variable.writeable) {
            return
          }

          for (const def of variable.defs) {
            if (
              def.type === 'FunctionName' ||
              def.type === 'ClassName' ||
              (def.type === 'Variable' && def.parent.kind === 'const') ||
              (def.type === 'Variable' && def.parent.kind === 'let')
            ) {
              context.report(def.node, 'Implicit global variable, assign as global property instead.')
            }
          }
        }
      }
    }
  }
}