Skip to content

Commit b6f0f7f

Browse files
committed
State explicitly that anonymous block parameters aren't supported yet
1 parent 1120ff1 commit b6f0f7f

File tree

2 files changed

+12
-13
lines changed

2 files changed

+12
-13
lines changed

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,9 @@ public RubyNode visitNoKeywordsParameterNode(Nodes.NoKeywordsParameterNode node)
251251
}
252252

253253
public RubyNode visitBlockParameterNode(Nodes.BlockParameterNode node) {
254-
// TODO: name could be null
254+
// we don't support yet Ruby 3.1's anonymous block parameter
255+
assert node.name != null;
256+
255257
final int slot = environment.findFrameSlot(node.name);
256258
return new SaveMethodBlockNode(slot);
257259
}

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

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2280,29 +2280,26 @@ private ArgumentDescriptor[] parametersNodeToArgumentDescriptors(Nodes.Parameter
22802280
}
22812281

22822282
if (parametersNode.keyword_rest != null) {
2283-
final ArgumentType type;
2284-
final String name;
2285-
22862283
if (parametersNode.keyword_rest instanceof Nodes.KeywordRestParameterNode) {
2287-
var keywordRestParameterNode = (Nodes.KeywordRestParameterNode) parametersNode.keyword_rest;
2288-
type = (keywordRestParameterNode.name == null) ? ArgumentType.anonkeyrest : ArgumentType.keyrest;
2284+
final var keywordRestParameterNode = (Nodes.KeywordRestParameterNode) parametersNode.keyword_rest;
22892285

2290-
if (keywordRestParameterNode.name != null) {
2291-
name = keywordRestParameterNode.name;
2286+
if (keywordRestParameterNode.name == null) {
2287+
descriptors.add(new ArgumentDescriptor(ArgumentType.anonkeyrest,
2288+
YARPDefNodeTranslator.DEFAULT_KEYWORD_REST_NAME));
22922289
} else {
2293-
name = YARPDefNodeTranslator.DEFAULT_KEYWORD_REST_NAME;
2290+
descriptors.add(new ArgumentDescriptor(ArgumentType.keyrest, keywordRestParameterNode.name));
22942291
}
22952292
} else if (parametersNode.keyword_rest instanceof Nodes.NoKeywordsParameterNode) {
2296-
type = ArgumentType.keyrest;
2297-
name = YARPLoadArgumentsTranslator.DEFAULT_NO_KEYWORD_REST_NAME;
2293+
final var descriptor = new ArgumentDescriptor(ArgumentType.keyrest, YARPLoadArgumentsTranslator.DEFAULT_NO_KEYWORD_REST_NAME);
2294+
descriptors.add(descriptor);
22982295
} else {
22992296
throw CompilerDirectives.shouldNotReachHere();
23002297
}
2301-
2302-
descriptors.add(new ArgumentDescriptor(type, name));
23032298
}
23042299

23052300
if (parametersNode.block != null) {
2301+
// we don't support yet Ruby 3.1's anonymous block parameter
2302+
assert parametersNode.block.name != null;
23062303
descriptors.add(new ArgumentDescriptor(ArgumentType.block, parametersNode.block.name));
23072304
}
23082305

0 commit comments

Comments
 (0)