| "use strict"; |
| |
| Object.defineProperty(exports, "__esModule", { |
| value: true |
| }); |
| exports.default = toStatement; |
| |
| var _generated = require("../validators/generated"); |
| |
| var _generated2 = require("../builders/generated"); |
| |
| function toStatement(node, ignore) { |
| if ((0, _generated.isStatement)(node)) { |
| return node; |
| } |
| |
| let mustHaveId = false; |
| let newType; |
| |
| if ((0, _generated.isClass)(node)) { |
| mustHaveId = true; |
| newType = "ClassDeclaration"; |
| } else if ((0, _generated.isFunction)(node)) { |
| mustHaveId = true; |
| newType = "FunctionDeclaration"; |
| } else if ((0, _generated.isAssignmentExpression)(node)) { |
| return (0, _generated2.expressionStatement)(node); |
| } |
| |
| if (mustHaveId && !node.id) { |
| newType = false; |
| } |
| |
| if (!newType) { |
| if (ignore) { |
| return false; |
| } else { |
| throw new Error(`cannot turn ${node.type} to a statement`); |
| } |
| } |
| |
| node.type = newType; |
| return node; |
| } |