Pliant talk forum

Pliant talk forum

Discussion: cast and maybe

There seems to be a bug in a check at debugging level 2
Message posted by maybe pom on 2002/05/15 09:35:07
Consider the following code:

#-----------------------------------
module "/pliant/language/compiler.pli"

type Toto
  field Int value

type Titi
  field Int value

Toto maybe Titi
  
function 'cast Int' x -> i
  arg Toto x; arg_C Int i
  implicit
  i :> x value

gvar Titi z
gvar Int p := z

#----------------------

It works well at debugging level 1, but at level 2 it complains as follows:

pliant internal bug: unsatisfied assertion
assertion is e->result->type==f->arguments[0].type
in file /pliant/pliant/language/compiler/expression/expression.c at line 409

Actually, we cast a Titi to an Int using a function having a Toto as its
argument (because of the maybe, we should be able to do it).
We have no possibility of adding a direct cast from Titi to Int, because
both cast from Toto and Titi to Int would be seen as equally good, and the cast
won't compile.