Как можно в макросе Haxe поменять ключевое слово function на async function

237
04 января 2022, 21:10

У меня есть простой класс написаный на хаксе:

@:expose
class Main implements IAsync {    
    static function main() {
        trace("test");
    }       
    static function testAwait() {
        return 1;
    }
}

И при конвертации в JavaScript он в числе прочего выгоняет метод:

. . .
Main.testAwait = function() {
    return Main.test();
};
. . .

Мне нужно чтобы макрос менял function на async function и выгонял что то типа:

 . . .
Main.testAwait = async function() {
    return Main.test();
};
. . .

Но мне не совсем очевидно как это сделать, если смотреть на стандартные примеры то обычно то содание нового метода будет выглядеть примерно так:

package haxe_test;
import haxe.macro.Expr;
import haxe.macro.Context;   
using haxe.macro.Tools;
using haxe_test.AsyncBuilder;
class BuildHub {
    macro static public function build():Array<Field> {
        var fields = Context.getBuildFields();
        var testFunc:Function = {
            expr: macro return $v{1},
            ret: null,
            params: [],
            args: []
        };
    fields.push({
        name:  "testAwait",
        access:  [Access.AStatic],
        kind: FieldType.FFun(testFunc),
        pos: Context.currentPos(),
    });
    return fields;  
}

Но как поменять какоето ключевое слово в рамках какогото таргета например JavaScript для нужных мне методов(возможно есть какието опции компилятора или JSGenApi может как то помочь)?

READ ALSO
e.target.files - что такое files

e.target.files - что такое files

При работе с изображением используется такой код

161
Получить имя пользователя компьютера

Получить имя пользователя компьютера

Возможно ли средствами PHP а может вдруг JS получить имя пользователя компьютера? Не имя компьютера, а и именно имя пользователя который активен...

203
Go Template - Передача переменной javascript

Go Template - Передача переменной javascript

Как передать переменную javascript в роле аргумента для метода в go?

207