Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
Brakeman
提交
fa9da064
B
Brakeman
项目概览
李少辉-开发者
/
Brakeman
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
B
Brakeman
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
fa9da064
编写于
9月 10, 2012
作者:
J
Justin Collins
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Treat `super` like a method call
上级
ea7c0d1f
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
38 addition
and
13 deletion
+38
-13
lib/ruby_parser/bm_sexp.rb
lib/ruby_parser/bm_sexp.rb
+37
-12
test/tests/test_sexp.rb
test/tests/test_sexp.rb
+1
-1
未找到文件。
lib/ruby_parser/bm_sexp.rb
浏览文件 @
fa9da064
...
...
@@ -147,8 +147,14 @@ class Sexp
#s(:call, s(:call, nil, :x, s(:arglist)), :y, s(:arglist, s(:lit, 1)))
# ^- method
def
method
expect
:call
,
:attrasgn
self
[
2
]
expect
:call
,
:attrasgn
,
:super
,
:zsuper
case
self
.
node_type
when
:call
,
:attrasgn
self
[
2
]
when
:super
,
:zsuper
:super
end
end
#Sets the arglist in a method call.
...
...
@@ -165,8 +171,18 @@ class Sexp
# s(:call, s(:call, nil, :x, s(:arglist)), :y, s(:arglist, s(:lit, 1), s(:lit, 2)))
# ^------------ arglist ------------^
def
arglist
expect
:call
,
:attrasgn
self
[
3
]
expect
:call
,
:attrasgn
,
:super
,
:zsuper
case
self
.
node_type
when
:call
,
:attrasgn
self
[
3
]
when
:super
,
:zsuper
if
self
[
1
]
Sexp
.
new
(
:arglist
).
concat
self
[
1
..-
1
]
else
Sexp
.
new
(
:arglist
)
end
end
#For new ruby_parser
#Sexp.new(:arglist, *self[3..-1])
...
...
@@ -177,7 +193,7 @@ class Sexp
# s(:call, s(:call, nil, :x, s(:arglist)), :y, s(:arglist, s(:lit, 1), s(:lit, 2)))
# ^--------args--------^
def
args
expect
:call
,
:attrasgn
expect
:call
,
:attrasgn
,
:super
,
:zsuper
#For new ruby_parser
#if self[3]
# self[3..-1]
...
...
@@ -185,11 +201,20 @@ class Sexp
# []
#end
#For old ruby_parser
if
self
[
3
]
self
[
3
][
1
..-
1
]
else
[]
case
self
.
node_type
when
:call
,
:attrasgn
#For old ruby_parser
if
self
[
3
]
self
[
3
][
1
..-
1
]
else
[]
end
when
:super
,
:zsuper
if
self
[
1
]
self
[
1
..-
1
]
else
[]
end
end
end
...
...
@@ -345,7 +370,7 @@ class Sexp
#Sets body
def
body
=
exp
expect
:defn
,
:defs
,
:methdef
,
:selfdef
,
:class
,
:module
case
self
.
node_type
when
:defn
,
:methdef
,
:class
self
[
3
]
=
exp
...
...
@@ -392,7 +417,7 @@ end
[
:[]=
,
:clear
,
:collect!
,
:compact!
,
:concat
,
:delete
,
:delete_at
,
:delete_if
,
:drop
,
:drop_while
,
:fill
,
:flatten!
,
:replace
,
:insert
,
:keep_if
,
:map!
,
:pop
,
:push
,
:reject!
,
:replace
,
:reverse!
,
:rotate!
,
:select!
,
:shift
,
:shuffle!
,
:slice!
,
:sort!
,
:sort_by!
,
:transpose
,
:select!
,
:shift
,
:shuffle!
,
:slice!
,
:sort!
,
:sort_by!
,
:transpose
,
:uniq!
,
:unshift
].
each
do
|
method
|
Sexp
.
class_eval
<<-
RUBY
...
...
test/tests/test_sexp.rb
浏览文件 @
fa9da064
...
...
@@ -233,7 +233,7 @@ class SexpTests < Test::Unit::TestCase
assert_equal
:super
,
exp
.
method
assert_equal
s
(
:arglist
),
exp
.
arglist
assert_equal
s
()
,
exp
.
args
assert_equal
[]
,
exp
.
args
end
def
test_super_call
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录