The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

use strict;
use warnings;
use t::lib::XSP::Test tests => 3;

run_diff xsp_stdout => 'expected';

__DATA__

=== Virtual method
--- xsp_stdout
%module{Foo};

class Foo
{
    virtual int foo(int a)
        %code{%dummy%};
    %name{bar} virtual int foo(int a) const
        %code{%dummy%};
};
--- expected
# XSP preamble


MODULE=Foo

MODULE=Foo PACKAGE=Foo

int
Foo::foo( int a )
  CODE:
    dummy
  OUTPUT: RETVAL

int
Foo::bar( int a )
  CODE:
    dummy
  OUTPUT: RETVAL

=== Virtual destructor
--- xsp_stdout
%module{Foo};

class Foo
{
    virtual ~Foo()
        %code{%dummy%};
};
--- expected
# XSP preamble


MODULE=Foo

MODULE=Foo PACKAGE=Foo

void
Foo::DESTROY()
  CODE:
    dummy

=== Pure-virtual method
--- xsp_stdout
%module{Foo};

class Foo
{
    virtual int foo(int a) = 0
        %code{%dummy%};
    %name{bar} virtual int foo(int a) const = 0
        %code{%dummy%};
};
--- expected
# XSP preamble


MODULE=Foo

MODULE=Foo PACKAGE=Foo

int
Foo::foo( int a )
  CODE:
    dummy
  OUTPUT: RETVAL

int
Foo::bar( int a )
  CODE:
    dummy
  OUTPUT: RETVAL