Skip to content

Commit 3bb3466

Browse files
committed
Adapt to YARP changes
1 parent bb56d3b commit 3bb3466

File tree

2 files changed

+42
-86
lines changed

2 files changed

+42
-86
lines changed

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

Lines changed: 40 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -174,21 +174,21 @@ public RubyRootNode translate(Nodes.Node node) {
174174
Split.HEURISTIC, null, Arity.NO_ARGUMENTS);
175175
}
176176

177-
public RubyNode visitAliasNode(Nodes.AliasNode node) {
178-
RubyNode rubyNode;
177+
@Override
178+
public RubyNode visitAliasGlobalVariableNode(Nodes.AliasGlobalVariableNode node) {
179+
RubyNode rubyNode = new AliasGlobalVarNode(toString(node.old_name), toString(node.new_name));
179180

180-
if (node.new_name instanceof Nodes.GlobalVariableReadNode &&
181-
node.old_name instanceof Nodes.GlobalVariableReadNode) {
182-
rubyNode = new AliasGlobalVarNode(
183-
toString(node.old_name),
184-
toString(node.new_name));
185-
} else {
186-
// expected InterpolatedSymbolNode (that should be evaluated in runtime)
187-
// or SymbolNode
188-
rubyNode = new ModuleNodes.AliasKeywordNode(
189-
node.new_name.accept(this),
190-
node.old_name.accept(this));
191-
}
181+
assignNodePositionInSource(node, rubyNode);
182+
return rubyNode;
183+
}
184+
185+
@Override
186+
public RubyNode visitAliasMethodNode(Nodes.AliasMethodNode node) {
187+
// expected InterpolatedSymbolNode (that should be evaluated in runtime)
188+
// or SymbolNode
189+
RubyNode rubyNode = new ModuleNodes.AliasKeywordNode(
190+
node.new_name.accept(this),
191+
node.old_name.accept(this));
192192

193193
assignNodePositionInSource(node, rubyNode);
194194
return rubyNode;
@@ -452,14 +452,6 @@ public RubyNode visitCallNode(Nodes.CallNode node) {
452452
return rubyCallNode;
453453
}
454454

455-
public RubyNode visitCallOperatorAndWriteNode(Nodes.CallOperatorAndWriteNode node) {
456-
return defaultVisit(node);
457-
}
458-
459-
public RubyNode visitCallOperatorOrWriteNode(Nodes.CallOperatorOrWriteNode node) {
460-
return defaultVisit(node);
461-
}
462-
463455
public RubyNode visitCallOperatorWriteNode(Nodes.CallOperatorWriteNode node) {
464456
return defaultVisit(node);
465457
}
@@ -473,30 +465,21 @@ public RubyNode visitCaseNode(Nodes.CaseNode node) {
473465
}
474466

475467
public RubyNode visitClassNode(Nodes.ClassNode node) {
476-
final String name;
477468
final RubyNode lexicalParent = translateCPath(node.constant_path);
478469
final RubyNode superClass;
479470

480-
if (node.constant_path instanceof Nodes.ConstantReadNode constantNode) {
481-
name = toString(constantNode);
482-
} else if (node.constant_path instanceof Nodes.ConstantPathNode pathNode) {
483-
name = toString(pathNode.child);
484-
} else {
485-
throw CompilerDirectives.shouldNotReachHere();
486-
}
487-
488471
if (node.superclass != null) {
489472
superClass = node.superclass.accept(this);
490473
} else {
491474
superClass = null;
492475
}
493476

494-
final DefineClassNode defineOrGetClass = new DefineClassNode(name, lexicalParent, superClass);
477+
final DefineClassNode defineOrGetClass = new DefineClassNode(node.name, lexicalParent, superClass);
495478

496479
final RubyNode rubyNode = openModule(
497480
node,
498481
defineOrGetClass,
499-
name,
482+
node.name,
500483
node.body,
501484
OpenModule.CLASS,
502485
shouldUseDynamicConstantLookupForModuleBody(node));
@@ -508,7 +491,7 @@ public RubyNode visitClassNode(Nodes.ClassNode node) {
508491
public RubyNode visitClassVariableReadNode(Nodes.ClassVariableReadNode node) {
509492
final RubyNode rubyNode = new ReadClassVariableNode(
510493
getLexicalScopeNode("class variable lookup", node),
511-
toString(node));
494+
node.name);
512495

513496
assignNodePositionInSource(node, rubyNode);
514497
return rubyNode;
@@ -518,7 +501,7 @@ public RubyNode visitClassVariableWriteNode(Nodes.ClassVariableWriteNode node) {
518501
final RubyNode rhs = node.value.accept(this);
519502
final RubyNode rubyNode = new WriteClassVariableNode(
520503
getLexicalScopeNode("set dynamic class variable", node),
521-
toString(node.name),
504+
node.name,
522505
rhs);
523506

524507
assignNodePositionInSource(node, rubyNode);
@@ -528,7 +511,7 @@ public RubyNode visitClassVariableWriteNode(Nodes.ClassVariableWriteNode node) {
528511
public RubyNode visitClassVariableTargetNode(Nodes.ClassVariableTargetNode node) {
529512
final RubyNode rubyNode = new WriteClassVariableNode(
530513
getLexicalScopeNode("set dynamic class variable", node),
531-
toString(node.name),
514+
node.name,
532515
null);
533516

534517
assignNodePositionInSource(node, rubyNode);
@@ -538,7 +521,7 @@ public RubyNode visitClassVariableTargetNode(Nodes.ClassVariableTargetNode node)
538521
public RubyNode visitConstantPathNode(Nodes.ConstantPathNode node) {
539522
assert node.child instanceof Nodes.ConstantReadNode;
540523

541-
final String name = toString(node.child);
524+
final String name = ((Nodes.ConstantReadNode) node.child).name;
542525
final RubyNode moduleNode;
543526

544527
if (node.parent != null) {
@@ -567,7 +550,7 @@ public RubyNode visitConstantPathWriteNode(Nodes.ConstantPathWriteNode node) {
567550
moduleNode = new ObjectClassLiteralNode();
568551
}
569552

570-
final String name = toString(constantPathNode.child);
553+
final String name = ((Nodes.ConstantReadNode) constantPathNode.child).name;
571554
final RubyNode value = node.value.accept(this);
572555
final RubyNode rubyNode = new WriteConstantNode(name, moduleNode, value);
573556

@@ -585,7 +568,7 @@ public RubyNode visitConstantPathTargetNode(Nodes.ConstantPathTargetNode node) {
585568
moduleNode = new ObjectClassLiteralNode();
586569
}
587570

588-
final String name = toString(node.child);
571+
final String name = ((Nodes.ConstantReadNode) node.child).name;
589572
final RubyNode rubyNode = new WriteConstantNode(name, moduleNode, null);
590573

591574
assignNodePositionInSource(node, rubyNode);
@@ -594,38 +577,35 @@ public RubyNode visitConstantPathTargetNode(Nodes.ConstantPathTargetNode node) {
594577

595578
public RubyNode visitConstantReadNode(Nodes.ConstantReadNode node) {
596579
final RubyNode rubyNode;
597-
final String name = toString(node);
598580

599581
if (environment.isDynamicConstantLookup()) {
600582
if (language.options.LOG_DYNAMIC_CONSTANT_LOOKUP) {
601583
RubyLanguage.LOGGER.info(() -> "dynamic constant lookup at " +
602584
RubyLanguage.getCurrentContext().fileLine(getSourceSection(node)));
603585
}
604586

605-
rubyNode = new ReadConstantWithDynamicScopeNode(name);
587+
rubyNode = new ReadConstantWithDynamicScopeNode(node.name);
606588
} else {
607589
final LexicalScope lexicalScope = environment.getStaticLexicalScope();
608-
rubyNode = new ReadConstantWithLexicalScopeNode(lexicalScope, name);
590+
rubyNode = new ReadConstantWithLexicalScopeNode(lexicalScope, node.name);
609591
}
610592

611593
assignNodePositionInSource(node, rubyNode);
612594
return rubyNode;
613595
}
614596

615597
public RubyNode visitConstantWriteNode(Nodes.ConstantWriteNode node) {
616-
final String name = toString(node.name_loc);
617598
final RubyNode value = node.value.accept(this);
618599
final RubyNode moduleNode = getLexicalScopeModuleNode("set dynamic constant", node);
619-
final RubyNode rubyNode = new WriteConstantNode(name, moduleNode, value);
600+
final RubyNode rubyNode = new WriteConstantNode(node.name, moduleNode, value);
620601

621602
assignNodePositionInSource(node, rubyNode);
622603
return rubyNode;
623604
}
624605

625606
public RubyNode visitConstantTargetNode(Nodes.ConstantTargetNode node) {
626-
final String name = toString(node);
627607
final RubyNode moduleNode = getLexicalScopeModuleNode("set dynamic constant", node);
628-
final RubyNode rubyNode = new WriteConstantNode(name, moduleNode, null);
608+
final RubyNode rubyNode = new WriteConstantNode(node.name, moduleNode, null);
629609

630610
assignNodePositionInSource(node, rubyNode);
631611
return rubyNode;
@@ -725,23 +705,21 @@ public RubyNode visitForwardingSuperNode(Nodes.ForwardingSuperNode node) {
725705
}
726706

727707
public RubyNode visitGlobalVariableReadNode(Nodes.GlobalVariableReadNode node) {
728-
final RubyNode rubyNode = ReadGlobalVariableNodeGen.create(toString(node));
708+
final RubyNode rubyNode = ReadGlobalVariableNodeGen.create(node.name);
729709
assignNodePositionInSource(node, rubyNode);
730710
return rubyNode;
731711
}
732712

733713
public RubyNode visitGlobalVariableWriteNode(Nodes.GlobalVariableWriteNode node) {
734-
final String name = toString(node.name);
735714
final RubyNode value = node.value.accept(this);
736-
final RubyNode rubyNode = WriteGlobalVariableNodeGen.create(name, value);
715+
final RubyNode rubyNode = WriteGlobalVariableNodeGen.create(node.name, value);
737716

738717
assignNodePositionInSource(node, rubyNode);
739718
return rubyNode;
740719
}
741720

742721
public RubyNode visitGlobalVariableTargetNode(Nodes.GlobalVariableTargetNode node) {
743-
final String name = toString(node.name);
744-
final RubyNode rubyNode = WriteGlobalVariableNodeGen.create(name, null);
722+
final RubyNode rubyNode = WriteGlobalVariableNodeGen.create(node.name, null);
745723

746724
assignNodePositionInSource(node, rubyNode);
747725
return rubyNode;
@@ -848,25 +826,22 @@ public RubyNode visitInNode(Nodes.InNode node) {
848826
}
849827

850828
public RubyNode visitInstanceVariableReadNode(Nodes.InstanceVariableReadNode node) {
851-
final String name = toString(node);
852-
final RubyNode rubyNode = new ReadInstanceVariableNode(name);
829+
final RubyNode rubyNode = new ReadInstanceVariableNode(node.name);
853830

854831
assignNodePositionInSource(node, rubyNode);
855832
return rubyNode;
856833
}
857834

858835
public RubyNode visitInstanceVariableWriteNode(Nodes.InstanceVariableWriteNode node) {
859-
final String name = toString(node.name);
860836
final RubyNode value = node.value.accept(this);
861-
final RubyNode rubyNode = WriteInstanceVariableNodeGen.create(name, value);
837+
final RubyNode rubyNode = WriteInstanceVariableNodeGen.create(node.name, value);
862838

863839
assignNodePositionInSource(node, rubyNode);
864840
return rubyNode;
865841
}
866842

867843
public RubyNode visitInstanceVariableTargetNode(Nodes.InstanceVariableTargetNode node) {
868-
final String name = toString(node.name);
869-
final RubyNode rubyNode = WriteInstanceVariableNodeGen.create(name, null);
844+
final RubyNode rubyNode = WriteInstanceVariableNodeGen.create(node.name, null);
870845

871846
assignNodePositionInSource(node, rubyNode);
872847
return rubyNode;
@@ -954,8 +929,7 @@ public RubyNode visitInterpolatedSymbolNode(Nodes.InterpolatedSymbolNode node) {
954929
}
955930

956931
public RubyNode visitInterpolatedXStringNode(Nodes.InterpolatedXStringNode node) {
957-
final Nodes.InterpolatedStringNode stringNode = new Nodes.InterpolatedStringNode(
958-
node.opening_loc, node.parts, node.closing_loc, node.startOffset, node.length);
932+
var stringNode = new Nodes.InterpolatedStringNode(node.parts, node.startOffset, node.length);
959933
final RubyNode string = stringNode.accept(this);
960934
final RubyNode rubyNode = createCallNode(new SelfNode(), "`", string);
961935

@@ -972,7 +946,7 @@ public RubyNode visitLambdaNode(Nodes.LambdaNode node) {
972946
}
973947

974948
public RubyNode visitLocalVariableReadNode(Nodes.LocalVariableReadNode node) {
975-
final String name = toString(node);
949+
final String name = node.name;
976950

977951
final RubyNode rubyNode = environment.findLocalVarNode(name, null);
978952
assert rubyNode != null : name;
@@ -982,7 +956,7 @@ public RubyNode visitLocalVariableReadNode(Nodes.LocalVariableReadNode node) {
982956
}
983957

984958
public RubyNode visitLocalVariableWriteNode(Nodes.LocalVariableWriteNode node) {
985-
final String name = toString(node.name);
959+
final String name = node.name;
986960

987961
if (environment.getNeverAssignInParentScope()) {
988962
environment.declareVar(name);
@@ -1016,8 +990,7 @@ public RubyNode visitLocalVariableWriteNode(Nodes.LocalVariableWriteNode node) {
1016990
public RubyNode visitLocalVariableTargetNode(Nodes.LocalVariableTargetNode node) {
1017991
// TODO: this could be done more directly but the logic of visitLocalVariableWriteNode() needs to be simpler first
1018992
return visitLocalVariableWriteNode(
1019-
new Nodes.LocalVariableWriteNode(node.name, node.depth, null, null, null, node.startOffset,
1020-
node.length));
993+
new Nodes.LocalVariableWriteNode(node.name, node.depth, null, node.startOffset, node.length));
1021994
}
1022995

1023996
public RubyNode visitMatchPredicateNode(Nodes.MatchPredicateNode node) {
@@ -1033,23 +1006,14 @@ public RubyNode visitMissingNode(Nodes.MissingNode node) {
10331006
}
10341007

10351008
public RubyNode visitModuleNode(Nodes.ModuleNode node) {
1036-
final String name;
10371009
final RubyNode lexicalParent = translateCPath(node.constant_path);
10381010

1039-
if (node.constant_path instanceof Nodes.ConstantReadNode constantNode) {
1040-
name = toString(constantNode);
1041-
} else if (node.constant_path instanceof Nodes.ConstantPathNode pathNode) {
1042-
name = toString(pathNode.child);
1043-
} else {
1044-
throw CompilerDirectives.shouldNotReachHere();
1045-
}
1046-
1047-
final DefineModuleNode defineModuleNode = DefineModuleNodeGen.create(name, lexicalParent);
1011+
final DefineModuleNode defineModuleNode = DefineModuleNodeGen.create(node.name, lexicalParent);
10481012

10491013
final RubyNode rubyNode = openModule(
10501014
node,
10511015
defineModuleNode,
1052-
name,
1016+
node.name,
10531017
node.body,
10541018
OpenModule.MODULE,
10551019
shouldUseDynamicConstantLookupForModuleBody(node));
@@ -1348,8 +1312,8 @@ public RubyNode visitWhileNode(Nodes.WhileNode node) {
13481312
}
13491313

13501314
public RubyNode visitXStringNode(Nodes.XStringNode node) {
1351-
final Nodes.StringNode stringNode = new Nodes.StringNode(
1352-
node.opening_loc, node.content_loc, node.closing_loc, node.unescaped, node.startOffset, node.length);
1315+
// TODO: pass flags, needs https://github.com/ruby/yarp/issues/1567
1316+
var stringNode = new Nodes.StringNode((short) 0, null, null, node.unescaped, node.startOffset, node.length);
13531317
final RubyNode string = stringNode.accept(this);
13541318
final RubyNode rubyNode = createCallNode(new SelfNode(), "`", string);
13551319

@@ -1694,16 +1658,6 @@ protected boolean isSideEffectFreeRescueExpression(Nodes.Node node) {
16941658
node instanceof Nodes.NilNode;
16951659
}
16961660

1697-
private String toString(byte[] bytes) {
1698-
return TStringUtils.toJavaStringOrThrow(
1699-
TruffleString.fromByteArrayUncached(bytes, sourceEncoding.tencoding, false), sourceEncoding);
1700-
}
1701-
1702-
private String toString(Nodes.Location location) {
1703-
return TStringUtils.toJavaStringOrThrow(TruffleString.fromByteArrayUncached(sourceBytes, location.startOffset,
1704-
location.length, sourceEncoding.tencoding, false), sourceEncoding);
1705-
}
1706-
17071661
private String toString(Nodes.Node node) {
17081662
return TStringUtils.toJavaStringOrThrow(TruffleString.fromByteArrayUncached(sourceBytes, node.startOffset,
17091663
node.length, sourceEncoding.tencoding, false), sourceEncoding);

tool/import-yarp.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ set -e
55

66
YARP=../../yarp
77

8+
export YARP_SERIALIZE_ONLY_SEMANTICS_FIELDS=1
9+
810
# Create generated files
911
pushd $YARP
1012
bundle

0 commit comments

Comments
 (0)