private static IAnalysisSet EvaluateLambda(ExpressionEvaluator ee, Node node)
        {
            var lambda = (LambdaExpression)node;

            return(ee.Scope.GetOrMakeNodeValue(node, NodeValueKind.LambdaFunction, n => MakeLambdaFunction(lambda, ee)));
        }
        private static IAnalysisSet EvaluateUnary(ExpressionEvaluator ee, Node node)
        {
            var n = (UnaryExpression)node;

            return(ee.Evaluate(n.Expression).UnaryOperation(node, ee._unit, n.Op));;
        }
        private static IAnalysisSet EvaluateBinary(ExpressionEvaluator ee, Node node)
        {
            var n = (BinaryExpression)node;

            return(ee.Evaluate(n.Left).BinaryOperation(node, ee._unit, n.Operator, ee.Evaluate(n.Right)));
        }
        private static IAnalysisSet EvaluateAwait(ExpressionEvaluator ee, Node node)
        {
            var n = (AwaitExpression)node;

            return(ee.Evaluate(n.Expression).Await(node, ee._unit));
        }
 private static IAnalysisSet EvaluateBackQuote(ExpressionEvaluator ee, Node node)
 {
     return(ee.ProjectState.ClassInfos[BuiltinTypeId.Str].SelfSet);
 }
        private static IAnalysisSet EvaluateIndex(ExpressionEvaluator ee, Node node)
        {
            var n = (IndexExpression)node;

            return(ee.Evaluate(n.Target).GetIndex(n, ee._unit, ee.Evaluate(n.Index)));
        }
        private static IAnalysisSet EvaluateParenthesis(ExpressionEvaluator ee, Node node)
        {
            var n = (ParenthesisExpression)node;

            return(ee.Evaluate(n.Expression));
        }
 public void SetCurrentUnit(AnalysisUnit unit)
 {
     _eval = new ExpressionEvaluator(unit);
     _unit = unit;
 }