diff --git a/languages/scheme/lib/Scheme/Generator.pm b/languages/scheme/lib/Scheme/Generator.pm index 7584e9e025..51bc574c23 100644 --- a/languages/scheme/lib/Scheme/Generator.pm +++ b/languages/scheme/lib/Scheme/Generator.pm @@ -1694,6 +1694,9 @@ sub _op_char_ready_p { sub _op_write { my ( $self, $node ) = @_; + $self->_add_comment( 'start of _op_write' ); + # die Dumper( $self, $node ); + my $temp = 'none'; for ( _get_args($node) ) { @@ -1707,13 +1710,30 @@ sub _op_write { } } + $self->_add_comment( 'end of _op_write' ); + return $temp; # We need to return something } sub _op_display { + my ( $self, $node ) = @_; + + return _op_write( @_ ); } sub _op_newline { + my ( $self, $node ) = @_; + + _num_arg( $node, 0, 'newline' ); + + return $self->_generate( + { children => [ { value => 'write' }, + { children => [ { value => q{"\n"} }, + ] + }, + ], + } + ); } sub _op_write_char { diff --git a/languages/scheme/t/io/basic.t b/languages/scheme/t/io/basic.t index 6b95b99dad..bef4c92a13 100644 --- a/languages/scheme/t/io/basic.t +++ b/languages/scheme/t/io/basic.t @@ -8,17 +8,58 @@ use warnings; use FindBin; use lib "$FindBin::Bin/../../lib"; -use Test::More tests => 2; +use Test::More tests => 9; use Parrot::Test; -language_output_is( 'Scheme', <<'CODE', '0', "basic write" ); +language_output_is( 'Scheme', <<'CODE', '0', 'write, one integer' ); (write 0) CODE -language_output_is( 'Scheme', <<'CODE', '01', "basic write" ); +language_output_is( 'Scheme', <<'CODE', '01', 'write, two integers' ); (write 0 1) CODE +TODO: +{ + local $TODO = 'no support for strings yet'; + + language_output_is( 'Scheme', <<'CODE', 'asdf', 'write, one string' ); +(write "asdf") +CODE + + language_output_is( 'Scheme', <<'CODE', 'hello world', 'write, three strings' ); +(write "hello", " ", "world") +CODE +} + +language_output_is( 'Scheme', <<'CODE', '0', 'display, one integer' ); +(display 0) +CODE + +language_output_is( 'Scheme', <<'CODE', '01', 'display, two integers' ); +(display 0 1) +CODE + +TODO: +{ + local $TODO = 'no support for strings yet'; + + language_output_is( 'Scheme', <<'CODE', 'asdf', 'display, one string' ); +(display "asdf") +CODE + + language_output_is( 'Scheme', <<'CODE', 'hello world', 'display, three strings' ); +(display "hello", " ", "world") +CODE + + language_output_is( 'Scheme', <<'CODE', "\n17\n", 'display, three strings' ); +(newline) +(write 17) +(newline) +CODE +} + + # Local Variables: # mode: cperl # cperl-indent-level: 4