public override bool IsOfType(IAnalysisSet classes) { if (classes.Contains(ClassInfo)) { return(true); } if (TypeId != BuiltinTypeId.NoneType && TypeId != BuiltinTypeId.Type && TypeId != BuiltinTypeId.Function) { return(classes.Contains(ProjectState.ClassInfos[BuiltinTypeId.Object])); } return(false); }
internal override bool IsOfType(IAnalysisSet klass) { if (klass.Contains(this.ClassInfo)) { return(true); } if (TypeId != BuiltinTypeId.NoneType && TypeId != BuiltinTypeId.Type && TypeId != BuiltinTypeId.Function && TypeId != BuiltinTypeId.BuiltinFunction) { return(klass.Contains(ProjectState.ClassInfos[BuiltinTypeId.Object])); } return(false); }
public override IAnalysisSet GetIndex(Node node, AnalysisUnit unit, IAnalysisSet index) { var getItem = GetTypeMember(node, unit, "__getitem__"); if (getItem.Count > 0) { var res = getItem.Call(node, unit, new[] { index }, ExpressionEvaluator.EmptyNames); if (res.IsObjectOrUnknown() && index.Contains(SliceInfo.Instance)) { // assume slicing returns a type of the same object... return(this); } return(res); } return(AnalysisSet.Empty); }
public bool Equals(IAnalysisSet set1, IAnalysisSet set2) { if (set1.Comparer == this) { return(new HashSet <AnalysisProxy>(set1, set1.Comparer).SetEquals(set2)); } else if (set2.Comparer == this) { return(new HashSet <AnalysisProxy>(set2, set2.Comparer).SetEquals(set1)); } else { return(set1.All(ns => set2.Contains(ns, this)) && set2.All(ns => set1.Contains(ns, this))); } }
private static void TestImmutableSet(IAnalysisSet emptySet) { int count = emptySet.Count; var projectEntry = CreateProjectEntry(); var value = new TestAnalysisValue(projectEntry); var newSet = emptySet.Add(value.Proxy); Assert.AreNotEqual(emptySet, newSet); Assert.AreEqual(count, emptySet.Count); Assert.AreEqual(count + 1, newSet.Count); bool wasChanged; newSet = emptySet.Add(value.Proxy, out wasChanged); Assert.AreNotEqual(emptySet, newSet); Assert.IsTrue(wasChanged); Assert.AreEqual(count, emptySet.Count); Assert.AreEqual(count + 1, newSet.Count); newSet = emptySet.Union(new[] { value.Proxy }); Assert.AreNotEqual(emptySet, newSet); Assert.AreEqual(count, emptySet.Count); Assert.AreEqual(count + 1, newSet.Count); newSet = emptySet.Union(new[] { value.Proxy }, out wasChanged); Assert.IsTrue(wasChanged); Assert.AreNotEqual(emptySet, newSet); Assert.AreEqual(count, emptySet.Count); Assert.AreEqual(count + 1, newSet.Count); Assert.AreEqual(emptySet, emptySet.Clone()); Assert.IsFalse(emptySet.Contains(value.Proxy)); }
internal override bool IsOfType(IAnalysisSet klass) { return(klass.Contains(ProjectState.ClassInfos[BuiltinTypeId.Function])); }
public override bool IsOfType(IAnalysisSet klass) => klass.Contains(ProjectState.ClassInfos[BuiltinTypeId.Function]);
internal override bool IsOfType(IAnalysisSet klass) { return klass.Contains(ClassInfo) || klass.Contains(ProjectState.ClassInfos[BuiltinTypeId.Object]); }
public override bool IsOfType(IAnalysisSet klass) { return(klass.Contains(ClassInfo) || klass.Contains(ProjectState.ClassInfos[BuiltinTypeId.Object])); }