diff options
author | mattias <mattias@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2021-04-24 12:04:37 +0000 |
---|---|---|
committer | mattias <mattias@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2021-04-24 12:04:37 +0000 |
commit | 1c1eaf2aa2edfc36da8bdc4587beecfd948e1905 (patch) | |
tree | cd0c9fa6462971d3bd3781981aac17edc6fcebaf | |
parent | e02562634b4376b387998d873d2dbcfc0da593fc (diff) | |
download | fpc-1c1eaf2aa2edfc36da8bdc4587beecfd948e1905.tar.gz |
pastojs: rtti of async function: pfAsync
git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@49255 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r-- | packages/pastojs/src/fppas2js.pp | 7 | ||||
-rw-r--r-- | packages/pastojs/tests/tcmodules.pas | 27 |
2 files changed, 22 insertions, 12 deletions
diff --git a/packages/pastojs/src/fppas2js.pp b/packages/pastojs/src/fppas2js.pp index 2054885b0d..0a6deca3df 100644 --- a/packages/pastojs/src/fppas2js.pp +++ b/packages/pastojs/src/fppas2js.pp @@ -2314,6 +2314,7 @@ type pfVarargs = 2; pfExternal = 4; pfSafeCall = 8; + pfAsync = $10; // PropertyFlag pfGetFunction = 1; // getter is a function pfSetProcedure = 2; // setter is a function @@ -16565,10 +16566,12 @@ begin if ResultTypeInfo<>nil then InnerCall.AddArg(ResultTypeInfo); end; - // add param flags + // add procedure flags Flags:=0; if ptmVarargs in El.Modifiers then inc(Flags,pfVarargs); + if ptmAsync in El.Modifiers then + inc(Flags,pfAsync); if El.CallingConvention=ccSafeCall then inc(Flags,pfSafeCall); if Flags>0 then @@ -20237,6 +20240,8 @@ begin inc(Flags,pfStatic); if ptmVarargs in Proc.ProcType.Modifiers then inc(Flags,pfVarargs); + if ptmAsync in Proc.ProcType.Modifiers then + inc(Flags,pfAsync); if Proc.IsExternal then inc(Flags,pfExternal); if Flags>0 then diff --git a/packages/pastojs/tests/tcmodules.pas b/packages/pastojs/tests/tcmodules.pas index d3f5908660..faadb69ff5 100644 --- a/packages/pastojs/tests/tcmodules.pas +++ b/packages/pastojs/tests/tcmodules.pas @@ -29738,17 +29738,19 @@ procedure TTestModule.TestRTTI_Class_Method; begin WithTypeInfo:=true; StartProgram(false); - Add('type'); - Add(' TObject = class'); - Add(' private'); - Add(' procedure Internal; external name ''$intern'';'); - Add(' published'); - Add(' procedure Click; virtual; abstract;'); - Add(' procedure Notify(Sender: TObject); virtual; abstract;'); - Add(' function GetNotify: boolean; external name ''GetNotify'';'); - Add(' procedure Println(a,b: longint); varargs; virtual; abstract;'); - Add(' end;'); - Add('begin'); + Add([ + 'type', + ' TObject = class', + ' private', + ' procedure Internal; external name ''$intern'';', + ' published', + ' procedure Click; virtual; abstract;', + ' procedure Notify(Sender: TObject); virtual; abstract;', + ' function GetNotify: boolean; external name ''GetNotify'';', + ' procedure Println(a,b: longint); varargs; virtual; abstract;', + ' function Fetch(URL: string): word; async; external name ''Fetch'';', + ' end;', + 'begin']); ConvertProgram; CheckSource('TestRTTI_Class_Method', LinesToStr([ // statements @@ -29764,6 +29766,9 @@ begin ' $r.addMethod("Println", 0, [["a", rtl.longint], ["b", rtl.longint]], null, {', ' flags: 2', ' });', + ' $r.addMethod("Fetch", 1, [["URL", rtl.string]], rtl.word, {', + ' flags: 20', + ' });', '});', '']), LinesToStr([ // $mod.$main |