From 0d0751c3f94877128d9bda6f409756cd05239ce1 Mon Sep 17 00:00:00 2001 From: Zalim Bashorov Date: Mon, 23 Jun 2014 20:09:37 +0400 Subject: [PATCH 01/23] Minor: JvmCodegenUtil#isNullableType -> TypeUtils#isNullableType --- .../jet/codegen/AnnotationCodegen.java | 3 +-- .../src/org/jetbrains/jet/codegen/AsmUtil.java | 1 + .../jet/codegen/ExpressionCodegen.java | 3 ++- .../jetbrains/jet/codegen/JvmCodegenUtil.java | 17 ----------------- .../org/jetbrains/jet/lang/types/TypeUtils.java | 14 ++++++++++++++ 5 files changed, 18 insertions(+), 20 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/AnnotationCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/AnnotationCodegen.java index df2af34a135..04887664bb4 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/AnnotationCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/AnnotationCodegen.java @@ -31,7 +31,6 @@ import org.jetbrains.jet.lang.psi.JetModifierListOwner; import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall; import org.jetbrains.jet.lang.resolve.constants.*; -import org.jetbrains.jet.lang.resolve.constants.StringValue; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.TypeUtils; @@ -174,7 +173,7 @@ public abstract class AnnotationCodegen { return; } - boolean isNullableType = JvmCodegenUtil.isNullableType(type); + boolean isNullableType = TypeUtils.isNullableType(type); Class annotationClass = isNullableType ? Nullable.class : NotNull.class; diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/AsmUtil.java b/compiler/backend/src/org/jetbrains/jet/codegen/AsmUtil.java index 9a5f4c39e2e..badbff196fc 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/AsmUtil.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/AsmUtil.java @@ -58,6 +58,7 @@ import static org.jetbrains.jet.lang.resolve.java.AsmTypeConstants.getType; import static org.jetbrains.jet.lang.resolve.java.JvmAnnotationNames.ABI_VERSION_FIELD_NAME; import static org.jetbrains.jet.lang.resolve.java.JvmAnnotationNames.KotlinSyntheticClass; import static org.jetbrains.jet.lang.resolve.java.mapping.PrimitiveTypesUtil.asmTypeForPrimitive; +import static org.jetbrains.jet.lang.types.TypeUtils.isNullableType; import static org.jetbrains.org.objectweb.asm.Opcodes.*; public class AsmUtil { diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java index 60cbe9f7dcc..8e9f9862f95 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ExpressionCodegen.java @@ -54,6 +54,7 @@ import org.jetbrains.jet.lang.resolve.java.jvmSignature.JvmMethodSignature; import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.scopes.receivers.*; import org.jetbrains.jet.lang.types.JetType; +import org.jetbrains.jet.lang.types.TypeUtils; import org.jetbrains.jet.lang.types.checker.JetTypeChecker; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lexer.JetTokens; @@ -3506,7 +3507,7 @@ The "returned" value of try expression with no finally is either the last expres value.put(boxType(value.type), v); if (opToken != JetTokens.AS_SAFE) { - if (!JvmCodegenUtil.isNullableType(rightType)) { + if (!TypeUtils.isNullableType(rightType)) { v.dup(); Label nonnull = new Label(); v.ifnonnull(nonnull); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/JvmCodegenUtil.java b/compiler/backend/src/org/jetbrains/jet/codegen/JvmCodegenUtil.java index 98dea4fa31b..65d0eaf897b 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/JvmCodegenUtil.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/JvmCodegenUtil.java @@ -16,8 +16,6 @@ package org.jetbrains.jet.codegen; -import com.intellij.openapi.util.io.FileUtil; -import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.containers.Stack; import kotlin.Function1; import kotlin.KotlinPackage; @@ -37,7 +35,6 @@ import org.jetbrains.jet.lang.resolve.DescriptorUtils; import org.jetbrains.jet.lang.resolve.calls.CallResolverUtil; import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.types.JetType; -import org.jetbrains.jet.lang.types.TypeUtils; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import java.util.Arrays; @@ -193,20 +190,6 @@ public class JvmCodegenUtil { ); } - /** - * A work-around of the generic nullability problem in the type checker - * @return true if a value of this type can be null - */ - public static boolean isNullableType(@NotNull JetType type) { - if (type.isNullable()) { - return true; - } - if (type.getConstructor().getDeclarationDescriptor() instanceof TypeParameterDescriptor) { - return TypeUtils.hasNullableSuperType(type); - } - return false; - } - public static boolean couldUseDirectAccessToProperty( @NotNull PropertyDescriptor propertyDescriptor, boolean forGetter, diff --git a/core/descriptors/src/org/jetbrains/jet/lang/types/TypeUtils.java b/core/descriptors/src/org/jetbrains/jet/lang/types/TypeUtils.java index ecebe07b469..ee8d1386ed6 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/types/TypeUtils.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/types/TypeUtils.java @@ -420,6 +420,20 @@ public class TypeUtils { return false; } + /** + * A work-around of the generic nullability problem in the type checker + * @return true if a value of this type can be null + */ + public static boolean isNullableType(@NotNull JetType type) { + if (type.isNullable()) { + return true; + } + if (type.getConstructor().getDeclarationDescriptor() instanceof TypeParameterDescriptor) { + return hasNullableSuperType(type); + } + return false; + } + public static boolean hasNullableSuperType(@NotNull JetType type) { if (type.getConstructor().getDeclarationDescriptor() instanceof ClassDescriptor) { // A class/trait cannot have a nullable supertype From 444932d4c149f31e80085d1870460ad83d7235c5 Mon Sep 17 00:00:00 2001 From: Zalim Bashorov Date: Mon, 23 Jun 2014 20:10:35 +0400 Subject: [PATCH 02/23] JS backend: fixed wrong NPE when casting to generic type. --- .../k2js/test/semantics/CastTest.java | 4 + .../expression/ExpressionVisitor.java | 9 ++- .../cast/cases/castToGenericType.kt | 74 +++++++++++++++++++ 3 files changed, 84 insertions(+), 3 deletions(-) create mode 100644 js/js.translator/testData/expression/cast/cases/castToGenericType.kt diff --git a/js/js.tests/test/org/jetbrains/k2js/test/semantics/CastTest.java b/js/js.tests/test/org/jetbrains/k2js/test/semantics/CastTest.java index 74cab0ed722..84a795ec856 100644 --- a/js/js.tests/test/org/jetbrains/k2js/test/semantics/CastTest.java +++ b/js/js.tests/test/org/jetbrains/k2js/test/semantics/CastTest.java @@ -32,6 +32,10 @@ public final class CastTest extends AbstractExpressionTest { checkFooBoxIsOk(); } + public void testCastToGenericType() throws Exception { + checkFooBoxIsOk(); + } + public void testSmartCastInExtensionFunction() throws Exception { checkFooBoxIsOk(); } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java b/js/js.translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java index ad27cb000e9..bff86d88814 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java @@ -17,7 +17,6 @@ package org.jetbrains.k2js.translate.expression; import com.google.dart.compiler.backend.js.ast.*; -import com.intellij.psi.tree.IElementType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; @@ -29,6 +28,7 @@ import org.jetbrains.jet.lang.resolve.BindingContextUtils; import org.jetbrains.jet.lang.resolve.constants.CompileTimeConstant; import org.jetbrains.jet.lang.resolve.constants.NullValue; import org.jetbrains.jet.lang.types.JetType; +import org.jetbrains.jet.lang.types.TypeUtils; import org.jetbrains.jet.lexer.JetTokens; import org.jetbrains.k2js.translate.context.TemporaryVariable; import org.jetbrains.k2js.translate.context.TranslationContext; @@ -347,9 +347,12 @@ public final class ExpressionVisitor extends TranslatorVisitor { if (expression.getOperationReference().getReferencedNameElementType() != JetTokens.AS_KEYWORD) return jsExpression.source(expression); - JetType rightType = BindingContextUtils.getNotNull(context.bindingContext(), BindingContext.TYPE, expression.getRight()); + JetTypeReference right = expression.getRight(); + assert right != null; + + JetType rightType = BindingContextUtils.getNotNull(context.bindingContext(), BindingContext.TYPE, right); JetType leftType = BindingContextUtils.getNotNull(context.bindingContext(), BindingContext.EXPRESSION_TYPE, expression.getLeft()); - if (rightType.isNullable() || !leftType.isNullable()) { + if (TypeUtils.isNullableType(rightType) || !TypeUtils.isNullableType(leftType)) { return jsExpression.source(expression); } diff --git a/js/js.translator/testData/expression/cast/cases/castToGenericType.kt b/js/js.translator/testData/expression/cast/cases/castToGenericType.kt new file mode 100644 index 00000000000..09687e93127 --- /dev/null +++ b/js/js.translator/testData/expression/cast/cases/castToGenericType.kt @@ -0,0 +1,74 @@ +package foo + +class A(val s: String) + +fun castsNotNullToNullableT(a: Any) { + a as T + a as T? + a as? T + a as? T? +} + +fun castsNullableToNullableT(a: Any?) { + a as T + a as T? + a as? T + a as? T? +} + + +fun castsNotNullToNotNullT(a: Any) { + a as T + a as T? + a as? T + a as? T? +} + +fun castNullableToNotNullT(a: Any?) { + a as T +} + +fun castsNullableToNotNullT(a: Any?) { + a as T? + a as? T + a as? T? +} + +fun test(f: () -> Unit) { + try { + f() + } + catch(e: Exception) { + throw Exception("Failed in $f with unexpected exception $e") + } +} + +fun fails(f: () -> Unit) { + try { + f() + } + catch(e: Exception) { + return + } + + throw Exception("Expected an exception to be thrown from $f") +} + +fun box(): String { + val a = A("OK") + + test { castsNotNullToNullableT(a) } + + test { castsNullableToNullableT(a) } + test { castsNullableToNullableT(null) } + + test { castsNotNullToNotNullT(a) } + + test { castsNullableToNotNullT(a) } + test { castsNullableToNotNullT(null) } + + test { castNullableToNotNullT(a) } + fails { castNullableToNotNullT(null) } + + return "OK" +} From 28228d23b1c0b2bcbf18867e764c58aa11aa85c0 Mon Sep 17 00:00:00 2001 From: Zalim Bashorov Date: Wed, 25 Jun 2014 18:30:36 +0400 Subject: [PATCH 03/23] JS stdlib: added missed constructors for HashSet, LinkedHashSet, HashMap and LinkedHashMap. --- js/js.libraries/src/core/javautil.kt | 22 +++++++--- js/js.libraries/src/core/javautilCode.kt | 41 +++++++++++++++++++ .../src/org/jetbrains/k2js/config/Config.java | 1 + js/js.translator/testData/maps.js | 35 +++++----------- libraries/stdlib/test/js/MapJsTest.kt | 38 +++++++++++++++++ libraries/stdlib/test/js/SetJsTest.kt | 37 +++++++++++++++++ 6 files changed, 143 insertions(+), 31 deletions(-) create mode 100644 js/js.libraries/src/core/javautilCode.kt diff --git a/js/js.libraries/src/core/javautil.kt b/js/js.libraries/src/core/javautil.kt index 9113fb56c59..2713cadedbc 100644 --- a/js/js.libraries/src/core/javautil.kt +++ b/js/js.libraries/src/core/javautil.kt @@ -1,5 +1,11 @@ package java.util +native +private val DEFAULT_INITIAL_CAPACITY = 16 + +native +private val DEFAULT_LOAD_FACTOR = 0.75f + library public trait Comparator { fun compare(obj1: T, obj2: T): Int; @@ -67,8 +73,9 @@ public open class LinkedList() : AbstractList() { } library -public open class HashSet(capacity: Int = 0) : AbstractCollection(), MutableSet { -} +public open class HashSet( + initialCapacity: Int = DEFAULT_INITIAL_CAPACITY, loadFactor: Float = DEFAULT_LOAD_FACTOR +) : AbstractCollection(), MutableSet library public trait SortedSet : Set { @@ -79,11 +86,12 @@ public open class TreeSet() : AbstractCollection(), MutableSet, SortedS } library -public open class LinkedHashSet() : AbstractCollection(), MutableSet { -} +public open class LinkedHashSet( + initialCapacity: Int = DEFAULT_INITIAL_CAPACITY, loadFactor: Float = DEFAULT_LOAD_FACTOR +) : HashSet(initialCapacity, loadFactor), MutableSet library -public open class HashMap(capacity: Int = 0) : MutableMap { +public open class HashMap(initialCapacity: Int = DEFAULT_INITIAL_CAPACITY, loadFactor: Float = DEFAULT_LOAD_FACTOR) : MutableMap { public override fun size(): Int = js.noImpl public override fun isEmpty(): Boolean = js.noImpl public override fun get(key: Any?): V? = js.noImpl @@ -99,7 +107,9 @@ public open class HashMap(capacity: Int = 0) : MutableMap { } library -public open class LinkedHashMap(capacity: Int = 0) : HashMap(capacity) +public open class LinkedHashMap( + initialCapacity: Int = DEFAULT_INITIAL_CAPACITY, loadFactor: Float = DEFAULT_LOAD_FACTOR, accessOrder: Boolean = false +) : HashMap(initialCapacity, loadFactor) library public class NoSuchElementException(message: String? = null) : Exception() {} diff --git a/js/js.libraries/src/core/javautilCode.kt b/js/js.libraries/src/core/javautilCode.kt new file mode 100644 index 00000000000..92121fda205 --- /dev/null +++ b/js/js.libraries/src/core/javautilCode.kt @@ -0,0 +1,41 @@ +/* + * Copyright 2010-2014 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. + */ + +package java.util + +public fun HashSet(c: Collection): HashSet { + val set: HashSet = HashSet(c.size()) + set.addAll(c) + return set +} + +public fun LinkedHashSet(c: Collection): HashSet { + val set: LinkedHashSet = LinkedHashSet(c.size()) + set.addAll(c) + return set +} + +public fun HashMap(m: Map): HashMap { + val map: HashMap = HashMap(m.size()) + map.putAll(m) + return map +} + +public fun LinkedHashMap(m: Map): LinkedHashMap { + val map: LinkedHashMap = LinkedHashMap(m.size()) + map.putAll(m) + return map +} diff --git a/js/js.translator/src/org/jetbrains/k2js/config/Config.java b/js/js.translator/src/org/jetbrains/k2js/config/Config.java index aea3607710f..fdf9cc33357 100644 --- a/js/js.translator/src/org/jetbrains/k2js/config/Config.java +++ b/js/js.translator/src/org/jetbrains/k2js/config/Config.java @@ -101,6 +101,7 @@ public abstract class Config { public static final List LIB_FILE_NAMES_DEPENDENT_ON_STDLIB = Arrays.asList( "/core/stringsCode.kt", "/stdlib/domCode.kt", + "/core/javautilCode.kt", "/stdlib/jutilCode.kt", "/stdlib/testCode.kt" ); diff --git a/js/js.translator/testData/maps.js b/js/js.translator/testData/maps.js index 565bc253777..61e02737d8c 100644 --- a/js/js.translator/testData/maps.js +++ b/js/js.translator/testData/maps.js @@ -37,6 +37,14 @@ return this.value; }; + function hashMapPutAll (fromMap) { + var entries = fromMap.entrySet(); + var it = entries.iterator(); + while (it.hasNext()) { + var e = it.next(); + this.put_wn2jw4$(e.getKey(), e.getValue()); + } + } /** @const */ var FUNCTION = "function"; @@ -387,24 +395,8 @@ /** * @param {Hashtable.} hashtable - * @param {(function(Key, Value, Value): Value)=} conflictCallback */ - this.putAll_za3j1t$ = function (hashtable, conflictCallback) { - var entries = hashtable._entries(); - var entry, key, value, thisValue, i = entries.length; - var hasConflictCallback = (typeof conflictCallback == FUNCTION); - while (i--) { - entry = entries[i]; - key = entry[0]; - value = entry[1]; - - // Check for a conflict. The default behaviour is to overwrite the value for an existing key - if (hasConflictCallback && (thisValue = that.get(key))) { - value = conflictCallback(key, thisValue, value); - } - that.put_wn2jw4$(key, value); - } - }; + this.putAll_za3j1t$ = hashMapPutAll; this.clone = function () { var clone = new Hashtable(hashingFunctionParam, equalityFunctionParam); @@ -554,14 +546,7 @@ this.$size = 0; this.map = {}; }, - putAll_za3j1t$: function (fromMap) { - var map = fromMap.map; - for (var key in map) { - //noinspection JSUnfilteredForInLoop - this.map[key] = map[key]; - this.$size++; - } - }, + putAll_za3j1t$: hashMapPutAll, entrySet: function () { var result = new Kotlin.ComplexHashSet(); var map = this.map; diff --git a/libraries/stdlib/test/js/MapJsTest.kt b/libraries/stdlib/test/js/MapJsTest.kt index 0ee938152ba..9e976453f7a 100644 --- a/libraries/stdlib/test/js/MapJsTest.kt +++ b/libraries/stdlib/test/js/MapJsTest.kt @@ -6,17 +6,53 @@ import java.util.* import org.junit.Test as test class ComplexMapJsTest : MapJsTest() { + // Helper function with generic parameter to force to use ComlpexHashMap + fun doTest>() { + HashMap() + HashMap(3) + HashMap(3, 0.5f) + val map = HashMap(createTestMap() as HashMap) + + assertEquals(KEYS.toNormalizedList(), map.keySet().toNormalizedList()) + assertEquals(VALUES.toNormalizedList(), map.values().toNormalizedList()) + } + test override fun constructors() { + doTest() + } + override fun > Collection.toNormalizedList(): List = this.toSortedList() // hashMapOf returns ComlpexHashMap because it is Generic override fun emptyMutableMap(): MutableMap = hashMapOf() } class PrimitiveMapJsTest : MapJsTest() { + test override fun constructors() { + HashMap() + HashMap(3) + HashMap(3, 0.5f) + + val map = HashMap(createTestMap()) + + assertEquals(KEYS.toNormalizedList(), map.keySet().toNormalizedList()) + assertEquals(VALUES.toNormalizedList(), map.values().toNormalizedList()) + } + override fun > Collection.toNormalizedList(): List = this.toSortedList() override fun emptyMutableMap(): MutableMap = HashMap() } class LinkedHashMapTest : MapJsTest() { + test override fun constructors() { + LinkedHashMap() + LinkedHashMap(3) + LinkedHashMap(3, 0.5f) + + val map = LinkedHashMap(createTestMap()) + + assertEquals(KEYS.toNormalizedList(), map.keySet().toNormalizedList()) + assertEquals(VALUES.toNormalizedList(), map.values().toNormalizedList()) + } + override fun > Collection.toNormalizedList(): List = this.toList() override fun emptyMutableMap(): MutableMap = LinkedHashMap() } @@ -284,6 +320,8 @@ abstract class MapJsTest { } } + test abstract fun constructors() + /* test fun createLinkedMap() { val map = linkedMapOf("c" to 3, "b" to 2, "a" to 1) diff --git a/libraries/stdlib/test/js/SetJsTest.kt b/libraries/stdlib/test/js/SetJsTest.kt index 0d2f8719823..6cf3a28a4a3 100644 --- a/libraries/stdlib/test/js/SetJsTest.kt +++ b/libraries/stdlib/test/js/SetJsTest.kt @@ -6,15 +6,50 @@ import java.util.HashSet import java.util.LinkedHashSet class ComplexSetJsTest : SetJsTest() { + // Helper function with generic parameter to force to use ComlpexHashMap + fun doTest() { + HashSet() + HashSet(3) + HashSet(3, 0.5f) + + val set = HashSet(data as HashSet) + + assertEquals(data, set) + } + + test override fun constructors() { + doTest() + } + // hashSetOf returns ComlpexHashSet because it is Generic override fun createEmptyMutableSet(): MutableSet = hashSetOf() } class PrimitiveSetJsTest : SetJsTest() { + test override fun constructors() { + HashSet() + HashSet(3) + HashSet(3, 0.5f) + + val set = HashSet(data) + + assertEquals(data, set) + } + override fun createEmptyMutableSet(): MutableSet = HashSet() } class LinkedHashSetTest : SetJsTest() { + test override fun constructors() { + LinkedHashSet() + LinkedHashSet(3) + LinkedHashSet(3, 0.5f) + + val set = LinkedHashSet(data) + + assertEquals(data, set) + } + override fun createEmptyMutableSet(): MutableSet = LinkedHashSet() } @@ -150,6 +185,8 @@ abstract class SetJsTest { } } + test abstract fun constructors() + //Helpers abstract fun createEmptyMutableSet(): MutableSet From 5f3b00ad44ff6a5f28c61379a19e7f669c197093 Mon Sep 17 00:00:00 2001 From: Zalim Bashorov Date: Thu, 26 Jun 2014 15:49:54 +0400 Subject: [PATCH 04/23] Update to IDEA 135.1146 EAP --- update_dependencies.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/update_dependencies.xml b/update_dependencies.xml index 84b4f3cbf1e..7c78c1d1a77 100644 --- a/update_dependencies.xml +++ b/update_dependencies.xml @@ -1,6 +1,6 @@ - - + + From 80b7f88c602e11cd41893648937fcba25409b35c Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 26 Jun 2014 17:49:57 +0400 Subject: [PATCH 05/23] Regenerate tests --- .../jet/findUsages/JetFindUsagesTestGenerated.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/idea/tests/org/jetbrains/jet/findUsages/JetFindUsagesTestGenerated.java b/idea/tests/org/jetbrains/jet/findUsages/JetFindUsagesTestGenerated.java index 345e7fb76ae..575b522c734 100644 --- a/idea/tests/org/jetbrains/jet/findUsages/JetFindUsagesTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/findUsages/JetFindUsagesTestGenerated.java @@ -16,14 +16,17 @@ package org.jetbrains.jet.findUsages; +import junit.framework.Assert; import junit.framework.Test; import junit.framework.TestSuite; + +import java.io.File; +import java.util.regex.Pattern; import org.jetbrains.jet.JetTestUtils; import org.jetbrains.jet.test.InnerTestClasses; import org.jetbrains.jet.test.TestMetadata; -import java.io.File; -import java.util.regex.Pattern; +import org.jetbrains.jet.findUsages.AbstractJetFindUsagesTest; /** This class is generated by {@link org.jetbrains.jet.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */ @SuppressWarnings("all") From e31f2cfa23c5de42b832a9adfc83591dbc5306f4 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 16 Jun 2014 17:46:10 +0400 Subject: [PATCH 06/23] Make protected static visibility reach members in the same package --- .../tests/j+k/protectedStaticSamePackage.kt | 20 +++++++++++++++++++ .../checkers/JetDiagnosticsTestGenerated.java | 5 +++++ .../lang/resolve/java/JavaVisibilities.java | 4 ++++ 3 files changed, 29 insertions(+) create mode 100644 compiler/testData/diagnostics/tests/j+k/protectedStaticSamePackage.kt diff --git a/compiler/testData/diagnostics/tests/j+k/protectedStaticSamePackage.kt b/compiler/testData/diagnostics/tests/j+k/protectedStaticSamePackage.kt new file mode 100644 index 00000000000..e51d7bc5689 --- /dev/null +++ b/compiler/testData/diagnostics/tests/j+k/protectedStaticSamePackage.kt @@ -0,0 +1,20 @@ +// FILE: test/JavaClass.java + +package test; + +public class JavaClass { + protected static int field; + + protected static String method() { + return ""; + } +} + +// FILE: test.kt + +package test + +fun test() { + JavaClass.field + JavaClass.method() +} diff --git a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java index c5b4ea4326f..6495690ade4 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java @@ -5032,6 +5032,11 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest { doTest("compiler/testData/diagnostics/tests/j+k/packageVisibility.kt"); } + @TestMetadata("protectedStaticSamePackage.kt") + public void testProtectedStaticSamePackage() throws Exception { + doTest("compiler/testData/diagnostics/tests/j+k/protectedStaticSamePackage.kt"); + } + @TestMetadata("recursiveRawUpperBound.kt") public void testRecursiveRawUpperBound() throws Exception { doTest("compiler/testData/diagnostics/tests/j+k/recursiveRawUpperBound.kt"); diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/JavaVisibilities.java b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/JavaVisibilities.java index 05ccf6de960..d088f6da55a 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/JavaVisibilities.java +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/JavaVisibilities.java @@ -54,6 +54,10 @@ public class JavaVisibilities { public static final Visibility PROTECTED_STATIC_VISIBILITY = new Visibility("protected_static", false) { @Override protected boolean isVisible(@NotNull DeclarationDescriptorWithVisibility what, @NotNull DeclarationDescriptor from) { + if (areInSamePackage(what, from)) { + return true; + } + ClassDescriptor fromClass = DescriptorUtils.getParentOfType(from, ClassDescriptor.class, false); if (fromClass == null) return false; From 42991e05a124815549da83f9f1b8f18f61129a99 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 23 Jun 2014 16:19:56 +0400 Subject: [PATCH 07/23] Delete unjustified assert It's ok to generate in the light classes mode, it's not ok to generate the code in it (currently there seems to be no sane way to assert that) --- .../backend/src/org/jetbrains/jet/codegen/MemberCodegen.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/MemberCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/MemberCodegen.java index 7dc4acb416d..b491052aabb 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/MemberCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/MemberCodegen.java @@ -199,11 +199,8 @@ public abstract class MemberCodegen should not be generated for light classes. Descriptor: " + descriptor; if (clInit == null) { MethodVisitor mv = v.newMethod(OtherOrigin(descriptor), ACC_STATIC, "", "()V", null, null); - mv.visitCode(); SimpleFunctionDescriptorImpl clInit = SimpleFunctionDescriptorImpl.create(descriptor, Annotations.EMPTY, Name.special(""), SYNTHESIZED); clInit.initialize(null, null, Collections.emptyList(), From a9b2fd964b940e77e48e4bee1c5ee92eecaf3485 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 2 Jun 2014 20:27:19 +0400 Subject: [PATCH 08/23] Support nullable types on left-hand side of :: #KT-1183 In Progress --- .../lang/parsing/JetExpressionParsing.java | 4 +- .../jet/lang/parsing/JetParsing.java | 21 +++--- .../function/extensionOnNullable.kt | 8 +++ compiler/testData/psi/DoubleColon.kt | 5 ++ compiler/testData/psi/DoubleColon.txt | 72 +++++++++++++++++++ ...JetDiagnosticsTestWithStdLibGenerated.java | 5 ++ grammar/src/expressions.grm | 2 +- 7 files changed, 107 insertions(+), 10 deletions(-) create mode 100644 compiler/testData/diagnostics/testsWithStdLib/callableReference/function/extensionOnNullable.kt diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java index 1c6dbfb32d7..dba0dd21d60 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetExpressionParsing.java @@ -372,7 +372,7 @@ public class JetExpressionParsing extends AbstractJetParsing { /* * callableReference - * : userType? "::" SimpleName + * : (userType "?"*)? "::" SimpleName * ; */ private boolean parseCallableReferenceExpression() { @@ -381,7 +381,9 @@ public class JetExpressionParsing extends AbstractJetParsing { if (!at(COLONCOLON)) { PsiBuilder.Marker typeReference = mark(); myJetParsing.parseUserType(); + typeReference = myJetParsing.parseNullableTypeSuffix(typeReference); typeReference.done(TYPE_REFERENCE); + if (!at(COLONCOLON)) { expression.rollbackTo(); return false; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java index e14ec5a3e90..1644e65d41a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java @@ -19,6 +19,7 @@ package org.jetbrains.jet.lang.parsing; import com.intellij.lang.PsiBuilder; import com.intellij.psi.tree.IElementType; import com.intellij.psi.tree.TokenSet; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.JetNodeType; import org.jetbrains.jet.lexer.JetKeywordToken; @@ -1478,14 +1479,7 @@ public class JetParsing extends AbstractJetParsing { TokenSet.create(EQ, COMMA, GT, RBRACKET, DOT, RPAR, RBRACE, LBRACE, SEMICOLON), extraRecoverySet)); } - while (at(QUEST)) { - PsiBuilder.Marker precede = typeRefMarker.precede(); - - advance(); // QUEST - typeRefMarker.done(NULLABLE_TYPE); - - typeRefMarker = precede; - } + typeRefMarker = parseNullableTypeSuffix(typeRefMarker); if (at(DOT)) { // This is a receiver for a function type @@ -1513,6 +1507,17 @@ public class JetParsing extends AbstractJetParsing { return typeRefMarker; } + @NotNull + PsiBuilder.Marker parseNullableTypeSuffix(@NotNull PsiBuilder.Marker typeRefMarker) { + while (at(QUEST)) { + PsiBuilder.Marker precede = typeRefMarker.precede(); + advance(); // QUEST + typeRefMarker.done(NULLABLE_TYPE); + typeRefMarker = precede; + } + return typeRefMarker; + } + /* * userType * : ("package" ".")? simpleUserType{"."} diff --git a/compiler/testData/diagnostics/testsWithStdLib/callableReference/function/extensionOnNullable.kt b/compiler/testData/diagnostics/testsWithStdLib/callableReference/function/extensionOnNullable.kt new file mode 100644 index 00000000000..f6fb90d4f42 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithStdLib/callableReference/function/extensionOnNullable.kt @@ -0,0 +1,8 @@ +class A { + fun foo() {} +} + +fun A?.foo() {} + +val f = A::foo : KMemberFunction0 +val g = A?::foo : KExtensionFunction0 diff --git a/compiler/testData/psi/DoubleColon.kt b/compiler/testData/psi/DoubleColon.kt index bf44a1c132d..acb42293fbe 100644 --- a/compiler/testData/psi/DoubleColon.kt +++ b/compiler/testData/psi/DoubleColon.kt @@ -23,6 +23,11 @@ fun ok() { (a::b)() a.(b::c)() a.b::c() + + a?::b + a??::b + a?::c + a?::d } fun err0() { diff --git a/compiler/testData/psi/DoubleColon.txt b/compiler/testData/psi/DoubleColon.txt index a1e37dc967d..278f3d7554f 100644 --- a/compiler/testData/psi/DoubleColon.txt +++ b/compiler/testData/psi/DoubleColon.txt @@ -392,6 +392,78 @@ JetFile: DoubleColon.kt PsiErrorElement:Unexpected tokens (use ';' to separate expressions on the same line) PsiElement(LPAR)('(') PsiElement(RPAR)(')') + PsiWhiteSpace('\n\n ') + CALLABLE_REFERENCE_EXPRESSION + TYPE_REFERENCE + NULLABLE_TYPE + USER_TYPE + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('a') + PsiElement(QUEST)('?') + PsiElement(COLONCOLON)('::') + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('b') + PsiWhiteSpace('\n ') + CALLABLE_REFERENCE_EXPRESSION + TYPE_REFERENCE + NULLABLE_TYPE + NULLABLE_TYPE + USER_TYPE + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('a') + PsiElement(QUEST)('?') + PsiElement(QUEST)('?') + PsiElement(COLONCOLON)('::') + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('b') + PsiWhiteSpace('\n ') + CALLABLE_REFERENCE_EXPRESSION + TYPE_REFERENCE + NULLABLE_TYPE + USER_TYPE + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('a') + TYPE_ARGUMENT_LIST + PsiElement(LT)('<') + TYPE_PROJECTION + TYPE_REFERENCE + USER_TYPE + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('b') + PsiElement(GT)('>') + PsiElement(QUEST)('?') + PsiElement(COLONCOLON)('::') + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('c') + PsiWhiteSpace('\n ') + CALLABLE_REFERENCE_EXPRESSION + TYPE_REFERENCE + NULLABLE_TYPE + USER_TYPE + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('a') + TYPE_ARGUMENT_LIST + PsiElement(LT)('<') + TYPE_PROJECTION + TYPE_REFERENCE + NULLABLE_TYPE + USER_TYPE + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('b') + PsiElement(QUEST)('?') + PsiElement(COMMA)(',') + TYPE_PROJECTION + TYPE_REFERENCE + NULLABLE_TYPE + USER_TYPE + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('c') + PsiElement(QUEST)('?') + PsiElement(GT)('>') + PsiElement(QUEST)('?') + PsiElement(COLONCOLON)('::') + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('d') PsiWhiteSpace('\n') PsiElement(RBRACE)('}') PsiWhiteSpace('\n\n') diff --git a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestWithStdLibGenerated.java b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestWithStdLibGenerated.java index 186d535e122..ed8963048ac 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestWithStdLibGenerated.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestWithStdLibGenerated.java @@ -192,6 +192,11 @@ public class JetDiagnosticsTestWithStdLibGenerated extends AbstractJetDiagnostic doTest("compiler/testData/diagnostics/testsWithStdLib/callableReference/function/extensionInClassDisallowed.kt"); } + @TestMetadata("extensionOnNullable.kt") + public void testExtensionOnNullable() throws Exception { + doTest("compiler/testData/diagnostics/testsWithStdLib/callableReference/function/extensionOnNullable.kt"); + } + @TestMetadata("genericClassFromTopLevel.kt") public void testGenericClassFromTopLevel() throws Exception { doTest("compiler/testData/diagnostics/testsWithStdLib/callableReference/function/genericClassFromTopLevel.kt"); diff --git a/grammar/src/expressions.grm b/grammar/src/expressions.grm index 5b4bae7859e..39e547baaf0 100644 --- a/grammar/src/expressions.grm +++ b/grammar/src/expressions.grm @@ -104,7 +104,7 @@ postfixUnaryExpression // TODO: callSuffix is forbidden after callableReference, since parentheses will be used to provide parameter types callableReference - : userType? "::" SimpleName + : (userType "?"*)? "::" SimpleName ; // !!! When you add here, remember to update the FIRST set in the parser From 059538ce1b6c2af1993bcdedf37f792a22b9c465 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Fri, 6 Jun 2014 23:07:09 +0400 Subject: [PATCH 09/23] Extract kotlin-maven-plugin tests into a separate subproject Because they need kotlin-runtime to run, which is built by kotlin-maven-plugin --- libraries/pom.xml | 1 + .../tools/kotlin-maven-plugin-test/.gitignore | 1 + .../tools/kotlin-maven-plugin-test/pom.xml | 78 +++++++++++++++++++ .../src/it/settings.xml | 0 .../src/it/test-classpath/pom.xml | 27 ++++--- .../main/kotlin/org/jetbrains/HelloWorld.kt | 0 .../org/jetbrains/HelloWorldJavaTest.java | 0 .../src/it/test-classpath/verify.bsh | 6 ++ .../src/it/test-helloworld/pom.xml | 28 ++++--- .../main/kotlin/org/jetbrains/HelloWorld.kt | 0 .../org/jetbrains/HelloWorldJavaTest.java | 0 .../src/it/test-helloworld/verify.bsh | 6 ++ .../src/it/test-inlineDisabled/pom.xml | 36 ++++----- .../main/kotlin/org/jetbrains/HelloWorld.kt | 0 .../org/jetbrains/HelloWorldJavaTest.java | 0 .../src/it/test-inlineDisabled/verify.bsh | 6 ++ libraries/tools/kotlin-maven-plugin/pom.xml | 57 +------------- .../src/it/test-classpath/verify.bsh | 7 -- .../src/it/test-helloworld/verify.bsh | 7 -- .../src/it/test-inlineDisabled/verify.bsh | 7 -- 20 files changed, 144 insertions(+), 123 deletions(-) create mode 100644 libraries/tools/kotlin-maven-plugin-test/.gitignore create mode 100644 libraries/tools/kotlin-maven-plugin-test/pom.xml rename libraries/tools/{kotlin-maven-plugin => kotlin-maven-plugin-test}/src/it/settings.xml (100%) rename libraries/tools/{kotlin-maven-plugin => kotlin-maven-plugin-test}/src/it/test-classpath/pom.xml (82%) rename libraries/tools/{kotlin-maven-plugin => kotlin-maven-plugin-test}/src/it/test-classpath/src/main/kotlin/org/jetbrains/HelloWorld.kt (100%) rename libraries/tools/{kotlin-maven-plugin => kotlin-maven-plugin-test}/src/it/test-classpath/src/test/java/org/jetbrains/HelloWorldJavaTest.java (100%) create mode 100644 libraries/tools/kotlin-maven-plugin-test/src/it/test-classpath/verify.bsh rename libraries/tools/{kotlin-maven-plugin => kotlin-maven-plugin-test}/src/it/test-helloworld/pom.xml (79%) rename libraries/tools/{kotlin-maven-plugin => kotlin-maven-plugin-test}/src/it/test-helloworld/src/main/kotlin/org/jetbrains/HelloWorld.kt (100%) rename libraries/tools/{kotlin-maven-plugin => kotlin-maven-plugin-test}/src/it/test-helloworld/src/test/java/org/jetbrains/HelloWorldJavaTest.java (100%) create mode 100644 libraries/tools/kotlin-maven-plugin-test/src/it/test-helloworld/verify.bsh rename libraries/tools/{kotlin-maven-plugin => kotlin-maven-plugin-test}/src/it/test-inlineDisabled/pom.xml (76%) rename libraries/tools/{kotlin-maven-plugin => kotlin-maven-plugin-test}/src/it/test-inlineDisabled/src/main/kotlin/org/jetbrains/HelloWorld.kt (100%) rename libraries/tools/{kotlin-maven-plugin => kotlin-maven-plugin-test}/src/it/test-inlineDisabled/src/test/java/org/jetbrains/HelloWorldJavaTest.java (100%) create mode 100644 libraries/tools/kotlin-maven-plugin-test/src/it/test-inlineDisabled/verify.bsh delete mode 100644 libraries/tools/kotlin-maven-plugin/src/it/test-classpath/verify.bsh delete mode 100644 libraries/tools/kotlin-maven-plugin/src/it/test-helloworld/verify.bsh delete mode 100644 libraries/tools/kotlin-maven-plugin/src/it/test-inlineDisabled/verify.bsh diff --git a/libraries/pom.xml b/libraries/pom.xml index 736e5c92dab..545322b176b 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -83,6 +83,7 @@ tools/kotlin-gradle-plugin tools/kotlin-gradle-plugin-core tools/kotlin-maven-plugin + tools/kotlin-maven-plugin-test tools/kotlin-js-library tools/kotlin-js-tests tools/kotlin-js-tests-junit diff --git a/libraries/tools/kotlin-maven-plugin-test/.gitignore b/libraries/tools/kotlin-maven-plugin-test/.gitignore new file mode 100644 index 00000000000..b97b22398a9 --- /dev/null +++ b/libraries/tools/kotlin-maven-plugin-test/.gitignore @@ -0,0 +1 @@ +local-repo diff --git a/libraries/tools/kotlin-maven-plugin-test/pom.xml b/libraries/tools/kotlin-maven-plugin-test/pom.xml new file mode 100644 index 00000000000..45d894a6ed1 --- /dev/null +++ b/libraries/tools/kotlin-maven-plugin-test/pom.xml @@ -0,0 +1,78 @@ + + + + kotlin-project + org.jetbrains.kotlin + 0.1-SNAPSHOT + ../../pom.xml + + 4.0.0 + + kotlin-maven-plugin-test + + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${project.version} + + + org.jetbrains.kotlin + kotlin-runtime + ${project.version} + + + + + + + integrationTest + + true + + + + + maven-invoker-plugin + 1.5 + + src/it + ${project.build.directory}/it + + */pom.xml + + + + local-repo + verify.bsh + true + + + + integration-test + + + install + run + + + + + + + + + + + noTest + + false + + + + diff --git a/libraries/tools/kotlin-maven-plugin/src/it/settings.xml b/libraries/tools/kotlin-maven-plugin-test/src/it/settings.xml similarity index 100% rename from libraries/tools/kotlin-maven-plugin/src/it/settings.xml rename to libraries/tools/kotlin-maven-plugin-test/src/it/settings.xml diff --git a/libraries/tools/kotlin-maven-plugin/src/it/test-classpath/pom.xml b/libraries/tools/kotlin-maven-plugin-test/src/it/test-classpath/pom.xml similarity index 82% rename from libraries/tools/kotlin-maven-plugin/src/it/test-classpath/pom.xml rename to libraries/tools/kotlin-maven-plugin-test/src/it/test-classpath/pom.xml index c6f3fa142f1..a0eab05def2 100644 --- a/libraries/tools/kotlin-maven-plugin/src/it/test-classpath/pom.xml +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-classpath/pom.xml @@ -4,18 +4,14 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - org.jetbrains.kotlin.it + + org.jetbrains.kotlin + kotlin-project + 0.1-SNAPSHOT + ../../pom.xml + + test-classpath - 1.0 - Test Hello World project - - - Test the kotlin-maven-plugin:compile goal on test-classpath project. - - - - 0.1-SNAPSHOT - @@ -23,6 +19,11 @@ junit 4.9 + + org.jetbrains.kotlin + kotlin-runtime + ${project.version} + @@ -45,14 +46,12 @@ - ${project.basedir}/src/main/kotlin - kotlin-maven-plugin org.jetbrains.kotlin - ${kotlin.version} + ${project.version} compile diff --git a/libraries/tools/kotlin-maven-plugin/src/it/test-classpath/src/main/kotlin/org/jetbrains/HelloWorld.kt b/libraries/tools/kotlin-maven-plugin-test/src/it/test-classpath/src/main/kotlin/org/jetbrains/HelloWorld.kt similarity index 100% rename from libraries/tools/kotlin-maven-plugin/src/it/test-classpath/src/main/kotlin/org/jetbrains/HelloWorld.kt rename to libraries/tools/kotlin-maven-plugin-test/src/it/test-classpath/src/main/kotlin/org/jetbrains/HelloWorld.kt diff --git a/libraries/tools/kotlin-maven-plugin/src/it/test-classpath/src/test/java/org/jetbrains/HelloWorldJavaTest.java b/libraries/tools/kotlin-maven-plugin-test/src/it/test-classpath/src/test/java/org/jetbrains/HelloWorldJavaTest.java similarity index 100% rename from libraries/tools/kotlin-maven-plugin/src/it/test-classpath/src/test/java/org/jetbrains/HelloWorldJavaTest.java rename to libraries/tools/kotlin-maven-plugin-test/src/it/test-classpath/src/test/java/org/jetbrains/HelloWorldJavaTest.java diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-classpath/verify.bsh b/libraries/tools/kotlin-maven-plugin-test/src/it/test-classpath/verify.bsh new file mode 100644 index 00000000000..170fc10928f --- /dev/null +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-classpath/verify.bsh @@ -0,0 +1,6 @@ +import java.io.*; + +File file = new File(basedir, "target/test-classpath-0.1-SNAPSHOT.jar"); +if (!file.exists() || !file.isFile()) { + throw new FileNotFoundException("Could not find generated JAR: " + file); +} diff --git a/libraries/tools/kotlin-maven-plugin/src/it/test-helloworld/pom.xml b/libraries/tools/kotlin-maven-plugin-test/src/it/test-helloworld/pom.xml similarity index 79% rename from libraries/tools/kotlin-maven-plugin/src/it/test-helloworld/pom.xml rename to libraries/tools/kotlin-maven-plugin-test/src/it/test-helloworld/pom.xml index 1d279ecede0..be4a3ab1e40 100644 --- a/libraries/tools/kotlin-maven-plugin/src/it/test-helloworld/pom.xml +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-helloworld/pom.xml @@ -4,18 +4,14 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - org.jetbrains.kotlin.it + + org.jetbrains.kotlin + kotlin-project + 0.1-SNAPSHOT + ../../pom.xml + + test-helloworld - 1.0 - Test Hello World project - - - Test the kotlin-maven-plugin:compile goal on HelloWorld project. - - - - 0.1-SNAPSHOT - @@ -23,6 +19,11 @@ junit 4.9 + + org.jetbrains.kotlin + kotlin-runtime + ${project.version} + @@ -45,15 +46,12 @@ - ${project.basedir}/src/main/kotlin - - kotlin-maven-plugin org.jetbrains.kotlin - ${kotlin.version} + ${project.version} compile diff --git a/libraries/tools/kotlin-maven-plugin/src/it/test-helloworld/src/main/kotlin/org/jetbrains/HelloWorld.kt b/libraries/tools/kotlin-maven-plugin-test/src/it/test-helloworld/src/main/kotlin/org/jetbrains/HelloWorld.kt similarity index 100% rename from libraries/tools/kotlin-maven-plugin/src/it/test-helloworld/src/main/kotlin/org/jetbrains/HelloWorld.kt rename to libraries/tools/kotlin-maven-plugin-test/src/it/test-helloworld/src/main/kotlin/org/jetbrains/HelloWorld.kt diff --git a/libraries/tools/kotlin-maven-plugin/src/it/test-helloworld/src/test/java/org/jetbrains/HelloWorldJavaTest.java b/libraries/tools/kotlin-maven-plugin-test/src/it/test-helloworld/src/test/java/org/jetbrains/HelloWorldJavaTest.java similarity index 100% rename from libraries/tools/kotlin-maven-plugin/src/it/test-helloworld/src/test/java/org/jetbrains/HelloWorldJavaTest.java rename to libraries/tools/kotlin-maven-plugin-test/src/it/test-helloworld/src/test/java/org/jetbrains/HelloWorldJavaTest.java diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-helloworld/verify.bsh b/libraries/tools/kotlin-maven-plugin-test/src/it/test-helloworld/verify.bsh new file mode 100644 index 00000000000..00656d3d18d --- /dev/null +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-helloworld/verify.bsh @@ -0,0 +1,6 @@ +import java.io.*; + +File file = new File(basedir, "target/test-helloworld-0.1-SNAPSHOT.jar"); +if (!file.exists() || !file.isFile()) { + throw new FileNotFoundException("Could not find generated JAR: " + file); +} diff --git a/libraries/tools/kotlin-maven-plugin/src/it/test-inlineDisabled/pom.xml b/libraries/tools/kotlin-maven-plugin-test/src/it/test-inlineDisabled/pom.xml similarity index 76% rename from libraries/tools/kotlin-maven-plugin/src/it/test-inlineDisabled/pom.xml rename to libraries/tools/kotlin-maven-plugin-test/src/it/test-inlineDisabled/pom.xml index e3962d2f054..505a63a79ef 100644 --- a/libraries/tools/kotlin-maven-plugin/src/it/test-inlineDisabled/pom.xml +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-inlineDisabled/pom.xml @@ -4,18 +4,14 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - org.jetbrains.kotlin.it + + org.jetbrains.kotlin + kotlin-project + 0.1-SNAPSHOT + ../../pom.xml + + test-inlineDisabled - 1.0 - Test Hello World project - - - Test the kotlin-maven-plugin:compile goal on HelloWorld project. - - - - 0.1-SNAPSHOT - @@ -23,6 +19,11 @@ junit 4.9 + + org.jetbrains.kotlin + kotlin-runtime + ${project.version} + @@ -45,15 +46,12 @@ - ${project.basedir}/src/main/kotlin - - kotlin-maven-plugin org.jetbrains.kotlin - ${kotlin.version} + ${project.version} compile @@ -70,11 +68,11 @@ - - false - + + false + - \ No newline at end of file + diff --git a/libraries/tools/kotlin-maven-plugin/src/it/test-inlineDisabled/src/main/kotlin/org/jetbrains/HelloWorld.kt b/libraries/tools/kotlin-maven-plugin-test/src/it/test-inlineDisabled/src/main/kotlin/org/jetbrains/HelloWorld.kt similarity index 100% rename from libraries/tools/kotlin-maven-plugin/src/it/test-inlineDisabled/src/main/kotlin/org/jetbrains/HelloWorld.kt rename to libraries/tools/kotlin-maven-plugin-test/src/it/test-inlineDisabled/src/main/kotlin/org/jetbrains/HelloWorld.kt diff --git a/libraries/tools/kotlin-maven-plugin/src/it/test-inlineDisabled/src/test/java/org/jetbrains/HelloWorldJavaTest.java b/libraries/tools/kotlin-maven-plugin-test/src/it/test-inlineDisabled/src/test/java/org/jetbrains/HelloWorldJavaTest.java similarity index 100% rename from libraries/tools/kotlin-maven-plugin/src/it/test-inlineDisabled/src/test/java/org/jetbrains/HelloWorldJavaTest.java rename to libraries/tools/kotlin-maven-plugin-test/src/it/test-inlineDisabled/src/test/java/org/jetbrains/HelloWorldJavaTest.java diff --git a/libraries/tools/kotlin-maven-plugin-test/src/it/test-inlineDisabled/verify.bsh b/libraries/tools/kotlin-maven-plugin-test/src/it/test-inlineDisabled/verify.bsh new file mode 100644 index 00000000000..5ecd01be2e1 --- /dev/null +++ b/libraries/tools/kotlin-maven-plugin-test/src/it/test-inlineDisabled/verify.bsh @@ -0,0 +1,6 @@ +import java.io.*; + +File file = new File(basedir, "target/test-inlineDisabled-0.1-SNAPSHOT.jar"); +if (!file.exists() || !file.isFile()) { + throw new FileNotFoundException("Could not find generated JAR: " + file); +} diff --git a/libraries/tools/kotlin-maven-plugin/pom.xml b/libraries/tools/kotlin-maven-plugin/pom.xml index 548c9a40337..eb5a0280675 100644 --- a/libraries/tools/kotlin-maven-plugin/pom.xml +++ b/libraries/tools/kotlin-maven-plugin/pom.xml @@ -20,12 +20,12 @@ maven-plugin - + org.apache.maven maven-core ${maven.version} - - + + org.apache.maven maven-plugin-api ${maven.version} @@ -60,55 +60,4 @@ - - - - - integrationTest - - true - - - - - maven-invoker-plugin - 1.5 - - src/it - ${project.build.directory}/it - - */pom.xml - - - - local-repo - verify.bsh - true - - - - integration-test - - - install - run - - - - - - - - - - - noTest - - false - - - diff --git a/libraries/tools/kotlin-maven-plugin/src/it/test-classpath/verify.bsh b/libraries/tools/kotlin-maven-plugin/src/it/test-classpath/verify.bsh deleted file mode 100644 index 84e8c9cabd5..00000000000 --- a/libraries/tools/kotlin-maven-plugin/src/it/test-classpath/verify.bsh +++ /dev/null @@ -1,7 +0,0 @@ -import java.io.*; - -File file = new File( basedir, "target/test-classpath-1.0.jar" ); -if (!file.exists() || !file.isFile()) -{ - throw new FileNotFoundException( "Could not find generated JAR: " + file ); -} \ No newline at end of file diff --git a/libraries/tools/kotlin-maven-plugin/src/it/test-helloworld/verify.bsh b/libraries/tools/kotlin-maven-plugin/src/it/test-helloworld/verify.bsh deleted file mode 100644 index 760db7e13d0..00000000000 --- a/libraries/tools/kotlin-maven-plugin/src/it/test-helloworld/verify.bsh +++ /dev/null @@ -1,7 +0,0 @@ -import java.io.*; - -File file = new File( basedir, "target/test-helloworld-1.0.jar" ); -if (!file.exists() || !file.isFile()) -{ - throw new FileNotFoundException( "Could not find generated JAR: " + file ); -} \ No newline at end of file diff --git a/libraries/tools/kotlin-maven-plugin/src/it/test-inlineDisabled/verify.bsh b/libraries/tools/kotlin-maven-plugin/src/it/test-inlineDisabled/verify.bsh deleted file mode 100644 index c6efc3505ec..00000000000 --- a/libraries/tools/kotlin-maven-plugin/src/it/test-inlineDisabled/verify.bsh +++ /dev/null @@ -1,7 +0,0 @@ -import java.io.*; - -File file = new File( basedir, "target/test-inlineDisabled-1.0.jar" ); -if (!file.exists() || !file.isFile()) -{ - throw new FileNotFoundException( "Could not find generated JAR: " + file ); -} \ No newline at end of file From ac8eb0f5e875336ce23990ce288ce0440e61a00b Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 9 Jun 2014 19:11:30 +0400 Subject: [PATCH 10/23] Add PackageClassUtils.getPackageClassInternalName() --- .../jetbrains/jet/codegen/binding/PsiCodegenPredictor.java | 5 ++--- .../src/org/jetbrains/jet/codegen/state/JetTypeMapper.java | 2 +- .../jetbrains/jet/lang/resolve/java/PackageClassUtils.java | 5 +++++ .../jet/plugin/debugger/evaluate/KotlinEvaluationBuilder.kt | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/binding/PsiCodegenPredictor.java b/compiler/backend/src/org/jetbrains/jet/codegen/binding/PsiCodegenPredictor.java index 2657308862a..09947049a9f 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/binding/PsiCodegenPredictor.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/binding/PsiCodegenPredictor.java @@ -33,6 +33,7 @@ import org.jetbrains.jet.lang.resolve.BindingContextUtils; import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.resolve.java.JvmAbi; import org.jetbrains.jet.lang.resolve.java.JvmClassName; +import org.jetbrains.jet.lang.resolve.java.PackageClassUtils; import org.jetbrains.jet.lang.resolve.kotlin.PackagePartClassUtils; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.Name; @@ -42,7 +43,6 @@ import java.util.ArrayList; import java.util.Collection; import static org.jetbrains.jet.lang.resolve.BindingContextUtils.descriptorToDeclaration; -import static org.jetbrains.jet.lang.resolve.java.PackageClassUtils.getPackageClassFqName; public final class PsiCodegenPredictor { private PsiCodegenPredictor() { @@ -87,9 +87,8 @@ public final class PsiCodegenPredictor { FqName packageFqName = declaration.getContainingJetFile().getPackageFqName(); if (declaration instanceof JetNamedFunction) { - FqName packageClass = getPackageClassFqName(packageFqName); Name name = ((JetNamedFunction) declaration).getNameAsName(); - return name == null ? null : AsmUtil.internalNameByFqNameWithoutInnerClasses(packageClass) + "$" + name.asString(); + return name == null ? null : PackageClassUtils.getPackageClassInternalName(packageFqName) + "$" + name.asString(); } parentInternalName = AsmUtil.internalNameByFqNameWithoutInnerClasses(packageFqName); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/state/JetTypeMapper.java b/compiler/backend/src/org/jetbrains/jet/codegen/state/JetTypeMapper.java index 6dee5371442..9531769d875 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/state/JetTypeMapper.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/state/JetTypeMapper.java @@ -143,7 +143,7 @@ public class JetTypeMapper { } } - return PackageClassUtils.getPackageClassFqName(packageFragment.getFqName()).asString().replace('.', '/'); + return PackageClassUtils.getPackageClassInternalName(packageFragment.getFqName()); } @NotNull diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/PackageClassUtils.java b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/PackageClassUtils.java index 72b5c45e4f5..bfa1a3b6ed2 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/PackageClassUtils.java +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/PackageClassUtils.java @@ -46,6 +46,11 @@ public final class PackageClassUtils { return packageFQN.child(Name.identifier(getPackageClassName(packageFQN))); } + @NotNull + public static String getPackageClassInternalName(@NotNull FqName packageFQN) { + return JvmClassName.byFqNameWithoutInnerClasses(getPackageClassFqName(packageFQN)).getInternalName(); + } + public static boolean isPackageClassFqName(@NotNull FqName fqName) { return !fqName.isRoot() && getPackageClassFqName(fqName.parent()).equals(fqName); } diff --git a/idea/src/org/jetbrains/jet/plugin/debugger/evaluate/KotlinEvaluationBuilder.kt b/idea/src/org/jetbrains/jet/plugin/debugger/evaluate/KotlinEvaluationBuilder.kt index 4ef6861a05d..b13a3920367 100644 --- a/idea/src/org/jetbrains/jet/plugin/debugger/evaluate/KotlinEvaluationBuilder.kt +++ b/idea/src/org/jetbrains/jet/plugin/debugger/evaluate/KotlinEvaluationBuilder.kt @@ -270,7 +270,7 @@ package packageForDebugger !FUNCTION! """ -private val packageInternalName = PackageClassUtils.getPackageClassFqName(FqName("packageForDebugger")).asString().replace(".", "/") +private val packageInternalName = PackageClassUtils.getPackageClassInternalName(FqName("packageForDebugger")) private fun createFileForDebugger(codeFragment: JetCodeFragment, extractedFunction: JetNamedFunction From 544cf4f28d3a4ff29e627c991502d27c6bfcef95 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Tue, 17 Jun 2014 15:59:59 +0400 Subject: [PATCH 11/23] Rename JvmFunctionImplTypes -> JvmRuntimeTypes Will be used for other JVM runtime types as well --- ...vmFunctionImplTypes.java => JvmRuntimeTypes.java} | 6 +++--- .../codegen/binding/CodegenAnnotatingVisitor.java | 12 ++++++------ .../jetbrains/jet/codegen/state/GenerationState.java | 8 ++++---- 3 files changed, 13 insertions(+), 13 deletions(-) rename compiler/backend/src/org/jetbrains/jet/codegen/{JvmFunctionImplTypes.java => JvmRuntimeTypes.java} (97%) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/JvmFunctionImplTypes.java b/compiler/backend/src/org/jetbrains/jet/codegen/JvmRuntimeTypes.java similarity index 97% rename from compiler/backend/src/org/jetbrains/jet/codegen/JvmFunctionImplTypes.java rename to compiler/backend/src/org/jetbrains/jet/codegen/JvmRuntimeTypes.java index c315f11c1c7..86818b815b4 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/JvmFunctionImplTypes.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/JvmRuntimeTypes.java @@ -33,7 +33,7 @@ import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import java.util.*; -public class JvmFunctionImplTypes { +public class JvmRuntimeTypes { private final ReflectionTypes reflectionTypes; private final ClassDescriptor functionImpl; @@ -42,7 +42,7 @@ public class JvmFunctionImplTypes { private final ClassDescriptor kMemberFunctionImpl; private final ClassDescriptor kExtensionFunctionImpl; - public JvmFunctionImplTypes(@NotNull ReflectionTypes reflectionTypes) { + public JvmRuntimeTypes(@NotNull ReflectionTypes reflectionTypes) { this.reflectionTypes = reflectionTypes; ModuleDescriptor fakeModule = new ModuleDescriptorImpl(Name.special(""), @@ -125,7 +125,7 @@ public class JvmFunctionImplTypes { } @NotNull - public Collection getSupertypesForCallableReference(@NotNull FunctionDescriptor descriptor) { + public Collection getSupertypesForFunctionReference(@NotNull FunctionDescriptor descriptor) { ReceiverParameterDescriptor receiverParameter = descriptor.getReceiverParameter(); ReceiverParameterDescriptor expectedThisObject = descriptor.getExpectedThisObject(); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/binding/CodegenAnnotatingVisitor.java b/compiler/backend/src/org/jetbrains/jet/codegen/binding/CodegenAnnotatingVisitor.java index 32c9ced2bd8..00ef7e2abbb 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/binding/CodegenAnnotatingVisitor.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/binding/CodegenAnnotatingVisitor.java @@ -23,7 +23,7 @@ import com.intellij.util.containers.Stack; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.codegen.AsmUtil; -import org.jetbrains.jet.codegen.JvmFunctionImplTypes; +import org.jetbrains.jet.codegen.JvmRuntimeTypes; import org.jetbrains.jet.codegen.SamCodegenUtil; import org.jetbrains.jet.codegen.SamType; import org.jetbrains.jet.codegen.state.GenerationState; @@ -88,13 +88,13 @@ class CodegenAnnotatingVisitor extends JetVisitorVoid { private final BindingTrace bindingTrace; private final BindingContext bindingContext; private final GenerationState.GenerateClassFilter filter; - private final JvmFunctionImplTypes functionImplTypes; + private final JvmRuntimeTypes runtimeTypes; public CodegenAnnotatingVisitor(@NotNull GenerationState state) { this.bindingTrace = state.getBindingTrace(); this.bindingContext = state.getBindingContext(); this.filter = state.getGenerateDeclaredClassFilter(); - this.functionImplTypes = state.getJvmFunctionImplTypes(); + this.runtimeTypes = state.getJvmRuntimeTypes(); } @NotNull @@ -264,7 +264,7 @@ class CodegenAnnotatingVisitor extends JetVisitorVoid { if (functionDescriptor == null) return; String name = inventAnonymousClassName(expression); - Collection supertypes = functionImplTypes.getSupertypesForClosure(functionDescriptor); + Collection supertypes = runtimeTypes.getSupertypesForClosure(functionDescriptor); ClassDescriptor classDescriptor = recordClassForFunction(functionDescriptor, supertypes); recordClosure(functionLiteral, classDescriptor, name); @@ -313,7 +313,7 @@ class CodegenAnnotatingVisitor extends JetVisitorVoid { ResolvedCall referencedFunction = bindingContext.get(RESOLVED_CALL, expression.getCallableReference()); if (referencedFunction == null) return; Collection supertypes = - functionImplTypes.getSupertypesForCallableReference((FunctionDescriptor) referencedFunction.getResultingDescriptor()); + runtimeTypes.getSupertypesForFunctionReference((FunctionDescriptor) referencedFunction.getResultingDescriptor()); String name = inventAnonymousClassName(expression); ClassDescriptor classDescriptor = recordClassForFunction(functionDescriptor, supertypes); @@ -366,7 +366,7 @@ class CodegenAnnotatingVisitor extends JetVisitorVoid { } else { String name = inventAnonymousClassName(function); - Collection supertypes = functionImplTypes.getSupertypesForClosure(functionDescriptor); + Collection supertypes = runtimeTypes.getSupertypesForClosure(functionDescriptor); ClassDescriptor classDescriptor = recordClassForFunction(functionDescriptor, supertypes); recordClosure(function, classDescriptor, name); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/state/GenerationState.java b/compiler/backend/src/org/jetbrains/jet/codegen/state/GenerationState.java index ae7bedf5c3d..6d9dbc94f2d 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/state/GenerationState.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/state/GenerationState.java @@ -93,7 +93,7 @@ public class GenerationState { @Nullable private List earlierScriptsForReplInterpreter; - private final JvmFunctionImplTypes functionImplTypes; + private final JvmRuntimeTypes runtimeTypes; @NotNull private final ModuleDescriptor module; @@ -153,7 +153,7 @@ public class GenerationState { this.generateClassFilter = generateClassFilter; ReflectionTypes reflectionTypes = new ReflectionTypes(module); - this.functionImplTypes = new JvmFunctionImplTypes(reflectionTypes); + this.runtimeTypes = new JvmRuntimeTypes(reflectionTypes); } @NotNull @@ -220,8 +220,8 @@ public class GenerationState { } @NotNull - public JvmFunctionImplTypes getJvmFunctionImplTypes() { - return functionImplTypes; + public JvmRuntimeTypes getJvmRuntimeTypes() { + return runtimeTypes; } public boolean isInlineEnabled() { From 09863445bb369b4af43194d49ee3ac6a42bd5ecb Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Wed, 25 Jun 2014 03:42:42 +0400 Subject: [PATCH 12/23] Rename tests: boxWithJava -> boxAgainstJava --- .../annotations/javaAnnotationCall.java | 0 .../annotations/javaAnnotationCall.kt | 0 .../annotations/javaAnnotationDefault.java | 0 .../annotations/javaAnnotationDefault.kt | 0 ...NegativePropertyAsAnnotationParameter.java | 0 ...vaNegativePropertyAsAnnotationParameter.kt | 0 .../javaPropertyAsAnnotationParameter.java | 0 .../javaPropertyAsAnnotationParameter.kt | 0 .../javaPropertyWithIntInitializer.java | 0 .../javaPropertyWithIntInitializer.kt | 0 .../annotations/retentionInJava.java} | 0 .../annotations/retentionInJava.kt} | 0 .../callableReference/constructor.java | 0 .../callableReference/constructor.kt | 0 .../constructor/genericConstructor.java | 0 .../constructor/genericConstructor.kt | 0 .../delegationAndInheritanceFromJava.java | 0 .../delegationAndInheritanceFromJava.kt | 0 .../enum/simpleJavaEnum.java | 0 .../enum/simpleJavaEnum.kt | 0 .../enum/simpleJavaEnumWithFunction.java | 0 .../enum/simpleJavaEnumWithFunction.kt | 0 .../enum/simpleJavaEnumWithStaticImport.java | 0 .../enum/simpleJavaEnumWithStaticImport.kt | 0 .../enum/simpleJavaInnerEnum.java | 0 .../enum/simpleJavaInnerEnum.kt | 0 .../enum/staticField.java | 0 .../enum/staticField.kt | 0 .../enum/staticMethod.java | 0 .../enum/staticMethod.kt | 0 .../functions/constructor.java | 0 .../functions/constructor.kt | 0 .../functions/max.java | 0 .../functions/max.kt | 0 .../referencesStaticInnerClassMethod.java | 0 .../referencesStaticInnerClassMethod.kt | 0 .../referencesStaticInnerClassMethodL2.java | 0 .../referencesStaticInnerClassMethodL2.kt | 0 .../functions/unrelatedUpperBounds.java | 0 .../functions/unrelatedUpperBounds.kt | 0 .../innerClass/kt3532.java | 0 .../innerClass/kt3532.kt | 0 .../innerClass/kt3812.java | 0 .../innerClass/kt3812.kt | 0 .../innerClass/kt4036.java | 0 .../innerClass/kt4036.kt | 0 .../fieldAccessFromExtensionInTraitImpl.java | 0 .../fieldAccessFromExtensionInTraitImpl.kt | 0 .../property/fieldAccessViaSubclass.java | 0 .../property/fieldAccessViaSubclass.kt | 0 .../sam/adapters/callAbstractAdapter.java | 0 .../sam/adapters/callAbstractAdapter.kt | 0 .../sam/adapters/comparator.java | 0 .../sam/adapters/comparator.kt | 0 .../sam/adapters/constructor.java | 0 .../sam/adapters/constructor.kt | 0 .../sam/adapters/fileFilter.java | 0 .../sam/adapters/fileFilter.kt | 0 .../sam/adapters/genericSignature.java | 0 .../sam/adapters/genericSignature.kt | 0 .../sam/adapters/implementAdapter.java | 0 .../sam/adapters/implementAdapter.kt | 0 .../sam/adapters/inheritedInKotlin.java | 0 .../sam/adapters/inheritedInKotlin.kt | 0 .../adapters/inheritedOverriddenAdapter.java | 0 .../adapters/inheritedOverriddenAdapter.kt | 0 .../sam/adapters/inheritedSimple.java | 0 .../sam/adapters/inheritedSimple.kt | 0 .../nonLiteralAndLiteralRunnable.java | 0 .../adapters/nonLiteralAndLiteralRunnable.kt | 0 .../sam/adapters/nonLiteralComparator.java | 0 .../sam/adapters/nonLiteralComparator.kt | 0 .../sam/adapters/nonLiteralInConstructor.java | 0 .../sam/adapters/nonLiteralInConstructor.kt | 0 .../sam/adapters/nonLiteralNull.java | 0 .../sam/adapters/nonLiteralNull.kt | 0 .../sam/adapters/nonLiteralRunnable.java | 0 .../sam/adapters/nonLiteralRunnable.kt | 0 .../augmentedAssignmentAndSquareBrackets.java | 0 .../augmentedAssignmentAndSquareBrackets.kt | 0 .../operators/augmentedAssignmentPure.java | 0 .../operators/augmentedAssignmentPure.kt | 0 .../augmentedAssignmentViaSimpleBinary.java | 0 .../augmentedAssignmentViaSimpleBinary.kt | 0 .../sam/adapters/operators/binary.java | 0 .../sam/adapters/operators/binary.kt | 0 .../sam/adapters/operators/compareTo.java | 0 .../sam/adapters/operators/compareTo.kt | 0 .../sam/adapters/operators/contains.java | 0 .../sam/adapters/operators/contains.kt | 0 .../sam/adapters/operators/get.java | 0 .../sam/adapters/operators/get.kt | 0 .../sam/adapters/operators/infixCall.java | 0 .../sam/adapters/operators/infixCall.kt | 0 .../sam/adapters/operators/invoke.java | 0 .../sam/adapters/operators/invoke.kt | 0 .../sam/adapters/operators/multiGetSet.java | 0 .../sam/adapters/operators/multiGetSet.kt | 0 .../sam/adapters/operators/multiInvoke.java | 0 .../sam/adapters/operators/multiInvoke.kt | 0 .../sam/adapters/operators/set.java | 0 .../sam/adapters/operators/set.kt | 0 .../sam/adapters/severalSamParameters.java | 0 .../sam/adapters/severalSamParameters.kt | 0 .../sam/adapters/simplest.java | 0 .../sam/adapters/simplest.kt | 0 .../sam/adapters/superconstructor.java | 0 .../sam/adapters/superconstructor.kt | 0 .../sam/adapters/typeParameterOfClass.java | 0 .../sam/adapters/typeParameterOfClass.kt | 0 .../sam/adapters/typeParameterOfMethod.java | 0 .../sam/adapters/typeParameterOfMethod.kt | 0 .../adapters/typeParameterOfOuterClass.java | 0 .../sam/adapters/typeParameterOfOuterClass.kt | 0 .../sam/differentFqNames.java | 0 .../sam/differentFqNames.kt | 0 .../sam/samConstructorGenericSignature.java | 0 .../sam/samConstructorGenericSignature.kt | 0 .../staticFun/classWithNestedEnum.java | 0 .../staticFun/classWithNestedEnum.kt | 0 .../visibility/package/kt2781.java | 0 .../visibility/package/kt2781.kt | 0 .../visibility/package/packageClass.java | 0 .../visibility/package/packageClass.kt | 0 .../visibility/package/packageFun.java | 0 .../visibility/package/packageFun.kt | 0 .../visibility/package/packageProperty.java | 0 .../visibility/package/packageProperty.kt | 0 .../overrideProtectedFunInPackage.java | 0 .../overrideProtectedFunInPackage.kt | 0 .../protectedFunInPackage.java | 0 .../protectedFunInPackage.kt | 0 .../protectedPropertyInPackage.java | 0 .../protectedPropertyInPackage.kt | 0 .../protectedStaticClass.java | 0 .../protectedStaticClass.kt | 0 .../protectedStatic/funCallInConstructor.java | 0 .../protectedStatic/funCallInConstructor.kt | 0 .../protectedStatic/funClassObject.java | 0 .../protectedStatic/funClassObject.kt | 0 .../protectedStatic/funGenericClass.java | 0 .../protectedStatic/funGenericClass.kt | 0 .../protectedStatic/funNestedStaticClass.java | 0 .../protectedStatic/funNestedStaticClass.kt | 0 .../funNestedStaticClass2.java | 0 .../protectedStatic/funNestedStaticClass2.kt | 0 .../funNestedStaticGenericClass.java | 0 .../funNestedStaticGenericClass.kt | 0 .../funNotDirectSuperClass.java | 0 .../protectedStatic/funNotDirectSuperClass.kt | 0 .../visibility/protectedStatic/funObject.java | 0 .../visibility/protectedStatic/funObject.kt | 0 .../protectedStatic/simpleClass.java | 0 .../visibility/protectedStatic/simpleClass.kt | 0 .../protectedStatic/simpleClass2.java | 0 .../protectedStatic/simpleClass2.kt | 0 .../visibility/protectedStatic/simpleFun.java | 0 .../visibility/protectedStatic/simpleFun.kt | 0 .../protectedStatic/simpleProperty.java | 0 .../protectedStatic/simpleProperty.kt | 0 .../AbstractBlackBoxCodegenTest.java | 6 +- ...ckBoxAgainstJavaCodegenTestGenerated.java} | 240 +++++++++--------- .../jet/generators/tests/GenerateTests.kt | 4 +- 163 files changed, 125 insertions(+), 125 deletions(-) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/annotations/javaAnnotationCall.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/annotations/javaAnnotationCall.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/annotations/javaAnnotationDefault.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/annotations/javaAnnotationDefault.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/annotations/javaNegativePropertyAsAnnotationParameter.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/annotations/javaNegativePropertyAsAnnotationParameter.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/annotations/javaPropertyAsAnnotationParameter.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/annotations/javaPropertyAsAnnotationParameter.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/annotations/javaPropertyWithIntInitializer.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/annotations/javaPropertyWithIntInitializer.kt (100%) rename compiler/testData/codegen/{boxWithJava/annotations/RetentionInJava.java => boxAgainstJava/annotations/retentionInJava.java} (100%) rename compiler/testData/codegen/{boxWithJava/annotations/RetentionInJava.kt => boxAgainstJava/annotations/retentionInJava.kt} (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/callableReference/constructor.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/callableReference/constructor.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/constructor/genericConstructor.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/constructor/genericConstructor.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/delegation/delegationAndInheritanceFromJava.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/delegation/delegationAndInheritanceFromJava.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/enum/simpleJavaEnum.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/enum/simpleJavaEnum.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/enum/simpleJavaEnumWithFunction.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/enum/simpleJavaEnumWithFunction.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/enum/simpleJavaEnumWithStaticImport.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/enum/simpleJavaEnumWithStaticImport.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/enum/simpleJavaInnerEnum.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/enum/simpleJavaInnerEnum.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/enum/staticField.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/enum/staticField.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/enum/staticMethod.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/enum/staticMethod.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/functions/constructor.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/functions/constructor.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/functions/max.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/functions/max.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/functions/referencesStaticInnerClassMethod.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/functions/referencesStaticInnerClassMethod.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/functions/referencesStaticInnerClassMethodL2.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/functions/referencesStaticInnerClassMethodL2.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/functions/unrelatedUpperBounds.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/functions/unrelatedUpperBounds.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/innerClass/kt3532.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/innerClass/kt3532.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/innerClass/kt3812.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/innerClass/kt3812.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/innerClass/kt4036.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/innerClass/kt4036.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/property/fieldAccessFromExtensionInTraitImpl.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/property/fieldAccessFromExtensionInTraitImpl.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/property/fieldAccessViaSubclass.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/property/fieldAccessViaSubclass.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/callAbstractAdapter.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/callAbstractAdapter.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/comparator.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/comparator.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/constructor.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/constructor.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/fileFilter.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/fileFilter.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/genericSignature.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/genericSignature.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/implementAdapter.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/implementAdapter.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/inheritedInKotlin.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/inheritedInKotlin.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/inheritedOverriddenAdapter.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/inheritedOverriddenAdapter.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/inheritedSimple.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/inheritedSimple.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/nonLiteralAndLiteralRunnable.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/nonLiteralAndLiteralRunnable.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/nonLiteralComparator.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/nonLiteralComparator.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/nonLiteralInConstructor.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/nonLiteralInConstructor.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/nonLiteralNull.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/nonLiteralNull.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/nonLiteralRunnable.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/nonLiteralRunnable.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/operators/augmentedAssignmentAndSquareBrackets.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/operators/augmentedAssignmentAndSquareBrackets.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/operators/augmentedAssignmentPure.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/operators/augmentedAssignmentPure.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/operators/augmentedAssignmentViaSimpleBinary.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/operators/augmentedAssignmentViaSimpleBinary.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/operators/binary.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/operators/binary.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/operators/compareTo.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/operators/compareTo.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/operators/contains.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/operators/contains.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/operators/get.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/operators/get.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/operators/infixCall.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/operators/infixCall.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/operators/invoke.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/operators/invoke.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/operators/multiGetSet.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/operators/multiGetSet.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/operators/multiInvoke.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/operators/multiInvoke.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/operators/set.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/operators/set.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/severalSamParameters.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/severalSamParameters.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/simplest.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/simplest.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/superconstructor.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/superconstructor.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/typeParameterOfClass.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/typeParameterOfClass.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/typeParameterOfMethod.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/typeParameterOfMethod.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/typeParameterOfOuterClass.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/adapters/typeParameterOfOuterClass.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/differentFqNames.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/differentFqNames.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/samConstructorGenericSignature.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/sam/samConstructorGenericSignature.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/staticFun/classWithNestedEnum.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/staticFun/classWithNestedEnum.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/package/kt2781.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/package/kt2781.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/package/packageClass.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/package/packageClass.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/package/packageFun.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/package/packageFun.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/package/packageProperty.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/package/packageProperty.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedAndPackage/overrideProtectedFunInPackage.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedAndPackage/overrideProtectedFunInPackage.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedAndPackage/protectedFunInPackage.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedAndPackage/protectedFunInPackage.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedAndPackage/protectedPropertyInPackage.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedAndPackage/protectedPropertyInPackage.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedAndPackage/protectedStaticClass.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedAndPackage/protectedStaticClass.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedStatic/funCallInConstructor.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedStatic/funCallInConstructor.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedStatic/funClassObject.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedStatic/funClassObject.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedStatic/funGenericClass.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedStatic/funGenericClass.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedStatic/funNestedStaticClass.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedStatic/funNestedStaticClass.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedStatic/funNestedStaticClass2.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedStatic/funNestedStaticClass2.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedStatic/funNestedStaticGenericClass.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedStatic/funNestedStaticGenericClass.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedStatic/funNotDirectSuperClass.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedStatic/funNotDirectSuperClass.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedStatic/funObject.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedStatic/funObject.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedStatic/simpleClass.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedStatic/simpleClass.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedStatic/simpleClass2.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedStatic/simpleClass2.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedStatic/simpleFun.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedStatic/simpleFun.kt (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedStatic/simpleProperty.java (100%) rename compiler/testData/codegen/{boxWithJava => boxAgainstJava}/visibility/protectedStatic/simpleProperty.kt (100%) rename compiler/tests/org/jetbrains/jet/codegen/generated/{BlackBoxWithJavaCodegenTestGenerated.java => BlackBoxAgainstJavaCodegenTestGenerated.java} (59%) diff --git a/compiler/testData/codegen/boxWithJava/annotations/javaAnnotationCall.java b/compiler/testData/codegen/boxAgainstJava/annotations/javaAnnotationCall.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/annotations/javaAnnotationCall.java rename to compiler/testData/codegen/boxAgainstJava/annotations/javaAnnotationCall.java diff --git a/compiler/testData/codegen/boxWithJava/annotations/javaAnnotationCall.kt b/compiler/testData/codegen/boxAgainstJava/annotations/javaAnnotationCall.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/annotations/javaAnnotationCall.kt rename to compiler/testData/codegen/boxAgainstJava/annotations/javaAnnotationCall.kt diff --git a/compiler/testData/codegen/boxWithJava/annotations/javaAnnotationDefault.java b/compiler/testData/codegen/boxAgainstJava/annotations/javaAnnotationDefault.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/annotations/javaAnnotationDefault.java rename to compiler/testData/codegen/boxAgainstJava/annotations/javaAnnotationDefault.java diff --git a/compiler/testData/codegen/boxWithJava/annotations/javaAnnotationDefault.kt b/compiler/testData/codegen/boxAgainstJava/annotations/javaAnnotationDefault.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/annotations/javaAnnotationDefault.kt rename to compiler/testData/codegen/boxAgainstJava/annotations/javaAnnotationDefault.kt diff --git a/compiler/testData/codegen/boxWithJava/annotations/javaNegativePropertyAsAnnotationParameter.java b/compiler/testData/codegen/boxAgainstJava/annotations/javaNegativePropertyAsAnnotationParameter.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/annotations/javaNegativePropertyAsAnnotationParameter.java rename to compiler/testData/codegen/boxAgainstJava/annotations/javaNegativePropertyAsAnnotationParameter.java diff --git a/compiler/testData/codegen/boxWithJava/annotations/javaNegativePropertyAsAnnotationParameter.kt b/compiler/testData/codegen/boxAgainstJava/annotations/javaNegativePropertyAsAnnotationParameter.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/annotations/javaNegativePropertyAsAnnotationParameter.kt rename to compiler/testData/codegen/boxAgainstJava/annotations/javaNegativePropertyAsAnnotationParameter.kt diff --git a/compiler/testData/codegen/boxWithJava/annotations/javaPropertyAsAnnotationParameter.java b/compiler/testData/codegen/boxAgainstJava/annotations/javaPropertyAsAnnotationParameter.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/annotations/javaPropertyAsAnnotationParameter.java rename to compiler/testData/codegen/boxAgainstJava/annotations/javaPropertyAsAnnotationParameter.java diff --git a/compiler/testData/codegen/boxWithJava/annotations/javaPropertyAsAnnotationParameter.kt b/compiler/testData/codegen/boxAgainstJava/annotations/javaPropertyAsAnnotationParameter.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/annotations/javaPropertyAsAnnotationParameter.kt rename to compiler/testData/codegen/boxAgainstJava/annotations/javaPropertyAsAnnotationParameter.kt diff --git a/compiler/testData/codegen/boxWithJava/annotations/javaPropertyWithIntInitializer.java b/compiler/testData/codegen/boxAgainstJava/annotations/javaPropertyWithIntInitializer.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/annotations/javaPropertyWithIntInitializer.java rename to compiler/testData/codegen/boxAgainstJava/annotations/javaPropertyWithIntInitializer.java diff --git a/compiler/testData/codegen/boxWithJava/annotations/javaPropertyWithIntInitializer.kt b/compiler/testData/codegen/boxAgainstJava/annotations/javaPropertyWithIntInitializer.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/annotations/javaPropertyWithIntInitializer.kt rename to compiler/testData/codegen/boxAgainstJava/annotations/javaPropertyWithIntInitializer.kt diff --git a/compiler/testData/codegen/boxWithJava/annotations/RetentionInJava.java b/compiler/testData/codegen/boxAgainstJava/annotations/retentionInJava.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/annotations/RetentionInJava.java rename to compiler/testData/codegen/boxAgainstJava/annotations/retentionInJava.java diff --git a/compiler/testData/codegen/boxWithJava/annotations/RetentionInJava.kt b/compiler/testData/codegen/boxAgainstJava/annotations/retentionInJava.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/annotations/RetentionInJava.kt rename to compiler/testData/codegen/boxAgainstJava/annotations/retentionInJava.kt diff --git a/compiler/testData/codegen/boxWithJava/callableReference/constructor.java b/compiler/testData/codegen/boxAgainstJava/callableReference/constructor.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/callableReference/constructor.java rename to compiler/testData/codegen/boxAgainstJava/callableReference/constructor.java diff --git a/compiler/testData/codegen/boxWithJava/callableReference/constructor.kt b/compiler/testData/codegen/boxAgainstJava/callableReference/constructor.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/callableReference/constructor.kt rename to compiler/testData/codegen/boxAgainstJava/callableReference/constructor.kt diff --git a/compiler/testData/codegen/boxWithJava/constructor/genericConstructor.java b/compiler/testData/codegen/boxAgainstJava/constructor/genericConstructor.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/constructor/genericConstructor.java rename to compiler/testData/codegen/boxAgainstJava/constructor/genericConstructor.java diff --git a/compiler/testData/codegen/boxWithJava/constructor/genericConstructor.kt b/compiler/testData/codegen/boxAgainstJava/constructor/genericConstructor.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/constructor/genericConstructor.kt rename to compiler/testData/codegen/boxAgainstJava/constructor/genericConstructor.kt diff --git a/compiler/testData/codegen/boxWithJava/delegation/delegationAndInheritanceFromJava.java b/compiler/testData/codegen/boxAgainstJava/delegation/delegationAndInheritanceFromJava.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/delegation/delegationAndInheritanceFromJava.java rename to compiler/testData/codegen/boxAgainstJava/delegation/delegationAndInheritanceFromJava.java diff --git a/compiler/testData/codegen/boxWithJava/delegation/delegationAndInheritanceFromJava.kt b/compiler/testData/codegen/boxAgainstJava/delegation/delegationAndInheritanceFromJava.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/delegation/delegationAndInheritanceFromJava.kt rename to compiler/testData/codegen/boxAgainstJava/delegation/delegationAndInheritanceFromJava.kt diff --git a/compiler/testData/codegen/boxWithJava/enum/simpleJavaEnum.java b/compiler/testData/codegen/boxAgainstJava/enum/simpleJavaEnum.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/enum/simpleJavaEnum.java rename to compiler/testData/codegen/boxAgainstJava/enum/simpleJavaEnum.java diff --git a/compiler/testData/codegen/boxWithJava/enum/simpleJavaEnum.kt b/compiler/testData/codegen/boxAgainstJava/enum/simpleJavaEnum.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/enum/simpleJavaEnum.kt rename to compiler/testData/codegen/boxAgainstJava/enum/simpleJavaEnum.kt diff --git a/compiler/testData/codegen/boxWithJava/enum/simpleJavaEnumWithFunction.java b/compiler/testData/codegen/boxAgainstJava/enum/simpleJavaEnumWithFunction.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/enum/simpleJavaEnumWithFunction.java rename to compiler/testData/codegen/boxAgainstJava/enum/simpleJavaEnumWithFunction.java diff --git a/compiler/testData/codegen/boxWithJava/enum/simpleJavaEnumWithFunction.kt b/compiler/testData/codegen/boxAgainstJava/enum/simpleJavaEnumWithFunction.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/enum/simpleJavaEnumWithFunction.kt rename to compiler/testData/codegen/boxAgainstJava/enum/simpleJavaEnumWithFunction.kt diff --git a/compiler/testData/codegen/boxWithJava/enum/simpleJavaEnumWithStaticImport.java b/compiler/testData/codegen/boxAgainstJava/enum/simpleJavaEnumWithStaticImport.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/enum/simpleJavaEnumWithStaticImport.java rename to compiler/testData/codegen/boxAgainstJava/enum/simpleJavaEnumWithStaticImport.java diff --git a/compiler/testData/codegen/boxWithJava/enum/simpleJavaEnumWithStaticImport.kt b/compiler/testData/codegen/boxAgainstJava/enum/simpleJavaEnumWithStaticImport.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/enum/simpleJavaEnumWithStaticImport.kt rename to compiler/testData/codegen/boxAgainstJava/enum/simpleJavaEnumWithStaticImport.kt diff --git a/compiler/testData/codegen/boxWithJava/enum/simpleJavaInnerEnum.java b/compiler/testData/codegen/boxAgainstJava/enum/simpleJavaInnerEnum.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/enum/simpleJavaInnerEnum.java rename to compiler/testData/codegen/boxAgainstJava/enum/simpleJavaInnerEnum.java diff --git a/compiler/testData/codegen/boxWithJava/enum/simpleJavaInnerEnum.kt b/compiler/testData/codegen/boxAgainstJava/enum/simpleJavaInnerEnum.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/enum/simpleJavaInnerEnum.kt rename to compiler/testData/codegen/boxAgainstJava/enum/simpleJavaInnerEnum.kt diff --git a/compiler/testData/codegen/boxWithJava/enum/staticField.java b/compiler/testData/codegen/boxAgainstJava/enum/staticField.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/enum/staticField.java rename to compiler/testData/codegen/boxAgainstJava/enum/staticField.java diff --git a/compiler/testData/codegen/boxWithJava/enum/staticField.kt b/compiler/testData/codegen/boxAgainstJava/enum/staticField.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/enum/staticField.kt rename to compiler/testData/codegen/boxAgainstJava/enum/staticField.kt diff --git a/compiler/testData/codegen/boxWithJava/enum/staticMethod.java b/compiler/testData/codegen/boxAgainstJava/enum/staticMethod.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/enum/staticMethod.java rename to compiler/testData/codegen/boxAgainstJava/enum/staticMethod.java diff --git a/compiler/testData/codegen/boxWithJava/enum/staticMethod.kt b/compiler/testData/codegen/boxAgainstJava/enum/staticMethod.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/enum/staticMethod.kt rename to compiler/testData/codegen/boxAgainstJava/enum/staticMethod.kt diff --git a/compiler/testData/codegen/boxWithJava/functions/constructor.java b/compiler/testData/codegen/boxAgainstJava/functions/constructor.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/functions/constructor.java rename to compiler/testData/codegen/boxAgainstJava/functions/constructor.java diff --git a/compiler/testData/codegen/boxWithJava/functions/constructor.kt b/compiler/testData/codegen/boxAgainstJava/functions/constructor.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/functions/constructor.kt rename to compiler/testData/codegen/boxAgainstJava/functions/constructor.kt diff --git a/compiler/testData/codegen/boxWithJava/functions/max.java b/compiler/testData/codegen/boxAgainstJava/functions/max.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/functions/max.java rename to compiler/testData/codegen/boxAgainstJava/functions/max.java diff --git a/compiler/testData/codegen/boxWithJava/functions/max.kt b/compiler/testData/codegen/boxAgainstJava/functions/max.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/functions/max.kt rename to compiler/testData/codegen/boxAgainstJava/functions/max.kt diff --git a/compiler/testData/codegen/boxWithJava/functions/referencesStaticInnerClassMethod.java b/compiler/testData/codegen/boxAgainstJava/functions/referencesStaticInnerClassMethod.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/functions/referencesStaticInnerClassMethod.java rename to compiler/testData/codegen/boxAgainstJava/functions/referencesStaticInnerClassMethod.java diff --git a/compiler/testData/codegen/boxWithJava/functions/referencesStaticInnerClassMethod.kt b/compiler/testData/codegen/boxAgainstJava/functions/referencesStaticInnerClassMethod.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/functions/referencesStaticInnerClassMethod.kt rename to compiler/testData/codegen/boxAgainstJava/functions/referencesStaticInnerClassMethod.kt diff --git a/compiler/testData/codegen/boxWithJava/functions/referencesStaticInnerClassMethodL2.java b/compiler/testData/codegen/boxAgainstJava/functions/referencesStaticInnerClassMethodL2.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/functions/referencesStaticInnerClassMethodL2.java rename to compiler/testData/codegen/boxAgainstJava/functions/referencesStaticInnerClassMethodL2.java diff --git a/compiler/testData/codegen/boxWithJava/functions/referencesStaticInnerClassMethodL2.kt b/compiler/testData/codegen/boxAgainstJava/functions/referencesStaticInnerClassMethodL2.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/functions/referencesStaticInnerClassMethodL2.kt rename to compiler/testData/codegen/boxAgainstJava/functions/referencesStaticInnerClassMethodL2.kt diff --git a/compiler/testData/codegen/boxWithJava/functions/unrelatedUpperBounds.java b/compiler/testData/codegen/boxAgainstJava/functions/unrelatedUpperBounds.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/functions/unrelatedUpperBounds.java rename to compiler/testData/codegen/boxAgainstJava/functions/unrelatedUpperBounds.java diff --git a/compiler/testData/codegen/boxWithJava/functions/unrelatedUpperBounds.kt b/compiler/testData/codegen/boxAgainstJava/functions/unrelatedUpperBounds.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/functions/unrelatedUpperBounds.kt rename to compiler/testData/codegen/boxAgainstJava/functions/unrelatedUpperBounds.kt diff --git a/compiler/testData/codegen/boxWithJava/innerClass/kt3532.java b/compiler/testData/codegen/boxAgainstJava/innerClass/kt3532.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/innerClass/kt3532.java rename to compiler/testData/codegen/boxAgainstJava/innerClass/kt3532.java diff --git a/compiler/testData/codegen/boxWithJava/innerClass/kt3532.kt b/compiler/testData/codegen/boxAgainstJava/innerClass/kt3532.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/innerClass/kt3532.kt rename to compiler/testData/codegen/boxAgainstJava/innerClass/kt3532.kt diff --git a/compiler/testData/codegen/boxWithJava/innerClass/kt3812.java b/compiler/testData/codegen/boxAgainstJava/innerClass/kt3812.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/innerClass/kt3812.java rename to compiler/testData/codegen/boxAgainstJava/innerClass/kt3812.java diff --git a/compiler/testData/codegen/boxWithJava/innerClass/kt3812.kt b/compiler/testData/codegen/boxAgainstJava/innerClass/kt3812.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/innerClass/kt3812.kt rename to compiler/testData/codegen/boxAgainstJava/innerClass/kt3812.kt diff --git a/compiler/testData/codegen/boxWithJava/innerClass/kt4036.java b/compiler/testData/codegen/boxAgainstJava/innerClass/kt4036.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/innerClass/kt4036.java rename to compiler/testData/codegen/boxAgainstJava/innerClass/kt4036.java diff --git a/compiler/testData/codegen/boxWithJava/innerClass/kt4036.kt b/compiler/testData/codegen/boxAgainstJava/innerClass/kt4036.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/innerClass/kt4036.kt rename to compiler/testData/codegen/boxAgainstJava/innerClass/kt4036.kt diff --git a/compiler/testData/codegen/boxWithJava/property/fieldAccessFromExtensionInTraitImpl.java b/compiler/testData/codegen/boxAgainstJava/property/fieldAccessFromExtensionInTraitImpl.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/property/fieldAccessFromExtensionInTraitImpl.java rename to compiler/testData/codegen/boxAgainstJava/property/fieldAccessFromExtensionInTraitImpl.java diff --git a/compiler/testData/codegen/boxWithJava/property/fieldAccessFromExtensionInTraitImpl.kt b/compiler/testData/codegen/boxAgainstJava/property/fieldAccessFromExtensionInTraitImpl.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/property/fieldAccessFromExtensionInTraitImpl.kt rename to compiler/testData/codegen/boxAgainstJava/property/fieldAccessFromExtensionInTraitImpl.kt diff --git a/compiler/testData/codegen/boxWithJava/property/fieldAccessViaSubclass.java b/compiler/testData/codegen/boxAgainstJava/property/fieldAccessViaSubclass.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/property/fieldAccessViaSubclass.java rename to compiler/testData/codegen/boxAgainstJava/property/fieldAccessViaSubclass.java diff --git a/compiler/testData/codegen/boxWithJava/property/fieldAccessViaSubclass.kt b/compiler/testData/codegen/boxAgainstJava/property/fieldAccessViaSubclass.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/property/fieldAccessViaSubclass.kt rename to compiler/testData/codegen/boxAgainstJava/property/fieldAccessViaSubclass.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/callAbstractAdapter.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/callAbstractAdapter.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/callAbstractAdapter.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/callAbstractAdapter.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/callAbstractAdapter.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/callAbstractAdapter.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/callAbstractAdapter.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/callAbstractAdapter.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/comparator.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/comparator.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/comparator.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/comparator.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/comparator.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/comparator.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/comparator.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/comparator.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/constructor.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/constructor.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/constructor.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/constructor.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/constructor.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/constructor.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/constructor.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/constructor.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/fileFilter.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/fileFilter.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/fileFilter.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/fileFilter.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/fileFilter.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/fileFilter.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/fileFilter.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/fileFilter.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/genericSignature.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/genericSignature.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/genericSignature.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/genericSignature.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/genericSignature.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/genericSignature.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/genericSignature.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/genericSignature.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/implementAdapter.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/implementAdapter.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/implementAdapter.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/implementAdapter.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/implementAdapter.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/implementAdapter.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/implementAdapter.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/implementAdapter.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/inheritedInKotlin.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/inheritedInKotlin.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/inheritedInKotlin.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/inheritedInKotlin.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/inheritedInKotlin.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/inheritedInKotlin.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/inheritedInKotlin.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/inheritedInKotlin.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/inheritedOverriddenAdapter.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/inheritedOverriddenAdapter.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/inheritedOverriddenAdapter.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/inheritedOverriddenAdapter.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/inheritedOverriddenAdapter.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/inheritedOverriddenAdapter.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/inheritedOverriddenAdapter.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/inheritedOverriddenAdapter.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/inheritedSimple.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/inheritedSimple.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/inheritedSimple.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/inheritedSimple.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/inheritedSimple.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/inheritedSimple.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/inheritedSimple.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/inheritedSimple.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/nonLiteralAndLiteralRunnable.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/nonLiteralAndLiteralRunnable.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/nonLiteralAndLiteralRunnable.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/nonLiteralAndLiteralRunnable.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/nonLiteralAndLiteralRunnable.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/nonLiteralAndLiteralRunnable.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/nonLiteralAndLiteralRunnable.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/nonLiteralAndLiteralRunnable.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/nonLiteralComparator.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/nonLiteralComparator.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/nonLiteralComparator.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/nonLiteralComparator.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/nonLiteralComparator.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/nonLiteralComparator.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/nonLiteralComparator.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/nonLiteralComparator.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/nonLiteralInConstructor.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/nonLiteralInConstructor.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/nonLiteralInConstructor.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/nonLiteralInConstructor.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/nonLiteralInConstructor.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/nonLiteralInConstructor.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/nonLiteralInConstructor.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/nonLiteralInConstructor.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/nonLiteralNull.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/nonLiteralNull.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/nonLiteralNull.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/nonLiteralNull.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/nonLiteralNull.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/nonLiteralNull.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/nonLiteralNull.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/nonLiteralNull.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/nonLiteralRunnable.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/nonLiteralRunnable.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/nonLiteralRunnable.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/nonLiteralRunnable.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/nonLiteralRunnable.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/nonLiteralRunnable.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/nonLiteralRunnable.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/nonLiteralRunnable.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/operators/augmentedAssignmentAndSquareBrackets.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/augmentedAssignmentAndSquareBrackets.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/operators/augmentedAssignmentAndSquareBrackets.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/augmentedAssignmentAndSquareBrackets.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/operators/augmentedAssignmentAndSquareBrackets.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/augmentedAssignmentAndSquareBrackets.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/operators/augmentedAssignmentAndSquareBrackets.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/augmentedAssignmentAndSquareBrackets.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/operators/augmentedAssignmentPure.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/augmentedAssignmentPure.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/operators/augmentedAssignmentPure.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/augmentedAssignmentPure.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/operators/augmentedAssignmentPure.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/augmentedAssignmentPure.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/operators/augmentedAssignmentPure.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/augmentedAssignmentPure.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/operators/augmentedAssignmentViaSimpleBinary.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/augmentedAssignmentViaSimpleBinary.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/operators/augmentedAssignmentViaSimpleBinary.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/augmentedAssignmentViaSimpleBinary.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/operators/augmentedAssignmentViaSimpleBinary.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/augmentedAssignmentViaSimpleBinary.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/operators/augmentedAssignmentViaSimpleBinary.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/augmentedAssignmentViaSimpleBinary.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/operators/binary.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/binary.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/operators/binary.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/binary.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/operators/binary.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/binary.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/operators/binary.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/binary.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/operators/compareTo.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/compareTo.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/operators/compareTo.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/compareTo.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/operators/compareTo.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/compareTo.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/operators/compareTo.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/compareTo.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/operators/contains.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/contains.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/operators/contains.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/contains.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/operators/contains.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/contains.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/operators/contains.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/contains.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/operators/get.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/get.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/operators/get.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/get.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/operators/get.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/get.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/operators/get.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/get.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/operators/infixCall.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/infixCall.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/operators/infixCall.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/infixCall.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/operators/infixCall.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/infixCall.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/operators/infixCall.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/infixCall.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/operators/invoke.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/invoke.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/operators/invoke.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/invoke.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/operators/invoke.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/invoke.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/operators/invoke.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/invoke.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/operators/multiGetSet.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/multiGetSet.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/operators/multiGetSet.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/multiGetSet.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/operators/multiGetSet.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/multiGetSet.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/operators/multiGetSet.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/multiGetSet.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/operators/multiInvoke.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/multiInvoke.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/operators/multiInvoke.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/multiInvoke.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/operators/multiInvoke.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/multiInvoke.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/operators/multiInvoke.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/multiInvoke.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/operators/set.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/set.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/operators/set.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/set.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/operators/set.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/set.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/operators/set.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/set.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/severalSamParameters.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/severalSamParameters.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/severalSamParameters.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/severalSamParameters.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/severalSamParameters.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/severalSamParameters.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/severalSamParameters.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/severalSamParameters.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/simplest.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/simplest.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/simplest.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/simplest.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/simplest.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/simplest.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/simplest.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/simplest.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/superconstructor.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/superconstructor.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/superconstructor.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/superconstructor.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/superconstructor.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/superconstructor.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/superconstructor.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/superconstructor.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/typeParameterOfClass.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/typeParameterOfClass.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/typeParameterOfClass.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/typeParameterOfClass.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/typeParameterOfClass.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/typeParameterOfClass.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/typeParameterOfClass.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/typeParameterOfClass.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/typeParameterOfMethod.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/typeParameterOfMethod.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/typeParameterOfMethod.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/typeParameterOfMethod.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/typeParameterOfMethod.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/typeParameterOfMethod.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/typeParameterOfMethod.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/typeParameterOfMethod.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/typeParameterOfOuterClass.java b/compiler/testData/codegen/boxAgainstJava/sam/adapters/typeParameterOfOuterClass.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/typeParameterOfOuterClass.java rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/typeParameterOfOuterClass.java diff --git a/compiler/testData/codegen/boxWithJava/sam/adapters/typeParameterOfOuterClass.kt b/compiler/testData/codegen/boxAgainstJava/sam/adapters/typeParameterOfOuterClass.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/adapters/typeParameterOfOuterClass.kt rename to compiler/testData/codegen/boxAgainstJava/sam/adapters/typeParameterOfOuterClass.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/differentFqNames.java b/compiler/testData/codegen/boxAgainstJava/sam/differentFqNames.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/differentFqNames.java rename to compiler/testData/codegen/boxAgainstJava/sam/differentFqNames.java diff --git a/compiler/testData/codegen/boxWithJava/sam/differentFqNames.kt b/compiler/testData/codegen/boxAgainstJava/sam/differentFqNames.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/differentFqNames.kt rename to compiler/testData/codegen/boxAgainstJava/sam/differentFqNames.kt diff --git a/compiler/testData/codegen/boxWithJava/sam/samConstructorGenericSignature.java b/compiler/testData/codegen/boxAgainstJava/sam/samConstructorGenericSignature.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/samConstructorGenericSignature.java rename to compiler/testData/codegen/boxAgainstJava/sam/samConstructorGenericSignature.java diff --git a/compiler/testData/codegen/boxWithJava/sam/samConstructorGenericSignature.kt b/compiler/testData/codegen/boxAgainstJava/sam/samConstructorGenericSignature.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/sam/samConstructorGenericSignature.kt rename to compiler/testData/codegen/boxAgainstJava/sam/samConstructorGenericSignature.kt diff --git a/compiler/testData/codegen/boxWithJava/staticFun/classWithNestedEnum.java b/compiler/testData/codegen/boxAgainstJava/staticFun/classWithNestedEnum.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/staticFun/classWithNestedEnum.java rename to compiler/testData/codegen/boxAgainstJava/staticFun/classWithNestedEnum.java diff --git a/compiler/testData/codegen/boxWithJava/staticFun/classWithNestedEnum.kt b/compiler/testData/codegen/boxAgainstJava/staticFun/classWithNestedEnum.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/staticFun/classWithNestedEnum.kt rename to compiler/testData/codegen/boxAgainstJava/staticFun/classWithNestedEnum.kt diff --git a/compiler/testData/codegen/boxWithJava/visibility/package/kt2781.java b/compiler/testData/codegen/boxAgainstJava/visibility/package/kt2781.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/package/kt2781.java rename to compiler/testData/codegen/boxAgainstJava/visibility/package/kt2781.java diff --git a/compiler/testData/codegen/boxWithJava/visibility/package/kt2781.kt b/compiler/testData/codegen/boxAgainstJava/visibility/package/kt2781.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/package/kt2781.kt rename to compiler/testData/codegen/boxAgainstJava/visibility/package/kt2781.kt diff --git a/compiler/testData/codegen/boxWithJava/visibility/package/packageClass.java b/compiler/testData/codegen/boxAgainstJava/visibility/package/packageClass.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/package/packageClass.java rename to compiler/testData/codegen/boxAgainstJava/visibility/package/packageClass.java diff --git a/compiler/testData/codegen/boxWithJava/visibility/package/packageClass.kt b/compiler/testData/codegen/boxAgainstJava/visibility/package/packageClass.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/package/packageClass.kt rename to compiler/testData/codegen/boxAgainstJava/visibility/package/packageClass.kt diff --git a/compiler/testData/codegen/boxWithJava/visibility/package/packageFun.java b/compiler/testData/codegen/boxAgainstJava/visibility/package/packageFun.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/package/packageFun.java rename to compiler/testData/codegen/boxAgainstJava/visibility/package/packageFun.java diff --git a/compiler/testData/codegen/boxWithJava/visibility/package/packageFun.kt b/compiler/testData/codegen/boxAgainstJava/visibility/package/packageFun.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/package/packageFun.kt rename to compiler/testData/codegen/boxAgainstJava/visibility/package/packageFun.kt diff --git a/compiler/testData/codegen/boxWithJava/visibility/package/packageProperty.java b/compiler/testData/codegen/boxAgainstJava/visibility/package/packageProperty.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/package/packageProperty.java rename to compiler/testData/codegen/boxAgainstJava/visibility/package/packageProperty.java diff --git a/compiler/testData/codegen/boxWithJava/visibility/package/packageProperty.kt b/compiler/testData/codegen/boxAgainstJava/visibility/package/packageProperty.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/package/packageProperty.kt rename to compiler/testData/codegen/boxAgainstJava/visibility/package/packageProperty.kt diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedAndPackage/overrideProtectedFunInPackage.java b/compiler/testData/codegen/boxAgainstJava/visibility/protectedAndPackage/overrideProtectedFunInPackage.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedAndPackage/overrideProtectedFunInPackage.java rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedAndPackage/overrideProtectedFunInPackage.java diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedAndPackage/overrideProtectedFunInPackage.kt b/compiler/testData/codegen/boxAgainstJava/visibility/protectedAndPackage/overrideProtectedFunInPackage.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedAndPackage/overrideProtectedFunInPackage.kt rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedAndPackage/overrideProtectedFunInPackage.kt diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedAndPackage/protectedFunInPackage.java b/compiler/testData/codegen/boxAgainstJava/visibility/protectedAndPackage/protectedFunInPackage.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedAndPackage/protectedFunInPackage.java rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedAndPackage/protectedFunInPackage.java diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedAndPackage/protectedFunInPackage.kt b/compiler/testData/codegen/boxAgainstJava/visibility/protectedAndPackage/protectedFunInPackage.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedAndPackage/protectedFunInPackage.kt rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedAndPackage/protectedFunInPackage.kt diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedAndPackage/protectedPropertyInPackage.java b/compiler/testData/codegen/boxAgainstJava/visibility/protectedAndPackage/protectedPropertyInPackage.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedAndPackage/protectedPropertyInPackage.java rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedAndPackage/protectedPropertyInPackage.java diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedAndPackage/protectedPropertyInPackage.kt b/compiler/testData/codegen/boxAgainstJava/visibility/protectedAndPackage/protectedPropertyInPackage.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedAndPackage/protectedPropertyInPackage.kt rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedAndPackage/protectedPropertyInPackage.kt diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedAndPackage/protectedStaticClass.java b/compiler/testData/codegen/boxAgainstJava/visibility/protectedAndPackage/protectedStaticClass.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedAndPackage/protectedStaticClass.java rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedAndPackage/protectedStaticClass.java diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedAndPackage/protectedStaticClass.kt b/compiler/testData/codegen/boxAgainstJava/visibility/protectedAndPackage/protectedStaticClass.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedAndPackage/protectedStaticClass.kt rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedAndPackage/protectedStaticClass.kt diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funCallInConstructor.java b/compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funCallInConstructor.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funCallInConstructor.java rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funCallInConstructor.java diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funCallInConstructor.kt b/compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funCallInConstructor.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funCallInConstructor.kt rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funCallInConstructor.kt diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funClassObject.java b/compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funClassObject.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funClassObject.java rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funClassObject.java diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funClassObject.kt b/compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funClassObject.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funClassObject.kt rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funClassObject.kt diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funGenericClass.java b/compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funGenericClass.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funGenericClass.java rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funGenericClass.java diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funGenericClass.kt b/compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funGenericClass.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funGenericClass.kt rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funGenericClass.kt diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funNestedStaticClass.java b/compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funNestedStaticClass.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funNestedStaticClass.java rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funNestedStaticClass.java diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funNestedStaticClass.kt b/compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funNestedStaticClass.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funNestedStaticClass.kt rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funNestedStaticClass.kt diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funNestedStaticClass2.java b/compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funNestedStaticClass2.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funNestedStaticClass2.java rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funNestedStaticClass2.java diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funNestedStaticClass2.kt b/compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funNestedStaticClass2.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funNestedStaticClass2.kt rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funNestedStaticClass2.kt diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funNestedStaticGenericClass.java b/compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funNestedStaticGenericClass.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funNestedStaticGenericClass.java rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funNestedStaticGenericClass.java diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funNestedStaticGenericClass.kt b/compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funNestedStaticGenericClass.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funNestedStaticGenericClass.kt rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funNestedStaticGenericClass.kt diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funNotDirectSuperClass.java b/compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funNotDirectSuperClass.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funNotDirectSuperClass.java rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funNotDirectSuperClass.java diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funNotDirectSuperClass.kt b/compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funNotDirectSuperClass.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funNotDirectSuperClass.kt rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funNotDirectSuperClass.kt diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funObject.java b/compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funObject.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funObject.java rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funObject.java diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funObject.kt b/compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funObject.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funObject.kt rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funObject.kt diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedStatic/simpleClass.java b/compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/simpleClass.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedStatic/simpleClass.java rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/simpleClass.java diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedStatic/simpleClass.kt b/compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/simpleClass.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedStatic/simpleClass.kt rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/simpleClass.kt diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedStatic/simpleClass2.java b/compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/simpleClass2.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedStatic/simpleClass2.java rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/simpleClass2.java diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedStatic/simpleClass2.kt b/compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/simpleClass2.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedStatic/simpleClass2.kt rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/simpleClass2.kt diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedStatic/simpleFun.java b/compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/simpleFun.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedStatic/simpleFun.java rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/simpleFun.java diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedStatic/simpleFun.kt b/compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/simpleFun.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedStatic/simpleFun.kt rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/simpleFun.kt diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedStatic/simpleProperty.java b/compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/simpleProperty.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedStatic/simpleProperty.java rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/simpleProperty.java diff --git a/compiler/testData/codegen/boxWithJava/visibility/protectedStatic/simpleProperty.kt b/compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/simpleProperty.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/visibility/protectedStatic/simpleProperty.kt rename to compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/simpleProperty.kt diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/AbstractBlackBoxCodegenTest.java b/compiler/tests/org/jetbrains/jet/codegen/generated/AbstractBlackBoxCodegenTest.java index 16f021d68a9..446de328c4a 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/AbstractBlackBoxCodegenTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/AbstractBlackBoxCodegenTest.java @@ -41,8 +41,8 @@ public abstract class AbstractBlackBoxCodegenTest extends CodegenTestCase { blackBoxFileByFullPath(filename); } - public void doTestWithJava(@NotNull String filename) { - blackBoxFileWithJavaByFullPath(filename); + public void doTestAgainstJava(@NotNull String filename) { + blackBoxFileAgainstJavaByFullPath(filename); } public void doTestWithStdlib(@NotNull String filename) { @@ -75,7 +75,7 @@ public abstract class AbstractBlackBoxCodegenTest extends CodegenTestCase { InlineTestUtil.checkNoCallsToInline(initializedClassLoader.getAllGeneratedFiles()); } - private void blackBoxFileWithJavaByFullPath(@NotNull String ktFileFullPath) { + private void blackBoxFileAgainstJavaByFullPath(@NotNull String ktFileFullPath) { String ktFile = ktFileFullPath.substring("compiler/testData/codegen/".length()); File javaClassesTempDirectory = compileJava(ktFile.replaceFirst("\\.kt$", ".java")); diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithJavaCodegenTestGenerated.java b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxAgainstJavaCodegenTestGenerated.java similarity index 59% rename from compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithJavaCodegenTestGenerated.java rename to compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxAgainstJavaCodegenTestGenerated.java index 178e38534cc..ba89e324887 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithJavaCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxAgainstJavaCodegenTestGenerated.java @@ -30,390 +30,390 @@ import org.jetbrains.jet.codegen.generated.AbstractBlackBoxCodegenTest; /** This class is generated by {@link org.jetbrains.jet.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */ @SuppressWarnings("all") -@TestMetadata("compiler/testData/codegen/boxWithJava") -@InnerTestClasses({BlackBoxWithJavaCodegenTestGenerated.Annotations.class, BlackBoxWithJavaCodegenTestGenerated.CallableReference.class, BlackBoxWithJavaCodegenTestGenerated.Constructor.class, BlackBoxWithJavaCodegenTestGenerated.Delegation.class, BlackBoxWithJavaCodegenTestGenerated.Enum.class, BlackBoxWithJavaCodegenTestGenerated.Functions.class, BlackBoxWithJavaCodegenTestGenerated.InnerClass.class, BlackBoxWithJavaCodegenTestGenerated.Property.class, BlackBoxWithJavaCodegenTestGenerated.Sam.class, BlackBoxWithJavaCodegenTestGenerated.StaticFun.class, BlackBoxWithJavaCodegenTestGenerated.Visibility.class}) -public class BlackBoxWithJavaCodegenTestGenerated extends AbstractBlackBoxCodegenTest { - public void testAllFilesPresentInBoxWithJava() throws Exception { - JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxWithJava"), Pattern.compile("^(.+)\\.kt$"), true); +@TestMetadata("compiler/testData/codegen/boxAgainstJava") +@InnerTestClasses({BlackBoxAgainstJavaCodegenTestGenerated.Annotations.class, BlackBoxAgainstJavaCodegenTestGenerated.CallableReference.class, BlackBoxAgainstJavaCodegenTestGenerated.Constructor.class, BlackBoxAgainstJavaCodegenTestGenerated.Delegation.class, BlackBoxAgainstJavaCodegenTestGenerated.Enum.class, BlackBoxAgainstJavaCodegenTestGenerated.Functions.class, BlackBoxAgainstJavaCodegenTestGenerated.InnerClass.class, BlackBoxAgainstJavaCodegenTestGenerated.Property.class, BlackBoxAgainstJavaCodegenTestGenerated.Sam.class, BlackBoxAgainstJavaCodegenTestGenerated.StaticFun.class, BlackBoxAgainstJavaCodegenTestGenerated.Visibility.class}) +public class BlackBoxAgainstJavaCodegenTestGenerated extends AbstractBlackBoxCodegenTest { + public void testAllFilesPresentInBoxAgainstJava() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxAgainstJava"), Pattern.compile("^(.+)\\.kt$"), true); } - @TestMetadata("compiler/testData/codegen/boxWithJava/annotations") + @TestMetadata("compiler/testData/codegen/boxAgainstJava/annotations") public static class Annotations extends AbstractBlackBoxCodegenTest { public void testAllFilesPresentInAnnotations() throws Exception { - JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxWithJava/annotations"), Pattern.compile("^(.+)\\.kt$"), true); + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxAgainstJava/annotations"), Pattern.compile("^(.+)\\.kt$"), true); } @TestMetadata("javaAnnotationCall.kt") public void testJavaAnnotationCall() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/annotations/javaAnnotationCall.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/annotations/javaAnnotationCall.kt"); } @TestMetadata("javaAnnotationDefault.kt") public void testJavaAnnotationDefault() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/annotations/javaAnnotationDefault.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/annotations/javaAnnotationDefault.kt"); } @TestMetadata("javaNegativePropertyAsAnnotationParameter.kt") public void testJavaNegativePropertyAsAnnotationParameter() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/annotations/javaNegativePropertyAsAnnotationParameter.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/annotations/javaNegativePropertyAsAnnotationParameter.kt"); } @TestMetadata("javaPropertyAsAnnotationParameter.kt") public void testJavaPropertyAsAnnotationParameter() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/annotations/javaPropertyAsAnnotationParameter.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/annotations/javaPropertyAsAnnotationParameter.kt"); } @TestMetadata("javaPropertyWithIntInitializer.kt") public void testJavaPropertyWithIntInitializer() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/annotations/javaPropertyWithIntInitializer.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/annotations/javaPropertyWithIntInitializer.kt"); } - @TestMetadata("RetentionInJava.kt") + @TestMetadata("retentionInJava.kt") public void testRetentionInJava() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/annotations/RetentionInJava.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/annotations/retentionInJava.kt"); } } - @TestMetadata("compiler/testData/codegen/boxWithJava/callableReference") + @TestMetadata("compiler/testData/codegen/boxAgainstJava/callableReference") public static class CallableReference extends AbstractBlackBoxCodegenTest { public void testAllFilesPresentInCallableReference() throws Exception { - JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxWithJava/callableReference"), Pattern.compile("^(.+)\\.kt$"), true); + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxAgainstJava/callableReference"), Pattern.compile("^(.+)\\.kt$"), true); } @TestMetadata("constructor.kt") public void testConstructor() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/callableReference/constructor.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/callableReference/constructor.kt"); } } - @TestMetadata("compiler/testData/codegen/boxWithJava/constructor") + @TestMetadata("compiler/testData/codegen/boxAgainstJava/constructor") public static class Constructor extends AbstractBlackBoxCodegenTest { public void testAllFilesPresentInConstructor() throws Exception { - JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxWithJava/constructor"), Pattern.compile("^(.+)\\.kt$"), true); + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxAgainstJava/constructor"), Pattern.compile("^(.+)\\.kt$"), true); } @TestMetadata("genericConstructor.kt") public void testGenericConstructor() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/constructor/genericConstructor.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/constructor/genericConstructor.kt"); } } - @TestMetadata("compiler/testData/codegen/boxWithJava/delegation") + @TestMetadata("compiler/testData/codegen/boxAgainstJava/delegation") public static class Delegation extends AbstractBlackBoxCodegenTest { public void testAllFilesPresentInDelegation() throws Exception { - JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxWithJava/delegation"), Pattern.compile("^(.+)\\.kt$"), true); + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxAgainstJava/delegation"), Pattern.compile("^(.+)\\.kt$"), true); } @TestMetadata("delegationAndInheritanceFromJava.kt") public void testDelegationAndInheritanceFromJava() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/delegation/delegationAndInheritanceFromJava.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/delegation/delegationAndInheritanceFromJava.kt"); } } - @TestMetadata("compiler/testData/codegen/boxWithJava/enum") + @TestMetadata("compiler/testData/codegen/boxAgainstJava/enum") public static class Enum extends AbstractBlackBoxCodegenTest { public void testAllFilesPresentInEnum() throws Exception { - JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxWithJava/enum"), Pattern.compile("^(.+)\\.kt$"), true); + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxAgainstJava/enum"), Pattern.compile("^(.+)\\.kt$"), true); } @TestMetadata("simpleJavaEnum.kt") public void testSimpleJavaEnum() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/enum/simpleJavaEnum.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/enum/simpleJavaEnum.kt"); } @TestMetadata("simpleJavaEnumWithFunction.kt") public void testSimpleJavaEnumWithFunction() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/enum/simpleJavaEnumWithFunction.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/enum/simpleJavaEnumWithFunction.kt"); } @TestMetadata("simpleJavaEnumWithStaticImport.kt") public void testSimpleJavaEnumWithStaticImport() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/enum/simpleJavaEnumWithStaticImport.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/enum/simpleJavaEnumWithStaticImport.kt"); } @TestMetadata("simpleJavaInnerEnum.kt") public void testSimpleJavaInnerEnum() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/enum/simpleJavaInnerEnum.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/enum/simpleJavaInnerEnum.kt"); } @TestMetadata("staticField.kt") public void testStaticField() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/enum/staticField.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/enum/staticField.kt"); } @TestMetadata("staticMethod.kt") public void testStaticMethod() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/enum/staticMethod.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/enum/staticMethod.kt"); } } - @TestMetadata("compiler/testData/codegen/boxWithJava/functions") + @TestMetadata("compiler/testData/codegen/boxAgainstJava/functions") public static class Functions extends AbstractBlackBoxCodegenTest { public void testAllFilesPresentInFunctions() throws Exception { - JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxWithJava/functions"), Pattern.compile("^(.+)\\.kt$"), true); + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxAgainstJava/functions"), Pattern.compile("^(.+)\\.kt$"), true); } @TestMetadata("constructor.kt") public void testConstructor() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/functions/constructor.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/functions/constructor.kt"); } @TestMetadata("max.kt") public void testMax() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/functions/max.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/functions/max.kt"); } @TestMetadata("referencesStaticInnerClassMethod.kt") public void testReferencesStaticInnerClassMethod() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/functions/referencesStaticInnerClassMethod.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/functions/referencesStaticInnerClassMethod.kt"); } @TestMetadata("referencesStaticInnerClassMethodL2.kt") public void testReferencesStaticInnerClassMethodL2() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/functions/referencesStaticInnerClassMethodL2.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/functions/referencesStaticInnerClassMethodL2.kt"); } @TestMetadata("unrelatedUpperBounds.kt") public void testUnrelatedUpperBounds() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/functions/unrelatedUpperBounds.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/functions/unrelatedUpperBounds.kt"); } } - @TestMetadata("compiler/testData/codegen/boxWithJava/innerClass") + @TestMetadata("compiler/testData/codegen/boxAgainstJava/innerClass") public static class InnerClass extends AbstractBlackBoxCodegenTest { public void testAllFilesPresentInInnerClass() throws Exception { - JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxWithJava/innerClass"), Pattern.compile("^(.+)\\.kt$"), true); + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxAgainstJava/innerClass"), Pattern.compile("^(.+)\\.kt$"), true); } @TestMetadata("kt3532.kt") public void testKt3532() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/innerClass/kt3532.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/innerClass/kt3532.kt"); } @TestMetadata("kt3812.kt") public void testKt3812() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/innerClass/kt3812.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/innerClass/kt3812.kt"); } @TestMetadata("kt4036.kt") public void testKt4036() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/innerClass/kt4036.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/innerClass/kt4036.kt"); } } - @TestMetadata("compiler/testData/codegen/boxWithJava/property") + @TestMetadata("compiler/testData/codegen/boxAgainstJava/property") public static class Property extends AbstractBlackBoxCodegenTest { public void testAllFilesPresentInProperty() throws Exception { - JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxWithJava/property"), Pattern.compile("^(.+)\\.kt$"), true); + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxAgainstJava/property"), Pattern.compile("^(.+)\\.kt$"), true); } @TestMetadata("fieldAccessFromExtensionInTraitImpl.kt") public void testFieldAccessFromExtensionInTraitImpl() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/property/fieldAccessFromExtensionInTraitImpl.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/property/fieldAccessFromExtensionInTraitImpl.kt"); } @TestMetadata("fieldAccessViaSubclass.kt") public void testFieldAccessViaSubclass() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/property/fieldAccessViaSubclass.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/property/fieldAccessViaSubclass.kt"); } } - @TestMetadata("compiler/testData/codegen/boxWithJava/sam") + @TestMetadata("compiler/testData/codegen/boxAgainstJava/sam") @InnerTestClasses({Sam.Adapters.class}) public static class Sam extends AbstractBlackBoxCodegenTest { public void testAllFilesPresentInSam() throws Exception { - JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxWithJava/sam"), Pattern.compile("^(.+)\\.kt$"), true); + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxAgainstJava/sam"), Pattern.compile("^(.+)\\.kt$"), true); } @TestMetadata("differentFqNames.kt") public void testDifferentFqNames() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/differentFqNames.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/differentFqNames.kt"); } @TestMetadata("samConstructorGenericSignature.kt") public void testSamConstructorGenericSignature() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/samConstructorGenericSignature.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/samConstructorGenericSignature.kt"); } - @TestMetadata("compiler/testData/codegen/boxWithJava/sam/adapters") + @TestMetadata("compiler/testData/codegen/boxAgainstJava/sam/adapters") @InnerTestClasses({Adapters.Operators.class}) public static class Adapters extends AbstractBlackBoxCodegenTest { public void testAllFilesPresentInAdapters() throws Exception { - JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxWithJava/sam/adapters"), Pattern.compile("^(.+)\\.kt$"), true); + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxAgainstJava/sam/adapters"), Pattern.compile("^(.+)\\.kt$"), true); } @TestMetadata("callAbstractAdapter.kt") public void testCallAbstractAdapter() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/callAbstractAdapter.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/callAbstractAdapter.kt"); } @TestMetadata("comparator.kt") public void testComparator() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/comparator.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/comparator.kt"); } @TestMetadata("constructor.kt") public void testConstructor() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/constructor.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/constructor.kt"); } @TestMetadata("fileFilter.kt") public void testFileFilter() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/fileFilter.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/fileFilter.kt"); } @TestMetadata("genericSignature.kt") public void testGenericSignature() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/genericSignature.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/genericSignature.kt"); } @TestMetadata("implementAdapter.kt") public void testImplementAdapter() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/implementAdapter.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/implementAdapter.kt"); } @TestMetadata("inheritedInKotlin.kt") public void testInheritedInKotlin() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/inheritedInKotlin.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/inheritedInKotlin.kt"); } @TestMetadata("inheritedOverriddenAdapter.kt") public void testInheritedOverriddenAdapter() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/inheritedOverriddenAdapter.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/inheritedOverriddenAdapter.kt"); } @TestMetadata("inheritedSimple.kt") public void testInheritedSimple() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/inheritedSimple.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/inheritedSimple.kt"); } @TestMetadata("nonLiteralAndLiteralRunnable.kt") public void testNonLiteralAndLiteralRunnable() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/nonLiteralAndLiteralRunnable.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/nonLiteralAndLiteralRunnable.kt"); } @TestMetadata("nonLiteralComparator.kt") public void testNonLiteralComparator() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/nonLiteralComparator.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/nonLiteralComparator.kt"); } @TestMetadata("nonLiteralInConstructor.kt") public void testNonLiteralInConstructor() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/nonLiteralInConstructor.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/nonLiteralInConstructor.kt"); } @TestMetadata("nonLiteralNull.kt") public void testNonLiteralNull() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/nonLiteralNull.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/nonLiteralNull.kt"); } @TestMetadata("nonLiteralRunnable.kt") public void testNonLiteralRunnable() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/nonLiteralRunnable.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/nonLiteralRunnable.kt"); } @TestMetadata("severalSamParameters.kt") public void testSeveralSamParameters() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/severalSamParameters.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/severalSamParameters.kt"); } @TestMetadata("simplest.kt") public void testSimplest() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/simplest.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/simplest.kt"); } @TestMetadata("superconstructor.kt") public void testSuperconstructor() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/superconstructor.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/superconstructor.kt"); } @TestMetadata("typeParameterOfClass.kt") public void testTypeParameterOfClass() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/typeParameterOfClass.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/typeParameterOfClass.kt"); } @TestMetadata("typeParameterOfMethod.kt") public void testTypeParameterOfMethod() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/typeParameterOfMethod.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/typeParameterOfMethod.kt"); } @TestMetadata("typeParameterOfOuterClass.kt") public void testTypeParameterOfOuterClass() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/typeParameterOfOuterClass.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/typeParameterOfOuterClass.kt"); } - @TestMetadata("compiler/testData/codegen/boxWithJava/sam/adapters/operators") + @TestMetadata("compiler/testData/codegen/boxAgainstJava/sam/adapters/operators") public static class Operators extends AbstractBlackBoxCodegenTest { public void testAllFilesPresentInOperators() throws Exception { - JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxWithJava/sam/adapters/operators"), Pattern.compile("^(.+)\\.kt$"), true); + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxAgainstJava/sam/adapters/operators"), Pattern.compile("^(.+)\\.kt$"), true); } @TestMetadata("augmentedAssignmentAndSquareBrackets.kt") public void testAugmentedAssignmentAndSquareBrackets() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/operators/augmentedAssignmentAndSquareBrackets.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/augmentedAssignmentAndSquareBrackets.kt"); } @TestMetadata("augmentedAssignmentPure.kt") public void testAugmentedAssignmentPure() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/operators/augmentedAssignmentPure.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/augmentedAssignmentPure.kt"); } @TestMetadata("augmentedAssignmentViaSimpleBinary.kt") public void testAugmentedAssignmentViaSimpleBinary() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/operators/augmentedAssignmentViaSimpleBinary.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/augmentedAssignmentViaSimpleBinary.kt"); } @TestMetadata("binary.kt") public void testBinary() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/operators/binary.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/binary.kt"); } @TestMetadata("compareTo.kt") public void testCompareTo() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/operators/compareTo.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/compareTo.kt"); } @TestMetadata("contains.kt") public void testContains() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/operators/contains.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/contains.kt"); } @TestMetadata("get.kt") public void testGet() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/operators/get.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/get.kt"); } @TestMetadata("infixCall.kt") public void testInfixCall() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/operators/infixCall.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/infixCall.kt"); } @TestMetadata("invoke.kt") public void testInvoke() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/operators/invoke.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/invoke.kt"); } @TestMetadata("multiGetSet.kt") public void testMultiGetSet() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/operators/multiGetSet.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/multiGetSet.kt"); } @TestMetadata("multiInvoke.kt") public void testMultiInvoke() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/operators/multiInvoke.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/multiInvoke.kt"); } @TestMetadata("set.kt") public void testSet() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/sam/adapters/operators/set.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/sam/adapters/operators/set.kt"); } } @@ -434,146 +434,146 @@ public class BlackBoxWithJavaCodegenTestGenerated extends AbstractBlackBoxCodege } } - @TestMetadata("compiler/testData/codegen/boxWithJava/staticFun") + @TestMetadata("compiler/testData/codegen/boxAgainstJava/staticFun") public static class StaticFun extends AbstractBlackBoxCodegenTest { public void testAllFilesPresentInStaticFun() throws Exception { - JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxWithJava/staticFun"), Pattern.compile("^(.+)\\.kt$"), true); + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxAgainstJava/staticFun"), Pattern.compile("^(.+)\\.kt$"), true); } @TestMetadata("classWithNestedEnum.kt") public void testClassWithNestedEnum() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/staticFun/classWithNestedEnum.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/staticFun/classWithNestedEnum.kt"); } } - @TestMetadata("compiler/testData/codegen/boxWithJava/visibility") + @TestMetadata("compiler/testData/codegen/boxAgainstJava/visibility") @InnerTestClasses({Visibility.Package.class, Visibility.ProtectedAndPackage.class, Visibility.ProtectedStatic.class}) public static class Visibility extends AbstractBlackBoxCodegenTest { public void testAllFilesPresentInVisibility() throws Exception { - JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxWithJava/visibility"), Pattern.compile("^(.+)\\.kt$"), true); + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxAgainstJava/visibility"), Pattern.compile("^(.+)\\.kt$"), true); } - @TestMetadata("compiler/testData/codegen/boxWithJava/visibility/package") + @TestMetadata("compiler/testData/codegen/boxAgainstJava/visibility/package") public static class Package extends AbstractBlackBoxCodegenTest { public void testAllFilesPresentInPackage() throws Exception { - JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxWithJava/visibility/package"), Pattern.compile("^(.+)\\.kt$"), true); + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxAgainstJava/visibility/package"), Pattern.compile("^(.+)\\.kt$"), true); } @TestMetadata("kt2781.kt") public void testKt2781() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/visibility/package/kt2781.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/visibility/package/kt2781.kt"); } @TestMetadata("packageClass.kt") public void testPackageClass() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/visibility/package/packageClass.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/visibility/package/packageClass.kt"); } @TestMetadata("packageFun.kt") public void testPackageFun() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/visibility/package/packageFun.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/visibility/package/packageFun.kt"); } @TestMetadata("packageProperty.kt") public void testPackageProperty() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/visibility/package/packageProperty.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/visibility/package/packageProperty.kt"); } } - @TestMetadata("compiler/testData/codegen/boxWithJava/visibility/protectedAndPackage") + @TestMetadata("compiler/testData/codegen/boxAgainstJava/visibility/protectedAndPackage") public static class ProtectedAndPackage extends AbstractBlackBoxCodegenTest { public void testAllFilesPresentInProtectedAndPackage() throws Exception { - JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxWithJava/visibility/protectedAndPackage"), Pattern.compile("^(.+)\\.kt$"), true); + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxAgainstJava/visibility/protectedAndPackage"), Pattern.compile("^(.+)\\.kt$"), true); } @TestMetadata("overrideProtectedFunInPackage.kt") public void testOverrideProtectedFunInPackage() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/visibility/protectedAndPackage/overrideProtectedFunInPackage.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/visibility/protectedAndPackage/overrideProtectedFunInPackage.kt"); } @TestMetadata("protectedFunInPackage.kt") public void testProtectedFunInPackage() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/visibility/protectedAndPackage/protectedFunInPackage.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/visibility/protectedAndPackage/protectedFunInPackage.kt"); } @TestMetadata("protectedPropertyInPackage.kt") public void testProtectedPropertyInPackage() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/visibility/protectedAndPackage/protectedPropertyInPackage.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/visibility/protectedAndPackage/protectedPropertyInPackage.kt"); } @TestMetadata("protectedStaticClass.kt") public void testProtectedStaticClass() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/visibility/protectedAndPackage/protectedStaticClass.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/visibility/protectedAndPackage/protectedStaticClass.kt"); } } - @TestMetadata("compiler/testData/codegen/boxWithJava/visibility/protectedStatic") + @TestMetadata("compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic") public static class ProtectedStatic extends AbstractBlackBoxCodegenTest { public void testAllFilesPresentInProtectedStatic() throws Exception { - JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxWithJava/visibility/protectedStatic"), Pattern.compile("^(.+)\\.kt$"), true); + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic"), Pattern.compile("^(.+)\\.kt$"), true); } @TestMetadata("funCallInConstructor.kt") public void testFunCallInConstructor() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funCallInConstructor.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funCallInConstructor.kt"); } @TestMetadata("funClassObject.kt") public void testFunClassObject() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funClassObject.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funClassObject.kt"); } @TestMetadata("funGenericClass.kt") public void testFunGenericClass() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funGenericClass.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funGenericClass.kt"); } @TestMetadata("funNestedStaticClass.kt") public void testFunNestedStaticClass() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funNestedStaticClass.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funNestedStaticClass.kt"); } @TestMetadata("funNestedStaticClass2.kt") public void testFunNestedStaticClass2() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funNestedStaticClass2.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funNestedStaticClass2.kt"); } @TestMetadata("funNestedStaticGenericClass.kt") public void testFunNestedStaticGenericClass() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funNestedStaticGenericClass.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funNestedStaticGenericClass.kt"); } @TestMetadata("funNotDirectSuperClass.kt") public void testFunNotDirectSuperClass() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funNotDirectSuperClass.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funNotDirectSuperClass.kt"); } @TestMetadata("funObject.kt") public void testFunObject() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/visibility/protectedStatic/funObject.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/funObject.kt"); } @TestMetadata("simpleClass.kt") public void testSimpleClass() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/visibility/protectedStatic/simpleClass.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/simpleClass.kt"); } @TestMetadata("simpleClass2.kt") public void testSimpleClass2() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/visibility/protectedStatic/simpleClass2.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/simpleClass2.kt"); } @TestMetadata("simpleFun.kt") public void testSimpleFun() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/visibility/protectedStatic/simpleFun.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/simpleFun.kt"); } @TestMetadata("simpleProperty.kt") public void testSimpleProperty() throws Exception { - doTestWithJava("compiler/testData/codegen/boxWithJava/visibility/protectedStatic/simpleProperty.kt"); + doTestAgainstJava("compiler/testData/codegen/boxAgainstJava/visibility/protectedStatic/simpleProperty.kt"); } } @@ -589,8 +589,8 @@ public class BlackBoxWithJavaCodegenTestGenerated extends AbstractBlackBoxCodege } public static Test suite() { - TestSuite suite = new TestSuite("BlackBoxWithJavaCodegenTestGenerated"); - suite.addTestSuite(BlackBoxWithJavaCodegenTestGenerated.class); + TestSuite suite = new TestSuite("BlackBoxAgainstJavaCodegenTestGenerated"); + suite.addTestSuite(BlackBoxAgainstJavaCodegenTestGenerated.class); suite.addTestSuite(Annotations.class); suite.addTestSuite(CallableReference.class); suite.addTestSuite(Constructor.class); diff --git a/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt b/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt index 835a0d55f15..68612b8466e 100644 --- a/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt +++ b/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt @@ -168,8 +168,8 @@ fun main(args: Array) { model("codegen/boxMultiFile", extension = null, recursive = false, testMethod = "doTestMultiFile") } - testClass(javaClass(), "BlackBoxWithJavaCodegenTestGenerated") { - model("codegen/boxWithJava", testMethod = "doTestWithJava") + testClass(javaClass(), "BlackBoxAgainstJavaCodegenTestGenerated") { + model("codegen/boxAgainstJava", testMethod = "doTestAgainstJava") } testClass(javaClass(), "BlackBoxWithStdlibCodegenTestGenerated") { From aea230d677ef4346b7b9acbcac827bc20995a362 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Wed, 25 Jun 2014 03:59:37 +0400 Subject: [PATCH 13/23] Introduce black box with Java codegen tests In contrast to "black box against Java", it supports cyclic dependencies between Java and Kotlin sources in one test case --- compiler/testData/codegen/boxWithJava/.empty | 0 .../jet/codegen/CodegenTestCase.java | 5 +- .../jet/codegen/CodegenTestUtil.java | 12 ++-- .../AbstractBlackBoxCodegenTest.java | 59 ++++++++++++++++++- .../BlackBoxWithJavaCodegenTestGenerated.java | 39 ++++++++++++ .../jet/generators/tests/GenerateTests.kt | 4 ++ 6 files changed, 109 insertions(+), 10 deletions(-) create mode 100644 compiler/testData/codegen/boxWithJava/.empty create mode 100644 compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithJavaCodegenTestGenerated.java diff --git a/compiler/testData/codegen/boxWithJava/.empty b/compiler/testData/codegen/boxWithJava/.empty new file mode 100644 index 00000000000..e69de29bb2d diff --git a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java index 09e99df26d8..e48fff715ff 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java +++ b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java @@ -53,12 +53,9 @@ import static org.jetbrains.jet.codegen.CodegenTestUtil.*; import static org.jetbrains.jet.lang.resolve.java.PackageClassUtils.getPackageClassFqName; public abstract class CodegenTestCase extends UsefulTestCase { - - // for environment and classloader protected JetCoreEnvironment myEnvironment; protected CodegenTestFiles myFiles; - - private ClassFileFactory classFileFactory; + protected ClassFileFactory classFileFactory; protected GeneratedClassLoader initializedClassLoader; protected void createEnvironmentWithMockJdkAndIdeaAnnotations(@NotNull ConfigurationKind configurationKind) { diff --git a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestUtil.java b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestUtil.java index 368261974d4..6c4c1447e8d 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestUtil.java +++ b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestUtil.java @@ -19,6 +19,7 @@ package org.jetbrains.jet.codegen; import com.google.common.base.Predicates; import com.intellij.openapi.util.SystemInfo; import com.intellij.psi.PsiFile; +import kotlin.KotlinPackage; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.JetTestUtils; @@ -39,6 +40,7 @@ import java.io.File; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -108,13 +110,15 @@ public class CodegenTestUtil { } @NotNull - public static File compileJava(@NotNull String filename) { + public static File compileJava(@NotNull String filename, @NotNull String... additionalClasspath) { try { File javaClassesTempDirectory = JetTestUtils.tmpDir("java-classes"); - String classPath = ForTestCompileRuntime.runtimeJarForTests() + File.pathSeparator + - JetTestUtils.getAnnotationsJar().getPath(); + List classpath = new ArrayList(); + classpath.add(ForTestCompileRuntime.runtimeJarForTests().getPath()); + classpath.add(JetTestUtils.getAnnotationsJar().getPath()); + classpath.addAll(Arrays.asList(additionalClasspath)); List options = Arrays.asList( - "-classpath", classPath, + "-classpath", KotlinPackage.join(classpath, File.pathSeparator, "", "", -1, ""), "-d", javaClassesTempDirectory.getPath() ); diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/AbstractBlackBoxCodegenTest.java b/compiler/tests/org/jetbrains/jet/codegen/generated/AbstractBlackBoxCodegenTest.java index 446de328c4a..fff5696db91 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/AbstractBlackBoxCodegenTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/AbstractBlackBoxCodegenTest.java @@ -17,12 +17,20 @@ package org.jetbrains.jet.codegen.generated; import com.intellij.openapi.util.io.FileUtil; +import com.intellij.util.ArrayUtil; import com.intellij.util.Processor; +import kotlin.KotlinPackage; import org.jetbrains.annotations.NotNull; -import org.jetbrains.jet.*; +import org.jetbrains.jet.ConfigurationKind; +import org.jetbrains.jet.JetTestUtils; +import org.jetbrains.jet.TestJdkKind; +import org.jetbrains.jet.cli.common.output.outputUtils.OutputUtilsPackage; +import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys; import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment; import org.jetbrains.jet.codegen.CodegenTestCase; +import org.jetbrains.jet.codegen.GenerationUtils; import org.jetbrains.jet.codegen.InlineTestUtil; +import org.jetbrains.jet.config.CompilerConfiguration; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.utils.UtilsPackage; @@ -45,6 +53,15 @@ public abstract class AbstractBlackBoxCodegenTest extends CodegenTestCase { blackBoxFileAgainstJavaByFullPath(filename); } + public void doTestWithJava(@NotNull String filename) { + try { + blackBoxFileWithJavaByFullPath(filename); + } + catch (Exception e) { + throw UtilsPackage.rethrow(e); + } + } + public void doTestWithStdlib(@NotNull String filename) { myEnvironment = JetTestUtils.createEnvironmentWithFullJdk(getTestRootDisposable()); blackBoxFileByFullPath(filename); @@ -66,7 +83,7 @@ public abstract class AbstractBlackBoxCodegenTest extends CodegenTestCase { Collections.sort(files); - loadFiles(files.toArray(new String[files.size()])); + loadFiles(ArrayUtil.toStringArray(files)); blackBox(); } @@ -86,6 +103,44 @@ public abstract class AbstractBlackBoxCodegenTest extends CodegenTestCase { blackBox(); } + private void blackBoxFileWithJavaByFullPath(@NotNull String directory) throws Exception { + File dirFile = new File(directory); + + final List javaFilePaths = new ArrayList(); + final List ktFilePaths = new ArrayList(); + FileUtil.processFilesRecursively(dirFile, new Processor() { + @Override + public boolean process(File file) { + String path = file.getPath().substring("compiler/testData/codegen/".length()); + if (path.endsWith(".kt")) { + ktFilePaths.add(path); + } + else if (path.endsWith(".java")) { + javaFilePaths.add(path); + } + return true; + } + }); + + CompilerConfiguration configuration = JetTestUtils.compilerConfigurationForTests( + ConfigurationKind.ALL, TestJdkKind.FULL_JDK, JetTestUtils.getAnnotationsJar() + ); + configuration.add(JVMConfigurationKeys.CLASSPATH_KEY, dirFile); + myEnvironment = JetCoreEnvironment.createForTests(getTestRootDisposable(), configuration); + loadFiles(ArrayUtil.toStringArray(ktFilePaths)); + classFileFactory = + GenerationUtils.compileManyFilesGetGenerationStateForTest(myEnvironment.getProject(), myFiles.getPsiFiles()).getFactory(); + File kotlinOut = JetTestUtils.tmpDir(toString()); + OutputUtilsPackage.writeAllTo(classFileFactory, kotlinOut); + + // TODO: support several Java sources + File javaOut = compileJava(KotlinPackage.single(javaFilePaths), kotlinOut.getPath()); + // Add javac output to classpath so that the created class loader can find generated Java classes + configuration.add(JVMConfigurationKeys.CLASSPATH_KEY, javaOut); + + blackBox(); + } + private void blackBoxFileByFullPath(@NotNull String filename) { loadFileByFullPath(filename); blackBox(); diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithJavaCodegenTestGenerated.java b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithJavaCodegenTestGenerated.java new file mode 100644 index 00000000000..612db880d58 --- /dev/null +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithJavaCodegenTestGenerated.java @@ -0,0 +1,39 @@ +/* + * Copyright 2010-2014 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. + */ + +package org.jetbrains.jet.codegen.generated; + +import junit.framework.Assert; +import junit.framework.Test; +import junit.framework.TestSuite; + +import java.io.File; +import java.util.regex.Pattern; +import org.jetbrains.jet.JetTestUtils; +import org.jetbrains.jet.test.InnerTestClasses; +import org.jetbrains.jet.test.TestMetadata; + +import org.jetbrains.jet.codegen.generated.AbstractBlackBoxCodegenTest; + +/** This class is generated by {@link org.jetbrains.jet.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("compiler/testData/codegen/boxWithJava") +public class BlackBoxWithJavaCodegenTestGenerated extends AbstractBlackBoxCodegenTest { + public void testAllFilesPresentInBoxWithJava() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/codegen/boxWithJava"), Pattern.compile("^([^\\.]+)$"), false); + } + +} diff --git a/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt b/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt index 68612b8466e..916edb20269 100644 --- a/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt +++ b/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt @@ -172,6 +172,10 @@ fun main(args: Array) { model("codegen/boxAgainstJava", testMethod = "doTestAgainstJava") } + testClass(javaClass(), "BlackBoxWithJavaCodegenTestGenerated") { + model("codegen/boxWithJava", testMethod = "doTestWithJava", extension = null, recursive = false) + } + testClass(javaClass(), "BlackBoxWithStdlibCodegenTestGenerated") { model("codegen/boxWithStdlib", testMethod = "doTestWithStdlib") } From 16ec4c38051adf19f7cbd1567b8e1f299df9ba23 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 26 Jun 2014 20:56:34 +0400 Subject: [PATCH 14/23] Minor, add path utility to codegen tests --- .../codegen/AbstractTopLevelMembersInvocationTest.java | 10 ++++------ .../org/jetbrains/jet/codegen/CodegenTestCase.java | 7 +++++++ .../org/jetbrains/jet/codegen/CodegenTestUtil.java | 3 ++- .../codegen/generated/AbstractBlackBoxCodegenTest.java | 6 +++--- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/compiler/tests/org/jetbrains/jet/codegen/AbstractTopLevelMembersInvocationTest.java b/compiler/tests/org/jetbrains/jet/codegen/AbstractTopLevelMembersInvocationTest.java index b0b05c8892b..4765d3f5c63 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/AbstractTopLevelMembersInvocationTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/AbstractTopLevelMembersInvocationTest.java @@ -20,10 +20,7 @@ import com.intellij.openapi.util.io.FileUtil; import com.intellij.util.ArrayUtil; import com.intellij.util.Processor; import org.jetbrains.annotations.NotNull; -import org.jetbrains.jet.ConfigurationKind; -import org.jetbrains.jet.JetTestUtils; -import org.jetbrains.jet.MockLibraryUtil; -import org.jetbrains.jet.TestJdkKind; +import org.jetbrains.jet.*; import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment; import java.io.File; @@ -45,7 +42,7 @@ public abstract class AbstractTopLevelMembersInvocationTest extends AbstractByte @Override public boolean process(File file) { if (file.getName().endsWith(".kt")) { - sourceFiles.add(file.getPath().substring("compiler/testData/codegen/".length())); + sourceFiles.add(relativePath(file)); return true; } return true; @@ -70,7 +67,8 @@ public abstract class AbstractTopLevelMembersInvocationTest extends AbstractByte loadFiles(ArrayUtil.toStringArray(sourceFiles)); - List expected = readExpectedOccurrences("compiler/testData/codegen/" + sourceFiles.get(0)); + List expected = + readExpectedOccurrences(JetTestCaseBuilder.getTestDataPathBase() + "/codegen/" + sourceFiles.get(0)); countAndCompareActualOccurrences(expected); } } diff --git a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java index e48fff715ff..6114fd05da0 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java +++ b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java @@ -108,6 +108,13 @@ public abstract class CodegenTestCase extends UsefulTestCase { loadFile(getPrefix() + "/" + getTestName(true) + ".kt"); } + @NotNull + protected String relativePath(@NotNull File file) { + String stringToCut = "compiler/testData/codegen/"; + assert file.getPath().startsWith(stringToCut) : "File path is not absolute: " + file; + return file.getPath().substring(stringToCut.length()); + } + @NotNull protected String getPrefix() { throw new UnsupportedOperationException(); diff --git a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestUtil.java b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestUtil.java index 6c4c1447e8d..490f37be3b6 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestUtil.java +++ b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestUtil.java @@ -22,6 +22,7 @@ import com.intellij.psi.PsiFile; import kotlin.KotlinPackage; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jet.JetTestCaseBuilder; import org.jetbrains.jet.JetTestUtils; import org.jetbrains.jet.analyzer.AnalyzeExhaust; import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys; @@ -122,7 +123,7 @@ public class CodegenTestUtil { "-d", javaClassesTempDirectory.getPath() ); - File javaFile = new File("compiler/testData/codegen/" + filename); + File javaFile = new File(JetTestCaseBuilder.getTestDataPathBase() + "/codegen/" + filename); JetTestUtils.compileJavaFiles(Collections.singleton(javaFile), options); return javaClassesTempDirectory; diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/AbstractBlackBoxCodegenTest.java b/compiler/tests/org/jetbrains/jet/codegen/generated/AbstractBlackBoxCodegenTest.java index fff5696db91..637e5a27c34 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/AbstractBlackBoxCodegenTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/AbstractBlackBoxCodegenTest.java @@ -75,7 +75,7 @@ public abstract class AbstractBlackBoxCodegenTest extends CodegenTestCase { @Override public boolean process(File file) { if (file.getName().endsWith(".kt")) { - files.add(file.getPath().substring("compiler/testData/codegen/".length())); + files.add(relativePath(file)); } return true; } @@ -93,7 +93,7 @@ public abstract class AbstractBlackBoxCodegenTest extends CodegenTestCase { } private void blackBoxFileAgainstJavaByFullPath(@NotNull String ktFileFullPath) { - String ktFile = ktFileFullPath.substring("compiler/testData/codegen/".length()); + String ktFile = relativePath(new File(ktFileFullPath)); File javaClassesTempDirectory = compileJava(ktFile.replaceFirst("\\.kt$", ".java")); myEnvironment = JetCoreEnvironment.createForTests(getTestRootDisposable(), JetTestUtils.compilerConfigurationForTests( @@ -111,7 +111,7 @@ public abstract class AbstractBlackBoxCodegenTest extends CodegenTestCase { FileUtil.processFilesRecursively(dirFile, new Processor() { @Override public boolean process(File file) { - String path = file.getPath().substring("compiler/testData/codegen/".length()); + String path = relativePath(file); if (path.endsWith(".kt")) { ktFilePaths.add(path); } From 760fd73a0a50aa4b861f9b1c599429e1259133b4 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 26 Jun 2014 00:18:54 +0400 Subject: [PATCH 15/23] Don't launch REPL on "kotlinc-jvm -version" #KT-3169 Fixed --- .../cli/src/org/jetbrains/jet/cli/jvm/K2JVMCompiler.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/compiler/cli/src/org/jetbrains/jet/cli/jvm/K2JVMCompiler.java b/compiler/cli/src/org/jetbrains/jet/cli/jvm/K2JVMCompiler.java index 3d47a36dec5..7fc969f89de 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/jvm/K2JVMCompiler.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/jvm/K2JVMCompiler.java @@ -20,7 +20,6 @@ import com.google.common.base.Splitter; import com.google.common.collect.Lists; import com.intellij.openapi.Disposable; import com.intellij.openapi.util.text.StringUtil; -import kotlin.modules.Module; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.cli.common.CLICompiler; import org.jetbrains.jet.cli.common.CLIConfigurationKeys; @@ -28,7 +27,10 @@ import org.jetbrains.jet.cli.common.ExitCode; import org.jetbrains.jet.cli.common.arguments.CompilerArgumentsUtil; import org.jetbrains.jet.cli.common.arguments.K2JVMCompilerArguments; import org.jetbrains.jet.cli.common.messages.*; -import org.jetbrains.jet.cli.jvm.compiler.*; +import org.jetbrains.jet.cli.jvm.compiler.CommandLineScriptUtils; +import org.jetbrains.jet.cli.jvm.compiler.CompileEnvironmentUtil; +import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment; +import org.jetbrains.jet.cli.jvm.compiler.KotlinToJVMBytecodeCompiler; import org.jetbrains.jet.cli.jvm.repl.ReplFromTerminal; import org.jetbrains.jet.codegen.CompilationException; import org.jetbrains.jet.codegen.inline.InlineCodegenUtil; @@ -83,7 +85,8 @@ public class K2JVMCompiler extends CLICompiler { if (!arguments.script && arguments.module == null && arguments.src == null && - arguments.freeArgs.isEmpty() + arguments.freeArgs.isEmpty() && + !arguments.version ) { ReplFromTerminal.run(rootDisposable, configuration); return ExitCode.OK; From e09052bb1dad1098a9866e15f4e7a903f34c1750 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 26 Jun 2014 01:02:45 +0400 Subject: [PATCH 16/23] Unmark dist/kotlinc/bin/*.bat as executable on Unix --- build.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.xml b/build.xml index 201ee4dd6a6..58ca999824c 100644 --- a/build.xml +++ b/build.xml @@ -139,7 +139,7 @@ - + From e04f7c24fa72f12cc46c7e02a4795926e1bf9e5e Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 26 Jun 2014 01:24:36 +0400 Subject: [PATCH 17/23] Alias 'kotlinc' for 'kotlinc-jvm' --- compiler/cli/bin/kotlinc | 17 +++++++++++++++++ compiler/cli/bin/kotlinc.bat | 17 +++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100755 compiler/cli/bin/kotlinc create mode 100644 compiler/cli/bin/kotlinc.bat diff --git a/compiler/cli/bin/kotlinc b/compiler/cli/bin/kotlinc new file mode 100755 index 00000000000..867dd7093a0 --- /dev/null +++ b/compiler/cli/bin/kotlinc @@ -0,0 +1,17 @@ +#!/bin/bash --posix + +# Copyright 2010-2014 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. + +$(dirname $0)/kotlinc-jvm "$@" diff --git a/compiler/cli/bin/kotlinc.bat b/compiler/cli/bin/kotlinc.bat new file mode 100644 index 00000000000..d55e6c86d74 --- /dev/null +++ b/compiler/cli/bin/kotlinc.bat @@ -0,0 +1,17 @@ +@echo off + +rem Copyright 2010-2014 JetBrains s.r.o. +rem +rem Licensed under the Apache License, Version 2.0 (the "License"); +rem you may not use this file except in compliance with the License. +rem You may obtain a copy of the License at +rem +rem http://www.apache.org/licenses/LICENSE-2.0 +rem +rem Unless required by applicable law or agreed to in writing, software +rem distributed under the License is distributed on an "AS IS" BASIS, +rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +rem See the License for the specific language governing permissions and +rem limitations under the License. + +call %~dp0kotlinc-jvm.bat %* From eb11a7dc884f5529cdbe9d8af012cd74b50e337f Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 24 Oct 2013 16:36:33 +0400 Subject: [PATCH 18/23] Move utilities out of runtime modules DescriptorUtils & DescriptorSubstitutor contained a lot of utilities that were used only in compiler & IDE. Move them closer to their usages --- .../codegen/ImplementationBodyCodegen.java | 9 +- .../jet/codegen/JvmRuntimeTypes.java | 6 +- .../JavaToKotlinMethodMap.java | 7 +- .../JavaPropertyInitializerEvaluatorImpl.java | 4 +- .../lang/cfg/JetFlowInformationProvider.java | 3 +- .../evaluate/ConstantExpressionEvaluator.kt | 13 +- .../jet/lang/resolve/BindingContextUtils.java | 14 +- .../jet/lang/resolve/DeclarationResolver.java | 9 +- .../jet/lang/resolve/DescriptorResolver.java | 28 +++- .../results/OverloadingConflictResolver.java | 4 +- .../resolve/calls/tasks/TaskPrioritizer.java | 7 +- .../jet/lang/types/BoundsSubstitutor.java | 121 +++++++++++++++ .../BasicExpressionTypingVisitor.java | 2 +- .../ClosureExpressionsTypingVisitor.java | 4 +- .../ControlStructureTypingVisitor.java | 2 +- .../expressions/ExpressionTypingServices.java | 2 +- .../expressions/ExpressionTypingUtils.java | 42 +++++- .../jetbrains/jet/codegen/TestlibTest.java | 8 +- .../jet/types/BoundsSubstitutorTest.java | 4 +- .../jet/lang/resolve/DescriptorUtils.java | 138 +----------------- .../jet/lang/types/DescriptorSubstitutor.java | 99 ++----------- .../libraries/DecompiledNavigationUtils.java | 3 +- 22 files changed, 270 insertions(+), 259 deletions(-) create mode 100644 compiler/frontend/src/org/jetbrains/jet/lang/types/BoundsSubstitutor.java diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java index 15ef11f2960..6650d907bfb 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java @@ -43,6 +43,7 @@ import org.jetbrains.jet.descriptors.serialization.ProtoBuf; import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.BindingContext; +import org.jetbrains.jet.lang.resolve.DeclarationResolver; import org.jetbrains.jet.lang.resolve.DescriptorUtils; import org.jetbrains.jet.lang.resolve.calls.CallResolverUtil; import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall; @@ -838,7 +839,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { iv.anew(thisDescriptorType); iv.dup(); - ConstructorDescriptor constructor = DescriptorUtils.getConstructorOfDataClass(descriptor); + ConstructorDescriptor constructor = DeclarationResolver.getConstructorOfDataClass(descriptor); assert function.getValueParameters().size() == constructor.getValueParameters().size() : "Number of parameters of copy function and constructor are different. " + "Copy: " + function.getValueParameters().size() + ", " + @@ -1124,9 +1125,11 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { protected void genInitSingleton(ClassDescriptor fieldTypeDescriptor, StackValue.Field field) { if (state.getClassBuilderMode() == ClassBuilderMode.FULL) { - ConstructorDescriptor constructorDescriptor = DescriptorUtils.getConstructorOfSingletonObject(fieldTypeDescriptor); + Collection constructors = fieldTypeDescriptor.getConstructors(); + assert constructors.size() == 1 : "Class of singleton object must have only one constructor: " + constructors; + ExpressionCodegen codegen = createOrGetClInitCodegen(); - FunctionDescriptor fd = codegen.accessibleFunctionDescriptor(constructorDescriptor); + FunctionDescriptor fd = codegen.accessibleFunctionDescriptor(constructors.iterator().next()); generateMethodCallTo(fd, codegen.v); field.store(field.type, codegen.v); } diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/JvmRuntimeTypes.java b/compiler/backend/src/org/jetbrains/jet/codegen/JvmRuntimeTypes.java index 86818b815b4..25e7ab540d8 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/JvmRuntimeTypes.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/JvmRuntimeTypes.java @@ -23,12 +23,12 @@ import org.jetbrains.jet.lang.descriptors.impl.MutableClassDescriptor; import org.jetbrains.jet.lang.descriptors.impl.MutablePackageFragmentDescriptor; import org.jetbrains.jet.lang.descriptors.impl.TypeParameterDescriptorImpl; import org.jetbrains.jet.lang.reflect.ReflectionTypes; -import org.jetbrains.jet.lang.resolve.DescriptorUtils; import org.jetbrains.jet.lang.resolve.ImportPath; import org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.types.*; +import org.jetbrains.jet.lang.types.expressions.ExpressionTypingUtils; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import java.util.*; @@ -117,7 +117,7 @@ public class JvmRuntimeTypes { JetType functionType = KotlinBuiltIns.getInstance().getFunctionType( Annotations.EMPTY, receiverParameter == null ? null : receiverParameter.getType(), - DescriptorUtils.getValueParametersTypes(descriptor.getValueParameters()), + ExpressionTypingUtils.getValueParametersTypes(descriptor.getValueParameters()), descriptor.getReturnType() ); @@ -162,7 +162,7 @@ public class JvmRuntimeTypes { JetType kFunctionType = reflectionTypes.getKFunctionType( Annotations.EMPTY, receiverType, - DescriptorUtils.getValueParametersTypes(descriptor.getValueParameters()), + ExpressionTypingUtils.getValueParametersTypes(descriptor.getValueParameters()), descriptor.getReturnType(), receiverParameter != null ); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/JavaToKotlinMethodMap.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/JavaToKotlinMethodMap.java index e44ce419307..36866814156 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/JavaToKotlinMethodMap.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/JavaToKotlinMethodMap.java @@ -32,10 +32,7 @@ import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.renderer.DescriptorRenderer; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; public class JavaToKotlinMethodMap { public static final JavaToKotlinMethodMap INSTANCE = new JavaToKotlinMethodMap(); @@ -55,7 +52,7 @@ public class JavaToKotlinMethodMap { List result = Lists.newArrayList(); - Set allSuperClasses = DescriptorUtils.getAllSuperClasses(containingClass); + Set allSuperClasses = new HashSet(DescriptorUtils.getSuperclassDescriptors(containingClass)); String serializedMethod = JavaSignatureFormatter.getInstance().formatMethod(javaMethod); for (ClassData classData : classDatas) { diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/impl/JavaPropertyInitializerEvaluatorImpl.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/impl/JavaPropertyInitializerEvaluatorImpl.java index 929a1ecfe28..bfe6d1706fe 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/impl/JavaPropertyInitializerEvaluatorImpl.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/impl/JavaPropertyInitializerEvaluatorImpl.java @@ -21,7 +21,7 @@ import com.intellij.psi.impl.JavaConstantExpressionEvaluator; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.PropertyDescriptor; -import org.jetbrains.jet.lang.resolve.DescriptorUtils; +import org.jetbrains.jet.lang.evaluate.ConstantExpressionEvaluator; import org.jetbrains.jet.lang.resolve.constants.CompileTimeConstant; import org.jetbrains.jet.lang.resolve.constants.ConstantsPackage; import org.jetbrains.jet.lang.resolve.java.structure.JavaField; @@ -36,7 +36,7 @@ public class JavaPropertyInitializerEvaluatorImpl implements JavaPropertyInitial if (evaluatedExpression != null) { return ConstantsPackage.createCompileTimeConstant( evaluatedExpression, - DescriptorUtils.isPropertyCompileTimeConstant(descriptor), + ConstantExpressionEvaluator.object$.isPropertyCompileTimeConstant(descriptor), false, true, descriptor.getType()); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java index 8bafae1e6a1..6566a125ad4 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java @@ -58,6 +58,7 @@ import org.jetbrains.jet.lang.resolve.scopes.receivers.ExpressionReceiver; import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue; import org.jetbrains.jet.lang.resolve.scopes.receivers.ThisReceiver; import org.jetbrains.jet.lang.types.JetType; +import org.jetbrains.jet.lang.types.expressions.ExpressionTypingUtils; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lexer.JetTokens; import org.jetbrains.jet.plugin.MainFunctionDetector; @@ -591,7 +592,7 @@ public class JetFlowInformationProvider { VariableDescriptor variableDescriptor = PseudocodeUtil.extractVariableDescriptorIfAny( instruction, false, trace.getBindingContext()); if (variableDescriptor == null || !declaredVariables.contains(variableDescriptor) - || !DescriptorUtils.isLocal(variableDescriptor.getContainingDeclaration(), variableDescriptor)) { + || !ExpressionTypingUtils.isLocal(variableDescriptor.getContainingDeclaration(), variableDescriptor)) { return; } PseudocodeVariablesData.VariableUseState variableUseState = in.get(variableDescriptor); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/evaluate/ConstantExpressionEvaluator.kt b/compiler/frontend/src/org/jetbrains/jet/lang/evaluate/ConstantExpressionEvaluator.kt index 3131614b810..98336f2dd07 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/evaluate/ConstantExpressionEvaluator.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/evaluate/ConstantExpressionEvaluator.kt @@ -41,6 +41,17 @@ public class ConstantExpressionEvaluator private (val trace: BindingTrace) : Jet val evaluator = ConstantExpressionEvaluator(trace) return evaluator.evaluate(expression, expectedType) } + + public fun isPropertyCompileTimeConstant(descriptor: VariableDescriptor): Boolean { + if (descriptor.isVar()) { + return false + } + if (DescriptorUtils.isClassObject(descriptor.getContainingDeclaration()) || DescriptorUtils.isTopLevelDeclaration(descriptor)) { + val returnType = descriptor.getType() + return KotlinBuiltIns.getInstance().isPrimitiveType(returnType) || KotlinBuiltIns.getInstance().getStringType() == returnType + } + return false + } } private fun evaluate(expression: JetExpression, expectedType: JetType?): CompileTimeConstant<*>? { @@ -311,7 +322,7 @@ public class ConstantExpressionEvaluator private (val trace: BindingTrace) : Jet else compileTimeConstant.getValue() return createCompileTimeConstant(value, expectedType, isPure = false, - canBeUsedInAnnotation = DescriptorUtils.isPropertyCompileTimeConstant(callableDescriptor), + canBeUsedInAnnotation = isPropertyCompileTimeConstant(callableDescriptor), usesVariableAsConstant = true) } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.java index b982bd5197d..a0f5f88c882 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.java @@ -89,7 +89,7 @@ public class BindingContextUtils { public static JetFile getContainingFile(@NotNull BindingContext context, @NotNull DeclarationDescriptor declarationDescriptor) { // declarationDescriptor may describe a synthesized element which doesn't have PSI // To workaround that, we find a top-level parent (which is inside a PackageFragmentDescriptor), which is guaranteed to have PSI - DeclarationDescriptor descriptor = DescriptorUtils.findTopLevelParent(declarationDescriptor); + DeclarationDescriptor descriptor = findTopLevelParent(declarationDescriptor); if (descriptor == null) return null; PsiElement declaration = descriptorToDeclaration(context, descriptor); @@ -100,6 +100,18 @@ public class BindingContextUtils { return (JetFile) containingFile; } + @Nullable + private static DeclarationDescriptor findTopLevelParent(@NotNull DeclarationDescriptor declarationDescriptor) { + DeclarationDescriptor descriptor = declarationDescriptor; + if (declarationDescriptor instanceof PropertyAccessorDescriptor) { + descriptor = ((PropertyAccessorDescriptor) descriptor).getCorrespondingProperty(); + } + while (!(descriptor == null || DescriptorUtils.isTopLevelDeclaration(descriptor))) { + descriptor = descriptor.getContainingDeclaration(); + } + return descriptor; + } + @Nullable private static PsiElement doGetDescriptorToDeclaration(@NotNull BindingContext context, @NotNull DeclarationDescriptor descriptor) { return context.get(DESCRIPTOR_TO_DECLARATION, descriptor); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java index 8527d137a00..ded579ce706 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java @@ -203,13 +203,20 @@ public class DeclarationResolver { MutableClassDescriptor classDescriptor = (MutableClassDescriptor) entry.getValue(); if (klass instanceof JetClass && klass.hasPrimaryConstructor() && KotlinBuiltIns.getInstance().isData(classDescriptor)) { - ConstructorDescriptor constructor = DescriptorUtils.getConstructorOfDataClass(classDescriptor); + ConstructorDescriptor constructor = getConstructorOfDataClass(classDescriptor); createComponentFunctions(classDescriptor, constructor); createCopyFunction(classDescriptor, constructor); } } } + @NotNull + public static ConstructorDescriptor getConstructorOfDataClass(@NotNull ClassDescriptor classDescriptor) { + Collection constructors = classDescriptor.getConstructors(); + assert constructors.size() == 1 : "Data class must have only one constructor: " + classDescriptor.getConstructors(); + return constructors.iterator().next(); + } + private void createComponentFunctions(@NotNull MutableClassDescriptor classDescriptor, @NotNull ConstructorDescriptor constructorDescriptor) { int parameterIndex = 0; for (ValueParameterDescriptor parameter : constructorDescriptor.getValueParameters()) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java index 9afc4b1a47a..f10296c0801 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java @@ -546,7 +546,7 @@ public class DescriptorResolver { JetType variableType = type; if (valueParameter.hasModifier(VARARG_KEYWORD)) { varargElementType = type; - variableType = DescriptorUtils.getVarargParameterType(type); + variableType = getVarargParameterType(type); } ValueParameterDescriptorImpl valueParameterDescriptor = new ValueParameterDescriptorImpl( declarationDescriptor, @@ -563,6 +563,15 @@ public class DescriptorResolver { return valueParameterDescriptor; } + @NotNull + private static JetType getVarargParameterType(@NotNull JetType elementType) { + JetType primitiveArrayType = KotlinBuiltIns.getInstance().getPrimitiveArrayJetTypeByPrimitiveJetType(elementType); + if (primitiveArrayType != null) { + return primitiveArrayType; + } + return KotlinBuiltIns.getInstance().getArrayType(Variance.INVARIANT, elementType); + } + public List resolveTypeParametersForCallableDescriptor( DeclarationDescriptor containingDescriptor, WritableScope extensibleScope, @@ -791,7 +800,7 @@ public class DescriptorResolver { type = ErrorUtils.createErrorType("Annotation is absent"); } if (parameter.hasModifier(VARARG_KEYWORD)) { - return DescriptorUtils.getVarargParameterType(type); + return getVarargParameterType(type); } return type; } @@ -1259,7 +1268,7 @@ public class DescriptorResolver { parameterScope, valueParameters, trace), resolveVisibilityFromModifiers(modifierList, getDefaultConstructorVisibility(classDescriptor)), - DescriptorUtils.isConstructorOfStaticNestedClass(constructorDescriptor)); + isConstructorOfStaticNestedClass(constructorDescriptor)); if (isAnnotationClass(classDescriptor)) { CompileTimeConstantUtils.checkConstructorParametersType(valueParameters, trace); } @@ -1425,6 +1434,19 @@ public class DescriptorResolver { return true; } + private static boolean isInsideOuterClassOrItsSubclass(@Nullable DeclarationDescriptor nested, @NotNull ClassDescriptor outer) { + if (nested == null) return false; + + if (nested instanceof ClassDescriptor && isSubclass((ClassDescriptor) nested, outer)) return true; + + return isInsideOuterClassOrItsSubclass(nested.getContainingDeclaration(), outer); + } + + @Nullable + public static ClassDescriptor getContainingClass(@NotNull JetScope scope) { + return getParentOfType(scope.getContainingDeclaration(), ClassDescriptor.class, false); + } + public static void checkParameterHasNoValOrVar( @NotNull BindingTrace trace, @NotNull JetParameter parameter, diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/results/OverloadingConflictResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/results/OverloadingConflictResolver.java index 2bd6d32a3c8..ab5a4ca37f7 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/results/OverloadingConflictResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/results/OverloadingConflictResolver.java @@ -21,11 +21,11 @@ import gnu.trove.TObjectHashingStrategy; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.*; -import org.jetbrains.jet.lang.resolve.DescriptorUtils; import org.jetbrains.jet.lang.resolve.OverrideResolver; import org.jetbrains.jet.lang.resolve.calls.model.MutableResolvedCall; import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall; import org.jetbrains.jet.lang.resolve.calls.model.VariableAsFunctionResolvedCall; +import org.jetbrains.jet.lang.types.BoundsSubstitutor; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.TypeUtils; import org.jetbrains.jet.lang.types.checker.JetTypeChecker; @@ -131,7 +131,7 @@ public class OverloadingConflictResolver { if (isGenericF && !isGenericG) return false; if (isGenericF && isGenericG) { - return moreSpecific(DescriptorUtils.substituteBounds(f), DescriptorUtils.substituteBounds(g), false); + return moreSpecific(BoundsSubstitutor.substituteBounds(f), BoundsSubstitutor.substituteBounds(g), false); } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TaskPrioritizer.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TaskPrioritizer.java index 5166f22bd2a..63b8aa1c049 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TaskPrioritizer.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TaskPrioritizer.java @@ -38,8 +38,11 @@ import org.jetbrains.jet.lang.types.ErrorUtils; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.PackageType; import org.jetbrains.jet.lang.types.checker.JetTypeChecker; +import org.jetbrains.jet.lang.types.expressions.ExpressionTypingUtils; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; import static org.jetbrains.jet.lang.resolve.calls.CallResolverUtil.isOrOverridesSynthesized; import static org.jetbrains.jet.lang.resolve.calls.tasks.ExplicitReceiverKind.*; @@ -54,7 +57,7 @@ public class TaskPrioritizer { @NotNull Collection> nonlocal ) { for (ResolutionCandidate resolvedCall : allDescriptors) { - if (DescriptorUtils.isLocal(containerOfTheCurrentLocality, resolvedCall.getDescriptor())) { + if (ExpressionTypingUtils.isLocal(containerOfTheCurrentLocality, resolvedCall.getDescriptor())) { local.add(resolvedCall); } else { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/BoundsSubstitutor.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/BoundsSubstitutor.java new file mode 100644 index 00000000000..c0f85a943ab --- /dev/null +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/BoundsSubstitutor.java @@ -0,0 +1,121 @@ +/* + * Copyright 2010-2013 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. + */ + +package org.jetbrains.jet.lang.types; + +import com.google.common.base.Function; +import com.google.common.collect.Collections2; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.lang.descriptors.CallableDescriptor; +import org.jetbrains.jet.lang.descriptors.ClassifierDescriptor; +import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor; +import org.jetbrains.jet.utils.DFS; + +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class BoundsSubstitutor { + private static final Function PROJECTIONS_TO_TYPES = new Function() { + @Override + public JetType apply(TypeProjection projection) { + return projection.getType(); + } + }; + + private BoundsSubstitutor() { + } + + @NotNull + public static D substituteBounds(@NotNull D functionDescriptor) { + List typeParameters = functionDescriptor.getTypeParameters(); + if (typeParameters.isEmpty()) return functionDescriptor; + + // TODO: this does not handle any recursion in the bounds + @SuppressWarnings("unchecked") + D substitutedFunction = (D) functionDescriptor.substitute(createUpperBoundsSubstitutor(typeParameters)); + assert substitutedFunction != null : "Substituting upper bounds should always be legal"; + + return substitutedFunction; + } + + @NotNull + private static TypeSubstitutor createUpperBoundsSubstitutor(@NotNull List typeParameters) { + Map mutableSubstitution = new HashMap(); + TypeSubstitutor substitutor = TypeSubstitutor.create(mutableSubstitution); + + // todo assert: no loops + for (TypeParameterDescriptor descriptor : topologicallySortTypeParameters(typeParameters)) { + JetType upperBoundsAsType = descriptor.getUpperBoundsAsType(); + JetType substitutedUpperBoundsAsType = substitutor.substitute(upperBoundsAsType, Variance.INVARIANT); + mutableSubstitution.put(descriptor.getTypeConstructor(), new TypeProjectionImpl(substitutedUpperBoundsAsType)); + } + + return substitutor; + } + + @NotNull + private static List topologicallySortTypeParameters(@NotNull final List typeParameters) { + // In the end, we want every parameter to have no references to those after it in the list + // This gives us the reversed order: the one that refers to everybody else comes first + List topOrder = DFS.topologicalOrder( + typeParameters, + new DFS.Neighbors() { + @NotNull + @Override + public Iterable getNeighbors(TypeParameterDescriptor current) { + return getTypeParametersFromUpperBounds(current, typeParameters); + } + }); + + assert topOrder.size() == typeParameters.size() : "All type parameters must be visited, but only " + topOrder + " were"; + + // Now, the one that refers to everybody else stands in the last position + Collections.reverse(topOrder); + return topOrder; + } + + @NotNull + private static List getTypeParametersFromUpperBounds( + @NotNull TypeParameterDescriptor current, + @NotNull final List typeParameters + ) { + return DFS.dfs( + current.getUpperBounds(), + new DFS.Neighbors() { + @NotNull + @Override + public Iterable getNeighbors(JetType current) { + return Collections2.transform(current.getArguments(), PROJECTIONS_TO_TYPES); + } + }, + new DFS.NodeHandlerWithListResult() { + @Override + public boolean beforeChildren(JetType current) { + ClassifierDescriptor declarationDescriptor = current.getConstructor().getDeclarationDescriptor(); + // typeParameters in a list, but it contains very few elements, so it's fine to call contains() on it + //noinspection SuspiciousMethodCalls + if (typeParameters.contains(declarationDescriptor)) { + result.add((TypeParameterDescriptor) declarationDescriptor); + } + + return true; + } + } + ); + } +} diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java index edf331d8c97..976d1b5ab19 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java @@ -498,7 +498,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor { JetType type = components.reflectionTypes.getKFunctionType( Annotations.EMPTY, receiverType, - DescriptorUtils.getValueParametersTypes(descriptor.getValueParameters()), + getValueParametersTypes(descriptor.getValueParameters()), descriptor.getReturnType(), receiverParameter != null ); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ClosureExpressionsTypingVisitor.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ClosureExpressionsTypingVisitor.java index 73331a549fb..4053ecc3467 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ClosureExpressionsTypingVisitor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ClosureExpressionsTypingVisitor.java @@ -111,7 +111,7 @@ public class ClosureExpressionsTypingVisitor extends ExpressionTypingVisitor { functionDescriptor.setReturnType(safeReturnType); JetType receiver = DescriptorUtils.getReceiverParameterType(functionDescriptor.getReceiverParameter()); - List valueParametersTypes = DescriptorUtils.getValueParametersTypes(functionDescriptor.getValueParameters()); + List valueParametersTypes = ExpressionTypingUtils.getValueParametersTypes(functionDescriptor.getValueParameters()); JetType resultType = KotlinBuiltIns.getInstance().getFunctionType( Annotations.EMPTY, receiver, valueParametersTypes, safeReturnType); if (!noExpectedType(expectedType) && KotlinBuiltIns.getInstance().isFunctionOrExtensionFunctionType(expectedType)) { @@ -187,7 +187,7 @@ public class ClosureExpressionsTypingVisitor extends ExpressionTypingVisitor { } else { if (expectedValueParameters != null && declaredValueParameters.size() != expectedValueParameters.size()) { - List expectedParameterTypes = DescriptorUtils.getValueParametersTypes(expectedValueParameters); + List expectedParameterTypes = ExpressionTypingUtils.getValueParametersTypes(expectedValueParameters); context.trace.report(EXPECTED_PARAMETERS_NUMBER_MISMATCH.on(functionLiteral, expectedParameterTypes.size(), expectedParameterTypes)); } for (int i = 0; i < declaredValueParameters.size(); i++) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ControlStructureTypingVisitor.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ControlStructureTypingVisitor.java index e0ce8f2fcc5..df43995bb2e 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ControlStructureTypingVisitor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ControlStructureTypingVisitor.java @@ -370,7 +370,7 @@ public class ControlStructureTypingVisitor extends ExpressionTypingVisitor { // http://youtrack.jetbrains.net/issue/KT-527 VariableDescriptor olderVariable = context.scope.getLocalVariable(variableDescriptor.getName()); - if (olderVariable != null && DescriptorUtils.isLocal(context.scope.getContainingDeclaration(), olderVariable)) { + if (olderVariable != null && isLocal(context.scope.getContainingDeclaration(), olderVariable)) { PsiElement declaration = BindingContextUtils.descriptorToDeclaration(context.trace.getBindingContext(), variableDescriptor); context.trace.report(Errors.NAME_SHADOWING.on(declaration, variableDescriptor.getName().asString())); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingServices.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingServices.java index e6885543fc2..9d53a508a8b 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingServices.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingServices.java @@ -395,7 +395,7 @@ public class ExpressionTypingServices { JetExpression defaultValue = jetParameter.getDefaultValue(); if (defaultValue != null) { getType(declaringScope, defaultValue, valueParameterDescriptor.getType(), dataFlowInfo, trace); - if (DescriptorUtils.isAnnotationClass(DescriptorUtils.getContainingClass(declaringScope))) { + if (DescriptorUtils.isAnnotationClass(DescriptorResolver.getContainingClass(declaringScope))) { ConstantExpressionEvaluator.object$.evaluate(defaultValue, trace, valueParameterDescriptor.getType()); } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingUtils.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingUtils.java index c56aee232cf..ee3202b6044 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingUtils.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingUtils.java @@ -427,7 +427,7 @@ public class ExpressionTypingUtils { } public static void checkVariableShadowing(@NotNull ExpressionTypingContext context, @NotNull VariableDescriptor variableDescriptor, VariableDescriptor oldDescriptor) { - if (oldDescriptor != null && DescriptorUtils.isLocal(variableDescriptor.getContainingDeclaration(), oldDescriptor)) { + if (oldDescriptor != null && isLocal(variableDescriptor.getContainingDeclaration(), oldDescriptor)) { PsiElement declaration = BindingContextUtils.descriptorToDeclaration(context.trace.getBindingContext(), variableDescriptor); if (declaration != null) { context.trace.report(Errors.NAME_SHADOWING.on(declaration, variableDescriptor.getName().asString())); @@ -486,4 +486,44 @@ public class ExpressionTypingUtils { public static boolean isUnaryExpressionDependentOnExpectedType(@NotNull JetUnaryExpression expression) { return expression.getOperationReference().getReferencedNameElementType() == JetTokens.EXCLEXCL; } + + @NotNull + public static List getValueParametersTypes(@NotNull List valueParameters) { + List parameterTypes = new ArrayList(valueParameters.size()); + for (ValueParameterDescriptor parameter : valueParameters) { + parameterTypes.add(parameter.getType()); + } + return parameterTypes; + } + + /** + * The primary case for local extensions is the following: + * + * I had a locally declared extension function or a local variable of function type called foo + * And I called it on my x + * Now, someone added function foo() to the class of x + * My code should not change + * + * thus + * + * local extension prevail over members (and members prevail over all non-local extensions) + */ + public static boolean isLocal(DeclarationDescriptor containerOfTheCurrentLocality, DeclarationDescriptor candidate) { + if (candidate instanceof ValueParameterDescriptor) { + return true; + } + DeclarationDescriptor parent = candidate.getContainingDeclaration(); + if (!(parent instanceof FunctionDescriptor)) { + return false; + } + FunctionDescriptor functionDescriptor = (FunctionDescriptor) parent; + DeclarationDescriptor current = containerOfTheCurrentLocality; + while (current != null) { + if (current == functionDescriptor) { + return true; + } + current = current.getContainingDeclaration(); + } + return false; + } } diff --git a/compiler/tests/org/jetbrains/jet/codegen/TestlibTest.java b/compiler/tests/org/jetbrains/jet/codegen/TestlibTest.java index bbbbde9c4da..43d7f71df2b 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/TestlibTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/TestlibTest.java @@ -41,13 +41,15 @@ import org.jetbrains.jet.lang.psi.JetDeclaration; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingContextUtils; -import org.jetbrains.jet.lang.resolve.DescriptorUtils; +import org.jetbrains.jet.lang.types.JetType; import java.io.File; import java.lang.reflect.Modifier; import java.net.URL; import java.net.URLClassLoader; +import static org.jetbrains.jet.lang.types.TypeUtils.getAllSupertypes; + @SuppressWarnings("JUnitTestCaseWithNoTests") public class TestlibTest extends UsefulTestCase { public static Test suite() { @@ -123,8 +125,8 @@ public class TestlibTest extends UsefulTestCase { BindingContext.DECLARATION_TO_DESCRIPTOR, declaration); - for (ClassDescriptor superClass : DescriptorUtils.getAllSuperClasses(descriptor)) { - if (!"junit/framework/Test".equals(typeMapper.mapClass(superClass).getInternalName())) continue; + for (JetType superType : getAllSupertypes(descriptor.getDefaultType())) { + if (!"junit/framework/Test".equals(typeMapper.mapType(superType).getInternalName())) continue; String name = typeMapper.mapClass(descriptor).getInternalName(); diff --git a/compiler/tests/org/jetbrains/jet/types/BoundsSubstitutorTest.java b/compiler/tests/org/jetbrains/jet/types/BoundsSubstitutorTest.java index 70e8ff0fd92..f348090e4f0 100644 --- a/compiler/tests/org/jetbrains/jet/types/BoundsSubstitutorTest.java +++ b/compiler/tests/org/jetbrains/jet/types/BoundsSubstitutorTest.java @@ -23,11 +23,11 @@ import org.jetbrains.jet.lang.descriptors.FunctionDescriptor; import org.jetbrains.jet.lang.descriptors.ModuleDescriptor; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetPsiFactory; -import org.jetbrains.jet.lang.resolve.DescriptorUtils; import org.jetbrains.jet.lang.resolve.lazy.KotlinTestWithEnvironment; import org.jetbrains.jet.lang.resolve.lazy.LazyResolveTestUtil; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.Name; +import org.jetbrains.jet.lang.types.BoundsSubstitutor; import org.jetbrains.jet.renderer.DescriptorRenderer; import java.util.Collection; @@ -76,7 +76,7 @@ public class BoundsSubstitutorTest extends KotlinTestWithEnvironment { assert functions.size() == 1 : "Many functions defined"; FunctionDescriptor function = ContainerUtil.getFirstItem(functions); - FunctionDescriptor substituted = DescriptorUtils.substituteBounds(function); + FunctionDescriptor substituted = BoundsSubstitutor.substituteBounds(function); String actual = DescriptorRenderer.COMPACT.render(substituted); assertEquals(expected, actual); } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java index fd07e32b8ca..b9c443231cb 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java @@ -17,8 +17,6 @@ package org.jetbrains.jet.lang.resolve; import com.google.common.base.Predicate; -import com.google.common.collect.Lists; -import com.google.common.collect.Sets; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.*; @@ -33,7 +31,6 @@ import org.jetbrains.jet.lang.types.*; import org.jetbrains.jet.lang.types.checker.JetTypeChecker; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; -import javax.rmi.CORBA.ClassDesc; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -45,19 +42,6 @@ public class DescriptorUtils { private DescriptorUtils() { } - @NotNull - public static D substituteBounds(@NotNull D functionDescriptor) { - List typeParameters = functionDescriptor.getTypeParameters(); - if (typeParameters.isEmpty()) return functionDescriptor; - - // TODO: this does not handle any recursion in the bounds - @SuppressWarnings("unchecked") - D substitutedFunction = (D) functionDescriptor.substitute(DescriptorSubstitutor.createUpperBoundsSubstitutor(typeParameters)); - assert substitutedFunction != null : "Substituting upper bounds should always be legal"; - - return substitutedFunction; - } - @Nullable public static ReceiverParameterDescriptor getExpectedThisObjectIfNeeded(@NotNull DeclarationDescriptor containingDeclaration) { if (containingDeclaration instanceof ClassDescriptor) { @@ -72,38 +56,7 @@ public class DescriptorUtils { } /** - * The primary case for local extensions is the following: - * - * I had a locally declared extension function or a local variable of function type called foo - * And I called it on my x - * Now, someone added function foo() to the class of x - * My code should not change - * - * thus - * - * local extension prevail over members (and members prevail over all non-local extensions) - */ - public static boolean isLocal(DeclarationDescriptor containerOfTheCurrentLocality, DeclarationDescriptor candidate) { - if (candidate instanceof ValueParameterDescriptor) { - return true; - } - DeclarationDescriptor parent = candidate.getContainingDeclaration(); - if (!(parent instanceof FunctionDescriptor)) { - return false; - } - FunctionDescriptor functionDescriptor = (FunctionDescriptor) parent; - DeclarationDescriptor current = containerOfTheCurrentLocality; - while (current != null) { - if (current == functionDescriptor) { - return true; - } - current = current.getContainingDeclaration(); - } - return false; - } - - /** - * descriptor may be local itself or have a local ancestor + * Descriptor may be local itself or have a local ancestor */ public static boolean isLocal(@NotNull DeclarationDescriptor descriptor) { DeclarationDescriptor current = descriptor; @@ -166,18 +119,6 @@ public class DescriptorUtils { return getContainingModule(first).equals(getContainingModule(second)); } - @Nullable - public static DeclarationDescriptor findTopLevelParent(@NotNull DeclarationDescriptor declarationDescriptor) { - DeclarationDescriptor descriptor = declarationDescriptor; - if (declarationDescriptor instanceof PropertyAccessorDescriptor) { - descriptor = ((PropertyAccessorDescriptor) descriptor).getCorrespondingProperty(); - } - while (!(descriptor == null || isTopLevelDeclaration(descriptor))) { - descriptor = descriptor.getContainingDeclaration(); - } - return descriptor; - } - @Nullable public static D getParentOfType( @Nullable DeclarationDescriptor descriptor, @@ -372,55 +313,9 @@ public class DescriptorUtils { return (ClassDescriptor) classifier; } - @NotNull - public static ConstructorDescriptor getConstructorOfDataClass(ClassDescriptor classDescriptor) { - ConstructorDescriptor descriptor = getConstructorDescriptorIfOnlyOne(classDescriptor); - assert descriptor != null : "Data class must have only one constructor: " + classDescriptor.getConstructors(); - return descriptor; - } - - @NotNull - public static ConstructorDescriptor getConstructorOfSingletonObject(ClassDescriptor classDescriptor) { - ConstructorDescriptor descriptor = getConstructorDescriptorIfOnlyOne(classDescriptor); - assert descriptor != null : "Class of singleton object must have only one constructor: " + classDescriptor.getConstructors(); - return descriptor; - } - - @Nullable - private static ConstructorDescriptor getConstructorDescriptorIfOnlyOne(ClassDescriptor classDescriptor) { - Collection constructors = classDescriptor.getConstructors(); - return constructors.size() != 1 ? null : constructors.iterator().next(); - } - @Nullable public static JetType getReceiverParameterType(@Nullable ReceiverParameterDescriptor receiverParameterDescriptor) { - if (receiverParameterDescriptor == null) { - return null; - } - return receiverParameterDescriptor.getType(); - } - - @NotNull - public static JetType getVarargParameterType(@NotNull JetType elementType) { - JetType primitiveArrayType = KotlinBuiltIns.getInstance().getPrimitiveArrayJetTypeByPrimitiveJetType(elementType); - return primitiveArrayType != null ? primitiveArrayType : KotlinBuiltIns.getInstance().getArrayType(Variance.INVARIANT, elementType); - } - - @NotNull - public static List getValueParametersTypes(@NotNull List valueParameters) { - List parameterTypes = Lists.newArrayList(); - for (ValueParameterDescriptor parameter : valueParameters) { - parameterTypes.add(parameter.getType()); - } - return parameterTypes; - } - - public static boolean isInsideOuterClassOrItsSubclass(@Nullable DeclarationDescriptor nested, @NotNull ClassDescriptor outer) { - if (nested == null) return false; - - if (nested instanceof ClassDescriptor && isSubclass((ClassDescriptor) nested, outer)) return true; - - return isInsideOuterClassOrItsSubclass(nested.getContainingDeclaration(), outer); + return receiverParameterDescriptor == null ? null : receiverParameterDescriptor.getType(); } public static boolean isConstructorOfStaticNestedClass(@Nullable CallableDescriptor descriptor) { @@ -437,12 +332,6 @@ public class DescriptorUtils { !((ClassDescriptor) descriptor).isInner(); } - @Nullable - public static ClassDescriptor getContainingClass(@NotNull JetScope scope) { - DeclarationDescriptor containingDeclaration = scope.getContainingDeclaration(); - return getParentOfType(containingDeclaration, ClassDescriptor.class, false); - } - @NotNull public static JetScope getStaticNestedClassesScope(@NotNull ClassDescriptor descriptor) { JetScope innerClassesScope = descriptor.getUnsubstitutedInnerClassesScope(); @@ -468,18 +357,6 @@ public class DescriptorUtils { && methodTypeParameters.isEmpty(); } - @NotNull - public static Set getAllSuperClasses(@NotNull ClassDescriptor klass) { - Set allSupertypes = TypeUtils.getAllSupertypes(klass.getDefaultType()); - Set allSuperclasses = Sets.newHashSet(); - for (JetType supertype : allSupertypes) { - ClassDescriptor superclass = TypeUtils.getClassDescriptor(supertype); - assert superclass != null; - allSuperclasses.add(superclass); - } - return allSuperclasses; - } - /** * @return true iff {@code descriptor}'s first non-class container is a package */ @@ -507,17 +384,6 @@ public class DescriptorUtils { return descriptor; } - public static boolean isPropertyCompileTimeConstant(@NotNull VariableDescriptor descriptor) { - if (descriptor.isVar()) { - return false; - } - if (isClassObject(descriptor.getContainingDeclaration()) || isTopLevelDeclaration(descriptor)) { - JetType type = descriptor.getType(); - return KotlinBuiltIns.getInstance().isPrimitiveType(type) || KotlinBuiltIns.getInstance().getStringType().equals(type); - } - return false; - } - public static boolean shouldRecordInitializerForProperty(@NotNull VariableDescriptor variable, @NotNull JetType type) { if (variable.isVar() || type.isError()) return false; diff --git a/core/descriptors/src/org/jetbrains/jet/lang/types/DescriptorSubstitutor.java b/core/descriptors/src/org/jetbrains/jet/lang/types/DescriptorSubstitutor.java index 3615141469b..b6c3e9aa16f 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/types/DescriptorSubstitutor.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/types/DescriptorSubstitutor.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2013 JetBrains s.r.o. + * Copyright 2010-2014 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. @@ -16,38 +16,28 @@ package org.jetbrains.jet.lang.types; -import com.google.common.base.Function; -import com.google.common.collect.Collections2; -import com.google.common.collect.Maps; import org.jetbrains.annotations.NotNull; -import org.jetbrains.jet.lang.descriptors.ClassifierDescriptor; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor; import org.jetbrains.jet.lang.descriptors.impl.TypeParameterDescriptorImpl; -import org.jetbrains.jet.utils.DFS; -import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; public class DescriptorSubstitutor { - - private static final Function PROJECTIONS_TO_TYPES = new Function() { - @Override - public JetType apply(TypeProjection projection) { - return projection.getType(); - } - }; + private DescriptorSubstitutor() { + } @NotNull public static TypeSubstitutor substituteTypeParameters( @NotNull List typeParameters, @NotNull final TypeSubstitutor originalSubstitutor, @NotNull DeclarationDescriptor newContainingDeclaration, - @NotNull List result) { - final Map mutableSubstitution = Maps.newHashMap(); + @NotNull List result + ) { + final Map mutableSubstitution = new HashMap(); TypeSubstitutor substitutor = TypeSubstitutor.create(new TypeSubstitution() { - @Override public TypeProjection get(TypeConstructor key) { if (originalSubstitutor.inRange(key)) { @@ -66,7 +56,9 @@ public class DescriptorSubstitutor { return "DescriptorSubstitutor.substituteTypeParameters(" + mutableSubstitution + " / " + originalSubstitutor.getSubstitution() + ")"; } }); - Map substitutedMap = Maps.newHashMap(); + + Map substitutedMap = + new HashMap(); for (TypeParameterDescriptor descriptor : typeParameters) { TypeParameterDescriptorImpl substituted = TypeParameterDescriptorImpl.createForFurtherModification( newContainingDeclaration, @@ -74,7 +66,8 @@ public class DescriptorSubstitutor { descriptor.isReified(), descriptor.getVariance(), descriptor.getName(), - descriptor.getIndex()); + descriptor.getIndex() + ); substituted.setInitialized(); mutableSubstitution.put(descriptor.getTypeConstructor(), new TypeProjectionImpl(substituted.getDefaultType())); @@ -92,72 +85,4 @@ public class DescriptorSubstitutor { return substitutor; } - - - - @NotNull - public static TypeSubstitutor createUpperBoundsSubstitutor( - @NotNull List typeParameters - ) { - Map mutableSubstitution = Maps.newHashMap(); - TypeSubstitutor substitutor = TypeSubstitutor.create(mutableSubstitution); - - // todo assert: no loops - for (TypeParameterDescriptor descriptor : topologicallySortTypeParameters(typeParameters)) { - JetType upperBoundsAsType = descriptor.getUpperBoundsAsType(); - JetType substitutedUpperBoundsAsType = substitutor.substitute(upperBoundsAsType, Variance.INVARIANT); - mutableSubstitution.put(descriptor.getTypeConstructor(), new TypeProjectionImpl(substitutedUpperBoundsAsType)); - } - - return substitutor; - } - - private static List topologicallySortTypeParameters(final List typeParameters) { - // In the end, we want every parameter to have no references to those after it in the list - // This gives us the reversed order: the one that refers to everybody else comes first - List topOrder = DFS.topologicalOrder( - typeParameters, - new DFS.Neighbors() { - @NotNull - @Override - public Iterable getNeighbors(TypeParameterDescriptor current) { - return getTypeParametersFromUpperBounds(current, typeParameters); - } - }); - - assert topOrder.size() == typeParameters.size() : "All type parameters must be visited, but only " + topOrder + " were"; - - // Now, the one that refers to everybody else stands in the last position - Collections.reverse(topOrder); - return topOrder; - } - - private static List getTypeParametersFromUpperBounds( - TypeParameterDescriptor current, - final List typeParameters - ) { - return DFS.dfs( - current.getUpperBounds(), - new DFS.Neighbors() { - @NotNull - @Override - public Iterable getNeighbors(JetType current) { - return Collections2.transform(current.getArguments(), PROJECTIONS_TO_TYPES); - } - }, - new DFS.NodeHandlerWithListResult() { - @Override - public boolean beforeChildren(JetType current) { - ClassifierDescriptor declarationDescriptor = current.getConstructor().getDeclarationDescriptor(); - // typeParameters in a list, but it contains very few elements, so it's fine to call contains() on it - //noinspection SuspiciousMethodCalls - if (typeParameters.contains(declarationDescriptor)) { - result.add((TypeParameterDescriptor) declarationDescriptor); - } - - return true; - } - } - ); - } } diff --git a/idea/src/org/jetbrains/jet/plugin/libraries/DecompiledNavigationUtils.java b/idea/src/org/jetbrains/jet/plugin/libraries/DecompiledNavigationUtils.java index 1d5023991d5..e5a8a3ffd9d 100644 --- a/idea/src/org/jetbrains/jet/plugin/libraries/DecompiledNavigationUtils.java +++ b/idea/src/org/jetbrains/jet/plugin/libraries/DecompiledNavigationUtils.java @@ -29,6 +29,7 @@ import org.jetbrains.jet.lang.resolve.DescriptorUtils; import org.jetbrains.jet.lang.resolve.java.PackageClassUtils; import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder; import org.jetbrains.jet.lang.resolve.name.FqName; +import org.jetbrains.jet.lang.types.expressions.ExpressionTypingUtils; import static org.jetbrains.jet.lang.resolve.DescriptorUtils.getFqName; import static org.jetbrains.jet.lang.resolve.DescriptorUtils.getFqNameSafe; @@ -113,7 +114,7 @@ public final class DecompiledNavigationUtils { } if (containerDescriptor instanceof ClassDescriptor) { if (containerDescriptor.getContainingDeclaration() instanceof ClassDescriptor - || DescriptorUtils.isLocal(containerDescriptor.getContainingDeclaration(), containerDescriptor)) { + || ExpressionTypingUtils.isLocal(containerDescriptor.getContainingDeclaration(), containerDescriptor)) { return getContainerFqName(containerDescriptor.getContainingDeclaration()); } return getFqNameSafe(containerDescriptor); From beb66e2247066d620b3c3133c35bee9338504cf7 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 5 May 2014 18:58:32 +0400 Subject: [PATCH 19/23] Minor, don't intersect sets, use retainAll instead --- .../src/org/jetbrains/jet/lang/types/TypeUtils.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/descriptors/src/org/jetbrains/jet/lang/types/TypeUtils.java b/core/descriptors/src/org/jetbrains/jet/lang/types/TypeUtils.java index ee8d1386ed6..f38ab1fb793 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/types/TypeUtils.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/types/TypeUtils.java @@ -555,12 +555,12 @@ public class TypeUtils { private static Set getIntersectionOfSupertypes(@NotNull Collection types) { Set upperBounds = Sets.newHashSet(); for (JetType type : types) { - Set supertypes = Sets.newHashSet(type.getConstructor().getSupertypes()); + Collection supertypes = type.getConstructor().getSupertypes(); if (upperBounds.isEmpty()) { upperBounds.addAll(supertypes); } else { - upperBounds = Sets.intersection(upperBounds, supertypes); + upperBounds.retainAll(supertypes); } } return upperBounds; From c18fd179a9e46d3336d3e2df0b3ce71130c2a8bc Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Tue, 8 Oct 2013 18:28:45 +0400 Subject: [PATCH 20/23] Get rid of intellij Pair in TypeUtils --- .../calls/inference/TypeBoundsImpl.java | 25 +++++++++++++++---- .../jetbrains/jet/lang/types/TypeUtils.java | 16 ------------ 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/calls/inference/TypeBoundsImpl.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/calls/inference/TypeBoundsImpl.java index cb08c23f4b7..edc9d573c28 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/calls/inference/TypeBoundsImpl.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/calls/inference/TypeBoundsImpl.java @@ -19,16 +19,17 @@ package org.jetbrains.jet.lang.resolve.calls.inference; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import com.intellij.openapi.util.Condition; -import com.intellij.openapi.util.Pair; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor; +import org.jetbrains.jet.lang.resolve.constants.IntegerValueTypeConstructor; import org.jetbrains.jet.lang.types.*; import org.jetbrains.jet.lang.types.checker.JetTypeChecker; import java.util.Collection; import java.util.Collections; +import java.util.LinkedHashSet; import java.util.Set; import static org.jetbrains.jet.lang.resolve.calls.inference.TypeBounds.BoundKind.LOWER_BOUND; @@ -167,10 +168,9 @@ public class TypeBoundsImpl implements TypeBounds { } values.addAll(exactBounds); - Pair, Collection> pair = - TypeUtils.filterNumberTypes(filterBounds(bounds, LOWER_BOUND, values)); - Collection generalLowerBounds = pair.getFirst(); - Collection numberLowerBounds = pair.getSecond(); + Collection numberLowerBounds = new LinkedHashSet(); + Collection generalLowerBounds = new LinkedHashSet(); + filterNumberTypes(filterBounds(bounds, LOWER_BOUND, values), numberLowerBounds, generalLowerBounds); JetType superTypeOfLowerBounds = CommonSupertypes.commonSupertypeForNonDenotableTypes(generalLowerBounds); if (tryPossibleAnswer(superTypeOfLowerBounds)) { @@ -209,6 +209,21 @@ public class TypeBoundsImpl implements TypeBounds { return values; } + private static void filterNumberTypes( + @NotNull Collection types, + @NotNull Collection numberTypes, + @NotNull Collection otherTypes + ) { + for (JetType type : types) { + if (type.getConstructor() instanceof IntegerValueTypeConstructor) { + numberTypes.add(type); + } + else { + otherTypes.add(type); + } + } + } + private boolean tryPossibleAnswer(@Nullable JetType possibleAnswer) { if (possibleAnswer == null) return false; if (!possibleAnswer.getConstructor().isDenotable()) return false; diff --git a/core/descriptors/src/org/jetbrains/jet/lang/types/TypeUtils.java b/core/descriptors/src/org/jetbrains/jet/lang/types/TypeUtils.java index f38ab1fb793..ea62956e631 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/types/TypeUtils.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/types/TypeUtils.java @@ -21,7 +21,6 @@ import com.google.common.collect.Collections2; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; -import com.intellij.openapi.util.Pair; import com.intellij.util.Processor; import kotlin.Function1; import kotlin.KotlinPackage; @@ -607,21 +606,6 @@ public class TypeUtils { return getDefaultPrimitiveNumberType(numberValueTypeConstructor); } - @NotNull - public static Pair, Collection> filterNumberTypes(@NotNull Collection types) { - Collection numberTypes = Sets.newLinkedHashSet(); - Collection otherTypes = Sets.newLinkedHashSet(); - for (JetType type : types) { - if (type.getConstructor() instanceof IntegerValueTypeConstructor) { - numberTypes.add(type); - } - else { - otherTypes.add(type); - } - } - return Pair.create(otherTypes, numberTypes); - } - public static List topologicallySortSuperclassesAndRecordAllInstances( @NotNull JetType type, @NotNull final Map> constructorToAllInstances, From c56f397f71e369bbbec13bced6fa10967f3d6af4 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 26 Jun 2014 18:40:40 +0400 Subject: [PATCH 21/23] Don't fail when "deprecated" doesn't have a message EA-57345 --- .../DeprecatedAnnotationVisitor.java | 26 +++++++++++++------ .../highlighter/deprecated/Invalid.kt | 11 ++++++++ .../HighlightingTestGenerated.java | 5 ++++ 3 files changed, 34 insertions(+), 8 deletions(-) create mode 100644 idea/testData/highlighter/deprecated/Invalid.kt diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/DeprecatedAnnotationVisitor.java b/idea/src/org/jetbrains/jet/plugin/highlighter/DeprecatedAnnotationVisitor.java index 7fceaa5ab24..3924ddde1d0 100644 --- a/idea/src/org/jetbrains/jet/plugin/highlighter/DeprecatedAnnotationVisitor.java +++ b/idea/src/org/jetbrains/jet/plugin/highlighter/DeprecatedAnnotationVisitor.java @@ -229,18 +229,28 @@ public class DeprecatedAnnotationVisitor extends AfterAnalysisHighlightingVisito } private static String composeTooltipString(@NotNull DeclarationDescriptor declarationDescriptor, @NotNull AnnotationDescriptor descriptor) { - return "'" + getDescriptorString(declarationDescriptor) + "' is deprecated. " + getMessageFromAnnotationDescriptor(descriptor); + String fact = "'" + getDescriptorString(declarationDescriptor) + "' is deprecated."; + String message = getMessageFromAnnotationDescriptor(descriptor); + return message == null ? fact : fact + " " + message; } + @Nullable private static String getMessageFromAnnotationDescriptor(@NotNull AnnotationDescriptor descriptor) { ClassDescriptor classDescriptor = TypeUtils.getClassDescriptor(descriptor.getType()); - assert classDescriptor != null : "ClassDescriptor for kotlin.deprecated mustn't be null"; - ValueParameterDescriptor parameter = - DescriptorResolverUtils.getAnnotationParameterByName(DEFAULT_ANNOTATION_MEMBER_NAME, classDescriptor); - assert parameter != null : "kotlin.deprecated must have one parameter called value"; - CompileTimeConstant valueArgument = descriptor.getValueArgument(parameter); - assert valueArgument != null : "kotlin.deprecated must have value argument"; - return (String) valueArgument.getValue(); + if (classDescriptor != null) { + ValueParameterDescriptor parameter = + DescriptorResolverUtils.getAnnotationParameterByName(DEFAULT_ANNOTATION_MEMBER_NAME, classDescriptor); + if (parameter != null) { + CompileTimeConstant valueArgument = descriptor.getValueArgument(parameter); + if (valueArgument != null) { + Object value = valueArgument.getValue(); + if (value instanceof String) { + return String.valueOf(value); + } + } + } + } + return null; } private static String getDescriptorString(@NotNull DeclarationDescriptor descriptor) { diff --git a/idea/testData/highlighter/deprecated/Invalid.kt b/idea/testData/highlighter/deprecated/Invalid.kt new file mode 100644 index 00000000000..a8c2ed95adc --- /dev/null +++ b/idea/testData/highlighter/deprecated/Invalid.kt @@ -0,0 +1,11 @@ +deprecated() +fun foo() {} +deprecated(false) +fun boo() {} + +fun far() = foo() + +fun bar() = boo() + +// NO_CHECK_INFOS +// NO_CHECK_WEAK_WARNINGS diff --git a/idea/tests/org/jetbrains/jet/plugin/highlighter/HighlightingTestGenerated.java b/idea/tests/org/jetbrains/jet/plugin/highlighter/HighlightingTestGenerated.java index 4341b8c45ad..0ef47a5fff0 100644 --- a/idea/tests/org/jetbrains/jet/plugin/highlighter/HighlightingTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/plugin/highlighter/HighlightingTestGenerated.java @@ -108,6 +108,11 @@ public class HighlightingTestGenerated extends AbstractHighlightingTest { doTest("idea/testData/highlighter/deprecated/Inc.kt"); } + @TestMetadata("Invalid.kt") + public void testInvalid() throws Exception { + doTest("idea/testData/highlighter/deprecated/Invalid.kt"); + } + @TestMetadata("Invoke.kt") public void testInvoke() throws Exception { doTest("idea/testData/highlighter/deprecated/Invoke.kt"); From 2ce4219b43f6c7869aa26cb915a2d732825d0ff0 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 26 Jun 2014 18:53:18 +0400 Subject: [PATCH 22/23] Add sensible "toString()" to kotlin.jvm.internal.Ref No tests added because it's difficult to test: codegen always unwraps refs to the objects they are referencing #KT-5205 Fixed --- .../src/kotlin/jvm/internal/Ref.java | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/core/runtime.jvm/src/kotlin/jvm/internal/Ref.java b/core/runtime.jvm/src/kotlin/jvm/internal/Ref.java index 7e46c5a4cec..962ea0ccad0 100644 --- a/core/runtime.jvm/src/kotlin/jvm/internal/Ref.java +++ b/core/runtime.jvm/src/kotlin/jvm/internal/Ref.java @@ -16,42 +16,89 @@ package kotlin.jvm.internal; +import java.lang.Override; + public class Ref { private Ref() {} public static final class ObjectRef { public volatile T element; + + @Override + public String toString() { + return String.valueOf(element); + } } public static final class ByteRef { public volatile byte element; + + @Override + public String toString() { + return String.valueOf(element); + } } public static final class ShortRef { public volatile short element; + + @Override + public String toString() { + return String.valueOf(element); + } } public static final class IntRef { public volatile int element; + + @Override + public String toString() { + return String.valueOf(element); + } } public static final class LongRef { public volatile long element; + + @Override + public String toString() { + return String.valueOf(element); + } } public static final class FloatRef { public volatile float element; + + @Override + public String toString() { + return String.valueOf(element); + } } public static final class DoubleRef { public volatile double element; + + @Override + public String toString() { + return String.valueOf(element); + } } public static final class CharRef { public volatile char element; + + @Override + public String toString() { + return String.valueOf(element); + } } public static final class BooleanRef { public volatile boolean element; + + @Override + public String toString() { + return String.valueOf(element); + } } } From 46da00a9a7e4ae2d2dfb6d41cdaf761973f152ae Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 26 Jun 2014 19:52:31 +0400 Subject: [PATCH 23/23] Minor, fix typo --- libraries/stdlib/src/kotlin/test/Test.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/stdlib/src/kotlin/test/Test.kt b/libraries/stdlib/src/kotlin/test/Test.kt index d35700281d8..e76a0710c9a 100644 --- a/libraries/stdlib/src/kotlin/test/Test.kt +++ b/libraries/stdlib/src/kotlin/test/Test.kt @@ -13,7 +13,7 @@ public inline fun assertTrue(message: String, block: ()-> Boolean) { } /** Asserts that the given block returns true */ -public inline fun assertTrue(block: ()-> Boolean) : Unit = assertTrue("exprected true", block) +public inline fun assertTrue(block: ()-> Boolean) : Unit = assertTrue("expected true", block) /** Asserts that the given block returns false */ public inline fun assertNot(message: String, block: ()-> Boolean) {