in plugin-bazel/src/main/kotlin/org/jetbrains/bazel/languages/starlark/parser/FunctionParsing.kt [30:66]
fun parseParameterListContents(endToken: IElementType, advanceLexer: Boolean) {
val parameterList = builder.mark()
if (advanceLexer) {
builder.advanceLexer()
}
var first = true
var afterStarParameter = false
while (!atToken(endToken)) {
if (first) {
first = false
} else {
if (atToken(StarlarkTokenTypes.COMMA)) {
builder.advanceLexer()
} else {
builder.error(StarlarkBundle.message("parser.expected.comma.lpar.rpar"))
break
}
}
val isStarParameter = atAnyOfTokens(listOf(StarlarkTokenTypes.MULT, StarlarkTokenTypes.EXP))
if (!parseParameter(endToken)) {
if (afterStarParameter) {
builder.error(StarlarkBundle.message("parser.expected.expression"))
}
break
}
if (isStarParameter) {
afterStarParameter = true
}
}
if (atToken(endToken) && endToken === StarlarkTokenTypes.RPAR) {
builder.advanceLexer()
}
parameterList.done(StarlarkElementTypes.PARAMETER_LIST)
if (atToken(endToken) && endToken === StarlarkTokenTypes.COLON) {
builder.advanceLexer()
}
}