8000 [PRISM] Support ASCII-8BIT symbols · ruby/ruby@d3bef1d · GitHub
[go: up one dir, main page]

Skip to content

Commit d3bef1d

Browse files
committed
[PRISM] Support ASCII-8BIT symbols
1 parent 955dfef commit d3bef1d

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

prism_compile.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,13 @@ parse_symbol(const uint8_t *start, const uint8_t *end, const char *encoding)
209209
static inline ID
210210
parse_string_symbol(const pm_symbol_node_t *symbol, const pm_parser_t *parser)
211211
{
212-
const char *encoding = symbol->base.flags & PM_SYMBOL_FLAGS_FORCED_UTF8_ENCODING ? "UTF-8" : parser->encoding->name;
212+
const char *encoding = parser->encoding->name;
213+
if (symbol->base.flags & PM_SYMBOL_FLAGS_FORCED_UTF8_ENCODING) {
214+
encoding = "UTF-8";
215+
}
216+
else if (symbol->base.flags & PM_SYMBOL_FLAGS_FORCED_BINARY_ENCODING) {
217+
encoding = "ASCII-8BIT";
218+
}
213219
const uint8_t *start = pm_string_source(&symbol->unescaped);
214220
return parse_symbol(start, start + pm_string_length(&symbol->unescaped), encoding);
215221
}

test/ruby/test_compile_prism.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -785,6 +785,12 @@ def test_SymbolNode
785785
# -*- coding: us-ascii -*-
786786
:"\u{e9}"
787787
RUBY
788+
789+
# Test ASCII-8BIT symbol in a US-ASCII file
790+
assert_prism_eval(<<~'RUBY', raw: true)
791+
# -*- coding: us-ascii -*-
792+
:"\xff"
793+
RUBY
788794
end
789795

790796
def test_XStringNode

0 commit comments

Comments
 (0)
0