From 30d9c59b5f3cba8b5d632d20c2370e82d8ba69ca Mon Sep 17 00:00:00 2001 From: Zefram Date: Sat, 1 Feb 2014 01:27:13 +0000 Subject: subroutine signatures Declarative syntax to unwrap argument list into lexical variables. "sub foo ($a,$b) {...}" checks number of arguments and puts the arguments into lexical variables. Signatures are not equivalent to the existing idiom of "sub foo { my($a,$b) = @_; ... }". Signatures are only available by enabling a non-default feature, and generate warnings about being experimental. The syntactic clash with prototypes is managed by disabling the short prototype syntax when signatures are enabled. --- feature.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'feature.h') diff --git a/feature.h b/feature.h index c98a5b3294..698302c43f 100644 --- a/feature.h +++ b/feature.h @@ -80,6 +80,12 @@ FEATURE_IS_ENABLED("arybase")) \ ) +#define FEATURE_SIGNATURES_IS_ENABLED \ + ( \ + CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \ + FEATURE_IS_ENABLED("signatures") \ + ) + #define FEATURE___SUB___IS_ENABLED \ ( \ CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_515 \ -- cgit v1.2.1