INLINER : bug ?

Sunday, 29 December 2013 · 3 messages · last reply 30 Dec 2013
JM
jean-marc Mercier29 Dec 2013 13:09 #
Hi Everybody @Leo, there might be a bug in the BaseX INLINER (I am currently profiling your module https://github.com/LeoWoerteler/xq-modules/). To reproduce it : - use the 3 files attached. - Edit baseX config file .baseX, set the following Local options : # Local Options INLINELIMIT = 5 - launch the XQUERY file MapProfiler.xquery. With these settings, the profile function works finely. Then - Edit baseX config file .baseX, set the following Local options : # Local Options INLINELIMIT = 6 With these settings, I am raising a [XPTY0004] Single item expected error. Cheers, Jean-Marc
LW
Leo Wörteler29 Dec 2013 22:58 #
Dear Jean-Marc,
Quoted text · jean-marc Mercier · 3 lines
Am 29.12.2013 13:09, schrieb jean-marc Mercier: > @Leo, there might be a bug in the BaseX INLINER (I am currently > profiling your module https://github.com/LeoWoerteler/xq-modules/).
thanks first for looking at my code!
Quoted text · jean-marc Mercier · 1 line
> With these settings, I am raising a [XPTY0004] Single item expected error.
The behavior *with* inlining is actually the correct one. There is a type error in your code that is not reported unless some functions are inlined. You declare function parameters in your idmap module as $idmap as function() as function(*), which means that $idmap must be bound to a function item with no arguments that returns a *single* function item with arbitrary arity. The functions you bind to those parameters however actually return *two* function items, namely the two elements of a pair. A correct type would thus be $idmap as function() as function(*)+. The actual bug is that this type is not always checked if the function item is not inlined, this will be fixed soon. Hope that helps, Leo
JM
jean-marc Mercier30 Dec 2013 08:56 #
Leo, You are right, there was a type error in my code, thx a lot for pointing it out. I am recomputing the "profile" result of your code with full inlining. Cheers, Jean-Marc 2013/12/29 Leo Wörteler <lw at basex.org>
Quoted text · Leo Wörteler · 31 lines
> Dear Jean-Marc, > > Am 29.12.2013 13:09, schrieb jean-marc Mercier: > > @Leo, there might be a bug in the BaseX INLINER (I am currently >> profiling your module https://github.com/LeoWoerteler/xq-modules/). >> > > thanks first for looking at my code! > > > With these settings, I am raising a [XPTY0004] Single item expected >> error. >> > > The behavior *with* inlining is actually the correct one. There is a type > error in your code that is not reported unless some functions are inlined. > > You declare function parameters in your `idmap` module as `$idmap as > function() as function(*)`, which means that `$idmap` must be bound to a > function item with no arguments that returns a *single* function item with > arbitrary arity. The functions you bind to those parameters however > actually return *two* function items, namely the two elements of a pair. A > correct type would thus be `$idmap as function() as function(*)+`. > > The actual bug is that this type is not always checked if the function > item is not inlined, this will be fixed soon. > > Hope that helps, > Leo >

⚡Generated with XQuery