<commit_before>/**
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

goog.provide('org.apache.flex.utils.Language');



/**
 * @constructor
 */
org.apache.flex.utils.Language = function() {
};


/**
 * as()
 *
 * @expose
 * @param {!Object} leftOperand The lefthand operand of the
 *     binary as operator in AS3.
 * @param {!Object} rightOperand The righthand operand of the
 *     binary operator in AS3.
 * @return {?Object} Returns the lefthand operand if it is
 *     of the type of the righthand operand, otherwise null.
 */
org.apache.flex.utils.Language.as = function(leftOperand, rightOperand) {
  return (org.apache.flex.utils.Language.is(leftOperand, rightOperand)) ?
      leftOperand : null;
};


/**
 * int()
 *
 * @expose
 * @param {?} value The value to be cast.
 * @return {number}
 */
org.apache.flex.utils.Language._int = function(value) {
  return value >> 0;
};


/**
 * is()
 *
 * @expose
 * @param {?Object} leftOperand The lefthand operand of the
 *     binary as operator in AS3.
 * @param {!Object} rightOperand The righthand operand of the
 *     binary operator in AS3.
 * @return {boolean}
 */
org.apache.flex.utils.Language.is = function(leftOperand, rightOperand) {
  var checkInterfaces;

  checkInterfaces = function(left) {
    var i, interfaces;

    interfaces = left.FLEXJS_CLASS_INFO.interfaces;
    for (i = interfaces.length - 1; i > -1; i--) {
      if (interfaces[i] === rightOperand) {
        return true;
      }

      if (interfaces[i].prototype.FLEXJS_CLASS_INFO &&
          interfaces[i].prototype.FLEXJS_CLASS_INFO.interfaces) {
        return checkInterfaces(new interfaces[i]());
      }
    }

    return false;
  };

  if (leftOperand instanceof rightOperand) {
    return true;
  } else if (leftOperand.FLEXJS_CLASS_INFO &&
      leftOperand.FLEXJS_CLASS_INFO.interfaces) {
    return checkInterfaces(leftOperand);
  } else if (rightOperand === String && typeof leftOperand === 'string')
    return true;

  return false;
};
<commit_msg>Fixed type checking issue when using '-strict' compiler setting.<commit_after>/**
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

goog.provide('org.apache.flex.utils.Language');



/**
 * @constructor
 */
org.apache.flex.utils.Language = function() {
};


/**
 * as()
 *
 * @expose
 * @param {*} leftOperand The lefthand operand of the
 *     binary as operator in AS3.
 * @param {*} rightOperand The righthand operand of the
 *     binary operator in AS3.
 * @return {*} Returns the lefthand operand if it is
 *     of the type of the righthand operand, otherwise null.
 */
org.apache.flex.utils.Language.as = function(leftOperand, rightOperand) {
  return (org.apache.flex.utils.Language.is(leftOperand, rightOperand)) ?
      leftOperand : null;
};


/**
 * int()
 *
 * @expose
 * @param {?} value The value to be cast.
 * @return {number}
 */
org.apache.flex.utils.Language._int = function(value) {
  return value >> 0;
};


/**
 * is()
 *
 * @expose
 * @param {*} leftOperand The lefthand operand of the
 *     binary as operator in AS3.
 * @param {*} rightOperand The righthand operand of the
 *     binary operator in AS3.
 * @return {boolean}
 */
org.apache.flex.utils.Language.is = function(leftOperand, rightOperand) {
  var checkInterfaces;

  checkInterfaces = function(left) {
    var i, interfaces;

    interfaces = left.FLEXJS_CLASS_INFO.interfaces;
    for (i = interfaces.length - 1; i > -1; i--) {
      if (interfaces[i] === rightOperand) {
        return true;
      }

      if (interfaces[i].prototype.FLEXJS_CLASS_INFO &&
          interfaces[i].prototype.FLEXJS_CLASS_INFO.interfaces) {
        return checkInterfaces(new interfaces[i]());
      }
    }

    return false;
  };

  if (leftOperand instanceof /** @type {Object} */(rightOperand)) {
    return true;
  } else if (leftOperand.FLEXJS_CLASS_INFO &&
      leftOperand.FLEXJS_CLASS_INFO.interfaces) {
    return checkInterfaces(leftOperand);
  } else if (rightOperand === String && typeof leftOperand === 'string')
    return true;

  return false;
};

{'fraction_non_alphanumeric': 0.11916072842438638, 'fraction_numerical': 0.00435471100554236, 'mean_word_length': 3.289473684210526, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2139881', 'n_tokens_mistral': 1547, 'n_tokens_neox': 1544, 'n_words': 477}