Skip to content

Commit 9dbbd01

Browse files
committed
Parser string encoding is always ASCII-compatible
1 parent 6743e62 commit 9dbbd01

File tree

1 file changed

+5
-22
lines changed

1 file changed

+5
-22
lines changed

parse.y

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2202,8 +2202,7 @@ rb_parser_enc_associate(struct parser_params *p, rb_parser_string_t *str, rb_enc
22022202
{
22032203
if (rb_parser_str_get_encoding(str) == enc)
22042204
return str;
2205-
if (!PARSER_ENC_CODERANGE_ASCIIONLY(str) ||
2206-
!rb_enc_asciicompat(enc)) {
2205+
if (!PARSER_ENC_CODERANGE_ASCIIONLY(str)) {
22072206
PARSER_ENC_CODERANGE_CLEAR(str);
22082207
}
22092208
rb_parser_string_set_encoding(str, enc);
@@ -2216,18 +2215,6 @@ rb_parser_is_ascii_string(struct parser_params *p, rb_parser_string_t *str)
22162215
return rb_parser_enc_str_coderange(p, str) == RB_PARSER_ENC_CODERANGE_7BIT;
22172216
}
22182217

2219-
static int
2220-
rb_parser_enc_str_asciionly_p(struct parser_params *p, rb_parser_string_t *str)
2221-
{
2222-
rb_encoding *enc = rb_parser_str_get_encoding(str);
2223-
2224-
if (!rb_enc_asciicompat(enc))
2225-
return FALSE;
2226-
else if (rb_parser_is_ascii_string(p, str))
2227-
return TRUE;
2228-
return FALSE;
2229-
}
2230-
22312218
static rb_encoding *
22322219
rb_parser_enc_compatible_latter(struct parser_params *p, rb_parser_string_t *str1, rb_parser_string_t *str2, rb_encoding *enc1, rb_encoding *enc2)
22332220
{
@@ -2236,10 +2223,7 @@ rb_parser_enc_compatible_latter(struct parser_params *p, rb_parser_string_t *str
22362223
if (PARSER_STRING_LEN(str2) == 0)
22372224
return enc1;
22382225
if (PARSER_STRING_LEN(str1) == 0)
2239-
return (rb_enc_asciicompat(enc1) && rb_parser_enc_str_asciionly_p(p, str2)) ? enc1 : enc2;
2240-
if (!rb_enc_asciicompat(enc1) || !rb_enc_asciicompat(enc2)) {
2241-
return 0;
2242-
}
2226+
return rb_parser_is_ascii_string(p, str2) ? enc1 : enc2;
22432227

22442228
cr1 = rb_parser_enc_str_coderange(p, str1);
22452229
cr2 = rb_parser_enc_str_coderange(p, str2);
@@ -6991,7 +6975,6 @@ rb_parser_str_escape(struct parser_params *p, rb_parser_string_t *str)
69916975
const char *prev = ptr;
69926976
char charbuf[5] = {'\\', 'x', 0, 0, 0};
69936977
rb_parser_string_t * result = rb_parser_string_new(p, 0, 0);
6994-
int asciicompat = rb_enc_asciicompat(enc);
69956978

69966979
while (ptr < pend) {
69976980
unsigned int c;
@@ -7021,7 +7004,7 @@ rb_parser_str_escape(struct parser_params *p, rb_parser_string_t *str)
70217004
parser_str_cat_cstr(result, cc);
70227005
prev = ptr;
70237006
}
7024-
else if (asciicompat && rb_enc_isascii(c, enc) && ISPRINT(c)) {
7007+
else if (rb_enc_isascii(c, enc) && ISPRINT(c)) {
70257008
}
70267009
else {
70277010
if (ptr - n > prev) {
@@ -7703,7 +7686,7 @@ parser_str_new(struct parser_params *p, const char *ptr, long len, rb_encoding *
77037686

77047687
pstr = rb_parser_encoding_string_new(p, ptr, len, enc);
77057688

7706-
if (!(func & STR_FUNC_REGEXP) && rb_enc_asciicompat(enc)) {
7689+
if (!(func & STR_FUNC_REGEXP)) {
77077690
if (rb_parser_is_ascii_string(p, pstr)) {
77087691
}
77097692
else if (rb_is_usascii_enc((void *)enc0) && enc != rb_utf8_encoding()) {
@@ -9187,7 +9170,7 @@ here_document(struct parser_params *p, rb_strterm_heredoc_t *here)
91879170
}
91889171
else {
91899172
if ((len = p->lex.pcur - p->lex.ptok) > 0) {
9190-
if (!(func & STR_FUNC_REGEXP) && rb_enc_asciicompat(enc)) {
9173+
if (!(func & STR_FUNC_REGEXP)) {
91919174
int cr = ENC_CODERANGE_UNKNOWN;
91929175
rb_str_coderange_scan_restartable(p->lex.ptok, p->lex.pcur, enc, &cr);
91939176
if (cr != ENC_CODERANGE_7BIT &&

0 commit comments

Comments
 (0)