Ejemplo n.º 1
0
Variant VariableExpression::set(VariableEnvironment &env, CVarRef val) const {
    Variant &lhs = lval(env);
    if (RuntimeOption::EnableStrict) {
        if (!checkCompatibleAssignment(lhs, val)) {
            throw_strict(TypeVariableChangeException(location_to_string(loc())),
                         StrictMode::StrictHardCore);
        }
    }
    return lhs = val;
}
Ejemplo n.º 2
0
Variant VariableExpression::setOp(VariableEnvironment &env, int op, CVarRef rhs)
  const {
  Variant &lhs = lval(env);
  if (RuntimeOption::EnableStrict) {
    if (!checkCompatibleAssignment(lhs, rhs)) {
      throw_strict(TypeVariableChangeException(this->loc()->toString()),
                   StrictMode::StrictHardCore);
    }
  }
  return LvalExpression::setOpVariant(lhs, op, rhs);
}
Ejemplo n.º 3
0
Variant IncOpExpression::evalUncommon(
  LvalExpression *lval, Variant &left, CVarRef right,
  bool inc, const Location &self, const Location *other) {
  if (RuntimeOption::EnableStrict) {
    if (!VariableExpression::CheckCompatibleAssignment(left, right)) {
      // inline SET_LINE
      if (!set_line(self.line0, self.char0, self.line1, self.char1)) {
        return Variant::lvalBlackHole();
      }
      throw_strict(TypeVariableChangeException(
                   location_to_string(other)),
                   StrictMode::StrictHardCore);
    }
  }
  // inline SET_LINE
  if (!set_line(self.line0, self.char0, self.line1, self.char1)) {
    return Variant::lvalBlackHole();
  }
  return lval->setOpVariant(left, inc ? (int)T_INC : (int)T_DEC, right);
}