GeneratorValidate.js 700 B

12345678910111213141516171819202122
  1. 'use strict';
  2. var $TypeError = require('es-errors/type');
  3. var SLOT = require('internal-slot');
  4. module.exports = function GeneratorValidate(generator, generatorBrand) {
  5. SLOT.assert(generator, '[[GeneratorState]]'); // step 1
  6. SLOT.assert(generator, '[[GeneratorBrand]]'); // step 2
  7. var brand = SLOT.get(generator, '[[GeneratorBrand]]');
  8. if (brand !== generatorBrand) {
  9. throw new $TypeError('Assertion failed: generator brand is unexpected: ' + brand);
  10. }
  11. SLOT.assert(generator, '[[GeneratorContext]]'); // step 4
  12. var state = SLOT.get(generator, '[[GeneratorState]]'); // step 5
  13. if (state === 'executing') {
  14. throw new $TypeError('generator is executing');
  15. }
  16. return state; // step 7
  17. };