Skip to content

Commit c10b580

Browse files
committed
Ruby: Add argument-less super call tests
1 parent e6cf737 commit c10b580

File tree

7 files changed

+844
-229
lines changed

7 files changed

+844
-229
lines changed

ruby/ql/test/library-tests/ast/Ast.expected

+40
Original file line numberDiff line numberDiff line change
@@ -3153,6 +3153,46 @@ params/params.rb:
31533153
# 95| getReceiver: [LocalVariableAccess] hash
31543154
# 95| getArgument: [HashSplatExpr] ** ...
31553155
# 95| getAnOperand/getOperand/getReceiver: [LocalVariableAccess] __synth__0
3156+
# 98| getStmt: [ClassDeclaration] Sup
3157+
# 99| getStmt: [Method] m
3158+
# 99| getParameter: [SimpleParameter] x
3159+
# 99| getDefiningAccess: [LocalVariableAccess] x
3160+
# 99| getParameter: [SplatParameter] *rest
3161+
# 99| getDefiningAccess: [LocalVariableAccess] rest
3162+
# 99| getParameter: [KeywordParameter] k
3163+
# 99| getDefiningAccess: [LocalVariableAccess] k
3164+
# 99| getParameter: [HashSplatParameter] **kwargs
3165+
# 99| getDefiningAccess: [LocalVariableAccess] kwargs
3166+
# 100| getStmt: [MethodCall] call to print
3167+
# 100| getReceiver: [SelfVariableAccess] self
3168+
# 100| getArgument: [AddExpr] ... + ...
3169+
# 100| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] x
3170+
# 100| getAnOperand/getArgument/getRightOperand: [IntegerLiteral] 1
3171+
# 101| getStmt: [MethodCall] call to print
3172+
# 101| getReceiver: [SelfVariableAccess] self
3173+
# 101| getArgument: [AddExpr] ... + ...
3174+
# 101| getAnOperand/getLeftOperand/getReceiver: [LocalVariableAccess] k
3175+
# 101| getAnOperand/getArgument/getRightOperand: [IntegerLiteral] 1
3176+
# 105| getStmt: [ClassDeclaration] Sub
3177+
# 105| getSuperclassExpr: [ConstantReadAccess] Sup
3178+
# 106| getStmt: [Method] m
3179+
# 106| getParameter: [SimpleParameter] y
3180+
# 106| getDefiningAccess: [LocalVariableAccess] y
3181+
# 106| getParameter: [SplatParameter] *rest
3182+
# 106| getDefiningAccess: [LocalVariableAccess] rest
3183+
# 106| getParameter: [KeywordParameter] k
3184+
# 106| getDefiningAccess: [LocalVariableAccess] k
3185+
# 106| getParameter: [HashSplatParameter] **kwargs
3186+
# 106| getDefiningAccess: [LocalVariableAccess] kwargs
3187+
# 107| getStmt: [SuperCall] super call to m
3188+
# 111| getStmt: [MethodCall] call to m
3189+
# 111| getReceiver: [MethodCall] call to new
3190+
# 111| getReceiver: [ConstantReadAccess] Sub
3191+
# 111| getArgument: [IntegerLiteral] 42
3192+
# 111| getArgument: [Pair] Pair
3193+
# 111| getKey: [SymbolLiteral] :k
3194+
# 111| getComponent: [StringTextComponent] k
3195+
# 111| getValue: [IntegerLiteral] 22
31563196
erb/template.html.erb:
31573197
# 19| [Toplevel] template.html.erb
31583198
# 19| getStmt: [StringLiteral] "hello world"

ruby/ql/test/library-tests/ast/TreeSitter.expected

