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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
 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)));
     }
 }
Пример #5
0
        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));
        }
Пример #6
0
 internal override bool IsOfType(IAnalysisSet klass)
 {
     return(klass.Contains(ProjectState.ClassInfos[BuiltinTypeId.Function]));
 }
Пример #7
0
 public override bool IsOfType(IAnalysisSet klass) => klass.Contains(ProjectState.ClassInfos[BuiltinTypeId.Function]);
        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));
        }
Пример #9
0
 internal override bool IsOfType(IAnalysisSet klass) {
     return klass.Contains(ClassInfo) || klass.Contains(ProjectState.ClassInfos[BuiltinTypeId.Object]);
 }
Пример #10
0
 public override bool IsOfType(IAnalysisSet klass)
 {
     return(klass.Contains(ClassInfo) || klass.Contains(ProjectState.ClassInfos[BuiltinTypeId.Object]));
 }