/* * Copyright 2024 Google LLC * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors. * * 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. */ // WITH_RUNTIME // TEST PROCESSOR: ReplaceWithErrorTypeArgsProcessor // EXPECTED: // KS.star.replace([INVARIANT Int, INVARIANT String]): KS // KS.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): KS<, > // KS.asType([INVARIANT Int, INVARIANT String]): KS // KS.asType([INVARIANT NotExist1, INVARIANT NotExist2]): KS<, > // KS.asType(emptyList()): KS // KL.star.replace([INVARIANT Int, INVARIANT String]): KL // KL.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): KL<, > // KL.asType([INVARIANT Int, INVARIANT String]): KL // KL.asType([INVARIANT NotExist1, INVARIANT NotExist2]): KL<, > // KL.asType(emptyList()): KL // JS.star.replace([INVARIANT Int, INVARIANT String]): JS // JS.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): JS<, > // JS.asType([INVARIANT Int, INVARIANT String]): JS // JS.asType([INVARIANT NotExist1, INVARIANT NotExist2]): JS<, > // JS.asType(emptyList()): JS // JL.star.replace([INVARIANT Int, INVARIANT String]): JL // JL.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): JL<, > // JL.asType([INVARIANT Int, INVARIANT String]): JL // JL.asType([INVARIANT NotExist1, INVARIANT NotExist2]): JL<, > // JL.asType(emptyList()): JL // KS1.star.replace([INVARIANT Int, INVARIANT String]): % Unexpected extra 1 type argument(s)> // KS1.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): > % Unexpected extra 1 type argument(s)> // KS1.asType([INVARIANT Int, INVARIANT String]): % Unexpected extra 1 type argument(s)> // KS1.asType([INVARIANT NotExist1, INVARIANT NotExist2]): > % Unexpected extra 1 type argument(s)> // KS1.asType(emptyList()): KS1 // KL1.star.replace([INVARIANT Int, INVARIANT String]): % Unexpected extra 1 type argument(s)> // KL1.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): > % Unexpected extra 1 type argument(s)> // KL1.asType([INVARIANT Int, INVARIANT String]): % Unexpected extra 1 type argument(s)> // KL1.asType([INVARIANT NotExist1, INVARIANT NotExist2]): > % Unexpected extra 1 type argument(s)> // KL1.asType(emptyList()): KL1 // JS1.star.replace([INVARIANT Int, INVARIANT String]): % Unexpected extra 1 type argument(s)> // JS1.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): > % Unexpected extra 1 type argument(s)> // JS1.asType([INVARIANT Int, INVARIANT String]): % Unexpected extra 1 type argument(s)> // JS1.asType([INVARIANT NotExist1, INVARIANT NotExist2]): > % Unexpected extra 1 type argument(s)> // JS1.asType(emptyList()): JS1 // JL1.star.replace([INVARIANT Int, INVARIANT String]): % Unexpected extra 1 type argument(s)> // JL1.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): > % Unexpected extra 1 type argument(s)> // JL1.asType([INVARIANT Int, INVARIANT String]): % Unexpected extra 1 type argument(s)> // JL1.asType([INVARIANT NotExist1, INVARIANT NotExist2]): > % Unexpected extra 1 type argument(s)> // JL1.asType(emptyList()): JL1 // JSE.star.replace([INVARIANT Int, INVARIANT String]): // JSE.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): // JSE.asType([INVARIANT Int, INVARIANT String]): // JSE.asType([INVARIANT NotExist1, INVARIANT NotExist2]): // JSE.asType(emptyList()): JSE // JSE.E.star.replace([INVARIANT Int, INVARIANT String]): // JSE.E.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): // JSE.E.asType([INVARIANT Int, INVARIANT String]): // JSE.E.asType([INVARIANT NotExist1, INVARIANT NotExist2]): // JSE.E.asType(emptyList()): JSE // JLE.star.replace([INVARIANT Int, INVARIANT String]): // JLE.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): // JLE.asType([INVARIANT Int, INVARIANT String]): // JLE.asType([INVARIANT NotExist1, INVARIANT NotExist2]): // JLE.asType(emptyList()): JLE // JLE.E.star.replace([INVARIANT Int, INVARIANT String]): // JLE.E.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): // JLE.E.asType([INVARIANT Int, INVARIANT String]): // JLE.E.asType([INVARIANT NotExist1, INVARIANT NotExist2]): // JLE.E.asType(emptyList()): JLE // KSE.star.replace([INVARIANT Int, INVARIANT String]): // KSE.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): // KSE.asType([INVARIANT Int, INVARIANT String]): // KSE.asType([INVARIANT NotExist1, INVARIANT NotExist2]): // KSE.asType(emptyList()): KSE // KSE.E.star.replace([INVARIANT Int, INVARIANT String]): // KSE.E.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): // KSE.E.asType([INVARIANT Int, INVARIANT String]): // KSE.E.asType([INVARIANT NotExist1, INVARIANT NotExist2]): // KSE.E.asType(emptyList()): KSE // KLE.star.replace([INVARIANT Int, INVARIANT String]): // KLE.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): // KLE.asType([INVARIANT Int, INVARIANT String]): // KLE.asType([INVARIANT NotExist1, INVARIANT NotExist2]): // KLE.asType(emptyList()): KLE // KLE.E.star.replace([INVARIANT Int, INVARIANT String]): // KLE.E.star.replace([INVARIANT NotExist1, INVARIANT NotExist2]): // KLE.E.asType([INVARIANT Int, INVARIANT String]): // KLE.E.asType([INVARIANT NotExist1, INVARIANT NotExist2]): // KLE.E.asType(emptyList()): KLE // default type:A // flexible type star:T // flexible type replace argument:JS1 // [COVARIANT P], [P] // [COVARIANT Int?], [Int?] // replace error type get: // END // MODULE: lib // FILE: JL.java class JL {} class JL1 {} enum JLE { E } // FILE: KL.kt class KL class KL1 enum class KLE { E } // MODULE: main(lib) // FILE: foo.kt class Foo { val barFoo: Bar = TODO() val barNullableFoo: Bar = TODO() } class Bar class ErrorSuper : Err {} // FILE: JS.java class JS {} class JS1 { T p; } class JavaClass { JS1 p; } enum JSE { E } // FILE: KS.kt fun f(a: A) = TODO() class KS class KS1 enum class KSE { E } val x: KS = TODO() val y: KS = TODO() val z: KL1 = TODO()