Skip to content

Commit b48056e

Browse files
committed
Adopt latest changes in Prism
String literals in `when` clause becomes frozen (see ruby/prism#2489).
1 parent a219522 commit b48056e

File tree

4 files changed

+19
-15
lines changed

4 files changed

+19
-15
lines changed

spec/truffle/parsing/fixtures/case/with_expression_and_when/with_splat_operator_and_preceding_and_following_elements.yaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -103,20 +103,20 @@ ast: |
103103
sourceLength = 0
104104
children:
105105
values = [
106-
StringLiteralNode
106+
FrozenStringLiteralNode
107107
attributes:
108-
encoding = UTF-8
108+
definition = expression
109109
flags = 0
110+
frozenString = bar
110111
sourceCharIndex = 31
111112
sourceLength = 5
112-
tstring = bar
113-
StringLiteralNode
113+
FrozenStringLiteralNode
114114
attributes:
115-
encoding = UTF-8
115+
definition = expression
116116
flags = 0
117+
frozenString = baz
117118
sourceCharIndex = 38
118119
sourceLength = 5
119-
tstring = baz
120120
]
121121
]
122122
ReadLocalVariableNode

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,11 @@ public abstract class YARPBaseTranslator extends AbstractNodeVisitor<RubyNode> {
4848
protected final Node currentNode;
4949

5050
public static final Nodes.Node[] EMPTY_NODE_ARRAY = Nodes.Node.EMPTY_ARRAY;
51+
public static final Nodes.OptionalParameterNode[] EMPTY_OPTIONAL_PARAMETER_NODE_ARRAY = {};
52+
public static final Nodes.BlockLocalVariableNode[] EMPTY_BLOCK_LOCAL_VARIABLE_NODE_ARRAY = {};
5153

5254
public static final Nodes.ParametersNode ZERO_PARAMETERS_NODE = new Nodes.ParametersNode(EMPTY_NODE_ARRAY,
53-
EMPTY_NODE_ARRAY, null, EMPTY_NODE_ARRAY, EMPTY_NODE_ARRAY, null, null, 0, 0);
55+
EMPTY_OPTIONAL_PARAMETER_NODE_ARRAY, null, EMPTY_NODE_ARRAY, EMPTY_NODE_ARRAY, null, null, 0, 0);
5456

5557
public static final short NO_FLAGS = 0;
5658

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

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -493,7 +493,8 @@ private RubyNode translateBlockAndLambda(Nodes.Node node, Nodes.Node parametersN
493493
requireds[i - 1] = new Nodes.RequiredParameterNode(NO_FLAGS, name, 0, 0);
494494
}
495495

496-
parameters = new Nodes.ParametersNode(requireds, EMPTY_NODE_ARRAY, null, EMPTY_NODE_ARRAY,
496+
parameters = new Nodes.ParametersNode(requireds, EMPTY_OPTIONAL_PARAMETER_NODE_ARRAY, null,
497+
EMPTY_NODE_ARRAY,
497498
EMPTY_NODE_ARRAY, null, null, 0, 0);
498499
} else if (parametersNode == null) {
499500
parameters = ZERO_PARAMETERS_NODE;
@@ -1716,9 +1717,11 @@ public RubyNode visitForNode(Nodes.ForNode node) {
17161717
final String parameterName = environment.allocateLocalTemp("for");
17171718

17181719
final var requireds = new Nodes.Node[]{ new Nodes.RequiredParameterNode(NO_FLAGS, parameterName, 0, 0) };
1719-
final var parameters = new Nodes.ParametersNode(requireds, Nodes.Node.EMPTY_ARRAY, null, Nodes.Node.EMPTY_ARRAY,
1720+
final var parameters = new Nodes.ParametersNode(requireds, EMPTY_OPTIONAL_PARAMETER_NODE_ARRAY, null,
1721+
Nodes.Node.EMPTY_ARRAY,
17201722
Nodes.Node.EMPTY_ARRAY, null, null, 0, 0);
1721-
final var blockParameters = new Nodes.BlockParametersNode(parameters, Nodes.Node.EMPTY_ARRAY, 0, 0);
1723+
final var blockParameters = new Nodes.BlockParametersNode(parameters, EMPTY_BLOCK_LOCAL_VARIABLE_NODE_ARRAY, 0,
1724+
0);
17221725

17231726
final var readParameter = new Nodes.LocalVariableReadNode(parameterName, 0, 0, 0);
17241727
final Nodes.Node writeIndex;
@@ -2669,8 +2672,7 @@ public RubyNode visitMatchWriteNode(Nodes.MatchWriteNode node) {
26692672
String[] names = new String[numberOfNames];
26702673

26712674
for (int i = 0; i < numberOfNames; i++) {
2672-
// Nodes.LocalVariableTargetNode is the only expected node here
2673-
names[i] = ((Nodes.LocalVariableTargetNode) node.targets[i]).name;
2675+
names[i] = node.targets[i].name;
26742676
}
26752677

26762678
final RubyNode[] setters = new RubyNode[numberOfNames];
@@ -3801,8 +3803,7 @@ private ArgumentDescriptor[] parametersNodeToArgumentDescriptors(Nodes.Parameter
38013803
}
38023804

38033805
for (var node : parametersNode.optionals) {
3804-
String name = ((Nodes.OptionalParameterNode) node).name;
3805-
var descriptor = new ArgumentDescriptor(ArgumentType.opt, name);
3806+
var descriptor = new ArgumentDescriptor(ArgumentType.opt, node.name);
38063807
descriptors.add(descriptor);
38073808
}
38083809

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@
8484

8585
import java.util.ArrayList;
8686
import java.util.Arrays;
87+
import java.util.EnumSet;
8788
import java.util.List;
8889

8990
public final class YARPTranslatorDriver {
@@ -388,7 +389,7 @@ public static ParseResult parseToYARPAST(RubySource rubySource, String sourcePat
388389
scopes = new byte[0][][];
389390
}
390391

391-
byte[] parsingOptions = ParsingOptions.serialize(filepath, line, encoding, frozenStringLiteral, version,
392+
byte[] parsingOptions = ParsingOptions.serialize(filepath, line, encoding, frozenStringLiteral, EnumSet.noneOf(ParsingOptions.CommandLine.class), version,
392393
scopes);
393394
byte[] serializedBytes = Parser.parseAndSerialize(sourceBytes, parsingOptions);
394395

0 commit comments

Comments
 (0)