+90
Original file line numberDiff line numberDiff line change
@@ -6192,6 +6192,96 @@ params/params.rb:
61926192
# 95| 0: [ReservedWord] **
61936193
# 95| 2: [ReservedWord] )
61946194
# 96| 4: [ReservedWord] end
6195+
# 98| 25: [Class] Class
6196+
# 98| 0: [ReservedWord] class
6197+
# 98| 1: [Constant] Sup
6198+
# 99| 2: [BodyStatement] BodyStatement
6199+
# 99| 0: [Method] Method
6200+
# 99| 0: [ReservedWord] def
6201+
# 99| 1: [Identifier] m
6202+
# 99| 2: [MethodParameters] MethodParameters
6203+
# 99| 0: [ReservedWord] (
6204+
# 99| 1: [Identifier] x
6205+
# 99| 2: [ReservedWord] ,
6206+
# 99| 3: [SplatParameter] SplatParameter
6207+
# 99| 0: [ReservedWord] *
6208+
# 99| 1: [Identifier] rest
6209+
# 99| 4: [ReservedWord] ,
6210+
# 99| 5: [KeywordParameter] KeywordParameter
6211+
# 99| 0: [Identifier] k
6212+
# 99| 1: [ReservedWord] :
6213+
# 99| 6: [ReservedWord] ,
6214+
# 99| 7: [HashSplatParameter] HashSplatParameter
6215+
# 99| 0: [ReservedWord] **
6216+
# 99| 1: [Identifier] kwargs
6217+
# 99| 8: [ReservedWord] )
6218+
# 100| 3: [BodyStatement] BodyStatement
6219+
# 100| 0: [Call] Call
6220+
# 100| 0: [Identifier] print
6221+
# 100| 1: [ArgumentList] ArgumentList
6222+
# 100| 0: [ReservedWord] (
6223+
# 100| 1: [Binary] Binary
6224+
# 100| 0: [Identifier] x
6225+
# 100| 1: [ReservedWord] +
6226+
# 100| 2: [Integer] 1
6227+
# 100| 2: [ReservedWord] )
6228+
# 101| 1: [Call] Call
6229+
# 101| 0: [Identifier] print
6230+
# 101| 1: [ArgumentList] ArgumentList
6231+
# 101| 0: [ReservedWord] (
6232+
# 101| 1: [Binary] Binary
6233+
# 101| 0: [Identifier] k
6234+
# 101| 1: [ReservedWord] +
6235+
# 101| 2: [Integer] 1
6236+
# 101| 2: [ReservedWord] )
6237+
# 102| 4: [ReservedWord] end
6238+
# 103| 3: [ReservedWord] end
6239+
# 105| 26: [Class] Class
6240+
# 105| 0: [ReservedWord] class
6241+
# 105| 1: [Constant] Sub
6242+
# 105| 2: [Superclass] Superclass
6243+
# 105| 0: [ReservedWord] <
6244+
# 105| 1: [Constant] Sup
6245+
# 106| 3: [BodyStatement] BodyStatement
6246+
# 106| 0: [Method] Method
6247+
# 106| 0: [ReservedWord] def
6248+
# 106| 1: [Identifier] m
6249+
# 106| 2: [MethodParameters] MethodParameters
6250+
# 106| 0: [ReservedWord] (
6251+
# 106| 1: [Identifier] y
6252+
# 106| 2: [ReservedWord] ,
6253+
# 106| 3: [SplatParameter] SplatParameter
6254+
# 106| 0: [ReservedWord] *
6255+
# 106| 1: [Identifier] rest
6256+
# 106| 4: [ReservedWord] ,
6257+
# 106| 5: [KeywordParameter] KeywordParameter
6258+
# 106| 0: [Identifier] k
6259+
# 106| 1: [ReservedWord] :
6260+
# 106| 6: [ReservedWord] ,
6261+
# 106| 7: [HashSplatParameter] HashSplatParameter
6262+
# 106| 0: [ReservedWord] **
6263+
# 106| 1: [Identifier] kwargs
6264+
# 106| 8: [ReservedWord] )
6265+
# 107| 3: [BodyStatement] BodyStatement
6266+
# 107| 0: [Super] super
6267+
# 108| 4: [ReservedWord] end
6268+
# 109| 4: [ReservedWord] end
6269+
# 111| 27: [Call] Call
6270+
# 111| 0: [Call] Call
6271+
# 111| 0: [Constant] Sub
6272+
# 111| 1: [ReservedWord] .
6273+
# 111| 2: [Identifier] new
6274+
# 111| 1: [ReservedWord] .
6275+
# 111| 2: [Identifier] m
6276+
# 111| 3: [ArgumentList] ArgumentList
6277+
# 111| 0: [ReservedWord] (
6278+
# 111| 1: [Integer] 42
6279+
# 111| 2: [ReservedWord] ,
6280+
# 111| 3: [Pair] Pair
6281+
# 111| 0: [HashKeySymbol] k
6282+
# 111| 1: [ReservedWord] :
6283+
# 111| 2: [Integer] 22
6284+
# 111| 4: [ReservedWord] )
61956285
# 1| [Comment] # Tests for the different kinds and contexts of parameters.
61966286
# 3| [Comment] # Method containing identifier parameters
61976287
# 7| [Comment] # Block containing identifier parameters

