Skip to content

Commit d4a6b02

Browse files
Refactor ParserStructure logic to use buildList for streamlined list construction and improved readability.
1 parent 4ad707b commit d4a6b02

File tree

1 file changed

+14
-10
lines changed
  • core/common/src/internal/format/parser

1 file changed

+14
-10
lines changed

core/common/src/internal/format/parser/Parser.kt

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -97,22 +97,26 @@ internal fun <T> List<ParserStructure<T>>.concat(): ParserStructure<T> {
9797
} else {
9898
val newTails = mergedTails.map {
9999
when (val firstOperation = it.operations.firstOrNull()) {
100-
is NumberSpanParserOperation -> {
101-
ParserStructure(
102-
listOf(NumberSpanParserOperation(currentNumberSpan + firstOperation.consumers)) + unconditionalModifications + it.operations.drop(
103-
1
104-
),
105-
it.followedBy
106-
)
107-
}
100+
is NumberSpanParserOperation -> ParserStructure(buildList(unconditionalModifications.size + it.operations.size) {
101+
add(NumberSpanParserOperation(currentNumberSpan + firstOperation.consumers))
102+
addAll(unconditionalModifications)
103+
addAll(it.operations.drop(1))
104+
}, it.followedBy)
108105

109106
null -> ParserStructure(
110-
unconditionalModifications + listOf(NumberSpanParserOperation(currentNumberSpan)),
107+
buildList(unconditionalModifications.size + 1) {
108+
addAll(unconditionalModifications)
109+
add(NumberSpanParserOperation(currentNumberSpan))
110+
},
111111
it.followedBy
112112
)
113113

114114
else -> ParserStructure(
115-
unconditionalModifications + listOf(NumberSpanParserOperation(currentNumberSpan)) + it.operations,
115+
buildList(unconditionalModifications.size + 1 + it.operations.size) {
116+
addAll(unconditionalModifications)
117+
add(NumberSpanParserOperation(currentNumberSpan))
118+
addAll(it.operations)
119+
},
116120
it.followedBy
117121
)
118122
}

0 commit comments

Comments
 (0)