Shovel.Vm.Vm.HandleBlockReturn C# (CSharp) Метод

HandleBlockReturn() статический приватный Метод

static private HandleBlockReturn ( Vm vm ) : void
vm Vm
Результат void
        static void HandleBlockReturn(Vm vm)
        {
            var returnValue = vm.stack.PopTop ();
            var name = vm.stack.PopTop ();
            if (name.Kind != Value.Kinds.String) {
                vm.RaiseShovelError ("The name of a block must be a string.");
            }
            var namedBlockIndex = vm.FindNamedBlock (name.stringValue);
            if (vm.stack.Count > namedBlockIndex + 1) {
                vm.stack.RemoveRange (namedBlockIndex + 1, vm.stack.Count - namedBlockIndex - 1);
            }
            var namedBlock = vm.stack.Top ().NamedBlockValue;
            vm.stack.Push (returnValue);
            vm.programCounter = namedBlock.BlockEnd;
            vm.currentEnvironment = namedBlock.Environment;
        }
Vm