// RUN_PIPELINE_TILL: FRONTEND
// FILE: this.kt

// KT-362 Don't allow.smartcasts on vals that are not internal
package example

fun test() {
  val p = test.Public()
  if (p.public is Int) <!DEBUG_INFO_SMARTCAST!>p.public<!> + 1
  if (p.<!INVISIBLE_MEMBER!>protected<!> is Int) <!DEBUG_INFO_SMARTCAST!>p.<!INVISIBLE_MEMBER!>protected<!><!> + 1
  if (p.internal is Int) <!DEBUG_INFO_SMARTCAST!>p.internal<!> + 1
  val i = test.Internal()
  if (i.public is Int) <!DEBUG_INFO_SMARTCAST!>i.public<!> + 1
  if (i.<!INVISIBLE_MEMBER!>protected<!> is Int) <!DEBUG_INFO_SMARTCAST!>i.<!INVISIBLE_MEMBER!>protected<!><!> + 1
  if (i.internal is Int) <!DEBUG_INFO_SMARTCAST!>i.internal<!> + 1
}

// FILE: other.kt
package test

public class Public() {
    public val public : Int? = 1;
    protected val protected : Int? = 1;
    val internal : Int? = 1
}
internal class Internal() {
    public val public : Int? = 1;
    protected val protected : Int? = 1;
    val internal : Int? = 1
}

/* GENERATED_FIR_TAGS: additiveExpression, classDeclaration, functionDeclaration, ifExpression, integerLiteral,
isExpression, localProperty, nullableType, primaryConstructor, propertyDeclaration, smartcast */
