mirror of
https://github.com/github/codeql.git
synced 2026-05-04 21:25:44 +02:00
support abstract signatures
This commit is contained in:
@@ -202,18 +202,22 @@ public class TypeExtractor {
|
||||
|
||||
private void extractSignature(int index) {
|
||||
// Format is:
|
||||
// kind;numTypeParams;requiredParams;restParamType;returnType(;paramName;paramType)*
|
||||
// kind;isAbstract;numTypeParams;requiredParams;restParamType;returnType(;paramName;paramType)*
|
||||
String[] parts = split(table.getSignatureString(index));
|
||||
Label label = trapWriter.globalID("signature;" + index);
|
||||
int kind = Integer.parseInt(parts[0]);
|
||||
int numberOfTypeParameters = Integer.parseInt(parts[1]);
|
||||
int requiredParameters = Integer.parseInt(parts[2]);
|
||||
String restParamTypeTag = parts[3];
|
||||
boolean isAbstract = parts[1].equals("t");
|
||||
if (isAbstract) {
|
||||
trapWriter.addTuple("is_abstract_signature", label);
|
||||
}
|
||||
int numberOfTypeParameters = Integer.parseInt(parts[2]);
|
||||
int requiredParameters = Integer.parseInt(parts[3]);
|
||||
String restParamTypeTag = parts[4];
|
||||
if (!restParamTypeTag.isEmpty()) {
|
||||
trapWriter.addTuple(
|
||||
"signature_rest_parameter", label, trapWriter.globalID("type;" + restParamTypeTag));
|
||||
}
|
||||
Label returnType = trapWriter.globalID("type;" + parts[4]);
|
||||
Label returnType = trapWriter.globalID("type;" + parts[5]);
|
||||
trapWriter.addTuple(
|
||||
"signature_types",
|
||||
label,
|
||||
@@ -222,9 +226,9 @@ public class TypeExtractor {
|
||||
numberOfTypeParameters,
|
||||
requiredParameters);
|
||||
trapWriter.addTuple("signature_contains_type", returnType, label, -1);
|
||||
int numberOfParameters = (parts.length - 5) / 2; // includes type parameters
|
||||
int numberOfParameters = (parts.length - 6) / 2; // includes type parameters
|
||||
for (int i = 0; i < numberOfParameters; ++i) {
|
||||
int partIndex = 5 + (2 * i);
|
||||
int partIndex = 6 + (2 * i);
|
||||
String paramName = parts[partIndex];
|
||||
String paramTypeId = parts[partIndex + 1];
|
||||
if (paramTypeId.length() > 0) { // Unconstrained type parameters have an empty type ID.
|
||||
|
||||
Reference in New Issue
Block a user