KT-12877: add JsNonModule with support on front-end

This commit is contained in:
Alexey Andreev
2016-07-01 16:47:40 +03:00
committed by Alexey Andreev
parent 3f2ec6871d
commit 0238b182cc
20 changed files with 1581 additions and 57 deletions
+4
View File
@@ -26,6 +26,10 @@ message File {
repeated Annotation annotation = 2;
}
message Files {
repeated File file = 1;
}
extend Class {
repeated Annotation class_annotation = 130;
optional int32 class_containing_file_id = 135;
@@ -602,6 +602,499 @@ public final class JsProtoBuf {
// @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.File)
}
public interface FilesOrBuilder extends
// @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.Files)
org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
java.util.List<org.jetbrains.kotlin.serialization.js.JsProtoBuf.File>
getFileList();
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
org.jetbrains.kotlin.serialization.js.JsProtoBuf.File getFile(int index);
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
int getFileCount();
}
/**
* Protobuf type {@code org.jetbrains.kotlin.serialization.js.Files}
*/
public static final class Files extends
org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements
// @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.Files)
FilesOrBuilder {
// Use Files.newBuilder() to construct.
private Files(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) {
super(builder);
this.unknownFields = builder.getUnknownFields();
}
private Files(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;}
private static final Files defaultInstance;
public static Files getDefaultInstance() {
return defaultInstance;
}
public Files getDefaultInstanceForType() {
return defaultInstance;
}
private final org.jetbrains.kotlin.protobuf.ByteString unknownFields;
private Files(
org.jetbrains.kotlin.protobuf.CodedInputStream input,
org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
initFields();
int mutable_bitField0_ = 0;
org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput =
org.jetbrains.kotlin.protobuf.ByteString.newOutput();
org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput =
org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance(
unknownFieldsOutput);
try {
boolean done = false;
while (!done) {
int tag = input.readTag();
switch (tag) {
case 0:
done = true;
break;
default: {
if (!parseUnknownField(input, unknownFieldsCodedOutput,
extensionRegistry, tag)) {
done = true;
}
break;
}
case 10: {
if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
file_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.JsProtoBuf.File>();
mutable_bitField0_ |= 0x00000001;
}
file_.add(input.readMessage(org.jetbrains.kotlin.serialization.js.JsProtoBuf.File.PARSER, extensionRegistry));
break;
}
}
}
} catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
throw e.setUnfinishedMessage(this);
} catch (java.io.IOException e) {
throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
e.getMessage()).setUnfinishedMessage(this);
} finally {
if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
file_ = java.util.Collections.unmodifiableList(file_);
}
try {
unknownFieldsCodedOutput.flush();
} catch (java.io.IOException e) {
// Should not happen
} finally {
unknownFields = unknownFieldsOutput.toByteString();
}
makeExtensionsImmutable();
}
}
public static org.jetbrains.kotlin.protobuf.Parser<Files> PARSER =
new org.jetbrains.kotlin.protobuf.AbstractParser<Files>() {
public Files parsePartialFrom(
org.jetbrains.kotlin.protobuf.CodedInputStream input,
org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
return new Files(input, extensionRegistry);
}
};
@java.lang.Override
public org.jetbrains.kotlin.protobuf.Parser<Files> getParserForType() {
return PARSER;
}
public static final int FILE_FIELD_NUMBER = 1;
private java.util.List<org.jetbrains.kotlin.serialization.js.JsProtoBuf.File> file_;
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public java.util.List<org.jetbrains.kotlin.serialization.js.JsProtoBuf.File> getFileList() {
return file_;
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public java.util.List<? extends org.jetbrains.kotlin.serialization.js.JsProtoBuf.FileOrBuilder>
getFileOrBuilderList() {
return file_;
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public int getFileCount() {
return file_.size();
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public org.jetbrains.kotlin.serialization.js.JsProtoBuf.File getFile(int index) {
return file_.get(index);
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public org.jetbrains.kotlin.serialization.js.JsProtoBuf.FileOrBuilder getFileOrBuilder(
int index) {
return file_.get(index);
}
private void initFields() {
file_ = java.util.Collections.emptyList();
}
private byte memoizedIsInitialized = -1;
public final boolean isInitialized() {
byte isInitialized = memoizedIsInitialized;
if (isInitialized == 1) return true;
if (isInitialized == 0) return false;
for (int i = 0; i < getFileCount(); i++) {
if (!getFile(i).isInitialized()) {
memoizedIsInitialized = 0;
return false;
}
}
memoizedIsInitialized = 1;
return true;
}
public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
throws java.io.IOException {
getSerializedSize();
for (int i = 0; i < file_.size(); i++) {
output.writeMessage(1, file_.get(i));
}
output.writeRawBytes(unknownFields);
}
private int memoizedSerializedSize = -1;
public int getSerializedSize() {
int size = memoizedSerializedSize;
if (size != -1) return size;
size = 0;
for (int i = 0; i < file_.size(); i++) {
size += org.jetbrains.kotlin.protobuf.CodedOutputStream
.computeMessageSize(1, file_.get(i));
}
size += unknownFields.size();
memoizedSerializedSize = size;
return size;
}
private static final long serialVersionUID = 0L;
@java.lang.Override
protected java.lang.Object writeReplace()
throws java.io.ObjectStreamException {
return super.writeReplace();
}
public static org.jetbrains.kotlin.serialization.js.JsProtoBuf.Files parseFrom(
org.jetbrains.kotlin.protobuf.ByteString data)
throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static org.jetbrains.kotlin.serialization.js.JsProtoBuf.Files parseFrom(
org.jetbrains.kotlin.protobuf.ByteString data,
org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static org.jetbrains.kotlin.serialization.js.JsProtoBuf.Files parseFrom(byte[] data)
throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static org.jetbrains.kotlin.serialization.js.JsProtoBuf.Files parseFrom(
byte[] data,
org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static org.jetbrains.kotlin.serialization.js.JsProtoBuf.Files parseFrom(java.io.InputStream input)
throws java.io.IOException {
return PARSER.parseFrom(input);
}
public static org.jetbrains.kotlin.serialization.js.JsProtoBuf.Files parseFrom(
java.io.InputStream input,
org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return PARSER.parseFrom(input, extensionRegistry);
}
public static org.jetbrains.kotlin.serialization.js.JsProtoBuf.Files parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
return PARSER.parseDelimitedFrom(input);
}
public static org.jetbrains.kotlin.serialization.js.JsProtoBuf.Files parseDelimitedFrom(
java.io.InputStream input,
org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return PARSER.parseDelimitedFrom(input, extensionRegistry);
}
public static org.jetbrains.kotlin.serialization.js.JsProtoBuf.Files parseFrom(
org.jetbrains.kotlin.protobuf.CodedInputStream input)
throws java.io.IOException {
return PARSER.parseFrom(input);
}
public static org.jetbrains.kotlin.serialization.js.JsProtoBuf.Files parseFrom(
org.jetbrains.kotlin.protobuf.CodedInputStream input,
org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return PARSER.parseFrom(input, extensionRegistry);
}
public static Builder newBuilder() { return Builder.create(); }
public Builder newBuilderForType() { return newBuilder(); }
public static Builder newBuilder(org.jetbrains.kotlin.serialization.js.JsProtoBuf.Files prototype) {
return newBuilder().mergeFrom(prototype);
}
public Builder toBuilder() { return newBuilder(this); }
/**
* Protobuf type {@code org.jetbrains.kotlin.serialization.js.Files}
*/
public static final class Builder extends
org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder<
org.jetbrains.kotlin.serialization.js.JsProtoBuf.Files, Builder>
implements
// @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.Files)
org.jetbrains.kotlin.serialization.js.JsProtoBuf.FilesOrBuilder {
// Construct using org.jetbrains.kotlin.serialization.js.JsProtoBuf.Files.newBuilder()
private Builder() {
maybeForceBuilderInitialization();
}
private void maybeForceBuilderInitialization() {
}
private static Builder create() {
return new Builder();
}
public Builder clear() {
super.clear();
file_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000001);
return this;
}
public Builder clone() {
return create().mergeFrom(buildPartial());
}
public org.jetbrains.kotlin.serialization.js.JsProtoBuf.Files getDefaultInstanceForType() {
return org.jetbrains.kotlin.serialization.js.JsProtoBuf.Files.getDefaultInstance();
}
public org.jetbrains.kotlin.serialization.js.JsProtoBuf.Files build() {
org.jetbrains.kotlin.serialization.js.JsProtoBuf.Files result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
public org.jetbrains.kotlin.serialization.js.JsProtoBuf.Files buildPartial() {
org.jetbrains.kotlin.serialization.js.JsProtoBuf.Files result = new org.jetbrains.kotlin.serialization.js.JsProtoBuf.Files(this);
int from_bitField0_ = bitField0_;
if (((bitField0_ & 0x00000001) == 0x00000001)) {
file_ = java.util.Collections.unmodifiableList(file_);
bitField0_ = (bitField0_ & ~0x00000001);
}
result.file_ = file_;
return result;
}
public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.JsProtoBuf.Files other) {
if (other == org.jetbrains.kotlin.serialization.js.JsProtoBuf.Files.getDefaultInstance()) return this;
if (!other.file_.isEmpty()) {
if (file_.isEmpty()) {
file_ = other.file_;
bitField0_ = (bitField0_ & ~0x00000001);
} else {
ensureFileIsMutable();
file_.addAll(other.file_);
}
}
setUnknownFields(
getUnknownFields().concat(other.unknownFields));
return this;
}
public final boolean isInitialized() {
for (int i = 0; i < getFileCount(); i++) {
if (!getFile(i).isInitialized()) {
return false;
}
}
return true;
}
public Builder mergeFrom(
org.jetbrains.kotlin.protobuf.CodedInputStream input,
org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
org.jetbrains.kotlin.serialization.js.JsProtoBuf.Files parsedMessage = null;
try {
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
} catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
parsedMessage = (org.jetbrains.kotlin.serialization.js.JsProtoBuf.Files) e.getUnfinishedMessage();
throw e;
} finally {
if (parsedMessage != null) {
mergeFrom(parsedMessage);
}
}
return this;
}
private int bitField0_;
private java.util.List<org.jetbrains.kotlin.serialization.js.JsProtoBuf.File> file_ =
java.util.Collections.emptyList();
private void ensureFileIsMutable() {
if (!((bitField0_ & 0x00000001) == 0x00000001)) {
file_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.JsProtoBuf.File>(file_);
bitField0_ |= 0x00000001;
}
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public java.util.List<org.jetbrains.kotlin.serialization.js.JsProtoBuf.File> getFileList() {
return java.util.Collections.unmodifiableList(file_);
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public int getFileCount() {
return file_.size();
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public org.jetbrains.kotlin.serialization.js.JsProtoBuf.File getFile(int index) {
return file_.get(index);
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public Builder setFile(
int index, org.jetbrains.kotlin.serialization.js.JsProtoBuf.File value) {
if (value == null) {
throw new NullPointerException();
}
ensureFileIsMutable();
file_.set(index, value);
return this;
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public Builder setFile(
int index, org.jetbrains.kotlin.serialization.js.JsProtoBuf.File.Builder builderForValue) {
ensureFileIsMutable();
file_.set(index, builderForValue.build());
return this;
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public Builder addFile(org.jetbrains.kotlin.serialization.js.JsProtoBuf.File value) {
if (value == null) {
throw new NullPointerException();
}
ensureFileIsMutable();
file_.add(value);
return this;
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public Builder addFile(
int index, org.jetbrains.kotlin.serialization.js.JsProtoBuf.File value) {
if (value == null) {
throw new NullPointerException();
}
ensureFileIsMutable();
file_.add(index, value);
return this;
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public Builder addFile(
org.jetbrains.kotlin.serialization.js.JsProtoBuf.File.Builder builderForValue) {
ensureFileIsMutable();
file_.add(builderForValue.build());
return this;
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public Builder addFile(
int index, org.jetbrains.kotlin.serialization.js.JsProtoBuf.File.Builder builderForValue) {
ensureFileIsMutable();
file_.add(index, builderForValue.build());
return this;
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public Builder addAllFile(
java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.js.JsProtoBuf.File> values) {
ensureFileIsMutable();
org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
values, file_);
return this;
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public Builder clearFile() {
file_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000001);
return this;
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public Builder removeFile(int index) {
ensureFileIsMutable();
file_.remove(index);
return this;
}
// @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.js.Files)
}
static {
defaultInstance = new Files(true);
defaultInstance.initFields();
}
// @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.js.Files)
}
public interface ClassesOrBuilder extends
// @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.js.Classes)
org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {
@@ -49,10 +49,8 @@ class KotlinJavascriptPackageFragment(
private val fileMap: Map<Int, FileHolder> by lazy {
loadResource(KotlinJavascriptSerializedResourcePaths.getFileListFilePath(fqName))?.use { rawInput ->
val input = CodedInputStream.newInstance(rawInput)
val count = input.readInt32()
val result = mutableListOf<JsProtoBuf.File>()
(1..count).forEach { result += JsProtoBuf.File.parseFrom(input) }
result.map { it.id to FileHolder(it.annotationList) }.toMap()
val filesProto = JsProtoBuf.Files.parseFrom(input).fileOrBuilderList
filesProto.map { it.id to FileHolder(it.annotationList) }.toMap()
}.orEmpty()
}
@@ -19,7 +19,6 @@ package org.jetbrains.kotlin.serialization.js
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.protobuf.ByteString
import org.jetbrains.kotlin.protobuf.CodedOutputStream
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.resolve.descriptorUtil.classId