From 6ae4b624b07bb86ceb24acb27ad0ac83be2ecc1e Mon Sep 17 00:00:00 2001 From: Torsten Ruger Date: Mon, 2 Nov 2015 20:10:05 +0200 Subject: [PATCH] leaving the name for field defs so we can reuse that expression so we can highlight it in the debugger --- lib/parser/transform.rb | 7 ++++--- test/cases/class_definition/class_ops.tst | 3 ++- test/cases/function_definition/function_foo2.tst | 3 ++- test/cases/function_definition/function_ops.tst | 3 ++- test/cases/function_definition/function_return.tst | 3 ++- 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/parser/transform.rb b/lib/parser/transform.rb index 8bf10b1..a804f7b 100644 --- a/lib/parser/transform.rb +++ b/lib/parser/transform.rb @@ -25,9 +25,10 @@ module Parser rule(:integer => simple(:value)) { s(:int ,value.to_i) } rule(:name => simple(:name)) { s(:name , name.to_sym) } # local variables - rule(:type => simple(:type), :name => simple(:name)) { s(:field_def , type_sym(type) , name.to_sym) } + rule(:type => simple(:type), :name => simple(:name)) { + s(:field_def , type_sym(type) , s(:name , name.to_sym)) } rule(:type => simple(:type), :name => simple(:name) , :value => simple(:value)) { - s(:field_def , type_sym(type) , name.to_sym , value ) } + s(:field_def , type_sym(type) , s(:name , name.to_sym) , value ) } # class field rule(:field => simple(:field) , :type => simple(:type), :name => simple(:name)) { s(:class_field , type_sym(type) , name.to_sym) } @@ -88,7 +89,7 @@ module Parser s(:return , return_statement) end - rule(:parameter => simple(:parameter)) { s(:parameter , *parameter) } + rule(:parameter => simple(:parameter)) { s(:parameter , parameter.children[0] , parameter.children[1].children[0]) } # Also two rules for function definitions, unqualified and qualified rule(:type => simple(:type) , diff --git a/test/cases/class_definition/class_ops.tst b/test/cases/class_definition/class_ops.tst index cb73998..785cf1f 100644 --- a/test/cases/class_definition/class_ops.tst +++ b/test/cases/class_definition/class_ops.tst @@ -14,7 +14,8 @@ s(:statements, s(:parameters, s(:parameter, :Integer, :x)), s(:statements, - s(:field_def, :Integer, :abba, + s(:field_def, :Integer, + s(:name, :abba), s(:int, 5)), s(:return, s(:operator_value, :+, diff --git a/test/cases/function_definition/function_foo2.tst b/test/cases/function_definition/function_foo2.tst index 14e66a9..1312e21 100644 --- a/test/cases/function_definition/function_foo2.tst +++ b/test/cases/function_definition/function_foo2.tst @@ -9,7 +9,8 @@ s(:statements, s(:parameters, s(:parameter, :Integer, :x)), s(:statements, - s(:field_def, :Integer, :a, + s(:field_def, :Integer, + s(:name, :a), s(:int, 5)), s(:return, s(:name, :a))))) diff --git a/test/cases/function_definition/function_ops.tst b/test/cases/function_definition/function_ops.tst index 3bd22b6..31e0db6 100644 --- a/test/cases/function_definition/function_ops.tst +++ b/test/cases/function_definition/function_ops.tst @@ -9,7 +9,8 @@ s(:statements, s(:parameters, s(:parameter, :Integer, :x)), s(:statements, - s(:field_def, :Integer, :abba, + s(:field_def, :Integer, + s(:name, :abba), s(:int, 5)), s(:assignment, s(:name, :abba), diff --git a/test/cases/function_definition/function_return.tst b/test/cases/function_definition/function_return.tst index ee45b53..6d6d248 100644 --- a/test/cases/function_definition/function_return.tst +++ b/test/cases/function_definition/function_return.tst @@ -9,7 +9,8 @@ s(:statements, s(:parameters, s(:parameter, :Object, :n)), s(:statements, - s(:field_def, :Integer, :i, + s(:field_def, :Integer, + s(:name, :i), s(:field_access, s(:receiver, s(:name, :n)),