aboutsummaryrefslogtreecommitdiffstats
path: root/parse.y
diff options
context:
space:
mode:
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y14
1 files changed, 11 insertions, 3 deletions
diff --git a/parse.y b/parse.y
index 3eccd0cb7a..afe56e5664 100644
--- a/parse.y
+++ b/parse.y
@@ -488,9 +488,8 @@ static NODE *new_const_op_assign_gen(struct parser_params *parser, NODE *lhs, ID
#define const_path_field(w, n) NEW_COLON2(w, n)
#define top_const_field(n) NEW_COLON3(n)
-#define const_decl(path) ( \
- ((in_def || in_single) ? yyerror("dynamic constant assignment") : (void)0), \
- NEW_CDECL(0, 0, (path)))
+static NODE *const_decl_gen(struct parser_params *parser, NODE* path);
+#define const_decl(path) const_decl_gen(parser, path)
#define var_field(n) (n)
#define backref_assign_error(n, a) (rb_backref_error(n), NEW_BEGIN(0))
@@ -10232,6 +10231,15 @@ new_const_op_assign_gen(struct parser_params *parser, NODE *lhs, ID op, NODE *rh
fixpos(asgn, lhs);
return asgn;
}
+
+static NODE *
+const_decl_gen(struct parser_params *parser, NODE *path)
+{
+ if (in_def || in_single) {
+ yyerror("dynamic constant assignment");
+ }
+ return NEW_CDECL(0, 0, (path));
+}
#else
static VALUE
new_op_assign_gen(struct parser_params *parser, VALUE lhs, VALUE op, VALUE rhs)