Skip to content

Commit 857a0ea

Browse files
committed
Add comments to document ArgumentType enum
1 parent 497aca3 commit 857a0ea

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

src/main/java/org/truffleruby/language/methods/Arity.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,8 @@ public String[] getRequiredKeywordArguments() {
164164
return requiredKeywords;
165165
}
166166

167+
/** Generate argument descriptors for a method/proc that doesn't provide parameter names, e.g a core method
168+
* implemented in Java. */
167169
public ArgumentDescriptor[] toUnnamedArgumentDescriptors() {
168170
List<ArgumentDescriptor> descs = new ArrayList<>();
169171

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

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,23 +26,43 @@
2626
***** END LICENSE BLOCK *****/
2727
package org.truffleruby.parser;
2828

29+
/** Reflects semantic of different method/proc declared parameters types.
30+
*
31+
* Symbolic names match type names returned by the {Method, Proc}#parameters methods. */
2932
public enum ArgumentType {
3033

34+
/** optional keyword argument */
3135
key("key", false),
36+
/** required keyword argument */
3237
keyreq("keyreq", false),
38+
/** keyword rest parameter */
3339
keyrest("keyrest", false),
40+
/** block parameter */
3441
block("block", false),
42+
/** optional positional parameter */
3543
opt("opt", false),
44+
/** rest parameter */
3645
rest("rest", false),
46+
/** required positional parameter */
3747
req("req", false),
48+
49+
/* Parameters declared in a method/proc explicitly without name, e.g. anonymous *, ** , and &. Required parameter
50+
* can be anonymous only in case of parameters nesting (e.g. `def foo(a, (b, c)) end`) */
3851
anonreq("req", true),
3952
anonrest("rest", true),
4053
anonkeyrest("keyrest", true),
54+
55+
/* Parameters in a method that doesn't provide parameter names, e.g. implemented using #method_missing or a core
56+
* method implemented in Java.
57+
*
58+
* A tiny difference between unnamed and anonymous parameters is that anonymous are reported by the #parameters
59+
* method with names (*, ** or &). But unnamed are reported without names. */
4160
unnamedreq("req", true),
4261
unnamedopt("opt", true),
4362
unnamedrest("rest", true),
4463
unnamedkeyrest("keyrest", true),
4564

65+
/** no-keyword-arguments parameter (**nil) */
4666
nokey("nokey", true);
4767

4868
ArgumentType(String symbolicName, boolean anonymous) {

0 commit comments

Comments
 (0)