fun parseTestExpression()

in plugin-bazel/src/main/kotlin/org/jetbrains/bazel/languages/starlark/parser/ExpressionParsing.kt [500:536]


  fun parseTestExpression(isTarget: Boolean): Boolean {
    if (atToken(StarlarkTokenTypes.LAMBDA_KEYWORD)) {
      return parseLambdaExpression(oldTest = false)
    }
    val condExpr = builder.mark()
    if (!parseORTestExpression(isTarget)) {
      condExpr.drop()
      return false
    }
    if (atToken(StarlarkTokenTypes.IF_KEYWORD)) {
      val conditionMarker = builder.mark()
      builder.advanceLexer()
      if (!parseORTestExpression(isTarget)) {
        builder.error(StarlarkBundle.message("parser.expected.expression"))
      } else {
        if (!atToken(StarlarkTokenTypes.ELSE_KEYWORD)) {
          if (atToken(StarlarkTokenTypes.COLON)) { // it's regular if statement. Bracket wasn't closed or new line was lost
            conditionMarker.rollbackTo()
            condExpr.drop()
            return true
          } else {
            builder.error(StarlarkBundle.message("parser.expected.else"))
          }
        } else {
          builder.advanceLexer()
          if (!parseTestExpression(isTarget)) {
            builder.error(StarlarkBundle.message("parser.expected.expression"))
          }
        }
      }
      conditionMarker.drop()
      condExpr.done(StarlarkElementTypes.CONDITIONAL_EXPRESSION)
    } else {
      condExpr.drop()
    }
    return true
  }