gwtOnLoadParams.add(new JsParameter(sourceInfo, softPermutationId));
// if (previousGwtOnLoad) {
// previousGwtOnLoad();
// }
JsIf previousGwtOnLoadIf = new JsIf(sourceInfo);
gwtOnLoadFunctionBody.getStatements().add(previousGwtOnLoadIf);
previousGwtOnLoadIf.setIfExpr(previousGwtOnLoadName.makeRef(sourceInfo));
JsInvocation previousGwtOnLoadCall = new JsInvocation(sourceInfo);
previousGwtOnLoadCall.setQualifier(previousGwtOnLoadName.makeRef(sourceInfo));
List<JsExpression> previousGwtOnLoadCallArguments = previousGwtOnLoadCall.getArguments();
previousGwtOnLoadCallArguments.add(errFn.makeRef(sourceInfo));
previousGwtOnLoadCallArguments.add(modName.makeRef(sourceInfo));
previousGwtOnLoadCallArguments.add(modBase.makeRef(sourceInfo));
previousGwtOnLoadCallArguments.add(softPermutationId.makeRef(sourceInfo));
previousGwtOnLoadIf.setThenStmt(previousGwtOnLoadCall.makeStmt());
// $moduleName = modName;
JsExpression moduleNameAssignment =
createAssignment(topScope.findExistingUnobfuscatableName("$moduleName").makeRef(
sourceInfo), modName.makeRef(sourceInfo));
gwtOnLoadFunctionBody.getStatements().add(moduleNameAssignment.makeStmt());
// $moduleBase = modBase;
JsExpression moduleBaseAssignment =
createAssignment(topScope.findExistingUnobfuscatableName("$moduleBase").makeRef(
sourceInfo), modBase.makeRef(sourceInfo));
gwtOnLoadFunctionBody.getStatements().add(moduleBaseAssignment.makeStmt());
// Assignment to CollapsedPropertyHolder.permutationId only if it's used
// CollapsedPropertyHolder.permutationId = softPermutationId;
JsName permutationIdFieldName =
names.get(program.getIndexedField("CollapsedPropertyHolder.permutationId"));
if (permutationIdFieldName != null) {
JsExpression permutationIdAssignment =
createAssignment(permutationIdFieldName.makeRef(sourceInfo), softPermutationId
.makeRef(sourceInfo));
gwtOnLoadFunctionBody.getStatements().add(permutationIdAssignment.makeStmt());
}
// if (errFn) {
// try {
// $entry(init)();
// } catch(e) {
// errFn(modName);
// }
// } else {
// $entry(init)();
// }
JsIf jsIf = new JsIf(sourceInfo);
gwtOnLoadFunctionBody.getStatements().add(jsIf);
jsIf.setIfExpr(errFn.makeRef(sourceInfo));
JsTry jsTry = new JsTry(sourceInfo);
jsIf.setThenStmt(jsTry);
JsBlock callBlock = new JsBlock(sourceInfo);
jsIf.setElseStmt(callBlock);
jsTry.setTryBlock(callBlock);
for (JsFunction func : entryFuncs) {
if (func == registerEntryFunction) {
continue;
} else if (func != null) {