diff --git a/idea/resources/META-INF/parcelize.xml b/idea/resources/META-INF/parcelize.xml
index 17927db032c..e78dae0dd50 100644
--- a/idea/resources/META-INF/parcelize.xml
+++ b/idea/resources/META-INF/parcelize.xml
@@ -4,7 +4,7 @@
-
+
diff --git a/plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/ParcelizeAnnotationChecker.kt b/plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/ParcelizeAnnotationChecker.kt
index 83a7f2c155b..68359477038 100644
--- a/plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/ParcelizeAnnotationChecker.kt
+++ b/plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/ParcelizeAnnotationChecker.kt
@@ -37,7 +37,7 @@ import org.jetbrains.kotlin.types.typeUtil.isSubtypeOf
import org.jetbrains.kotlin.types.typeUtil.replaceAnnotations
import org.jetbrains.kotlin.types.typeUtil.supertypes
-class ParcelizeAnnotationChecker : CallChecker {
+open class ParcelizeAnnotationChecker : CallChecker {
@Suppress("DEPRECATION")
companion object {
val DEPRECATED_RUNTIME_PACKAGE = FqName("kotlinx.android.parcel")
diff --git a/plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/ParcelizeDeclarationChecker.kt b/plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/ParcelizeDeclarationChecker.kt
index 5682e70e0dd..ccdc9a1ec2a 100644
--- a/plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/ParcelizeDeclarationChecker.kt
+++ b/plugins/parcelize/parcelize-compiler/src/org/jetbrains/kotlin/parcelize/ParcelizeDeclarationChecker.kt
@@ -37,7 +37,7 @@ val ANDROID_PARCELABLE_CLASS_FQNAME = FqName("android.os.Parcelable")
val ANDROID_PARCELABLE_CREATOR_CLASS_FQNAME = FqName("android.os.Parcelable.Creator")
val ANDROID_PARCEL_CLASS_FQNAME = FqName("android.os.Parcel")
-class ParcelizeDeclarationChecker : DeclarationChecker {
+open class ParcelizeDeclarationChecker : DeclarationChecker {
private companion object {
private val IGNORED_ON_PARCEL_FQ_NAMES = listOf(
FqName(kotlinx.parcelize.IgnoredOnParcel::class.java.canonicalName),
diff --git a/plugins/parcelize/parcelize-ide/src/org/jetbrains/kotlin/parcelize/ide/IdeParcelizeAnnotationChecker.kt b/plugins/parcelize/parcelize-ide/src/org/jetbrains/kotlin/parcelize/ide/IdeParcelizeAnnotationChecker.kt
new file mode 100644
index 00000000000..f6f97a5344b
--- /dev/null
+++ b/plugins/parcelize/parcelize-ide/src/org/jetbrains/kotlin/parcelize/ide/IdeParcelizeAnnotationChecker.kt
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
+ */
+
+package org.jetbrains.kotlin.parcelize.ide
+
+import com.intellij.psi.PsiElement
+import org.jetbrains.kotlin.parcelize.ParcelizeAnnotationChecker
+import org.jetbrains.kotlin.resolve.calls.checkers.CallCheckerContext
+import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
+
+class IdeParcelizeAnnotationChecker : ParcelizeAnnotationChecker() {
+ override fun check(resolvedCall: ResolvedCall<*>, reportOn: PsiElement, context: CallCheckerContext) {
+ if (!ParcelizeAvailability.isAvailable(resolvedCall.call.callElement)) {
+ return
+ }
+
+ super.check(resolvedCall, reportOn, context)
+ }
+}
\ No newline at end of file
diff --git a/plugins/parcelize/parcelize-ide/src/org/jetbrains/kotlin/parcelize/ide/IdeParcelizeDeclarationChecker.kt b/plugins/parcelize/parcelize-ide/src/org/jetbrains/kotlin/parcelize/ide/IdeParcelizeDeclarationChecker.kt
new file mode 100644
index 00000000000..29e13bca927
--- /dev/null
+++ b/plugins/parcelize/parcelize-ide/src/org/jetbrains/kotlin/parcelize/ide/IdeParcelizeDeclarationChecker.kt
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
+ */
+
+package org.jetbrains.kotlin.parcelize.ide
+
+import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
+import org.jetbrains.kotlin.parcelize.ParcelizeDeclarationChecker
+import org.jetbrains.kotlin.psi.KtDeclaration
+import org.jetbrains.kotlin.resolve.checkers.DeclarationCheckerContext
+
+class IdeParcelizeDeclarationChecker : ParcelizeDeclarationChecker() {
+ override fun check(declaration: KtDeclaration, descriptor: DeclarationDescriptor, context: DeclarationCheckerContext) {
+ if (!ParcelizeAvailability.isAvailable(declaration)) {
+ return
+ }
+
+ super.check(declaration, descriptor, context)
+ }
+}
\ No newline at end of file
diff --git a/plugins/parcelize/parcelize-ide/src/org/jetbrains/kotlin/parcelize/ide/IdeParcelizeDeclarationCheckerComponentContainerContributor.kt b/plugins/parcelize/parcelize-ide/src/org/jetbrains/kotlin/parcelize/ide/IdeParcelizeDeclarationCheckerComponentContainerContributor.kt
new file mode 100644
index 00000000000..acebac671dc
--- /dev/null
+++ b/plugins/parcelize/parcelize-ide/src/org/jetbrains/kotlin/parcelize/ide/IdeParcelizeDeclarationCheckerComponentContainerContributor.kt
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
+ */
+
+package org.jetbrains.kotlin.parcelize.ide
+
+import org.jetbrains.kotlin.container.StorageComponentContainer
+import org.jetbrains.kotlin.container.useInstance
+import org.jetbrains.kotlin.descriptors.ModuleDescriptor
+import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.jvm.isJvm
+
+class IdeParcelizeDeclarationCheckerComponentContainerContributor : StorageComponentContainerContributor {
+ override fun registerModuleComponents(
+ container: StorageComponentContainer,
+ platform: TargetPlatform,
+ moduleDescriptor: ModuleDescriptor,
+ ) {
+ if (platform.isJvm()) {
+ container.useInstance(IdeParcelizeDeclarationChecker())
+ container.useInstance(IdeParcelizeAnnotationChecker())
+ }
+ }
+}
\ No newline at end of file