aboutsummaryrefslogtreecommitdiffstats
path: root/ruby.c
diff options
context:
space:
mode:
authorJean Boussier <jean.boussier@gmail.com>2024-06-24 11:57:26 +0200
committerJean Boussier <jean.boussier@gmail.com>2024-06-24 12:43:39 +0200
commit95ffcd3f9ff20c3e9b0556672758cf8724542b0c (patch)
treef49f32fd7c0308fbc7ee2ccf4c2266dc1ba1f704 /ruby.c
parent9cfc1362aa6f42f2c654ee155b1cffb9063879f6 (diff)
downloadruby-95ffcd3f9ff20c3e9b0556672758cf8724542b0c.tar.gz
Fix `--debug-frozen-string-literal` to not apply `--disable-frozen-string-literal`
[Feature #20205] This was an undesired side effect. Now that this value is a triplet, we can't assume it's disabled by default.
Diffstat (limited to 'ruby.c')
-rw-r--r--ruby.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/ruby.c b/ruby.c
index fa64dc3caa..84a336e88f 100644
--- a/ruby.c
+++ b/ruby.c
@@ -117,6 +117,7 @@ void rb_warning_category_update(unsigned int mask, unsigned int bits);
#define DEFINE_DEBUG_FEATURE(bit) feature_debug_##bit
enum feature_flag_bits {
EACH_FEATURES(DEFINE_FEATURE, COMMA),
+ DEFINE_FEATURE(frozen_string_literal_set),
feature_debug_flag_first,
#if defined(RJIT_FORCE_ENABLE) || !USE_YJIT
DEFINE_FEATURE(jit) = feature_rjit,
@@ -189,6 +190,7 @@ enum {
COMPILATION_FEATURES = (
0
| FEATURE_BIT(frozen_string_literal)
+ | FEATURE_BIT(frozen_string_literal_set)
| FEATURE_BIT(debug_frozen_string_literal)
),
DEFAULT_FEATURES = (
@@ -197,6 +199,7 @@ enum {
& ~FEATURE_BIT(gems)
#endif
& ~FEATURE_BIT(frozen_string_literal)
+ & ~FEATURE_BIT(frozen_string_literal_set)
& ~feature_jit_mask
)
};
@@ -1033,6 +1036,9 @@ feature_option(const char *str, int len, void *arg, const unsigned int enable)
found:
FEATURE_SET_TO(*argp, mask, (mask & enable));
+ if (NAME_MATCH_P("frozen_string_literal", str, len)) {
+ FEATURE_SET_TO(*argp, FEATURE_BIT(frozen_string_literal_set), FEATURE_BIT(frozen_string_literal_set));
+ }
return;
}
@@ -2437,7 +2443,10 @@ process_options(int argc, char **argv, ruby_cmdline_options_t *opt)
#define SET_COMPILE_OPTION(h, o, name) \
rb_hash_aset((h), ID2SYM(rb_intern_const(#name)), \
RBOOL(FEATURE_SET_P(o->features, name)))
- SET_COMPILE_OPTION(option, opt, frozen_string_literal);
+
+ if (FEATURE_SET_P(opt->features, frozen_string_literal_set)) {
+ SET_COMPILE_OPTION(option, opt, frozen_string_literal);
+ }
SET_COMPILE_OPTION(option, opt, debug_frozen_string_literal);
rb_funcallv(rb_cISeq, rb_intern_const("compile_option="), 1, &option);
#undef SET_COMPILE_OPTION