Skip to content

Commit 64abcbe

Browse files
committed
Cleanups
1 parent 15143fd commit 64abcbe

File tree

5 files changed

+25
-62
lines changed

5 files changed

+25
-62
lines changed

src/main/java/org/truffleruby/core/array/ArrayPatternLengthCheckNode.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2015, 2021 Oracle and/or its affiliates. All rights reserved. This
2+
* Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved. This
33
* code is released under a tri EPL/GPL/LGPL license. You can use it,
44
* redistribute it and/or modify it under the terms of the:
55
*
@@ -16,6 +16,7 @@
1616
import com.oracle.truffle.api.frame.VirtualFrame;
1717

1818
public class ArrayPatternLengthCheckNode extends RubyContextSourceNode {
19+
1920
@Child RubyNode currentValueToMatch;
2021
final int patternLength;
2122
final boolean hasRest;
@@ -32,11 +33,11 @@ public ArrayPatternLengthCheckNode(int patternLength, RubyNode currentValueToMat
3233
public Object execute(VirtualFrame frame) {
3334
Object matchArray = currentValueToMatch.execute(frame);
3435
if (isArrayProfile.profile(matchArray instanceof RubyArray)) {
35-
long aSize = ((RubyArray) matchArray).getArraySize();
36+
long size = ((RubyArray) matchArray).getArraySize();
3637
if (hasRest) {
37-
return patternLength <= aSize;
38+
return patternLength <= size;
3839
} else {
39-
return patternLength == aSize;
40+
return patternLength == size;
4041
}
4142
} else {
4243
return false;

src/main/java/org/truffleruby/core/exception/CoreExceptions.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -383,8 +383,7 @@ public RubyException noMemoryError(Node currentNode, OutOfMemoryError javaThrowa
383383
@TruffleBoundary
384384
public RubyException noMatchingPatternError(String message, Node currentNode) {
385385
RubyClass exceptionClass = context.getCoreLibrary().noMatchingPatternErrorClass;
386-
RubyString errorMessage = StringOperations
387-
.createUTF8String(context, language, message);
386+
RubyString errorMessage = StringOperations.createUTF8String(context, language, message);
388387
return ExceptionOperations.createRubyException(context, exceptionClass, errorMessage, currentNode, null);
389388
}
390389

src/main/java/org/truffleruby/language/control/CheckIfPatternsMatchedNode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2013, 2021 Oracle and/or its affiliates. All rights reserved. This
2+
* Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved. This
33
* code is released under a tri EPL/GPL/LGPL license. You can use it,
44
* redistribute it and/or modify it under the terms of the:
55
*

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

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -845,11 +845,10 @@ public RubyNode visitCaseInNode(CaseInParseNode node) {
845845
"inspect",
846846
null,
847847
EmptyArgumentsDescriptor.INSTANCE,
848-
new RubyNode[0],
848+
RubyNode.EMPTY_ARRAY,
849849
false,
850850
true);
851-
RubyNode inspected = language.coreMethodAssumptions
852-
.createCallNode(inspectCallParameters);
851+
RubyNode inspected = language.coreMethodAssumptions.createCallNode(inspectCallParameters);
853852
elseNode = new CheckIfPatternsMatchedNode(inspected);
854853
} else {
855854
elseNode = translateNodeOrNil(sourceSection, node.getElseNode());
@@ -877,8 +876,7 @@ public RubyNode visitCaseInNode(CaseInParseNode node) {
877876
// us we-using the 'when' parser for 'in' temporarily.
878877
final ParseNode patternNode = in.getExpressionNodes();
879878

880-
final RubyNode conditionNode = tr.translatePatternNode(patternNode, readTemp,
881-
sourceSection);
879+
final RubyNode conditionNode = tr.translatePatternNode(patternNode, readTemp);
882880
// Create the if node
883881
final RubyNode thenNode = translateNodeOrNil(sourceSection, in.getBodyNode());
884882
final IfElseNode ifNode = new IfElseNode(conditionNode, thenNode, elseNode);

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

Lines changed: 15 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.truffleruby.language.control.NotNode;
2424
import org.truffleruby.language.control.RaiseException;
2525
import org.truffleruby.language.dispatch.RubyCallNodeParameters;
26-
import org.truffleruby.language.literal.BooleanLiteralNode;
2726
import org.truffleruby.language.literal.NilLiteralNode;
2827
import org.truffleruby.language.literal.TruffleInternalModuleLiteralNode;
2928
import org.truffleruby.language.locals.ReadLocalNode;
@@ -70,10 +69,8 @@ public PatternMatchingTranslator(
7069
Source source,
7170
ParserContext parserContext,
7271
Node currentNode,
73-
/** data to match on */
74-
ParseNode data,
75-
/** cases to check. */
76-
ListParseNode cases,
72+
ParseNode data, // data to match on
73+
ListParseNode cases, // cases to check
7774
TranslatorEnvironment environment,
7875
BodyTranslator bodyTranslator) {
7976
super(language, source, parserContext, currentNode, environment);
@@ -97,8 +94,6 @@ protected RubyNode defaultVisit(ParseNode node) {
9794
@Override
9895
public RubyNode visitArrayPatternNode(ArrayPatternParseNode arrayPatternParseNode) {
9996
final RubyCallNodeParameters deconstructCallParameters;
100-
final RubyCallNodeParameters matcherCallParameters;
101-
final RubyCallNodeParameters matcherCallParametersPost;
10297
final RubyNode receiver;
10398
final RubyNode deconstructed;
10499
final SourceIndexLength sourceSection = arrayPatternParseNode.getPosition();
@@ -107,8 +102,6 @@ public RubyNode visitArrayPatternNode(ArrayPatternParseNode arrayPatternParseNod
107102
ListParseNode postNodes = arrayPatternParseNode.getPostArgs();
108103
ParseNode restNode = arrayPatternParseNode.getRestArg();
109104

110-
var arrayParseNodeRest = arrayPatternParseNode.getRestArg();
111-
112105
receiver = new TruffleInternalModuleLiteralNode();
113106
receiver.unsafeSetSourceSection(sourceSection);
114107
deconstructCallParameters = new RubyCallNodeParameters(
@@ -119,19 +112,16 @@ public RubyNode visitArrayPatternNode(ArrayPatternParseNode arrayPatternParseNod
119112
new RubyNode[]{ currentValueToMatch },
120113
false,
121114
true);
122-
deconstructed = language.coreMethodAssumptions
123-
.createCallNode(deconstructCallParameters);
115+
deconstructed = language.coreMethodAssumptions.createCallNode(deconstructCallParameters);
124116

125117
final int deconSlot = environment.declareLocalTemp("p_decon_array");
126118
final ReadLocalNode readTemp = environment.readNode(deconSlot, sourceSection);
127119
final RubyNode assignTemp = readTemp.makeWriteNode(deconstructed);
128120
currentValueToMatch = readTemp;
129121

130-
131122
int preSize = arrayPatternParseNode.preArgsNum();
132123

133-
RubyNode condition = null;
134-
condition = new ArrayPatternLengthCheckNode(arrayPatternParseNode.minimumArgsNum(),
124+
RubyNode condition = new ArrayPatternLengthCheckNode(arrayPatternParseNode.minimumArgsNum(),
135125
currentValueToMatch, arrayPatternParseNode.hasRestArg());
136126

137127
// Constant == pattern.deconstruct
@@ -146,12 +136,10 @@ public RubyNode visitArrayPatternNode(ArrayPatternParseNode arrayPatternParseNod
146136
new RubyNode[]{ currentValueToMatch },
147137
false,
148138
true);
149-
RubyNode isInstance = language.coreMethodAssumptions
150-
.createCallNode(instanceCheckParameters);
139+
RubyNode isInstance = language.coreMethodAssumptions.createCallNode(instanceCheckParameters);
151140
condition = new AndNode(isInstance, condition);
152141
}
153142

154-
155143
for (int i = 0; i < preSize; i++) {
156144
ParseNode loopPreNode = preNodes.get(i);
157145
RubyNode translatedPatternElement;
@@ -174,11 +162,7 @@ public RubyNode visitArrayPatternNode(ArrayPatternParseNode arrayPatternParseNod
174162
true);
175163

176164
var callNode = language.coreMethodAssumptions.createCallNode(parameters);
177-
if (condition == null) {
178-
condition = callNode;
179-
} else {
180-
condition = new AndNode(condition, callNode);
181-
}
165+
condition = new AndNode(condition, callNode);
182166
}
183167

184168
if (restNode != null) {
@@ -199,11 +183,7 @@ public RubyNode visitArrayPatternNode(ArrayPatternParseNode arrayPatternParseNod
199183
currentValueToMatch = prev;
200184
}
201185
var seq = new ExecuteAndReturnTrueNode(restAccept);
202-
if (condition == null) {
203-
condition = seq;
204-
} else {
205-
condition = new AndNode(condition, seq);
206-
}
186+
condition = new AndNode(condition, seq);
207187
}
208188
}
209189

@@ -231,15 +211,10 @@ public RubyNode visitArrayPatternNode(ArrayPatternParseNode arrayPatternParseNod
231211
true);
232212

233213
var callNode = language.coreMethodAssumptions.createCallNode(parameters);
234-
if (condition == null) {
235-
condition = callNode;
236-
} else {
237-
condition = new AndNode(condition, callNode);
238-
}
214+
condition = new AndNode(condition, callNode);
239215
}
240216
}
241217

242-
condition = condition == null ? new BooleanLiteralNode(true) : condition;
243218
return sequence(sourceSection, Arrays.asList(assignTemp, condition));
244219
}
245220

@@ -262,8 +237,7 @@ public RubyNode visitHashPatternNode(HashPatternParseNode node) {
262237
new RubyNode[]{ new NilLiteralNode(true) },
263238
false,
264239
true);
265-
deconstructed = language.coreMethodAssumptions
266-
.createCallNode(deconstructCallParameters);
240+
deconstructed = language.coreMethodAssumptions.createCallNode(deconstructCallParameters);
267241

268242
receiver = new TruffleInternalModuleLiteralNode();
269243
receiver.unsafeSetSourceSection(node.getPosition());
@@ -277,17 +251,11 @@ public RubyNode visitHashPatternNode(HashPatternParseNode node) {
277251
false,
278252
true);
279253

280-
return language.coreMethodAssumptions
281-
.createCallNode(matcherCallParameters);
254+
return language.coreMethodAssumptions.createCallNode(matcherCallParameters);
282255
}
283256

284-
public RubyNode translatePatternNode(ParseNode patternNode, RubyNode expressionValue,
285-
SourceIndexLength sourceSection) {
286-
final RubyCallNodeParameters deconstructCallParameters;
257+
public RubyNode translatePatternNode(ParseNode patternNode, RubyNode expressionValue) {
287258
final RubyCallNodeParameters matcherCallParameters;
288-
final RubyCallNodeParameters matcherCallParametersPost;
289-
final RubyNode receiver;
290-
final RubyNode deconstructed;
291259

292260
currentValueToMatch = expressionValue;
293261

@@ -303,19 +271,17 @@ public RubyNode translatePatternNode(ParseNode patternNode, RubyNode expressionV
303271
throw new RaiseException(
304272
context,
305273
context.getCoreExceptions().syntaxError(
306-
"not yet handled in pattern matching: " + node.toString() + " " + node.getPosition(),
274+
"not yet handled in pattern matching: " + node + " " + node.getPosition(),
307275
currentNode,
308276
node.getPosition().toSourceSection(source)));
309277
case IFNODE: // handles both if and unless
310278
var ifNode = (IfParseNode) patternNode;
311279
RubyNode pattern;
312280
RubyNode condition = ifNode.getCondition().accept(bodyTranslator);
313281
if (ifNode.getThenBody() != null) {
314-
pattern = translatePatternNode(ifNode.getThenBody(), expressionValue,
315-
sourceSection);
282+
pattern = translatePatternNode(ifNode.getThenBody(), expressionValue);
316283
} else {
317-
pattern = translatePatternNode(ifNode.getElseBody(), expressionValue,
318-
sourceSection);
284+
pattern = translatePatternNode(ifNode.getElseBody(), expressionValue);
319285
condition = new NotNode(condition);
320286
}
321287

@@ -329,8 +295,7 @@ public RubyNode translatePatternNode(ParseNode patternNode, RubyNode expressionV
329295
new RubyNode[]{ NodeUtil.cloneNode(expressionValue) },
330296
false,
331297
true);
332-
return language.coreMethodAssumptions
333-
.createCallNode(matcherCallParameters);
298+
return language.coreMethodAssumptions.createCallNode(matcherCallParameters);
334299
}
335300
}
336301

0 commit comments

Comments
 (0)