ruby/ql/test/library-tests/ast/ValueText.expected

+10
Original file line numberDiff line numberDiff line change
@@ -941,6 +941,11 @@ exprValue
941941
| params/params.rb:65:41:65:42 | 99 | 99 | int |
942942
| params/params.rb:70:42:70:45 | 1000 | 1000 | int |
943943
| params/params.rb:70:52:70:53 | 20 | 20 | int |
944+
| params/params.rb:100:15:100:15 | 1 | 1 | int |
945+
| params/params.rb:101:15:101:15 | 1 | 1 | int |
946+
| params/params.rb:111:11:111:12 | 42 | 42 | int |
947+
| params/params.rb:111:15:111:15 | :k | :k | symbol |
948+
| params/params.rb:111:18:111:19 | 22 | 22 | int |
944949
exprCfgNodeValue
945950
| calls/calls.rb:8:1:8:3 | 123 | 123 | int |
946951
| calls/calls.rb:11:5:11:5 | 0 | 0 | int |
@@ -1855,3 +1860,8 @@ exprCfgNodeValue
18551860
| params/params.rb:65:41:65:42 | 99 | 99 | int |
18561861
| params/params.rb:70:42:70:45 | 1000 | 1000 | int |
18571862
| params/params.rb:70:52:70:53 | 20 | 20 | int |
1863+
| params/params.rb:100:15:100:15 | 1 | 1 | int |
1864+
| params/params.rb:101:15:101:15 | 1 | 1 | int |
1865+
| params/params.rb:111:11:111:12 | 42 | 42 | int |
1866+
| params/params.rb:111:15:111:15 | :k | :k | symbol |
1867+
| params/params.rb:111:18:111:19 | 22 | 22 | int |

ruby/ql/test/library-tests/ast/params/params.expected

