#define HAVE_PERL_VERSION(R, V, S) \
(PERL_REVISION > (R) || (PERL_REVISION == (R) && (PERL_VERSION > (V) || (PERL_VERSION == (V) && (PERL_SUBVERSION >= (S))))))
+#if HAVE_PERL_VERSION(5, 16, 0)
+ #define IF_HAVE_PERL_5_16(YES, NO) YES
+#else
+ #define IF_HAVE_PERL_5_16(YES, NO) NO
+#endif
+
typedef struct {
enum {
FLAG_NAME_OPTIONAL = 1,
static int parse_fun(pTHX_ OP **pop, const char *keyword_ptr, STRLEN keyword_len, const Spec *spec) {
SV *gen, *declarator, *params, *sv;
- line_t line_start;
int saw_name, saw_colon;
STRLEN len;
char *s;
declarator = sv_2mortal(newSVpvn(keyword_ptr, keyword_len));
params = sv_2mortal(newSVpvs(""));
- line_start = CopLINE(PL_curcop);
lex_read_space(0);
/* function name */
} else {
sv = sv_2mortal(newSVpvs(""));
if (!S_scan_str(aTHX_ sv, TRUE, TRUE)) {
- croak("In %"SVf": malformed prototype", SVfARG(declarator));
+ croak("In %"SVf": prototype not terminated", SVfARG(declarator));
}
sv_catsv(gen, sv);
lex_read_space(0);
if (c == '(') {
sv = sv_2mortal(newSVpvs(""));
if (!S_scan_str(aTHX_ sv, TRUE, TRUE)) {
- croak("In %"SVf": malformed attribute argument list", SVfARG(declarator));
+ croak("In %"SVf": unterminated attribute parameter in attribute list", SVfARG(declarator));
}
sv_catsv(gen, sv);
lex_read_space(0);