Sha256: 3b3070787220e297c3fc37208a60c740bf0563cb6171a8c421c40d5cb8b333d0

Contents?: true

Size: 1.65 KB

Versions: 3

Compression:

Stored size: 1.65 KB

Contents

"use strict";

exports.__esModule = true;
exports.ReferencedIdentifier = ReferencedIdentifier;

function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj["default"] = obj; return newObj; } }

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

var _leven = require("leven");

var _leven2 = _interopRequireDefault(_leven);

var _messages = require("../../../messages");

var messages = _interopRequireWildcard(_messages);

var metadata = {
  optional: true
};

exports.metadata = metadata;

function ReferencedIdentifier(node, parent, scope, file) {
  var binding = scope.getBinding(node.name);
  if (binding && binding.kind === "type" && !this.parentPath.isFlow()) {
    throw this.errorWithNode(messages.get("undeclaredVariableType", node.name), ReferenceError);
  }

  if (scope.hasBinding(node.name)) return;

  // get the closest declaration to offer as a suggestion
  // the variable name may have just been mistyped

  var bindings = scope.getAllBindings();

  var closest;
  var shortest = -1;

  for (var name in bindings) {
    var distance = (0, _leven2["default"])(node.name, name);
    if (distance <= 0 || distance > 3) continue;
    if (distance <= shortest) continue;

    closest = name;
    shortest = distance;
  }

  var msg;
  if (closest) {
    msg = messages.get("undeclaredVariableSuggestion", node.name, closest);
  } else {
    msg = messages.get("undeclaredVariable", node.name);
  }

  //

  throw this.errorWithNode(msg, ReferenceError);
}

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
gulp_assets-1.0.0.pre.5 template/node_modules/babel-core/lib/babel/transformation/transformers/validation/undeclared-variable-check.js
gulp_assets-1.0.0.pre.4 template/node_modules/babel-core/lib/babel/transformation/transformers/validation/undeclared-variable-check.js
gulp_assets-1.0.0.pre.3 template/node_modules/babel-core/lib/babel/transformation/transformers/validation/undeclared-variable-check.js