Files
codeql/csharp/ql/test/library-tests/frameworks/system/System/System.ql

41 lines
1.3 KiB
Plaintext

import csharp
import semmle.code.csharp.frameworks.System
import semmle.code.csharp.frameworks.system.Collections
import semmle.code.csharp.frameworks.system.collections.Generic
predicate implementsMethod(Method m, int i) {
exists(Method other, Method imp |
m.overridesOrImplementsOrEquals(imp) and
other = imp.getUnboundDeclaration()
|
other = any(SystemObjectClass c).getEqualsMethod() and i = 1
or
other = any(SystemObjectClass c).getStaticEqualsMethod() and i = 2
or
other = any(SystemObjectClass c).getReferenceEqualsMethod() and i = 3
or
other = any(SystemObjectClass c).getGetHashCodeMethod() and i = 4
or
other = any(SystemIEquatableTInterface iface).getEqualsMethod() and i = 5
or
other = any(SystemCollectionsIComparerInterface iface).getCompareMethod() and i = 6
or
other = any(SystemCollectionsGenericIComparerTInterface iface).getCompareMethod() and i = 7
or
other = any(SystemIComparableInterface iface).getCompareToMethod() and i = 8
or
other = any(SystemIComparableTInterface iface).getCompareToMethod() and i = 9
)
}
from Element e, int i
where
e.getFile().getStem() = "System" and
e.fromSource() and
(
implementsMethod(e, i)
or
implementsMethod(e.(MethodCall).getTarget(), i)
)
select e, i