File tree Expand file tree Collapse file tree 14 files changed +25
-11
lines changed Expand file tree Collapse file tree 14 files changed +25
-11
lines changed Original file line number Diff line number Diff line change @@ -543,11 +543,19 @@ codeql::OverloadedDeclRefExpr ExprTranslator::translateOverloadedDeclRefExpr(
543
543
entry.possible_declarations = dispatcher.fetchRepeatedLabels (expr.getDecls ());
544
544
return entry;
545
545
}
546
+
546
547
codeql::DynamicMemberRefExpr ExprTranslator::translateDynamicMemberRefExpr (
547
548
const swift::DynamicMemberRefExpr& expr) {
548
549
auto entry = createExprEntry (expr);
549
550
fillLookupExpr (expr, entry);
550
551
return entry;
551
552
}
552
553
554
+ codeql::DynamicSubscriptExpr ExprTranslator::translateDynamicSubscriptExpr (
555
+ const swift::DynamicSubscriptExpr& expr) {
556
+ auto entry = createExprEntry (expr);
557
+ fillLookupExpr (expr, entry);
558
+ return entry;
559
+ }
560
+
553
561
} // namespace codeql
Original file line number Diff line number Diff line change @@ -107,6 +107,8 @@ class ExprTranslator : public AstTranslatorBase<ExprTranslator> {
107
107
const swift::OverloadedDeclRefExpr& expr);
108
108
codeql::DynamicMemberRefExpr translateDynamicMemberRefExpr (
109
109
const swift::DynamicMemberRefExpr& expr);
110
+ codeql::DynamicSubscriptExpr translateDynamicSubscriptExpr (
111
+ const swift::DynamicSubscriptExpr& expr);
110
112
111
113
private:
112
114
void fillAbstractClosureExpr (const swift::AbstractClosureExpr& expr,
Original file line number Diff line number Diff line change
1
+ | dynamic_lookup.swift:15:1:15:3 | .foo(_:) | DynamicMemberRefExpr | getBase: | dynamic_lookup.swift:15:1:15:1 | OpaqueValueExpr |
2
+ | dynamic_lookup.swift:16:5:16:9 | subscript ...[...] | DynamicSubscriptExpr | getBase: | dynamic_lookup.swift:16:5:16:5 | OpaqueValueExpr |
Original file line number Diff line number Diff line change 2
2
import codeql.swift.elements
3
3
import TestUtils
4
4
5
- from DynamicMemberRefExpr x , Expr getBase
5
+ from DynamicLookupExpr x , Expr getBase
6
6
where
7
7
toBeTested ( x ) and
8
8
not x .isUnknown ( ) and
9
9
getBase = x .getBase ( )
10
- select x , "getBase:" , getBase
10
+ select x , x . getPrimaryQlClasses ( ) , "getBase:" , getBase
Original file line number Diff line number Diff line change
1
+ | dynamic_lookup.swift:15:1:15:3 | .foo(_:) | dynamic_lookup.swift:6:9:6:28 | foo(_:) |
2
+ | dynamic_lookup.swift:16:5:16:9 | subscript ...[...] | dynamic_lookup.swift:7:9:9:3 | subscript ... |
Original file line number Diff line number Diff line change 2
2
import codeql.swift.elements
3
3
import TestUtils
4
4
5
- from DynamicMemberRefExpr x
5
+ from DynamicLookupExpr x
6
6
where toBeTested ( x ) and not x .isUnknown ( )
7
7
select x , x .getMember ( )
Original file line number Diff line number Diff line change
1
+ | dynamic_lookup.swift:15:1:15:3 | .foo(_:) | ((Int) -> ())? |
2
+ | dynamic_lookup.swift:16:5:16:9 | subscript ...[...] | Int? |
Original file line number Diff line number Diff line change 2
2
import codeql.swift.elements
3
3
import TestUtils
4
4
5
- from DynamicMemberRefExpr x
5
+ from DynamicLookupExpr x
6
6
where toBeTested ( x ) and not x .isUnknown ( )
7
7
select x , x .getType ( )
Original file line number Diff line number Diff line change 4
4
// Successful compilation would require importing Foundation for `@objc`
5
5
class A {
6
6
@objc func foo( _ : Int ) { }
7
+ @objc subscript( i : Int ) -> Int {
8
+ get { return 0 }
9
+ }
7
10
} ;
8
11
9
12
class B { }
10
13
11
14
var x : AnyObject = B ( )
12
15
x. foo!( 17 )
16
+ _ = x [ 17 ] !
Load Diff This file was deleted.
You can’t perform that action at this time.
0 commit comments