Hilfe doesnt seem to like variables as an operand to &, if it comes first.
int a = 3; int b = 23; a & b;
Compiler Error: 1: Undefined identifier a. Compiler Error: 1: Undefined identifier b. Compiler Error: 1: Too few arguments to `& (got 0). Compiler Error: 1: Expected: array | mapping | multiset | object | program | string | type(mixed) | int | mixed. Compiler Error: 1: Function type: Compiler Error: 1: Got : scope(0,function((0=mixed) : 0) | function((0=program | type(mixed)) : 0) | function((0=string) : 0) | function((0=multiset) : 0) | function((0=mapping) : 0) | function((0=array) : 0) | function((0=int) : 0) | function(mixed, object, mixed ... : mixed) | function(object, mixed, mixed ... : mixed) | !function(!mapping ... : mixed) & function(array | multiset | (4=mapping) ... : 4) | !function(!(program | type(mixed)) ... : mixed) & function((1=program | type(mixed)), (2=program | type(mixed)) ... : 1 | 2) | !function(!string ... : mixed) & function((1=string), (2=string) ... : 1 | 2) | !function(!multiset ... : mixed) & function((1=multiset), (2=multiset) ... : 1 | 2) | !function(!mapping ... : mixed) & function((1=mapping), (2=mapping) ... : 1 | 2) | !function(!array ... : mixed) & function((1=array), (2=array) ... : 1 | 2) | !function(!int ... : mixed) & function((1=int), (2=int) ... : 1 | 2)).
whereas it works if the first operand is not a variable.
int a = 195; 0x80 & a;
(1) Result: 128
I tried some other operators and & seems to be the only one thats broken...
Oh, and I already have a fix for that since last year that I forgot to check in.
pike-devel@lists.lysator.liu.se