Skip to content

Commit d88c8fc

Browse files
committed
Make `` literals frozen
1 parent 9a145fc commit d88c8fc

File tree

5 files changed

+14
-15
lines changed

5 files changed

+14
-15
lines changed

spec/truffle/parsing/fixtures/strings/backtick_literal.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ ast: |
2323
notRuby2KeywordsHashProfile = false
2424
children:
2525
arguments = [
26-
StringLiteralNode
26+
FrozenStringLiteralNode
2727
attributes:
28-
encoding = UTF-8
28+
definition = expression
2929
flags = 0
30-
tstring = echo 1
30+
frozenString = echo 1
3131
]
3232
receiver =
3333
SelfNode
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
subject: "String"
2-
description: "backtick literal / encoding / when there are non-ASCII characters"
2+
description: "backtick literal / encoding / when there are ASCII and non-ASCII characters"
33
notes: >
44
String may be forced to the BINARY (ASCII-8BIT) encoding sometimes
55
focused_on_node: "org.truffleruby.language.dispatch.RubyCallNode"
@@ -23,11 +23,11 @@ ast: |
2323
notRuby2KeywordsHashProfile = false
2424
children:
2525
arguments = [
26-
StringLiteralNode
26+
FrozenStringLiteralNode
2727
attributes:
28-
encoding = ASCII-8BIT
28+
definition = expression
2929
flags = 0
30-
tstring = echo \xFF 1
30+
frozenString = echo \xFF 1
3131
]
3232
receiver =
3333
SelfNode

spec/truffle/parsing/fixtures/strings/encoding_of_backtick_literal/when_utf8_characters.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ ast: |
2323
notRuby2KeywordsHashProfile = false
2424
children:
2525
arguments = [
26-
StringLiteralNode
26+
FrozenStringLiteralNode
2727
attributes:
28-
encoding = UTF-8
28+
definition = expression
2929
flags = 0
30-
tstring = echo £ 1
30+
frozenString = echo £ 1
3131
]
3232
receiver =
3333
SelfNode

src/main/java/org/truffleruby/parser/BodyTranslator.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2888,9 +2888,9 @@ private RubyNode translateWhileNode(WhileParseNode node, boolean conditionInvers
28882888

28892889
@Override
28902890
public RubyNode visitXStrNode(XStrParseNode node) {
2891-
final ParseNode argsNode = buildArrayNode(
2892-
node.getPosition(),
2893-
new StrParseNode(node.getPosition(), node.getValue(), node.encoding));
2891+
final var stringNode = new StrParseNode(node.getPosition(), node.getValue(), node.encoding);
2892+
stringNode.setFrozen(true); // it's always frozen
2893+
final ParseNode argsNode = buildArrayNode(node.getPosition(), stringNode);
28942894
final ParseNode callNode = new FCallParseNode(node.getPosition(), "`", argsNode, null);
28952895
final RubyNode ret = callNode.accept(this);
28962896
return addNewlineIfNeeded(node, ret);

src/main/java/org/truffleruby/parser/YARPTranslator.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2832,9 +2832,8 @@ public RubyNode visitWhileNode(Nodes.WhileNode node) {
28322832

28332833
@Override
28342834
public RubyNode visitXStringNode(Nodes.XStringNode node) {
2835-
// TODO: pass flags, needs https://github.com/ruby/yarp/issues/1567
28362835
// convert EncodingFlags to StringFlags
2837-
int flags = 0;
2836+
int flags = Nodes.StringFlags.FROZEN; // it's always frozen
28382837

28392838
if (node.isForcedBinaryEncoding()) {
28402839
flags |= Nodes.StringFlags.FORCED_BINARY_ENCODING;

0 commit comments

Comments
 (0)