From f640f82ed0fedb6207571bb31ad98656359b8b76 Mon Sep 17 00:00:00 2001 From: Stanislav Erokhin Date: Thu, 20 Nov 2014 17:06:16 +0300 Subject: [PATCH] Add serialization for PRIVATE_TO_THIS --- .../visibility/PrivateToThis.kt | 15 +++++++++++ .../visibility/PrivateToThis.txt | 16 ++++++++++++ .../serialization/DebugProtoBuf.java | 25 +++++++++++++------ .../jvm/compiler/LoadJavaTestGenerated.java | 6 +++++ core/serialization/src/descriptors.proto | 3 ++- .../jet/descriptors/serialization/Flags.java | 3 +++ .../descriptors/serialization/ProtoBuf.java | 19 ++++++++++---- .../serialization/protoEnumMapping.kt | 1 + .../stubs/ResolveByStubTestGenerated.java | 6 +++++ 9 files changed, 80 insertions(+), 14 deletions(-) create mode 100644 compiler/testData/loadJava/compiledKotlin/visibility/PrivateToThis.kt create mode 100644 compiler/testData/loadJava/compiledKotlin/visibility/PrivateToThis.txt diff --git a/compiler/testData/loadJava/compiledKotlin/visibility/PrivateToThis.kt b/compiler/testData/loadJava/compiledKotlin/visibility/PrivateToThis.kt new file mode 100644 index 00000000000..fd51fb9f21c --- /dev/null +++ b/compiler/testData/loadJava/compiledKotlin/visibility/PrivateToThis.kt @@ -0,0 +1,15 @@ +package test + +class A { + private val foo: I = null!! + private var bar: I = null!! + + private val val_with_accessors: I + get() = null!! + + private var var_with_accessors: I + get() = null!! + set(value: I) {} + + private fun bas(): I = null!! +} \ No newline at end of file diff --git a/compiler/testData/loadJava/compiledKotlin/visibility/PrivateToThis.txt b/compiler/testData/loadJava/compiledKotlin/visibility/PrivateToThis.txt new file mode 100644 index 00000000000..af6c38ee09d --- /dev/null +++ b/compiler/testData/loadJava/compiledKotlin/visibility/PrivateToThis.txt @@ -0,0 +1,16 @@ +package test + +internal final class A { + /*primary*/ public constructor A() + private/*private to this*/ final var bar: I + private/*private to this*/ final fun (): I + private/*private to this*/ final fun (/*0*/ : I): kotlin.Unit + private/*private to this*/ final val foo: I + private/*private to this*/ final fun (): I + private/*private to this*/ final val val_with_accessors: I + private/*private to this*/ final fun (): I + private/*private to this*/ final var var_with_accessors: I + private/*private to this*/ final fun (): I + private/*private to this*/ final fun (/*0*/ value: I): kotlin.Unit + private/*private to this*/ final fun bas(): I +} diff --git a/compiler/tests/org/jetbrains/jet/descriptors/serialization/DebugProtoBuf.java b/compiler/tests/org/jetbrains/jet/descriptors/serialization/DebugProtoBuf.java index 7e99d8958d8..d82bee83fb2 100644 --- a/compiler/tests/org/jetbrains/jet/descriptors/serialization/DebugProtoBuf.java +++ b/compiler/tests/org/jetbrains/jet/descriptors/serialization/DebugProtoBuf.java @@ -133,13 +133,17 @@ public final class DebugProtoBuf { */ PUBLIC(3, 3), /** - * EXTRA = 4; + * PRIVATE_TO_THIS = 4; + */ + PRIVATE_TO_THIS(4, 4), + /** + * EXTRA = 5; * *
      * there's an extra field for the actual visibility
      * 
*/ - EXTRA(4, 4), + EXTRA(5, 5), ; /** @@ -163,13 +167,17 @@ public final class DebugProtoBuf { */ public static final int PUBLIC_VALUE = 3; /** - * EXTRA = 4; + * PRIVATE_TO_THIS = 4; + */ + public static final int PRIVATE_TO_THIS_VALUE = 4; + /** + * EXTRA = 5; * *
      * there's an extra field for the actual visibility
      * 
*/ - public static final int EXTRA_VALUE = 4; + public static final int EXTRA_VALUE = 5; public final int getNumber() { return value; } @@ -180,7 +188,8 @@ public final class DebugProtoBuf { case 1: return PRIVATE; case 2: return PROTECTED; case 3: return PUBLIC; - case 4: return EXTRA; + case 4: return PRIVATE_TO_THIS; + case 5: return EXTRA; default: return null; } } @@ -17780,10 +17789,10 @@ public final class DebugProtoBuf { "\nDELEGATION\020\002\022\017\n\013SYNTHESIZED\020\003\":\n\014Callab" + "leKind\022\007\n\003FUN\020\000\022\007\n\003VAL\020\001\022\007\n\003VAR\020\002\022\017\n\013CON" + "STRUCTOR\020\003*\005\010d\020\310\001*-\n\010Modality\022\t\n\005FINAL\020\000" + - "\022\010\n\004OPEN\020\001\022\014\n\010ABSTRACT\020\002*M\n\nVisibility\022\014" + + "\022\010\n\004OPEN\020\001\022\014\n\010ABSTRACT\020\002*b\n\nVisibility\022\014" + "\n\010INTERNAL\020\000\022\013\n\007PRIVATE\020\001\022\r\n\tPROTECTED\020\002", - "\022\n\n\006PUBLIC\020\003\022\t\n\005EXTRA\020\004B\022B\rDebugProtoBuf" + - "\210\001\000" + "\022\n\n\006PUBLIC\020\003\022\023\n\017PRIVATE_TO_THIS\020\004\022\t\n\005EXT" + + "RA\020\005B\022B\rDebugProtoBuf\210\001\000" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { diff --git a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java index f6c8ee545cc..7a5a1a01d9e 100644 --- a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java @@ -4740,6 +4740,12 @@ public class LoadJavaTestGenerated extends AbstractLoadJavaTest { doTestCompiledKotlin(fileName); } + @TestMetadata("PrivateToThis.kt") + public void testPrivateToThis() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/loadJava/compiledKotlin/visibility/PrivateToThis.kt"); + doTestCompiledKotlin(fileName); + } + @TestMetadata("PrivateTopLevelFun.kt") public void testPrivateTopLevelFun() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/loadJava/compiledKotlin/visibility/PrivateTopLevelFun.kt"); diff --git a/core/serialization/src/descriptors.proto b/core/serialization/src/descriptors.proto index 81d35edf72e..810c59caa94 100644 --- a/core/serialization/src/descriptors.proto +++ b/core/serialization/src/descriptors.proto @@ -299,5 +299,6 @@ enum Visibility { PRIVATE = 0x01; PROTECTED = 0x02; PUBLIC = 0x03; - EXTRA = 0x04; // there's an extra field for the actual visibility + PRIVATE_TO_THIS = 0x04; + EXTRA = 0x05; // there's an extra field for the actual visibility } diff --git a/core/serialization/src/org/jetbrains/jet/descriptors/serialization/Flags.java b/core/serialization/src/org/jetbrains/jet/descriptors/serialization/Flags.java index ed327935804..76a40c0c329 100644 --- a/core/serialization/src/org/jetbrains/jet/descriptors/serialization/Flags.java +++ b/core/serialization/src/org/jetbrains/jet/descriptors/serialization/Flags.java @@ -148,6 +148,9 @@ public class Flags { else if (visibility == Visibilities.PRIVATE) { return ProtoBuf.Visibility.PRIVATE; } + else if (visibility == Visibilities.PRIVATE_TO_THIS) { + return ProtoBuf.Visibility.PRIVATE_TO_THIS; + } else if (visibility == Visibilities.PROTECTED) { return ProtoBuf.Visibility.PROTECTED; } diff --git a/core/serialization/src/org/jetbrains/jet/descriptors/serialization/ProtoBuf.java b/core/serialization/src/org/jetbrains/jet/descriptors/serialization/ProtoBuf.java index 6016ae2d59d..af29c11b826 100644 --- a/core/serialization/src/org/jetbrains/jet/descriptors/serialization/ProtoBuf.java +++ b/core/serialization/src/org/jetbrains/jet/descriptors/serialization/ProtoBuf.java @@ -107,13 +107,17 @@ public final class ProtoBuf { */ PUBLIC(3, 3), /** - * EXTRA = 4; + * PRIVATE_TO_THIS = 4; + */ + PRIVATE_TO_THIS(4, 4), + /** + * EXTRA = 5; * *
      * there's an extra field for the actual visibility
      * 
*/ - EXTRA(4, 4), + EXTRA(5, 5), ; /** @@ -137,13 +141,17 @@ public final class ProtoBuf { */ public static final int PUBLIC_VALUE = 3; /** - * EXTRA = 4; + * PRIVATE_TO_THIS = 4; + */ + public static final int PRIVATE_TO_THIS_VALUE = 4; + /** + * EXTRA = 5; * *
      * there's an extra field for the actual visibility
      * 
*/ - public static final int EXTRA_VALUE = 4; + public static final int EXTRA_VALUE = 5; public final int getNumber() { return value; } @@ -154,7 +162,8 @@ public final class ProtoBuf { case 1: return PRIVATE; case 2: return PROTECTED; case 3: return PUBLIC; - case 4: return EXTRA; + case 4: return PRIVATE_TO_THIS; + case 5: return EXTRA; default: return null; } } diff --git a/core/serialization/src/org/jetbrains/jet/descriptors/serialization/protoEnumMapping.kt b/core/serialization/src/org/jetbrains/jet/descriptors/serialization/protoEnumMapping.kt index 513f9b73173..ed3b113bf8f 100644 --- a/core/serialization/src/org/jetbrains/jet/descriptors/serialization/protoEnumMapping.kt +++ b/core/serialization/src/org/jetbrains/jet/descriptors/serialization/protoEnumMapping.kt @@ -40,6 +40,7 @@ fun modality(modality: ProtoBuf.Modality) = when (modality) { fun visibility(visibility: ProtoBuf.Visibility) = when (visibility) { ProtoBuf.Visibility.INTERNAL -> Visibilities.INTERNAL ProtoBuf.Visibility.PRIVATE -> Visibilities.PRIVATE + ProtoBuf.Visibility.PRIVATE_TO_THIS -> Visibilities.PRIVATE_TO_THIS ProtoBuf.Visibility.PROTECTED -> Visibilities.PROTECTED ProtoBuf.Visibility.PUBLIC -> Visibilities.PUBLIC ProtoBuf.Visibility.EXTRA -> throw UnsupportedOperationException("Extra visibilities are not supported yet") diff --git a/idea/tests/org/jetbrains/jet/plugin/stubs/ResolveByStubTestGenerated.java b/idea/tests/org/jetbrains/jet/plugin/stubs/ResolveByStubTestGenerated.java index bcc723add22..208b2e4a25d 100644 --- a/idea/tests/org/jetbrains/jet/plugin/stubs/ResolveByStubTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/plugin/stubs/ResolveByStubTestGenerated.java @@ -2969,6 +2969,12 @@ public class ResolveByStubTestGenerated extends AbstractResolveByStubTest { doTest(fileName); } + @TestMetadata("PrivateToThis.kt") + public void testPrivateToThis() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/loadJava/compiledKotlin/visibility/PrivateToThis.kt"); + doTest(fileName); + } + @TestMetadata("PrivateTopLevelFun.kt") public void testPrivateTopLevelFun() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/loadJava/compiledKotlin/visibility/PrivateTopLevelFun.kt");