Patch title: Release 85 bulk changes
Abstract:
File: /pliant/language/debug/check.pli
Key:
    Removed line
    Added line
# Copyright  Hubert Tonneau  hubert.tonneau@pliant.cx
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 2
# as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# version 2 along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

scope "/pliant/language/" "/pliant/install/"
module "/pliant/install/ring2.pli"


function 'pliant check' cond id msg
  arg CBool cond ; arg ErrorID id ; arg Str msg
  has_no_side_effect
  if not cond
    error id msg
  
meta check e
  if e:size<1 or e:size>3 or not (e:0 cast CBool)
    return
  if e:size>=3 and not (e:1 cast ErrorID)
    return
  if e:size>=2 and not (e:(e:size-1) cast Str)
    return
  if pliant_debugging_level_variable>=2
    e suckup e:0
    var Link:Argument id
    if e:size>=3
      e suckup e:1
      id :> e:1 result
    else
      id :> argument constant ErrorID error_id_check
    var Link:Argument msg
    if e:size>=2
      e suckup e:(e:size-1)
      msg :> e:(e:size-1) result
    else
      msg :> argument constant Str "seems to be a bug at "+e:position
    e add (instruction (the_function 'pliant check' CBool ErrorID Str) e:0:result id msg)
  e set_void_result


alias check check in "/pliant/language/basic/safe.pli"