if ( var_binding != null && var_binding.isLocal() )
{
// Add initializer code to the init instructions.
InstructionList init_insns = currentScope.getHoistedInitInstructions();
ICompilerProject project = currentScope.getProject();
IDefinition type_def = var_type.getDefinition();
if (
type_def == project.getBuiltinType(BuiltinType.INT) ||
type_def == project.getBuiltinType(BuiltinType.UINT)
)
{
init_insns.addInstruction(OP_pushbyte, 0);
init_insns.addInstruction(var_binding.setlocal());
}
else if ( type_def == project.getBuiltinType(BuiltinType.BOOLEAN) )
{
init_insns.addInstruction(OP_pushfalse);
init_insns.addInstruction(var_binding.setlocal());
}
else if ( type_def == project.getBuiltinType(BuiltinType.NUMBER) )
{
init_insns.addInstruction(OP_pushnan);
init_insns.addInstruction(var_binding.setlocal());
}
else if ( type_def == project.getBuiltinType(BuiltinType.ANY_TYPE) )
{
init_insns.addInstruction(OP_pushundefined);
init_insns.addInstruction(var_binding.setlocal());
}
else if (
type_def instanceof ITypeDefinition &&
((ITypeDefinition)type_def).isInstanceOf((ITypeDefinition)project.getBuiltinType(BuiltinType.OBJECT), project)
)
{
init_insns.addInstruction(OP_pushnull);
init_insns.addInstruction(var_binding.setlocal());
}