svoid test_tok_eventFunctions() { // no args testTranspilationFunction tok_eventFunctions( "event blubb;", [[ transient L onBlubb; selfType onBlubb(Runnable r) { onBlubb = syncAddOrCreate(onBlubb, r); this; } selfType removeBlubbListener(Runnable r) { main remove(onBlubb, r); this; } void blubb() { pcallFAll(onBlubb); } ]]); // with args testTranspilationFunction tok_eventFunctions( "event newX(X x);", [[ transient L> onNewX; selfType onNewX(IVF1 f) { onNewX = syncAddOrCreate(onNewX, f); this; } selfType removeNewXListener(IVF1 f) { main remove(onNewX, f); this; } void newX(X x) { pcallFAll(onNewX, x); } ]]); // "on" prefix handled correctly testTranspilationFunction tok_eventFunctions( "event onBlubb;", [[ transient L onBlubb; selfType onBlubb(Runnable r) { onBlubb = syncAddOrCreate(onBlubb, r); this; } void blubb() { pcallFAll(onBlubb); } ]]); // "fire" prefix handled correctly testTranspilationFunction tok_eventFunctions( "event fireBlubb;", [[ transient L onBlubb; selfType onBlubb(Runnable r) { onBlubb = syncAddOrCreate(onBlubb, r); this; } selfType removeBlubbListener(Runnable r) { main remove(onBlubb, r); this; } void fireBlubb() { pcallFAll(onBlubb); } ]]); // firing functions can now have a body testTranspilationFunction tok_eventFunctions( "event newX(X x) { bla; }", [[ transient L> onNewX; selfType onNewX(IVF1 f) { onNewX = syncAddOrCreate(onNewX, f); this; } selfType removeNewXListener(IVF1 f) { main remove(onNewX, f); this; } void newX(X x) { bla; pcallFAll(onNewX, x); } ]]); }