fun parseParameterListContents()

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()
    }
  }