Skip to content

Commit 15146ad

Browse files
committed
[GR-17457] Ensure toArray(TYPE::new) is not used as it's less efficient than toArray(TYPE.EMPTY_ARRAY)
PullRequest: truffleruby/3927
2 parents c7a60f6 + c1dde60 commit 15146ad

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

src/main/.checkstyle_checks.xml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -195,15 +195,19 @@
195195
</module>
196196
<module name="RegexpSinglelineJava">
197197
<property name="format" value='\.toArray\(new \w+\[\w+\.size\(\)\]\)'/>
198-
<property name="message" value='Use toArray(new Type[0]) instead.'/>
198+
<property name="message" value='Use toArray(Type.EMPTY_ARRAY) instead.'/>
199199
</module>
200200
<module name="RegexpSinglelineJava">
201201
<property name="format" value='new\s+\w+\[\]\s*\{\s*\}'/>
202-
<property name="message" value='Use new Type[0] instead.'/>
202+
<property name="message" value='Use EMPTY_ARRAY = new Type[0] instead.'/>
203203
</module>
204204
<module name="RegexpSinglelineJava">
205205
<property name="format" value='(?!=)\S\s*new\s+\w+\[0\]'/>
206-
<property name="message" value='Use a EMPTY_type_ARRAY constant instead.'/>
206+
<property name="message" value='Use a Type.EMPTY_ARRAY or EMPTY_type_ARRAY constant instead.'/>
207+
</module>
208+
<module name="RegexpSinglelineJava">
209+
<property name="format" value='.toArray\(.+\[\]::new\)'/>
210+
<property name="message" value='Use .toArray(Type.EMPTY_ARRAY) instead, because this avoids extra allocations.'/>
207211
</module>
208212
<module name="RegexpSinglelineJava">
209213
<property name="format" value="transferToInterpreterOnException"/>

src/main/java/org/truffleruby/parser/ast/ArgsParseNode.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import java.util.Arrays;
3939
import java.util.List;
4040

41+
import org.truffleruby.core.string.StringUtils;
4142
import org.truffleruby.language.SourceIndexLength;
4243
import org.truffleruby.language.methods.Arity;
4344
import org.truffleruby.parser.Helpers;
@@ -153,7 +154,7 @@ private Arity createArity() {
153154
final List<String> keywords = new ArrayList<>(requiredKeywords);
154155
keywords.addAll(optionalKeywords);
155156

156-
keywordArguments = keywords.toArray(String[]::new);
157+
keywordArguments = keywords.toArray(StringUtils.EMPTY_STRING_ARRAY);
157158
requiredKeywordArgumentsCount = requiredKeywords.size();
158159
} else {
159160
keywordArguments = Arity.NO_KEYWORDS;

0 commit comments

Comments
 (0)