[Compatibility] Restore old TargetPlatform and subtypes for compatibility

This commit is contained in:
Dmitry Savvinov
2019-05-14 12:52:22 +03:00
parent bbe7a9790e
commit 2caa1c3dd6
11 changed files with 202 additions and 7 deletions
@@ -0,0 +1,38 @@
/*
* Copyright 2010-2015 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
@file:Suppress("DEPRECATION_ERROR")
package org.jetbrains.kotlin.js.resolve
import org.jetbrains.kotlin.platform.js.JsPlatforms
import org.jetbrains.kotlin.resolve.TargetPlatform
@Deprecated(
message = "This class is deprecated and will be removed soon, use API from 'org.jetbrains.kotlin.platform.*' packages instead",
replaceWith = ReplaceWith("JsPlatforms.defaultJsPlatform", "org.jetbrains.kotlin.platform.js.JsPlatforms"),
level = DeprecationLevel.ERROR
)
interface JsPlatform : TargetPlatform {
@JvmDefault
override val platformName: String
get() = "JS"
companion object {
@JvmField
val INSTANCE: JsPlatform = JsPlatforms.CompatJsPlatform
}
}
@@ -14,8 +14,20 @@ abstract class JsPlatform : SimplePlatform("JS") {
get() = "JavaScript "
}
@Suppress("DEPRECATION_ERROR")
object JsPlatforms {
val defaultJsPlatform: TargetPlatform = object : JsPlatform() {}.toTargetPlatform()
private object DefaultSimpleJsPlatform : JsPlatform()
@Deprecated(
message = "Should be accessed only by compatibility layer, other clients should use 'defaultJsPlatform'",
level = DeprecationLevel.ERROR
)
object CompatJsPlatform : TargetPlatform(setOf(DefaultSimpleJsPlatform)),
// Needed for backward compatibility, because old code uses INSTANCEOF checks instead of calling extensions
org.jetbrains.kotlin.js.resolve.JsPlatform {}
val defaultJsPlatform: TargetPlatform
get() = CompatJsPlatform
val allJsPlatforms: List<TargetPlatform> = listOf(defaultJsPlatform)
}