polserver/testsuite/escript/func/funcref02.src
Kevin Eady 3ccf701ce9
Format testsuite scripts, pol-core support modules (#713)
* Format escript testsuite

* Manual formatting for escript testsuite
- Add format-off to places where formatter does what it should, but we don't like the results
- Manually change places where formatter outputs weird things _without_ format-off, so next format-all would show changes if not fixed

* Update .err files; add update_err.py helper script

Use the format `:line:col: message` for all .err file checks. This
allows us to change the file names without needing to edit the .err
contents.

Note that `in/inc0{1,2}.err` need have error messages between POSIX and
Windows, so their messages are a bit more "generic" than the other errs.

* Format pol testsuite

* Manual formatting for pol testsuite

* Format pol-core modules

* Manual formatting for pol-core modules

* Additional format pol-core modules

Use FormatterLineWidth=10000 since module functions must be on one line
because of the parse_modules target

* Address Discord comments

- Support multi-line module function declarations in parse_modules

* Format on df07831
2024-10-04 10:29:55 +02:00

38 lines
712 B
Text

function init_animal( byref self )
self.+yell := @animal_yell;
endfunction
function animal_yell( byref self )
print( self.text.call( self ) );
endfunction
function init_cat()
var cat := struct;
init_animal( cat );
cat.+text := @cat_text;
return cat;
endfunction
function cat_text( byref self )
return "miau";
endfunction
function init_dog()
var dog := struct;
init_animal( dog );
dog.+text := @dog_text;
dog.+angry := 0;
return dog;
endfunction
function dog_text( byref self )
if ( self.angry )
return "ggggrrr";
endif
return "wuff";
endfunction
var dog := init_dog();
dog.yell.call( dog );
dog.angry := 1;
dog.yell.call( dog );
var cat := init_cat();
cat.yell.call( cat );