fsharpVisitor.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _core = require("@babel/core");
  7. var _buildOptimizedSequenceExpression = _interopRequireDefault(require("./buildOptimizedSequenceExpression"));
  8. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  9. const fsharpVisitor = {
  10. BinaryExpression(path) {
  11. const {
  12. scope,
  13. node
  14. } = path;
  15. const {
  16. operator,
  17. left,
  18. right
  19. } = node;
  20. if (operator !== "|>") return;
  21. const placeholder = scope.generateUidIdentifierBasedOnNode(left);
  22. const call = right.type === "AwaitExpression" ? _core.types.awaitExpression(_core.types.cloneNode(placeholder)) : _core.types.callExpression(right, [_core.types.cloneNode(placeholder)]);
  23. const sequence = (0, _buildOptimizedSequenceExpression.default)({
  24. assign: _core.types.assignmentExpression("=", _core.types.cloneNode(placeholder), left),
  25. call,
  26. path
  27. });
  28. path.replaceWith(sequence);
  29. }
  30. };
  31. var _default = fsharpVisitor;
  32. exports.default = _default;