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(
543543 entry.possible_declarations = dispatcher.fetchRepeatedLabels (expr.getDecls ());
544544 return entry;
545545}
546+
546547codeql::DynamicMemberRefExpr ExprTranslator::translateDynamicMemberRefExpr (
547548 const swift::DynamicMemberRefExpr& expr) {
548549 auto entry = createExprEntry (expr);
549550 fillLookupExpr (expr, entry);
550551 return entry;
551552}
552553
554+ codeql::DynamicSubscriptExpr ExprTranslator::translateDynamicSubscriptExpr (
555+ const swift::DynamicSubscriptExpr& expr) {
556+ auto entry = createExprEntry (expr);
557+ fillLookupExpr (expr, entry);
558+ return entry;
559+ }
560+
553561} // namespace codeql
Original file line number Diff line number Diff line change @@ -107,6 +107,8 @@ class ExprTranslator : public AstTranslatorBase<ExprTranslator> {
107107 const swift::OverloadedDeclRefExpr& expr);
108108 codeql::DynamicMemberRefExpr translateDynamicMemberRefExpr (
109109 const swift::DynamicMemberRefExpr& expr);
110+ codeql::DynamicSubscriptExpr translateDynamicSubscriptExpr (
111+ const swift::DynamicSubscriptExpr& expr);
110112
111113 private:
112114 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 22import codeql.swift.elements
33import TestUtils
44
5- from DynamicMemberRefExpr x , Expr getBase
5+ from DynamicLookupExpr x , Expr getBase
66where
77 toBeTested ( x ) and
88 not x .isUnknown ( ) and
99 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 22import codeql.swift.elements
33import TestUtils
44
5- from DynamicMemberRefExpr x
5+ from DynamicLookupExpr x
66where toBeTested ( x ) and not x .isUnknown ( )
77select 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 22import codeql.swift.elements
33import TestUtils
44
5- from DynamicMemberRefExpr x
5+ from DynamicLookupExpr x
66where toBeTested ( x ) and not x .isUnknown ( )
77select x , x .getType ( )
Original file line number Diff line number Diff line change 44// Successful compilation would require importing Foundation for `@objc`
55class A {
66 @objc func foo( _ : Int ) { }
7+ @objc subscript( i : Int ) -> Int {
8+ get { return 0 }
9+ }
710} ;
811
912class B { }
1013
1114var x : AnyObject = B ( )
1215x. foo!( 17 )
16+ _ = x [ 17 ] !
Load Diff This file was deleted.
You can’t perform that action at this time.
0 commit comments