FILE fqName:<root> fileName:/whileDoWhile.kt
  FUN name:test visibility:public modality:FINAL <> () returnType:Unit flags:
    BLOCK_BODY
      VAR name:x type:kotlin.Int flags:var
        CONST Int type=kotlin.Int value=0
      WHILE label=null origin=WHILE_LOOP
        condition: CALL 'less(Int, Int): Boolean' type=kotlin.Boolean origin=LT
          arg0: GET_VAR 'x: Int' type=kotlin.Int origin=null
          arg1: CONST Int type=kotlin.Int value=0
      WHILE label=null origin=WHILE_LOOP
        condition: CALL 'less(Int, Int): Boolean' type=kotlin.Boolean origin=LT
          arg0: GET_VAR 'x: Int' type=kotlin.Int origin=null
          arg1: CONST Int type=kotlin.Int value=5
        body: TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
          typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public flags:
          BLOCK type=kotlin.Int origin=POSTFIX_INCR
            VAR IR_TEMPORARY_VARIABLE name:tmp0 type:kotlin.Int flags:val
              GET_VAR 'x: Int' type=kotlin.Int origin=POSTFIX_INCR
            SET_VAR 'x: Int' type=kotlin.Unit origin=POSTFIX_INCR
              CALL 'inc(): Int' type=kotlin.Int origin=POSTFIX_INCR
                $this: GET_VAR 'tmp0: Int' type=kotlin.Int origin=null
            GET_VAR 'tmp0: Int' type=kotlin.Int origin=null
      WHILE label=null origin=WHILE_LOOP
        condition: CALL 'less(Int, Int): Boolean' type=kotlin.Boolean origin=LT
          arg0: GET_VAR 'x: Int' type=kotlin.Int origin=null
          arg1: CONST Int type=kotlin.Int value=10
        body: BLOCK type=kotlin.Unit origin=null
          TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
            typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public flags:
            BLOCK type=kotlin.Int origin=POSTFIX_INCR
              VAR IR_TEMPORARY_VARIABLE name:tmp1 type:kotlin.Int flags:val
                GET_VAR 'x: Int' type=kotlin.Int origin=POSTFIX_INCR
              SET_VAR 'x: Int' type=kotlin.Unit origin=POSTFIX_INCR
                CALL 'inc(): Int' type=kotlin.Int origin=POSTFIX_INCR
                  $this: GET_VAR 'tmp1: Int' type=kotlin.Int origin=null
              GET_VAR 'tmp1: Int' type=kotlin.Int origin=null
      BLOCK type=kotlin.Unit origin=null
        DO_WHILE label=null origin=DO_WHILE_LOOP
          condition: CALL 'less(Int, Int): Boolean' type=kotlin.Boolean origin=LT
            arg0: GET_VAR 'x: Int' type=kotlin.Int origin=null
            arg1: CONST Int type=kotlin.Int value=0
      BLOCK type=kotlin.Unit origin=null
        DO_WHILE label=null origin=DO_WHILE_LOOP
          body: TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
            typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public flags:
            BLOCK type=kotlin.Int origin=POSTFIX_INCR
              VAR IR_TEMPORARY_VARIABLE name:tmp2 type:kotlin.Int flags:val
                GET_VAR 'x: Int' type=kotlin.Int origin=POSTFIX_INCR
              SET_VAR 'x: Int' type=kotlin.Unit origin=POSTFIX_INCR
                CALL 'inc(): Int' type=kotlin.Int origin=POSTFIX_INCR
                  $this: GET_VAR 'tmp2: Int' type=kotlin.Int origin=null
              GET_VAR 'tmp2: Int' type=kotlin.Int origin=null
          condition: CALL 'less(Int, Int): Boolean' type=kotlin.Boolean origin=LT
            arg0: GET_VAR 'x: Int' type=kotlin.Int origin=null
            arg1: CONST Int type=kotlin.Int value=15
      BLOCK type=kotlin.Unit origin=null
        DO_WHILE label=null origin=DO_WHILE_LOOP
          body: COMPOSITE type=kotlin.Unit origin=null
            TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
              typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public flags:
              BLOCK type=kotlin.Int origin=POSTFIX_INCR
                VAR IR_TEMPORARY_VARIABLE name:tmp3 type:kotlin.Int flags:val
                  GET_VAR 'x: Int' type=kotlin.Int origin=POSTFIX_INCR
                SET_VAR 'x: Int' type=kotlin.Unit origin=POSTFIX_INCR
                  CALL 'inc(): Int' type=kotlin.Int origin=POSTFIX_INCR
                    $this: GET_VAR 'tmp3: Int' type=kotlin.Int origin=null
                GET_VAR 'tmp3: Int' type=kotlin.Int origin=null
          condition: CALL 'less(Int, Int): Boolean' type=kotlin.Boolean origin=LT
            arg0: GET_VAR 'x: Int' type=kotlin.Int origin=null
            arg1: CONST Int type=kotlin.Int value=20
  FUN name:testSmartcastInCondition visibility:public modality:FINAL <> () returnType:Unit flags:
    BLOCK_BODY
      VAR name:a type:kotlin.Any? flags:val
        CONST Null type=kotlin.Nothing? value=null
      WHEN type=kotlin.Unit origin=null
        BRANCH
          if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=kotlin.Boolean
            typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:Boolean modality:FINAL visibility:public flags:
            GET_VAR 'a: Any?' type=kotlin.Any? origin=null
          then: BLOCK type=kotlin.Unit origin=null
            WHILE label=null origin=WHILE_LOOP
              condition: TYPE_OP type=kotlin.Boolean origin=IMPLICIT_CAST typeOperand=kotlin.Boolean
                typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:Boolean modality:FINAL visibility:public flags:
                GET_VAR 'a: Any?' type=kotlin.Any? origin=null
              body: BLOCK type=kotlin.Unit origin=null
            BLOCK type=kotlin.Unit origin=null
              DO_WHILE label=null origin=DO_WHILE_LOOP
                body: COMPOSITE type=kotlin.Unit origin=null
                condition: TYPE_OP type=kotlin.Boolean origin=IMPLICIT_CAST typeOperand=kotlin.Boolean
                  typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB CLASS name:Boolean modality:FINAL visibility:public flags:
                  GET_VAR 'a: Any?' type=kotlin.Any? origin=null

