# New Ticket Created by  Itsuki Toyota 
# Please include the string:  [perl #129820]
# in the subject line of all future correspondence about this issue. 
# <URL: https://rt.perl.org/Ticket/Display.html?id=129820 >


In the following example, ` my &ook = sub (Int $piyo) ` has wrong signature (` 
my &ook = sub (Int $piyo, Num $fuga) ` is a right one)and it returns the error 
message of "Internal error: Unwound entire stack and missed handler".
Honestly to say, it doesn't seem to make sense to me and I can't imagine what 
to do.

* codes *
t/02-callback.t
------------------------

use v6;
use Test;
use NativeCall;
use lib <lib t>;
use CompileTestLib;

compile_test_lib('02-callback');
my sub doit(&foo_t (int32, num64 --> int32)) is native("./02-callback") { * }

{
    my &ook = sub (Int $piyo) {
        return 0;
    }
    doit(&ook);
}

done-testing;
------------------------

t/02-callback.c
------------------------
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "02-callback.h"

#ifdef _WIN32
#define DLLEXPORT __declspec(dllexport)
#else
#define DLLEXPORT extern
#endif

int doit(foo_t foo){ foo(10,3.1); }
------------------------

t/02-callback.h

------------------------
#if ! defined(HEADER_CALLBACK_H)
#define HEADER_CALLBACK_H

#ifdef __cplusplus
extern "C" {
#endif

typedef int (*foo_t)(
                     int piyo,
                     double fuga
                     );

#ifdef __cplusplus
} /* closing brace for extern "C" */
#endif

#endif /* HEADER_CALLBACK_H */

------------------------



* results *
------------------------

$ mi6 test -v t/02-callback.t
==> Set PERL6LIB=/home/itoyota/Programs/p6-Foo/lib
==> prove -e /home/itoyota/.rakudobrew/bin/../moar-nom/install/bin/perl6 -r -v 
t/02-callback.t
t/02-callback.t .. Internal error: Unwound entire stack and missed handler
Dubious, test returned 1 (wstat 256, 0x100)
No subtests run 

Test Summary Report
-------------------
t/02-callback.t (Wstat: 256 Tests: 0 Failed: 0)
  Non-zero exit status: 1
  Parse errors: No plan found in TAP output
Files=1, Tests=0,  0 wallclock secs ( 0.01 usr  0.01 sys +  0.45 cusr  0.06 
csys =  0.53 CPU)
Result: FAIL
------------------------



$ perl6 --version
This is Rakudo version 2016.09-105-g4abc28c built on MoarVM version 
2016.09-13-g34c375a
implementing Perl 6.c.

Reply via email to