public void Ref_CanReturn_DynamicValue() { var dummyGameObject = new GameObject(); var refInstance = new RefAlias(); refInstance.useConstant = false; refInstance.var = dummyGameObject; var returnedValue = refInstance.Value; Assert.AreEqual(dummyGameObject, returnedValue); }
public void Execute() { var disassembler = new Backend.Transformations.Disassembler(host, methodDefinition, sourceLocationProvider); var methodBody = disassembler.Execute(); MethodBody = methodBody; var cfAnalysis = new ControlFlowAnalysis(methodBody); ControlFlowGraph = cfAnalysis.GenerateExceptionalControlFlow(); var splitter = new WebAnalysis(ControlFlowGraph, methodBody.MethodDefinition); splitter.Analyze(); splitter.Transform(); methodBody.UpdateVariables(); var typeAnalysis = new TypeInferenceAnalysis(ControlFlowGraph, methodBody.MethodDefinition.Type); typeAnalysis.Analyze(); //var forwardCopyAnalysis = new ForwardCopyPropagationAnalysis(Traverser.CFG); //forwardCopyAnalysis.Analyze(); //forwardCopyAnalysis.Transform(methodBody); //var backwardCopyAnalysis = new BackwardCopyPropagationAnalysis(Traverser.CFG); //backwardCopyAnalysis.Analyze(); //backwardCopyAnalysis.Transform(methodBody); // TinyBCT transformations var fieldInitialization = new FieldInitialization(methodBody); fieldInitialization.Transform(); if (!Settings.AddressesEnabled()) { var refAlias = new RefAlias(methodBody); refAlias.Transform(); } // execute this after RefAlias! var immutableArguments = new ImmutableArguments(methodBody); immutableArguments.Transform(); methodBody.RemoveUnusedLabels(); }
public void Ref_CanReturn_ConstantValue() { var dummyGameObject = new GameObject(); var varInstance = ScriptableObject.CreateInstance <VarAlias>(); varInstance.value = dummyGameObject; var refInstance = new RefAlias(); refInstance.useConstant = true; refInstance.constantValue = varInstance; var returnedValue = refInstance.Value; Assert.AreEqual(dummyGameObject, returnedValue); }