After the static linkage stuff I just submitted I ran into two bugs.

The following tests failed:
  test/regress/drt/main1.flx
  test/regress/rt/polyarray_02.flx

So the drt test = Dynamic Linkage test fails, no surprise there.
But the polyadic array test?

Nothing changed there (if it did utter paranoia because there would
be no way to find an accidental file modification). This test passed
numerous times before.. (HINT! HINT!)

Here we go:

~/felix>build/release/bin/flx --test=build/release test/regress/rt/polyarray_02
ijk=2037149563
1
2
169762463
Assertion Failure
Felix location: /Users/johnskaller/felix/test/regress/rt/polyarray_02.flx 
22[1]-22[20]
C++ location  : 
/Users/johnskaller/.felix/cache/text/Users/johnskaller/felix/test/regress/rt/polyarray_02.cpp
 59

Now the Felix code is saying this:

//////////
var i : 3 = case 1 of 3;
var j : 4 = case 2 of 4;
var k : 5 = case 3 of 5;
var ijk : 3 * 4 * 5 = i,j,k; 

println$ "ijk=" + str ijk;
println$ ijk . 0 .str;
println$ ijk . 1 .str;
println$ ijk . 2 .str;

assert ijk . 0 == i;
assert ijk . 1 == j;
assert ijk . 2 == k;

So here's the C++ code:

///////////////
      PTF i = 1; //assign
      PTF j = 2; //assign
      PTF k = 3; //assign
      PTF ijk = (PTF ijk/3*3+PTF i)*1+PTF ijk%1; //assign to packed tuple
      PTF ijk = (PTF ijk/12*4+PTF j)*3+PTF ijk%3; //assign to packed tuple
      PTF ijk = (PTF ijk/60*5+PTF k)*12+PTF ijk%12; //assign to packed tuple
      {
      _a9929t_47525 _tmp47551 = ::std::string("ijk=") + 
::flx::rtl::strutil::str<int>(reinterpret<int>(PTF ijk))  + ::std::string("\n") 
;
      ::flx::rtl::ioutil::write((&::std::cout),_tmp47551);
      }
      {
      _a9929t_47525 _tmp47552 = 
::flx::rtl::strutil::str<int>(reinterpret<int>(PTF ijk%3)) + 
::std::string("\n") ;
      ::flx::rtl::ioutil::write((&::std::cout),_tmp47552);
      }
      {
      _a9929t_47525 _tmp47553 = 
::flx::rtl::strutil::str<int>(reinterpret<int>(PTF ijk/3%4)) + 
::std::string("\n") ;
      ::flx::rtl::ioutil::write((&::std::cout),_tmp47553);
      }
      {
      _a9929t_47525 _tmp47554 = 
::flx::rtl::strutil::str<int>(reinterpret<int>(PTF ijk/12)) + 
::std::string("\n") ;
      ::flx::rtl::ioutil::write((&::std::cout),_tmp47554);
      }
      {if(FLX_UNLIKELY(!((PTF ijk%3 == PTF i))))
        
FLX_ASSERT_FAILURE("/Users/johnskaller/felix/build/release/test/regress/rt/polyarray_02.flx",20,1,20,20);}
      {if(FLX_UNLIKELY(!((PTF ijk/3%4 == PTF j))))
        
FLX_ASSERT_FAILURE("/Users/johnskaller/felix/build/release/test/regress/rt/polyarray_02.flx",21,1,21,20);}
      {if(FLX_UNLIKELY(!((PTF ijk/12 == PTF k))))
        
FLX_ASSERT_FAILURE("/Users/johnskaller/felix/build/release/test/regress/rt/polyarray_02.flx",22,1,22,20);}
/////////////

Can you see the problem?

There are TWO ways to look at this problem, and two
solutions to the bug. I wonder which one I should use?


--
john skaller
skal...@users.sourceforge.net
http://felix-lang.org




------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to