diff --git a/lib/Runtime/ByteCode/ByteCodeEmitter.cpp b/lib/Runtime/ByteCode/ByteCodeEmitter.cpp index 42f2edee1dd..d52e1962769 100644 --- a/lib/Runtime/ByteCode/ByteCodeEmitter.cpp +++ b/lib/Runtime/ByteCode/ByteCodeEmitter.cpp @@ -3351,8 +3351,10 @@ void ByteCodeGenerator::EmitOneFunction(ParseNode *pnode) DefineLabels(funcInfo); - if (pnode->sxFnc.HasNonSimpleParameterList()) + if (pnode->sxFnc.HasNonSimpleParameterList() || !funcInfo->IsBodyAndParamScopeMerged()) { + Assert(pnode->sxFnc.HasNonSimpleParameterList() || CONFIG_FLAG(ForceSplitScope)); + this->InitBlockScopedNonTemps(funcInfo->root->sxFnc.pnodeScopes, funcInfo); EmitDefaultArgs(funcInfo, pnode); @@ -3395,8 +3397,9 @@ void ByteCodeGenerator::EmitOneFunction(ParseNode *pnode) DefineUserVars(funcInfo); - if (pnode->sxFnc.HasNonSimpleParameterList()) + if (pnode->sxFnc.HasNonSimpleParameterList() || !funcInfo->IsBodyAndParamScopeMerged()) { + Assert(pnode->sxFnc.HasNonSimpleParameterList() || CONFIG_FLAG(ForceSplitScope)); this->InitBlockScopedNonTemps(funcInfo->root->sxFnc.pnodeBodyScope, funcInfo); } else