[spip-dev] résultats faux produits par les filtres |oui et |non

suite à une remarque de Fil sur irc,
je relève le comportement étrange suivant :

test 1
   #VAL{0} -> 0
   [(#VAL{0}|oui) oui] ->
   [(#VAL{0}|non) non] -> non

test 2
   #VAL{'0'} -> 0
   [(#VAL{'0'}|oui) oui] ->
   [(#VAL{'0'}|non) non] -> non

test 3
   #VAL{00} -> 00
   [(#VAL{00}|oui) oui] -> oui
   [(#VAL{00}|non) non] ->

test 4
   #VAL{a} -> a
   [(#VAL{a}|oui) oui] -> oui
   [(#VAL{a}|non) non] ->

test 5
   #VAL ->
   [(#VAL|oui) oui] ->
   [(#VAL|non) non] -> non

la question porte évidemment sur les tests 1 et 2
#VAL, étant bien définie, devrait en toute logique
retourner le même résultat que le test 3.

compilation produite :

test 1
test 2
   ($t1 = strval((('0') ? ' ' : ''))) !== '' ? ($t1 . ' oui') : ''
   ($t1 = strval((('0') ? '' : ' '))) !== '' ? ($t1 . ' non') : ''

test 3
   ($t1 = strval((('00') ? ' ' : ''))) !== '' ?($t1 . ' oui') : ''
   ($t1 = strval((('00') ? '' : ' '))) !== '' ?($t1 . ' non') : ''

ça se passe dans ecrire/public/references.php ligne 442
(le strval() étant produit par ecrire/public/compiler.php ligne 710)