Ejemplo n.º 1
0
        // evaluate an open expression returning a typed value
        // rename -- do it here
        // aggregate -- not safe to eval, so just return typed default
        public TypedValue EvalOpen(ILookupValue lookup)
        {
            if (IsValue)
            {
                return(Value);
            }
            if (HasFold)
            {
                return(ReturnType.DefaultValue());
            }
            TypedValue ret;

            if (IsRename || IsProject)
            {
                ret = Evaluator.Lookup(OldName, lookup);
            }
            else
            {
                Logger.Assert(IsOpen || HasWin || lookup == null, Name);
                Logger.Assert(Evaluator != null, "evaluator null");
                ret = Evaluator.Exec(Code, lookup);
            }
            CheckReturnType(ret);
            return(ret);
        }