// RUN_PIPELINE_TILL: FRONTEND
//KT-4711 Error type with no error reported from type inference

fun main() {
    val n = 100
    val delta = 1.0 / n
    val startTimeNanos = System.nanoTime()

    // the problem sits on the next line:
    val pi = 4.0.toDouble() * delta * (1..n).reduce(
            {t, i ->
                val x = (i - 0.5) * delta
                <!TYPE_MISMATCH, TYPE_MISMATCH!>t + 1.0 / (1.0 + x * x)<!>

            })
    // !!! pi has error type here

    val elapseTime = (System.nanoTime() - startTimeNanos) / 1e9

    println("pi_sequential_reduce $pi $n $elapseTime")
}

/* GENERATED_FIR_TAGS: additiveExpression, functionDeclaration, integerLiteral, javaFunction, lambdaLiteral,
localProperty, multiplicativeExpression, propertyDeclaration, rangeExpression, stringLiteral */
