Files
codeql/csharp/ql/test/library-tests/csharp9/record.ql
2022-12-06 13:53:50 +01:00

23 lines
704 B
Plaintext

import csharp
import semmle.code.csharp.commons.QualifiedName
query predicate records(RecordClass t, string i, RecordCloneMethod clone) {
t.getABaseInterface().toStringWithTypes() = i and
clone = t.getCloneMethod() and
t.fromSource()
}
private string getMemberName(Member m) {
exists(string qualifier, string name | m.getDeclaringType().hasQualifiedName(qualifier, name) |
result = getQualifiedName(qualifier, name) + "." + m.toStringWithTypes()
)
}
query predicate members(RecordClass t, string ms, string l) {
t.fromSource() and
exists(Member m | t.hasMember(m) |
ms = getMemberName(m) and
if m.fromSource() then l = m.getLocation().toString() else l = "no location"
)
}