text: // Copyright (C) 2016 the V8 project authors. All rights reserved.
  // This code is governed by the BSD license found in the LICENSE file.
  /*---
  esid: sec-regexp.prototype.compile
  es6id: B.2.5.1
  description: >
      Behavior when provided pattern is a RegExp instance and flags are specified
  info: |
      [...]
      3. If Type(pattern) is Object and pattern has a [[RegExpMatcher]] internal
         slot, then
         a. If flags is not undefined, throw a TypeError exception.
  ---*/
  
  var re = /./;
  re.lastIndex = 23;
  
  assert.sameValue(typeof RegExp.prototype.compile, 'function');
  
  assert.throws(TypeError, function() {
    re.compile(re, null);
  }, 'null');
  
  assert.throws(TypeError, function() {
    re.compile(re, 0);
  }, 'numeric primitive');
  
  assert.throws(TypeError, function() {
    re.compile(re, '');
  }, 'string primitive');
  
  assert.throws(TypeError, function() {
    re.compile(re, false);
  }, 'boolean primitive');
  
  assert.throws(TypeError, function() {
    re.compile(re, {});
  }, 'ordinary object');
  
  assert.throws(TypeError, function() {
    re.compile(re, []);
  }, 'array exotic object');
  
  assert.sameValue(re.lastIndex, 23);
  