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