public override void LeaveClassDefinition(ClassDefinition node) { if (EvalAnnotation.IsMarked(node)) { My <EvaluationDomainProviderImplementor> .Instance.ImplementIEvaluationDomainProviderOn(node); } }
public override void OnMethod(Method node) { if (EvalAnnotation.IsMarked(node)) { this._currentMethod = (InternalMethod)this.GetEntity(node); IType evaluationContextType = this.DefineEvaluationContext(); Block stmt = this.PrepareEvaluationContextInitialization(evaluationContextType); this.Visit(node.Body); node.Body.Insert(0, stmt); } }
protected override void ProcessBuiltinInvocation(MethodInvocationExpression node, BuiltinFunction function) { if (function == UnityScript.TypeSystem.UnityScriptTypeSystem.UnityScriptEval) { EvalAnnotation.Mark(this.CurrentMethod); this.BindExpressionType(node, this.TypeSystemServices.ObjectType); } else if (function == UnityScript.TypeSystem.UnityScriptTypeSystem.UnityScriptTypeof) { this.ProcessTypeofBuiltin(node); } else { base.ProcessBuiltinInvocation(node, function); } }