Skip to content

Commit f99ce11

Browse files
committed
resolve super-expressions when the super-type is explicitly mentioned
1 parent c43ff2f commit f99ce11

2 files changed

Lines changed: 9 additions & 1 deletion

File tree

ql/src/codeql_ql/ast/Ast.qll

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1758,9 +1758,16 @@ class ThisAccess extends Identifier {
17581758

17591759
/** A use of `super`. */
17601760
class Super extends TSuper, Expr {
1761-
Super() { this = TSuper(_) }
1761+
QL::SuperRef ref;
1762+
1763+
Super() { this = TSuper(ref) }
17621764

17631765
override string getAPrimaryQlClass() { result = "Super" }
1766+
1767+
override Type getType() {
1768+
exists(TypeExpr te | ref.getChild(0) = toQL(te) | result = te.getResolvedType())
1769+
// TODO: Also resolve the type when there is no TypeExpr.
1770+
}
17641771
}
17651772

17661773
/** An access to `result`. */

ql/test/type/type.expected

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
| Test.qll:22:18:22:24 | Set | file://:0:0:0:0 | string |
4848
| Test.qll:22:19:22:23 | String | file://:0:0:0:0 | string |
4949
| Test.qll:24:15:24:20 | result | file://:0:0:0:0 | int |
50+
| Test.qll:24:24:24:33 | Super | Test.qll:15:1:19:1 | Base |
5051
| Test.qll:24:24:24:39 | MemberCall | file://:0:0:0:0 | int |
5152
| Test.qll:26:16:26:21 | result | file://:0:0:0:0 | int |
5253
| Test.qll:26:25:26:35 | MemberCall | file://:0:0:0:0 | int |

0 commit comments

Comments
 (0)