Skip to content

Commit 4c7b66c

Browse files
committed
Address review comments
1 parent e6b1e8e commit 4c7b66c

File tree

2 files changed

+21
-20
lines changed

2 files changed

+21
-20
lines changed

rust/ql/lib/codeql/rust/elements/internal/CallableImpl.qll

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,15 @@ module Impl {
2727
* Holds if `getSelfParam()` exists.
2828
*/
2929
predicate hasSelfParam() { exists(this.getSelfParam()) }
30+
31+
/**
32+
* Gets the number of parameters of this callable, including `self` if it exists.
33+
*/
34+
int getNumberOfParamsInclSelf() {
35+
exists(int arr |
36+
arr = this.getNumberOfParams() and
37+
if this.hasSelfParam() then result = arr + 1 else result = arr
38+
)
39+
}
3040
}
3141
}

rust/ql/lib/codeql/rust/internal/PathResolution.qll

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -605,13 +605,13 @@ private class EnumItemNode extends TypeItemNode instanceof Enum {
605605
}
606606
}
607607

608-
/** An item that can be called with arguments. */
609-
abstract class CallableItemNode extends ItemNode {
610-
/** Gets the number of parameters of this item. */
611-
abstract int getNumberOfParameters();
608+
/** An item that can be referenced with arguments. */
609+
abstract class ParameterizableItemNode extends ItemNode {
610+
/** Gets the arity this item. */
611+
abstract int getArity();
612612
}
613613

614-
private class VariantItemNode extends CallableItemNode instanceof Variant {
614+
private class VariantItemNode extends ParameterizableItemNode instanceof Variant {
615615
override string getName() { result = Variant.super.getName().getText() }
616616

617617
override Namespace getNamespace() {
@@ -624,9 +624,7 @@ private class VariantItemNode extends CallableItemNode instanceof Variant {
624624

625625
override Visibility getVisibility() { result = super.getEnum().getVisibility() }
626626

627-
override int getNumberOfParameters() {
628-
result = super.getFieldList().(TupleFieldList).getNumberOfFields()
629-
}
627+
override int getArity() { result = super.getFieldList().(TupleFieldList).getNumberOfFields() }
630628

631629
override predicate hasCanonicalPath(Crate c) { this.hasCanonicalPathPrefix(c) }
632630

@@ -649,7 +647,7 @@ private class VariantItemNode extends CallableItemNode instanceof Variant {
649647
}
650648
}
651649

652-
class FunctionItemNode extends AssocItemNode, CallableItemNode instanceof Function {
650+
class FunctionItemNode extends AssocItemNode, ParameterizableItemNode instanceof Function {
653651
override string getName() { result = Function.super.getName().getText() }
654652

655653
override predicate hasImplementation() { Function.super.hasImplementation() }
@@ -660,12 +658,7 @@ class FunctionItemNode extends AssocItemNode, CallableItemNode instanceof Functi
660658

661659
override Visibility getVisibility() { result = Function.super.getVisibility() }
662660

663-
override int getNumberOfParameters() {
664-
exists(int arr |
665-
arr = super.getNumberOfParams() and
666-
if super.hasSelfParam() then result = arr + 1 else result = arr
667-
)
668-
}
661+
override int getArity() { result = super.getNumberOfParamsInclSelf() }
669662
}
670663

671664
abstract class ImplOrTraitItemNode extends ItemNode {
@@ -885,7 +878,7 @@ private class ImplItemNodeImpl extends ImplItemNode {
885878
TraitItemNode resolveTraitTyCand() { result = resolvePathCand(this.getTraitPath()) }
886879
}
887880

888-
private class StructItemNode extends TypeItemNode, CallableItemNode instanceof Struct {
881+
private class StructItemNode extends TypeItemNode, ParameterizableItemNode instanceof Struct {
889882
override string getName() { result = Struct.super.getName().getText() }
890883

891884
override Namespace getNamespace() {
@@ -897,9 +890,7 @@ private class StructItemNode extends TypeItemNode, CallableItemNode instanceof S
897890

898891
override Visibility getVisibility() { result = Struct.super.getVisibility() }
899892

900-
override int getNumberOfParameters() {
901-
result = super.getFieldList().(TupleFieldList).getNumberOfFields()
902-
}
893+
override int getArity() { result = super.getFieldList().(TupleFieldList).getNumberOfFields() }
903894

904895
override TypeParam getTypeParam(int i) { result = super.getGenericParamList().getTypeParam(i) }
905896

@@ -1717,7 +1708,7 @@ private ItemNode resolvePathCand(RelevantPath path) {
17171708
or
17181709
exists(CallExpr ce |
17191710
path = CallExprImpl::getFunctionPath(ce) and
1720-
result.(CallableItemNode).getNumberOfParameters() = ce.getNumberOfArgs()
1711+
result.(ParameterizableItemNode).getArity() = ce.getNumberOfArgs()
17211712
)
17221713
)
17231714
}

0 commit comments

Comments
 (0)