# Sudden "overrides nothing" errors appear, no recent change to Kotlin build version

**URL:** <https://discuss.kotlinlang.org/t/sudden-overrides-nothing-errors-appear-no-recent-change-to-kotlin-build-version/5690>\
**Category:** Support\
**Created:** [December 5, 2017, 10:49pm UTC](https://discuss.kotlinlang.org/t/sudden-overrides-nothing-errors-appear-no-recent-change-to-kotlin-build-version/5690 "2017-12-05T22:49:25Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![harrypotter](https://avatars.discourse-cdn.com/v4/letter/h/ee7513/32.png) [@harrypotter](https://discuss.kotlinlang.org/u/harrypotter)\
**Post date:** [December 5, 2017, 10:49pm UTC](https://discuss.kotlinlang.org/t/sudden-overrides-nothing-errors-appear-no-recent-change-to-kotlin-build-version/5690/1 "2017-12-05T22:49:25Z")

</div>

Just today I am trying to build an app module in Android Studio, with Kotlin 1.1.51. This code to implement PagerAdapter has compiled for a long time, but suddenly it is getting confused with overriding function parameter and/or return types of Java interface.

```
    internal inner class RegistrationPagerAdapter : PagerAdapter(), ViewPager.OnPageChangeListener {
    var expanded: Boolean = false
        set(value) {
            if (field == value)
                return
            field = value
            notifyDataSetChanged()
            this@LoginActivity.pageIndicator.notifyDataSetChanged()
        }
    val layouts = arrayOf(R.layout.fragment_login, R.layout.fragment_reg_1, R.layout.fragment_reg_2,
                          R.layout.fragment_reg_3, R.layout.fragment_reg_4)

    override fun instantiateItem(container: ViewGroup, position: Int): ViewDataBinding? {
        val layout = layouts[position]
        return when (layout) {
            R.layout.fragment_login -> this@LoginActivity.setupLogin(container)
            R.layout.fragment_reg_1 -> this@LoginActivity.setupPage1(container)
            R.layout.fragment_reg_2 -> this@LoginActivity.setupPage2(container)
            R.layout.fragment_reg_3 -> this@LoginActivity.setupPage3(container)
            R.layout.fragment_reg_4 -> this@LoginActivity.setupPage4(container)
            else -> throw IllegalStateException("unknown item in RegistrationPagerAdapter")
        }
    }

    override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
        when (layouts[position]) {
            R.layout.fragment_login -> this@LoginActivity.loginBinding = null
            R.layout.fragment_reg_1 -> this@LoginActivity.reg1Binding = null
            R.layout.fragment_reg_2 -> this@LoginActivity.reg2Binding = null
            R.layout.fragment_reg_3 -> this@LoginActivity.reg3Binding = null
            R.layout.fragment_reg_4 -> this@LoginActivity.reg4Binding = null
        }
        container.removeView((`object` as ViewDataBinding).root)
    }

    override fun isViewFromObject(view: View?, `object`: Any): Boolean {
        if (`object` === this@LoginActivity.loginBinding)
            return view === this@LoginActivity.loginBinding?.root
        if (`object` === this@LoginActivity.reg1Binding)
            return view === this@LoginActivity.reg1Binding?.root
        if (`object` === this@LoginActivity.reg2Binding)
            return view === this@LoginActivity.reg2Binding?.root
        if (`object` === this@LoginActivity.reg3Binding)
            return view === this@LoginActivity.reg3Binding?.root
        if (`object` === this@LoginActivity.reg4Binding)
            return view === this@LoginActivity.reg4Binding?.root

        throw IllegalStateException("unknown item in RegistrationPagerAdapter")
    }
    override fun restoreState(state: Parcelable, loader: ClassLoader?) {
        this.expanded = Parcels.unwrap(state)
        super.restoreState(state, loader)
    }
...

```

And now, I suddenly have errors

e: (1072, 20): Class ‘RegistrationPagerAdapter’ is not abstract and does not implement abstract base class member public abstract fun isViewFromObject(@NonNull p0: View, @NonNull p1: Any): Boolean defined in android.support.v4.view.PagerAdapter  
e: (1085, 76): Return type of ‘instantiateItem’ is not a subtype of the return type of the overridden member ‘@NonNull public open fun instantiateItem(@NonNull p0: ViewGroup, p1: Int): Any defined in android.support.v4.view.PagerAdapter’  
e: (1108, 9): ‘isViewFromObject’ overrides nothing  
e: (1155, 9): ‘restoreState’ overrides nothing

The IDE doesn’t show an error in the open source file. I really can’t imagine why these would suddenly start to appear. IDE has Kotlin plugin of same version as dependency in build.gradle

---

<div class="post-metadata">

**Author:** ![alghraibeh](https://avatars.discourse-cdn.com/v4/letter/a/e9a140/32.png) [@alghraibeh](https://discuss.kotlinlang.org/u/alghraibeh)\
**Post date:** [December 6, 2017, 8:21am UTC](https://discuss.kotlinlang.org/t/sudden-overrides-nothing-errors-appear-no-recent-change-to-kotlin-build-version/5690/2 "2017-12-06T08:21:17Z")

</div>

Just remove nullable ‘?’ from you arguments on overrided function

1- override fun isViewFromObject(view: View?, `object`: Any): Boolean {}

2- override fun restoreState(state: Parcelable, loader: ClassLoader?) {}

3- override fun instantiateItem(container: ViewGroup, position: Int): ViewDataBinding? {}

To

1- override fun isViewFromObject(view: View, `object`: Any): Boolean {}

2- override fun restoreState(state: Parcelable, loader: ClassLoader) {}

3- override fun instantiateItem(container: ViewGroup, position: Int): ViewDataBinding {}

---

<div class="post-metadata">

**Author:** ![pdvrieze](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/pdvrieze/32/1882_2.png) [@pdvrieze](https://discuss.kotlinlang.org/u/pdvrieze)\
**Post date:** [December 6, 2017, 1:49pm UTC](https://discuss.kotlinlang.org/t/sudden-overrides-nothing-errors-appear-no-recent-change-to-kotlin-build-version/5690/3 "2017-12-06T13:49:58Z")

</div>

Did you perhaps update the android/support library version? Google has been adding annotations, also for Kotlin compatibility. This has probably interfered with your code.

---

<div class="post-metadata">

**Author:** ![harrypotter](https://avatars.discourse-cdn.com/v4/letter/h/ee7513/32.png) [@harrypotter](https://discuss.kotlinlang.org/u/harrypotter)\
**Post date:** [December 6, 2017, 8:55pm UTC](https://discuss.kotlinlang.org/t/sudden-overrides-nothing-errors-appear-no-recent-change-to-kotlin-build-version/5690/4 "2017-12-06T20:55:52Z")

</div>

Thanks, I think that was it. Though strangely I have done full builds since changing library versions! I don’t understand why the editor thinks the code is fine. Bug in analyzers?

---

<div class="post-metadata">

**Author:** ![Xerus](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/xerus/32/4499_2.png) [@Xerus](https://discuss.kotlinlang.org/u/Xerus)\
**Post date:** [December 6, 2017, 10:25pm UTC](https://discuss.kotlinlang.org/t/sudden-overrides-nothing-errors-appear-no-recent-change-to-kotlin-build-version/5690/5 "2017-12-06T22:25:25Z")

</div>

maybe you haven’t updated your analyzer version yet? For me the analyzer version was still set to Kotlin 1.1 and then i wondered why isInitialized for a lateinit variable wouldn’t work…

Something similar may be happening to you
