File tree Expand file tree Collapse file tree 3 files changed +15
-8
lines changed
src/main/ruby/truffleruby/core Expand file tree Collapse file tree 3 files changed +15
-8
lines changed Original file line number Diff line number Diff line change 1
1
fails:Module#ruby2_keywords marks the final hash argument as keyword hash
2
2
fails:Module#ruby2_keywords fixes delegation warnings when calling a method accepting keywords
3
- fails:Module#ruby2_keywords raises NameError when passed not existing method name
4
3
fails:Module#ruby2_keywords acceps String as well
5
- fails:Module#ruby2_keywords raises TypeError when passed not Symbol or String
6
- fails:Module#ruby2_keywords prints warning when a method does not accept argument splat
7
- fails:Module#ruby2_keywords prints warning when a method accepts keywords
8
- fails:Module#ruby2_keywords prints warning when a method accepts keyword splat
Original file line number Diff line number Diff line change 1
1
fails:Proc#ruby2_keywords marks the final hash argument as keyword hash
2
2
fails:Proc#ruby2_keywords fixes delegation warnings when calling a method accepting keywords
3
3
fails:Proc#ruby2_keywords fixes delegation warnings when calling a proc accepting keywords
4
- fails:Proc#ruby2_keywords prints warning when a proc does not accept argument splat
5
- fails:Proc#ruby2_keywords prints warning when a proc accepts keywords
6
- fails:Proc#ruby2_keywords prints warning when a proc accepts keyword splat
Original file line number Diff line number Diff line change @@ -45,13 +45,28 @@ def include(mod)
45
45
end
46
46
47
47
private def ruby2_keywords ( *methods )
48
+ methods . each do |name |
49
+ method = instance_method ( name )
50
+ kinds = method . parameters . map ( &:first )
51
+ if !kinds . include? ( :rest )
52
+ warn "Skipping set of ruby2_keywords flag for #{ name } (method does not accept argument splat)" , uplevel : 1
53
+ elsif kinds . include? ( :key ) or kinds . include? ( :keyreq ) or kinds . include? ( :keyrest )
54
+ warn "Skipping set of ruby2_keywords flag for #{ name } (method accepts keywords)" , uplevel : 1
55
+ end
56
+ end
48
57
warn "ruby2_keywords(#{ methods . join ( ', ' ) } ) was ignored" , uplevel : 1 if $DEBUG
49
58
nil
50
59
end
51
60
end
52
61
53
62
class Proc
54
63
def ruby2_keywords
64
+ kinds = parameters . map ( &:first )
65
+ if !kinds . include? ( :rest )
66
+ warn 'Skipping set of ruby2_keywords flag for proc (proc does not accept argument splat)' , uplevel : 1
67
+ elsif kinds . include? ( :key ) or kinds . include? ( :keyreq ) or kinds . include? ( :keyrest )
68
+ warn 'Skipping set of ruby2_keywords flag for proc (proc accepts keywords)' , uplevel : 1
69
+ end
55
70
warn 'Proc#ruby2_keywords was ignored' , uplevel : 1 if $DEBUG
56
71
self
57
72
end
You can’t perform that action at this time.
0 commit comments