@@ -468,6 +468,14 @@ gd::String EventsCodeGenerator::GenerateActionCode(
468468 action, *this , context);
469469 }
470470
471+ // Get the correct function name depending on whether it should be async or
472+ // not.
473+ const gd::String& functionCallName =
474+ instrInfos.IsAsync () &&
475+ (!instrInfos.IsOptionallyAsync () || action.IsAwaited ())
476+ ? instrInfos.codeExtraInformation .asyncFunctionCallName
477+ : instrInfos.codeExtraInformation .functionCallName ;
478+
471479 // Be sure there is no lack of parameter.
472480 while (action.GetParameters ().size () < instrInfos.parameters .size ()) {
473481 vector<gd::Expression> parameters = action.GetParameters ();
@@ -522,6 +530,7 @@ gd::String EventsCodeGenerator::GenerateActionCode(
522530 action.GetParameters (), instrInfos.parameters , context);
523531 actionCode += GenerateObjectAction (realObjects[i],
524532 objInfo,
533+ functionCallName,
525534 arguments,
526535 instrInfos,
527536 context,
@@ -556,6 +565,7 @@ gd::String EventsCodeGenerator::GenerateActionCode(
556565 GenerateBehaviorAction (realObjects[i],
557566 action.GetParameter (1 ).GetPlainString (),
558567 autoInfo,
568+ functionCallName,
559569 arguments,
560570 instrInfos,
561571 context,
@@ -567,8 +577,11 @@ gd::String EventsCodeGenerator::GenerateActionCode(
567577 } else {
568578 vector<gd::String> arguments = GenerateParametersCodes (
569579 action.GetParameters (), instrInfos.parameters , context);
570- actionCode +=
571- GenerateFreeAction (arguments, instrInfos, context, optionalAsyncCallbackName);
580+ actionCode += GenerateFreeAction (functionCallName,
581+ arguments,
582+ instrInfos,
583+ context,
584+ optionalAsyncCallbackName);
572585 }
573586
574587 return actionCode;
@@ -678,7 +691,8 @@ gd::String EventsCodeGenerator::GenerateParameterCodes(
678691 } else if (ParameterMetadata::IsObject (metadata.type )) {
679692 // It would be possible to run a gd::ExpressionCodeGenerator if later
680693 // objects can have nested objects, or function returning objects.
681- argOutput = GenerateObject (parameter.GetPlainString (), metadata.type , context);
694+ argOutput =
695+ GenerateObject (parameter.GetPlainString (), metadata.type , context);
682696 } else if (metadata.type == " relationalOperator" ) {
683697 auto parameterString = parameter.GetPlainString ();
684698 argOutput += parameterString == " =" ? " ==" : parameterString;
@@ -716,13 +730,15 @@ gd::String EventsCodeGenerator::GenerateParameterCodes(
716730 argOutput = " \" " + ConvertToString (parameter.GetPlainString ()) + " \" " ;
717731 } else if (metadata.type == " yesorno" ) {
718732 auto parameterString = parameter.GetPlainString ();
719- argOutput += (parameterString == " yes" || parameterString == " oui" ) ? GenerateTrue ()
720- : GenerateFalse ();
733+ argOutput += (parameterString == " yes" || parameterString == " oui" )
734+ ? GenerateTrue ()
735+ : GenerateFalse ();
721736 } else if (metadata.type == " trueorfalse" ) {
722737 auto parameterString = parameter.GetPlainString ();
723738 // This is duplicated in AdvancedExtension.cpp for GDJS
724- argOutput += (parameterString == " True" || parameterString == " Vrai" ) ? GenerateTrue ()
725- : GenerateFalse ();
739+ argOutput += (parameterString == " True" || parameterString == " Vrai" )
740+ ? GenerateTrue ()
741+ : GenerateFalse ();
726742 }
727743 // Code only parameter type
728744 else if (metadata.type == " inlineCode" ) {
@@ -1082,6 +1098,7 @@ gd::String EventsCodeGenerator::GenerateBehaviorCondition(
10821098}
10831099
10841100gd::String EventsCodeGenerator::GenerateFreeAction (
1101+ const gd::String& functionCallName,
10851102 const std::vector<gd::String>& arguments,
10861103 const gd::InstructionMetadata& instrInfos,
10871104 gd::EventsCodeGenerationContext& context,
@@ -1095,21 +1112,21 @@ gd::String EventsCodeGenerator::GenerateFreeAction(
10951112 call = GenerateOperatorCall (
10961113 instrInfos,
10971114 arguments,
1098- instrInfos. codeExtraInformation . functionCallName ,
1115+ functionCallName,
10991116 instrInfos.codeExtraInformation .optionalAssociatedInstruction );
11001117 else if (instrInfos.codeExtraInformation .accessType ==
11011118 gd::InstructionMetadata::ExtraInformation::Mutators)
11021119 call =
11031120 GenerateMutatorCall (instrInfos,
11041121 arguments,
1105- instrInfos. codeExtraInformation . functionCallName );
1122+ functionCallName);
11061123 else
11071124 call = GenerateCompoundOperatorCall (
11081125 instrInfos,
11091126 arguments,
1110- instrInfos. codeExtraInformation . functionCallName );
1127+ functionCallName);
11111128 } else {
1112- call = instrInfos. codeExtraInformation . functionCallName + " (" +
1129+ call = functionCallName + " (" +
11131130 GenerateArgumentsList (arguments) + " )" ;
11141131 }
11151132
@@ -1123,6 +1140,7 @@ gd::String EventsCodeGenerator::GenerateFreeAction(
11231140gd::String EventsCodeGenerator::GenerateObjectAction (
11241141 const gd::String& objectName,
11251142 const gd::ObjectMetadata& objInfo,
1143+ const gd::String& functionCallName,
11261144 const std::vector<gd::String>& arguments,
11271145 const gd::InstructionMetadata& instrInfos,
11281146 gd::EventsCodeGenerationContext& context,
@@ -1136,27 +1154,25 @@ gd::String EventsCodeGenerator::GenerateObjectAction(
11361154 call = GenerateOperatorCall (
11371155 instrInfos,
11381156 arguments,
1139- instrInfos. codeExtraInformation . functionCallName ,
1157+ functionCallName,
11401158 instrInfos.codeExtraInformation .optionalAssociatedInstruction ,
11411159 2 );
11421160 else
11431161 call = GenerateCompoundOperatorCall (
1144- instrInfos,
1145- arguments,
1146- instrInfos.codeExtraInformation .functionCallName ,
1147- 2 );
1162+ instrInfos, arguments, functionCallName, 2 );
11481163
11491164 return " For each picked object \" " + objectName + " \" , call " + call +
11501165 " .\n " ;
11511166 } else {
11521167 gd::String argumentsStr = GenerateArgumentsList (arguments, 1 );
11531168
1154- call = instrInfos.codeExtraInformation .functionCallName + " (" +
1155- argumentsStr + " )" ;
1169+ call = functionCallName + " (" + argumentsStr + " )" ;
11561170
11571171 return " For each picked object \" " + objectName + " \" , call " + call + " (" +
11581172 argumentsStr + " )" +
1159- (optionalAsyncCallbackName.empty () ? " " : (" , then call" + optionalAsyncCallbackName)) +
1173+ (optionalAsyncCallbackName.empty ()
1174+ ? " "
1175+ : (" , then call" + optionalAsyncCallbackName)) +
11601176 " .\n " ;
11611177 }
11621178}
@@ -1165,6 +1181,7 @@ gd::String EventsCodeGenerator::GenerateBehaviorAction(
11651181 const gd::String& objectName,
11661182 const gd::String& behaviorName,
11671183 const gd::BehaviorMetadata& autoInfo,
1184+ const gd::String& functionCallName,
11681185 const std::vector<gd::String>& arguments,
11691186 const gd::InstructionMetadata& instrInfos,
11701187 gd::EventsCodeGenerationContext& context,
@@ -1178,26 +1195,28 @@ gd::String EventsCodeGenerator::GenerateBehaviorAction(
11781195 call = GenerateOperatorCall (
11791196 instrInfos,
11801197 arguments,
1181- instrInfos. codeExtraInformation . functionCallName ,
1198+ functionCallName,
11821199 instrInfos.codeExtraInformation .optionalAssociatedInstruction ,
11831200 2 );
11841201 else
11851202 call = GenerateCompoundOperatorCall (
11861203 instrInfos,
11871204 arguments,
1188- instrInfos. codeExtraInformation . functionCallName ,
1205+ functionCallName,
11891206 2 );
11901207 return " For each picked object \" " + objectName + " \" , call " + call +
11911208 " for behavior \" " + behaviorName + " \" .\n " ;
11921209 } else {
11931210 gd::String argumentsStr = GenerateArgumentsList (arguments, 2 );
11941211
1195- call = instrInfos. codeExtraInformation . functionCallName + " (" +
1212+ call = functionCallName + " (" +
11961213 argumentsStr + " )" ;
11971214
11981215 return " For each picked object \" " + objectName + " \" , call " + call + " (" +
11991216 argumentsStr + " )" + " for behavior \" " + behaviorName + " \" " +
1200- (optionalAsyncCallbackName.empty () ? " " : (" , then call" + optionalAsyncCallbackName)) +
1217+ (optionalAsyncCallbackName.empty ()
1218+ ? " "
1219+ : (" , then call" + optionalAsyncCallbackName)) +
12011220 " .\n " ;
12021221 }
12031222}
0 commit comments