diff --git a/lib/typed/tree/to_code.rb b/lib/typed/tree/to_code.rb index 9d03d578..d8480690 100644 --- a/lib/typed/tree/to_code.rb +++ b/lib/typed/tree/to_code.rb @@ -36,7 +36,7 @@ module Typed def on_field_def statement type , name , value = *statement - w = FieldDef.new() + w = Tree::FieldDef.new() w.type = type w.name = process(name) w.value = process(value) if value @@ -45,7 +45,7 @@ module Typed def on_class_field statement type , name = *statement - w = ClassField.new() + w = Tree::ClassField.new() w.type = type w.name = name w @@ -53,7 +53,7 @@ module Typed def on_while_statement statement branch_type , condition , statements = *statement - w = WhileStatement.new() + w = Tree::WhileStatement.new() w.branch_type = branch_type w.condition = process(condition) w.statements = process(statements) @@ -105,7 +105,7 @@ module Typed def on_field_access statement receiver_ast , field_ast = *statement - w = FieldAccess.new() + w = Tree::FieldAccess.new() w.receiver = process(receiver_ast) w.field = process(field_ast) w @@ -148,12 +148,12 @@ module Typed end def on_class_name expression - ClassExpression.new(expression.children.first) + Tree::ClassExpression.new(expression.children.first) end def on_assignment statement name , value = *statement - w = Assignment.new() + w = Tree::Assignment.new() w.name = process name w.value = process(value) w diff --git a/test/test_all.rb b/test/test_all.rb index d4035c33..7cb5a78b 100644 --- a/test/test_all.rb +++ b/test/test_all.rb @@ -4,6 +4,4 @@ require_relative "lib/test_all" require_relative "register/test_all" -require_relative "typed/parfait/test_all" - -require_relative "typed/type/test_all" +require_relative "typed/test_all" diff --git a/test/typed/test_all.rb b/test/typed/test_all.rb new file mode 100644 index 00000000..a1d22fac --- /dev/null +++ b/test/typed/test_all.rb @@ -0,0 +1,5 @@ +require_relative "parfait/test_all" + +require_relative "type/test_all" + +require_relative "test_to_code" diff --git a/test/typed/test_to_code.rb b/test/typed/test_to_code.rb new file mode 100644 index 00000000..ebf5cc91 --- /dev/null +++ b/test/typed/test_to_code.rb @@ -0,0 +1,51 @@ +require_relative "helper" + +class ToCodeTest < MiniTest::Test + include AST::Sexp + + def check clazz + tree = Typed.ast_to_code @statement + assert_equal tree.class , Typed::Tree.const_get( clazz ) + end + + def test_field_access + @statement = s(:field_access, s(:receiver, s(:name, :m)), s(:field, s(:name, :index))) + check "FieldAccess" + end + def test_field_def_value + @statement = s(:field_def, :Integer, s(:name, :abba), s(:int, 5)) + check "FieldDef" + end + def test_class_field + @statement = s(:class_field, :Integer, :fff, s(:int, 3)) + check "ClassField" + end + def test_simple_while + @statement = s(:while_statement, :false, s(:conditional,s(:int, 1)), s(:statements)) + check "WhileStatement" + end + def test_assignment + @statement = s(:assignment, s(:name, :i), s(:int, 0)) + check "Assignment" + end + def test_nil + @statement = s(:nil) + check "NilExpression" + end + def test_true + @statement = s(:true) + check "TrueExpression" + end + def test_false + @statement = s(:false) + check "FalseExpression" + end + def test_name + @statement = s(:name, :foo) + check "NameExpression" + end + def test_class_name + @statement = s(:class_name, :FooBar) + check "ClassExpression" + end +end