for-each issue on child-elements

Saturday, 14 August 2021 · 2 messages
RS
Rob Stapper14 Aug 2021 10:37 #
Hi Christian, I encountered this erroneous behavior while using the for-each-function on a set with child-elements. The evident work-around [2] workd fine. I’m using BaseX 9.6 RC2. I attached the code as attachment. Hope this helps. [1] let $context := <A><B1><C11></C11><C12></C12></B1><B2><C21></C21></B2></A>
let       $context.processor :=
function( $context           as element( )
        , $context.processor as function(*)
        )                    as map(*)
        { map { $context => name() : $context/child::*
                                     => for-each( $context.processor( ?
                                                                    , $context.processor
                                                                    )
                                                )
              }
        }
return    $context
          => $context.processor( $context.processor
                               )
[2]
let       $context := <A><B1><C11></C11><C12></C12></B1><B2><C21></C21></B2></A>

let       $context.processor :=
function( $context           as element( )
        , $context.processor as function(*)
        )                    as map(*)
        { map { $context => name() : $context/child::*
                                     => for-each( function( $child as element( )
                                                          )
                                                          { $child
                                                            => $context.processor( $context.processor
                                                                                 )
                                                          }
                                                )
              }
        }
return    $context
          => $context.processor( $context.processor
                               )
Rob Sent from Mail for Windows
-- This email has been checked for viruses by Avast antivirus software. https://www.avast.com/antivirus
CG
Christian Grün14 Aug 2021 12:51 #
Hi Rob, I’ve created an issue to track this down [1]. And I remember you have posted a similar bug in the past [2]… The challenge was/is to find out at compile time if a function is being inlined that has already been inlined. Another workaround: $context/child::* ! $context.processor(., $context.processor) Cheers, Christian [1] https://github.com/BaseXdb/basex/issues/2033 [2] https://github.com/BaseXdb/basex/issues/879
Quoted text · Rob Stapper · 115 lines
On Sat, Aug 14, 2021 at 10:37 AM Rob Stapper <r.stapper at lijbrandt.nl> wrote: > Hi Christian, > > > > I encountered this erroneous behavior while using the for-each-function on > a set with child-elements. > > The evident work-around [2] workd fine. > > I’m using BaseX 9.6 RC2. > > I attached the code as attachment. > > Hope this helps. > > > > [1] > > let $context := > <A><B1><C11></C11><C12></C12></B1><B2><C21></C21></B2></A> > > > > let $context.processor := > > function( $context as element( ) > > , $context.processor as function(*) > > ) as map(*) > > { map { $context => name() : $context/child::* > > => for-each( $context.processor( ? > > , > $context.processor > > ) > > ) > > } > > } > > return $context > > => $context.processor( $context.processor > > ) > > [2] > > let $context := > <A><B1><C11></C11><C12></C12></B1><B2><C21></C21></B2></A> > > > > let $context.processor := > > function( $context as element( ) > > , $context.processor as function(*) > > ) as map(*) > > { map { $context => name() : $context/child::* > > => for-each( function( $child as > element( ) > > ) > > { $child > > => > $context.processor( $context.processor > > > ) > > } > > ) > > } > > } > > return $context > > => $context.processor( $context.processor > > ) > > > > Rob > > > > Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for > Windows > > > > > <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient&utm_term=icon> Virus-free. > www.avast.com > <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient&utm_term=link> > <#m_3245395734233364133_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2> >

⚡Generated with XQuery