public override bool Walk(AssertStatement node) { TryPushIsInstanceScope(node, node.Test); _eval.EvaluateMaybeNull(node.Test); _eval.EvaluateMaybeNull(node.Message); return(false); }
internal static void WalkComprehension(ExpressionEvaluator ee, Comprehension comp, int start = 1) { foreach (var compFor in comp.Iterators.Skip(start).OfType <ComprehensionFor>()) { var listTypes = ee.Evaluate(compFor.List); ee.AssignTo(comp, compFor.Left, listTypes.GetEnumeratorTypes(comp, ee._unit)); } foreach (var compIf in comp.Iterators.OfType <ComprehensionIf>()) { ee.EvaluateMaybeNull(compIf.Test); } }
private static IAnalysisSet EvaluateDictionary(ExpressionEvaluator ee, Node node) { var n = (DictionaryExpression)node; IAnalysisSet result = ee.Scope.GetOrMakeNodeValue(node, NodeValueKind.DictLiteral, _ => { var dictInfo = new DictionaryInfo(ee._unit.ProjectEntry, node); result = dictInfo.SelfSet; var keys = new HashSet <AnalysisValue>(); var values = new HashSet <AnalysisValue>(); foreach (var x in n.Items) { dictInfo.SetIndex( node, ee._unit, ee.EvaluateMaybeNull(x.SliceStart) ?? AnalysisSet.Empty, ee.EvaluateMaybeNull(x.SliceStop) ?? AnalysisSet.Empty ); } return(result); }); return(result); }