mirror of
https://github.com/github/codeql.git
synced 2025-12-24 04:36:35 +01:00
49 lines
1.5 KiB
Plaintext
49 lines
1.5 KiB
Plaintext
private import codeql.ruby.AST
|
|
private import codeql.ruby.experimental.Rbi::Rbi
|
|
|
|
query predicate rbiTypes(RbiType t) { any() }
|
|
|
|
query predicate unionTypes(RbiUnionType t, RbiType u) { u = t.getAType() }
|
|
|
|
query predicate nilableTypes(RbiNilableType t, RbiType u) { u = t.getUnderlyingType() }
|
|
|
|
query predicate typeAliases(RbiTypeAlias a, RbiType t) { t = a.getAliasedType() }
|
|
|
|
query predicate arrayTypes(RbiArrayType at, RbiType et) { et = at.getElementType() }
|
|
|
|
query predicate hashTypes(RbiHashType ht, RbiType kt, RbiType vt) {
|
|
kt = ht.getKeyType() and vt = ht.getValueType()
|
|
}
|
|
|
|
query predicate signatureCalls(SignatureCall c, ReturnType r) { r = c.getReturnType() }
|
|
|
|
query predicate paramsCalls(ParamsCall c) { any() }
|
|
|
|
query predicate returnsCall(ReturnsCall c, ReturnType r) { r = c.getReturnType() }
|
|
|
|
query predicate voidCall(VoidCall c) { any() }
|
|
|
|
query predicate parameterTypes(ParameterType pt, NamedParameter p, RbiType t) {
|
|
p = pt.getParameter() and t = pt.getType()
|
|
}
|
|
|
|
query predicate procParameterTypes(
|
|
ParameterType pt, ProcReturnsTypeCall prtc, ProcCall pc, string isNilable
|
|
) {
|
|
(
|
|
exists(RbiNilableType nilable | nilable = pt.getType() |
|
|
prtc = nilable.getUnderlyingType() and
|
|
isNilable = "nilable"
|
|
)
|
|
or
|
|
pt.getType() = prtc and isNilable = "non_nilable"
|
|
) and
|
|
pc = prtc.getProcCall()
|
|
}
|
|
|
|
query predicate sigMethods(MethodSignatureCall sig, MethodBase m) { m = sig.getAssociatedMethod() }
|
|
|
|
query predicate sigAttrReaders(MethodSignatureCall sig, MethodCall attr_reader) {
|
|
attr_reader = sig.getAssociatedAttrReaderCall()
|
|
}
|