+30
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,14 @@ idParams
3939
| params.rb:86:14:86:14 | x | x |
4040
| params.rb:89:31:89:35 | array | array |
4141
| params.rb:94:36:94:39 | hash | hash |
42+
| params.rb:99:9:99:9 | x | x |
43+
| params.rb:99:12:99:16 | *rest | rest |
44+
| params.rb:99:19:99:19 | k | k |
45+
| params.rb:99:23:99:30 | **kwargs | kwargs |
46+
| params.rb:106:9:106:9 | y | y |
47+
| params.rb:106:12:106:16 | *rest | rest |
48+
| params.rb:106:19:106:19 | k | k |
49+
| params.rb:106:23:106:30 | **kwargs | kwargs |
4250
blockParams
4351
| params.rb:46:28:46:33 | &block | block |
4452
| params.rb:62:29:62:34 | &block | block |
@@ -56,17 +64,23 @@ splatParams
5664
| params.rb:30:31:30:36 | *splat | splat |
5765
| params.rb:34:21:34:26 | *splat | splat |
5866
| params.rb:38:29:38:33 | *blah | blah |
67+
| params.rb:99:12:99:16 | *rest | rest |
68+
| params.rb:106:12:106:16 | *rest | rest |
5969
hashSplatParams
6070
| params.rb:30:39:30:52 | **double_splat | double_splat |
6171
| params.rb:34:29:34:42 | **double_splat | double_splat |
6272
| params.rb:38:36:38:43 | **wibble | wibble |
73+
| params.rb:99:23:99:30 | **kwargs | kwargs |
74+
| params.rb:106:23:106:30 | **kwargs | kwargs |
6375
keywordParams
6476
| params.rb:41:35:41:37 | foo | foo | (none) |
6577
| params.rb:41:41:41:43 | bar | bar | 7 |
6678
| params.rb:49:28:49:29 | xx | xx | (none) |
6779
| params.rb:49:33:49:34 | yy | yy | 100 |
6880
| params.rb:53:37:53:37 | y | y | (none) |
6981
| params.rb:53:41:53:41 | z | z | 3 |
82+
| params.rb:99:19:99:19 | k | k | (none) |
83+
| params.rb:106:19:106:19 | k | k | (none) |
7084
optionalParams
7185
| params.rb:58:39:58:42 | val2 | val2 | params.rb:58:46:58:46 | 0 |
7286
| params.rb:58:49:58:52 | val3 | val3 | params.rb:58:56:58:58 | 100 |
@@ -97,6 +111,14 @@ paramsInMethods
97111
| params.rb:89:1:91:3 | anonymous_splat_parameter | 1 | params.rb:89:38:89:38 | * | SplatParameter |
98112
| params.rb:94:1:96:3 | anonymous_hash_splat_parameter | 0 | params.rb:94:36:94:39 | hash | SimpleParameter |
99113
| params.rb:94:1:96:3 | anonymous_hash_splat_parameter | 1 | params.rb:94:42:94:43 | ** | HashSplatParameter |
114+
| params.rb:99:3:102:5 | m | 0 | params.rb:99:9:99:9 | x | SimpleParameter |
115+
| params.rb:99:3:102:5 | m | 1 | params.rb:99:12:99:16 | *rest | SplatParameter |
116+
| params.rb:99:3:102:5 | m | 2 | params.rb:99:19:99:19 | k | KeywordParameter |
117+
| params.rb:99:3:102:5 | m | 3 | params.rb:99:23:99:30 | **kwargs | HashSplatParameter |
118+
| params.rb:106:3:108:5 | m | 0 | params.rb:106:9:106:9 | y | SimpleParameter |
119+
| params.rb:106:3:108:5 | m | 1 | params.rb:106:12:106:16 | *rest | SplatParameter |
120+
| params.rb:106:3:108:5 | m | 2 | params.rb:106:19:106:19 | k | KeywordParameter |
121+
| params.rb:106:3:108:5 | m | 3 | params.rb:106:23:106:30 | **kwargs | HashSplatParameter |
100122
paramsInBlocks
101123
| params.rb:9:11:11:3 | do ... end | 0 | params.rb:9:15:9:17 | key | SimpleParameter |
102124
| params.rb:9:11:11:3 | do ... end | 1 | params.rb:9:20:9:24 | value | SimpleParameter |
@@ -175,3 +197,11 @@ params
175197
| params.rb:89:38:89:38 | * | 1 | SplatParameter |
176198
| params.rb:94:36:94:39 | hash | 0 | SimpleParameter |
177199
| params.rb:94:42:94:43 | ** | 1 | HashSplatParameter |
200+
| params.rb:99:9:99:9 | x | 0 | SimpleParameter |
201+
| params.rb:99:12:99:16 | *rest | 1 | SplatParameter |
202+
| params.rb:99:19:99:19 | k | 2 | KeywordParameter |
203+
| params.rb:99:23:99:30 | **kwargs | 3 | HashSplatParameter |
204+
| params.rb:106:9:106:9 | y | 0 | SimpleParameter |
205+
| params.rb:106:12:106:16 | *rest | 1 | SplatParameter |
206+
| params.rb:106:19:106:19 | k | 2 | KeywordParameter |
207+
| params.rb:106:23:106:30 | **kwargs | 3 | HashSplatParameter |

ruby/ql/test/library-tests/ast/params/params.rb

+15
Original file line numberDiff line numberDiff line change
@@ -94,3 +94,18 @@ def anonymous_splat_parameter(array, *)
9494
def anonymous_hash_splat_parameter(hash, **)
9595
hash.merge(**)
9696
end
97+
98+
class Sup
99+
def m(x, *rest, k:, **kwargs)
100+
print(x + 1)
101+
print(k + 1)
102+
end
103+
end
104+
105+
class Sub < Sup
106+
def m(y, *rest, k:, **kwargs)
107+
super
108+
end
109+
end
110+
111+
Sub.new.m(42, k: 22)

0 commit comments

Comments
 (0)