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
@@ -797,6 +797,694 @@ public final class DebugJsProtoBuf {
// @@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.MessageOrBuilder {
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
java.util.List<org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.File>
getFileList();
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.File getFile(int index);
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
int getFileCount();
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
java.util.List<? extends org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.FileOrBuilder>
getFileOrBuilderList();
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.FileOrBuilder getFileOrBuilder(
int index);
}
/**
* Protobuf type {@code org.jetbrains.kotlin.serialization.js.Files}
*/
public static final class Files extends
org.jetbrains.kotlin.protobuf.GeneratedMessage implements
// @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.js.Files)
FilesOrBuilder {
// Use Files.newBuilder() to construct.
private Files(org.jetbrains.kotlin.protobuf.GeneratedMessage.Builder<?> builder) {
super(builder);
this.unknownFields = builder.getUnknownFields();
}
private Files(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.UnknownFieldSet.getDefaultInstance(); }
private static final Files defaultInstance;
public static Files getDefaultInstance() {
return defaultInstance;
}
public Files getDefaultInstanceForType() {
return defaultInstance;
}
private final org.jetbrains.kotlin.protobuf.UnknownFieldSet unknownFields;
@java.lang.Override
public final org.jetbrains.kotlin.protobuf.UnknownFieldSet
getUnknownFields() {
return this.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.UnknownFieldSet.Builder unknownFields =
org.jetbrains.kotlin.protobuf.UnknownFieldSet.newBuilder();
try {
boolean done = false;
while (!done) {
int tag = input.readTag();
switch (tag) {
case 0:
done = true;
break;
default: {
if (!parseUnknownField(input, unknownFields,
extensionRegistry, tag)) {
done = true;
}
break;
}
case 10: {
if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
file_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.File>();
mutable_bitField0_ |= 0x00000001;
}
file_.add(input.readMessage(org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.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_);
}
this.unknownFields = unknownFields.build();
makeExtensionsImmutable();
}
}
public static final org.jetbrains.kotlin.protobuf.Descriptors.Descriptor
getDescriptor() {
return org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.internal_static_org_jetbrains_kotlin_serialization_js_Files_descriptor;
}
protected org.jetbrains.kotlin.protobuf.GeneratedMessage.FieldAccessorTable
internalGetFieldAccessorTable() {
return org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.internal_static_org_jetbrains_kotlin_serialization_js_Files_fieldAccessorTable
.ensureFieldAccessorsInitialized(
org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.Files.class, org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.Files.Builder.class);
}
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.DebugJsProtoBuf.File> file_;
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public java.util.List<org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.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.DebugJsProtoBuf.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.DebugJsProtoBuf.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.DebugJsProtoBuf.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));
}
getUnknownFields().writeTo(output);
}
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 += getUnknownFields().getSerializedSize();
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.DebugJsProtoBuf.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.DebugJsProtoBuf.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.DebugJsProtoBuf.Files parseFrom(byte[] data)
throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.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.DebugJsProtoBuf.Files parseFrom(java.io.InputStream input)
throws java.io.IOException {
return PARSER.parseFrom(input);
}
public static org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.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.DebugJsProtoBuf.Files parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
return PARSER.parseDelimitedFrom(input);
}
public static org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.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.DebugJsProtoBuf.Files parseFrom(
org.jetbrains.kotlin.protobuf.CodedInputStream input)
throws java.io.IOException {
return PARSER.parseFrom(input);
}
public static org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.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.DebugJsProtoBuf.Files prototype) {
return newBuilder().mergeFrom(prototype);
}
public Builder toBuilder() { return newBuilder(this); }
@java.lang.Override
protected Builder newBuilderForType(
org.jetbrains.kotlin.protobuf.GeneratedMessage.BuilderParent parent) {
Builder builder = new Builder(parent);
return builder;
}
/**
* Protobuf type {@code org.jetbrains.kotlin.serialization.js.Files}
*/
public static final class Builder extends
org.jetbrains.kotlin.protobuf.GeneratedMessage.Builder<Builder> implements
// @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.js.Files)
org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.FilesOrBuilder {
public static final org.jetbrains.kotlin.protobuf.Descriptors.Descriptor
getDescriptor() {
return org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.internal_static_org_jetbrains_kotlin_serialization_js_Files_descriptor;
}
protected org.jetbrains.kotlin.protobuf.GeneratedMessage.FieldAccessorTable
internalGetFieldAccessorTable() {
return org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.internal_static_org_jetbrains_kotlin_serialization_js_Files_fieldAccessorTable
.ensureFieldAccessorsInitialized(
org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.Files.class, org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.Files.Builder.class);
}
// Construct using org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.Files.newBuilder()
private Builder() {
maybeForceBuilderInitialization();
}
private Builder(
org.jetbrains.kotlin.protobuf.GeneratedMessage.BuilderParent parent) {
super(parent);
maybeForceBuilderInitialization();
}
private void maybeForceBuilderInitialization() {
if (org.jetbrains.kotlin.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
getFileFieldBuilder();
}
}
private static Builder create() {
return new Builder();
}
public Builder clear() {
super.clear();
if (fileBuilder_ == null) {
file_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000001);
} else {
fileBuilder_.clear();
}
return this;
}
public Builder clone() {
return create().mergeFrom(buildPartial());
}
public org.jetbrains.kotlin.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.internal_static_org_jetbrains_kotlin_serialization_js_Files_descriptor;
}
public org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.Files getDefaultInstanceForType() {
return org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.Files.getDefaultInstance();
}
public org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.Files build() {
org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.Files result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
public org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.Files buildPartial() {
org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.Files result = new org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.Files(this);
int from_bitField0_ = bitField0_;
if (fileBuilder_ == null) {
if (((bitField0_ & 0x00000001) == 0x00000001)) {
file_ = java.util.Collections.unmodifiableList(file_);
bitField0_ = (bitField0_ & ~0x00000001);
}
result.file_ = file_;
} else {
result.file_ = fileBuilder_.build();
}
onBuilt();
return result;
}
public Builder mergeFrom(org.jetbrains.kotlin.protobuf.Message other) {
if (other instanceof org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.Files) {
return mergeFrom((org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.Files)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.Files other) {
if (other == org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.Files.getDefaultInstance()) return this;
if (fileBuilder_ == null) {
if (!other.file_.isEmpty()) {
if (file_.isEmpty()) {
file_ = other.file_;
bitField0_ = (bitField0_ & ~0x00000001);
} else {
ensureFileIsMutable();
file_.addAll(other.file_);
}
onChanged();
}
} else {
if (!other.file_.isEmpty()) {
if (fileBuilder_.isEmpty()) {
fileBuilder_.dispose();
fileBuilder_ = null;
file_ = other.file_;
bitField0_ = (bitField0_ & ~0x00000001);
fileBuilder_ =
org.jetbrains.kotlin.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
getFileFieldBuilder() : null;
} else {
fileBuilder_.addAllMessages(other.file_);
}
}
}
this.mergeUnknownFields(other.getUnknownFields());
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.DebugJsProtoBuf.Files parsedMessage = null;
try {
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
} catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
parsedMessage = (org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.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.DebugJsProtoBuf.File> file_ =
java.util.Collections.emptyList();
private void ensureFileIsMutable() {
if (!((bitField0_ & 0x00000001) == 0x00000001)) {
file_ = new java.util.ArrayList<org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.File>(file_);
bitField0_ |= 0x00000001;
}
}
private org.jetbrains.kotlin.protobuf.RepeatedFieldBuilder<
org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.File, org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.File.Builder, org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.FileOrBuilder> fileBuilder_;
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public java.util.List<org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.File> getFileList() {
if (fileBuilder_ == null) {
return java.util.Collections.unmodifiableList(file_);
} else {
return fileBuilder_.getMessageList();
}
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public int getFileCount() {
if (fileBuilder_ == null) {
return file_.size();
} else {
return fileBuilder_.getCount();
}
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.File getFile(int index) {
if (fileBuilder_ == null) {
return file_.get(index);
} else {
return fileBuilder_.getMessage(index);
}
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public Builder setFile(
int index, org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.File value) {
if (fileBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureFileIsMutable();
file_.set(index, value);
onChanged();
} else {
fileBuilder_.setMessage(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.DebugJsProtoBuf.File.Builder builderForValue) {
if (fileBuilder_ == null) {
ensureFileIsMutable();
file_.set(index, builderForValue.build());
onChanged();
} else {
fileBuilder_.setMessage(index, builderForValue.build());
}
return this;
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public Builder addFile(org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.File value) {
if (fileBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureFileIsMutable();
file_.add(value);
onChanged();
} else {
fileBuilder_.addMessage(value);
}
return this;
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public Builder addFile(
int index, org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.File value) {
if (fileBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureFileIsMutable();
file_.add(index, value);
onChanged();
} else {
fileBuilder_.addMessage(index, value);
}
return this;
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public Builder addFile(
org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.File.Builder builderForValue) {
if (fileBuilder_ == null) {
ensureFileIsMutable();
file_.add(builderForValue.build());
onChanged();
} else {
fileBuilder_.addMessage(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.DebugJsProtoBuf.File.Builder builderForValue) {
if (fileBuilder_ == null) {
ensureFileIsMutable();
file_.add(index, builderForValue.build());
onChanged();
} else {
fileBuilder_.addMessage(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.DebugJsProtoBuf.File> values) {
if (fileBuilder_ == null) {
ensureFileIsMutable();
org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
values, file_);
onChanged();
} else {
fileBuilder_.addAllMessages(values);
}
return this;
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public Builder clearFile() {
if (fileBuilder_ == null) {
file_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000001);
onChanged();
} else {
fileBuilder_.clear();
}
return this;
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public Builder removeFile(int index) {
if (fileBuilder_ == null) {
ensureFileIsMutable();
file_.remove(index);
onChanged();
} else {
fileBuilder_.remove(index);
}
return this;
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.File.Builder getFileBuilder(
int index) {
return getFileFieldBuilder().getBuilder(index);
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.FileOrBuilder getFileOrBuilder(
int index) {
if (fileBuilder_ == null) {
return file_.get(index); } else {
return fileBuilder_.getMessageOrBuilder(index);
}
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public java.util.List<? extends org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.FileOrBuilder>
getFileOrBuilderList() {
if (fileBuilder_ != null) {
return fileBuilder_.getMessageOrBuilderList();
} else {
return java.util.Collections.unmodifiableList(file_);
}
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.File.Builder addFileBuilder() {
return getFileFieldBuilder().addBuilder(
org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.File.getDefaultInstance());
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.File.Builder addFileBuilder(
int index) {
return getFileFieldBuilder().addBuilder(
index, org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.File.getDefaultInstance());
}
/**
* <code>repeated .org.jetbrains.kotlin.serialization.js.File file = 1;</code>
*/
public java.util.List<org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.File.Builder>
getFileBuilderList() {
return getFileFieldBuilder().getBuilderList();
}
private org.jetbrains.kotlin.protobuf.RepeatedFieldBuilder<
org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.File, org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.File.Builder, org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.FileOrBuilder>
getFileFieldBuilder() {
if (fileBuilder_ == null) {
fileBuilder_ = new org.jetbrains.kotlin.protobuf.RepeatedFieldBuilder<
org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.File, org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.File.Builder, org.jetbrains.kotlin.serialization.js.DebugJsProtoBuf.FileOrBuilder>(
file_,
((bitField0_ & 0x00000001) == 0x00000001),
getParentForChildren(),
isClean());
file_ = null;
}
return fileBuilder_;
}
// @@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.MessageOrBuilder {
@@ -3101,6 +3789,11 @@ public final class DebugJsProtoBuf {
private static
org.jetbrains.kotlin.protobuf.GeneratedMessage.FieldAccessorTable
internal_static_org_jetbrains_kotlin_serialization_js_File_fieldAccessorTable;
private static final org.jetbrains.kotlin.protobuf.Descriptors.Descriptor
internal_static_org_jetbrains_kotlin_serialization_js_Files_descriptor;
private static
org.jetbrains.kotlin.protobuf.GeneratedMessage.FieldAccessorTable
internal_static_org_jetbrains_kotlin_serialization_js_Files_fieldAccessorTable;
private static final org.jetbrains.kotlin.protobuf.Descriptors.Descriptor
internal_static_org_jetbrains_kotlin_serialization_js_Classes_descriptor;
private static
@@ -3130,50 +3823,52 @@ public final class DebugJsProtoBuf {
"re/deserialization/src/descriptors.debug" +
".proto\"V\n\004File\022\n\n\002id\030\001 \002(\005\022B\n\nannotation" +
"\030\002 \003(\0132..org.jetbrains.kotlin.serializat" +
"ion.Annotation\"!\n\007Classes\022\026\n\nclass_name\030" +
"\001 \003(\005B\002\020\001\"\225\002\n\007Library\022G\n\005entry\030\001 \003(\01328.o" +
"rg.jetbrains.kotlin.serialization.js.Lib" +
"rary.FileEntry\022H\n\004kind\030\002 \001(\01623.org.jetbr" +
"ains.kotlin.serialization.js.Library.Kin",
"d:\005PLAIN\022\027\n\017imported_module\030\003 \003(\t\032*\n\tFil" +
"eEntry\022\014\n\004path\030\001 \002(\t\022\017\n\007content\030\002 \002(\014\"2\n" +
"\004Kind\022\t\n\005PLAIN\020\001\022\007\n\003AMD\020\002\022\r\n\tCOMMON_JS\020\003" +
"\022\007\n\003UMD\020\004:t\n\020class_annotation\022).org.jetb" +
"rains.kotlin.serialization.Class\030\202\001 \003(\0132" +
"..org.jetbrains.kotlin.serialization.Ann" +
"otation:L\n\030class_containing_file_id\022).or" +
"g.jetbrains.kotlin.serialization.Class\030\207" +
"\001 \001(\005:\200\001\n\026constructor_annotation\022/.org.j" +
"etbrains.kotlin.serialization.Constructo",
"r\030\202\001 \003(\0132..org.jetbrains.kotlin.serializ" +
"ation.Annotation:z\n\023function_annotation\022" +
"ion.Annotation\"B\n\005Files\0229\n\004file\030\001 \003(\0132+." +
"org.jetbrains.kotlin.serialization.js.Fi" +
"le\"!\n\007Classes\022\026\n\nclass_name\030\001 \003(\005B\002\020\001\"\225\002" +
"\n\007Library\022G\n\005entry\030\001 \003(\01328.org.jetbrains" +
".kotlin.serialization.js.Library.FileEnt",
"ry\022H\n\004kind\030\002 \001(\01623.org.jetbrains.kotlin." +
"serialization.js.Library.Kind:\005PLAIN\022\027\n\017" +
"imported_module\030\003 \003(\t\032*\n\tFileEntry\022\014\n\004pa" +
"th\030\001 \002(\t\022\017\n\007content\030\002 \002(\014\"2\n\004Kind\022\t\n\005PLA" +
"IN\020\001\022\007\n\003AMD\020\002\022\r\n\tCOMMON_JS\020\003\022\007\n\003UMD\020\004:t\n" +
"\020class_annotation\022).org.jetbrains.kotlin" +
".serialization.Class\030\202\001 \003(\0132..org.jetbra" +
"ins.kotlin.serialization.Annotation:L\n\030c" +
"lass_containing_file_id\022).org.jetbrains." +
"kotlin.serialization.Class\030\207\001 \001(\005:\200\001\n\026co",
"nstructor_annotation\022/.org.jetbrains.kot" +
"lin.serialization.Constructor\030\202\001 \003(\0132..o" +
"rg.jetbrains.kotlin.serialization.Annota" +
"tion:z\n\023function_annotation\022,.org.jetbra" +
"ins.kotlin.serialization.Function\030\202\001 \003(\013" +
"2..org.jetbrains.kotlin.serialization.An" +
"notation:R\n\033function_containing_file_id\022" +
",.org.jetbrains.kotlin.serialization.Fun" +
"ction\030\202\001 \003(\0132..org.jetbrains.kotlin.seri" +
"alization.Annotation:R\n\033function_contain" +
"ing_file_id\022,.org.jetbrains.kotlin.seria" +
"lization.Function\030\207\001 \001(\005:z\n\023property_ann" +
"otation\022,.org.jetbrains.kotlin.serializa" +
"tion.Property\030\202\001 \003(\0132..org.jetbrains.kot" +
"lin.serialization.Annotation:\210\001\n\022compile",
"_time_value\022,.org.jetbrains.kotlin.seria" +
"lization.Property\030\203\001 \001(\0132=.org.jetbrains" +
".kotlin.serialization.Annotation.Argumen" +
"t.Value:R\n\033property_containing_file_id\022," +
".org.jetbrains.kotlin.serialization.Prop" +
"erty\030\207\001 \001(\005:}\n\025enum_entry_annotation\022-.o" +
"rg.jetbrains.kotlin.serialization.EnumEn" +
"try\030\202\001 \003(\0132..org.jetbrains.kotlin.serial" +
"ization.Annotation:\201\001\n\024parameter_annotat" +
"ion\0222.org.jetbrains.kotlin.serialization",
".ValueParameter\030\202\001 \003(\0132..org.jetbrains.k" +
"otlin.serialization.Annotation:r\n\017type_a" +
"nnotation\022(.org.jetbrains.kotlin.seriali" +
"zation.Type\030\202\001 \003(\0132..org.jetbrains.kotli" +
"n.serialization.Annotation:\205\001\n\031type_para" +
"meter_annotation\0221.org.jetbrains.kotlin." +
"serialization.TypeParameter\030\202\001 \003(\0132..org" +
".jetbrains.kotlin.serialization.Annotati" +
"onB\021B\017DebugJsProtoBuf"
"ction\030\207\001 \001(\005:z\n\023property_annotation\022,.or" +
"g.jetbrains.kotlin.serialization.Propert",
"y\030\202\001 \003(\0132..org.jetbrains.kotlin.serializ" +
"ation.Annotation:\210\001\n\022compile_time_value\022" +
",.org.jetbrains.kotlin.serialization.Pro" +
"perty\030\203\001 \001(\0132=.org.jetbrains.kotlin.seri" +
"alization.Annotation.Argument.Value:R\n\033p" +
"roperty_containing_file_id\022,.org.jetbrai" +
"ns.kotlin.serialization.Property\030\207\001 \001(\005:" +
"}\n\025enum_entry_annotation\022-.org.jetbrains" +
".kotlin.serialization.EnumEntry\030\202\001 \003(\0132." +
".org.jetbrains.kotlin.serialization.Anno",
"tation:\201\001\n\024parameter_annotation\0222.org.je" +
"tbrains.kotlin.serialization.ValueParame" +
"ter\030\202\001 \003(\0132..org.jetbrains.kotlin.serial" +
"ization.Annotation:r\n\017type_annotation\022(." +
"org.jetbrains.kotlin.serialization.Type\030" +
"\202\001 \003(\0132..org.jetbrains.kotlin.serializat" +
"ion.Annotation:\205\001\n\031type_parameter_annota" +
"tion\0221.org.jetbrains.kotlin.serializatio" +
"n.TypeParameter\030\202\001 \003(\0132..org.jetbrains.k" +
"otlin.serialization.AnnotationB\021B\017DebugJ",
"sProtoBuf"
};
org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
new org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() {
@@ -3194,14 +3889,20 @@ public final class DebugJsProtoBuf {
org.jetbrains.kotlin.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_jetbrains_kotlin_serialization_js_File_descriptor,
new java.lang.String[] { "Id", "Annotation", });
internal_static_org_jetbrains_kotlin_serialization_js_Classes_descriptor =
internal_static_org_jetbrains_kotlin_serialization_js_Files_descriptor =
getDescriptor().getMessageTypes().get(1);
internal_static_org_jetbrains_kotlin_serialization_js_Files_fieldAccessorTable = new
org.jetbrains.kotlin.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_jetbrains_kotlin_serialization_js_Files_descriptor,
new java.lang.String[] { "File", });
internal_static_org_jetbrains_kotlin_serialization_js_Classes_descriptor =
getDescriptor().getMessageTypes().get(2);
internal_static_org_jetbrains_kotlin_serialization_js_Classes_fieldAccessorTable = new
org.jetbrains.kotlin.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_jetbrains_kotlin_serialization_js_Classes_descriptor,
new java.lang.String[] { "ClassName", });
internal_static_org_jetbrains_kotlin_serialization_js_Library_descriptor =
getDescriptor().getMessageTypes().get(2);
getDescriptor().getMessageTypes().get(3);
internal_static_org_jetbrains_kotlin_serialization_js_Library_fieldAccessorTable = new
org.jetbrains.kotlin.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_jetbrains_kotlin_serialization_js_Library_descriptor,
@@ -0,0 +1,39 @@
// MODULE: m1
// FILE: a.kt
package foo
import kotlin.js.*
@JsModule("A") @native object A {
fun f(): Int
val g: Int
}
@JsModule("B") @native open class B {
fun foo(): Int
}
@JsModule("bar") @native fun bar(): Unit
// MODULE: m2(m1)
// FILE: b.kt
// TODO: it's hard to test @JsNonModule on file from an external module
@file:JsModule("foo")
package foo
@native fun baz(): Unit
// FILE: c.kt
package bar
import foo.*
fun box() {
A.<!CALL_TO_JS_MODULE_WITHOUT_MODULE_SYSTEM!>f<!>()+A.<!CALL_TO_JS_MODULE_WITHOUT_MODULE_SYSTEM!>g<!>
<!CALL_TO_JS_MODULE_WITHOUT_MODULE_SYSTEM!>B<!>()
<!CALL_TO_JS_MODULE_WITHOUT_MODULE_SYSTEM!>bar<!>()
<!CALL_TO_JS_MODULE_WITHOUT_MODULE_SYSTEM!>baz<!>()
}
@native class DerivedB : <!CALL_TO_JS_MODULE_WITHOUT_MODULE_SYSTEM!>B<!>()
@@ -0,0 +1,43 @@
// -- Module: <m1> --
package
package foo {
@kotlin.js.JsModule(import = "bar") @kotlin.js.native public fun bar(): kotlin.Unit
@kotlin.js.JsModule(import = "A") @kotlin.js.native public object A {
private constructor A()
public final val g: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun f(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@kotlin.js.JsModule(import = "B") @kotlin.js.native public open class B {
public constructor B()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun foo(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
// -- Module: <m2> --
package
package bar {
public fun box(): kotlin.Unit
@kotlin.js.native public final class DerivedB : foo.B {
public constructor DerivedB()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun foo(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
package foo {
@kotlin.js.native public fun baz(): kotlin.Unit
}
@@ -0,0 +1,33 @@
// MODULE: m1
// FILE: a.kt
package foo
import kotlin.js.*
@JsNonModule @native object A {
fun f(): Int
val g: Int
}
@JsNonModule @native open class B {
fun foo(): Int
}
@JsNonModule @native fun bar(): Unit
// MODULE: m2(m1)
// MODULE_KIND: AMD
// TODO: it's hard to test @JsNonModule on file from an external module
// FILE: c.kt
package bar
import foo.*
fun box() {
A.<!CALL_TO_JS_NON_MODULE_WITH_MODULE_SYSTEM!>f<!>()+A.<!CALL_TO_JS_NON_MODULE_WITH_MODULE_SYSTEM!>g<!>
<!CALL_TO_JS_NON_MODULE_WITH_MODULE_SYSTEM!>B<!>()
<!CALL_TO_JS_NON_MODULE_WITH_MODULE_SYSTEM!>bar<!>()
}
@native class DerivedB : <!CALL_TO_JS_NON_MODULE_WITH_MODULE_SYSTEM!>B<!>()
@@ -0,0 +1,34 @@
package
package bar {
public fun box(): kotlin.Unit
@kotlin.js.native public final class DerivedB : foo.B {
public constructor DerivedB()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun foo(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
package foo {
@kotlin.js.JsNonModule @kotlin.js.native public fun bar(): kotlin.Unit
@kotlin.js.JsNonModule @kotlin.js.native public object A {
private constructor A()
public final val g: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun f(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@kotlin.js.JsNonModule @kotlin.js.native public open class B {
public constructor B()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun foo(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
@@ -537,12 +537,18 @@ public abstract class AbstractDiagnosticsTest extends BaseDiagnosticsTest {
}
dependencies.add(module.getBuiltIns().getBuiltInsModule());
dependencies.addAll(getAdditionalDependencies(module));
module.setDependencies(dependencies);
}
return modules;
}
@NotNull
protected List<ModuleDescriptorImpl> getAdditionalDependencies(@NotNull ModuleDescriptorImpl module) {
return Collections.emptyList();
}
@NotNull
@SuppressWarnings("unchecked")
protected ModuleDescriptorImpl createModule(@NotNull String moduleName, @NotNull StorageManager storageManager) {
@@ -16,6 +16,7 @@
package org.jetbrains.kotlin.checkers;
import com.intellij.openapi.util.text.StringUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles;
@@ -29,11 +30,13 @@ import org.jetbrains.kotlin.js.analyzer.JsAnalysisResult;
import org.jetbrains.kotlin.js.config.JSConfigurationKeys;
import org.jetbrains.kotlin.js.config.JsConfig;
import org.jetbrains.kotlin.js.config.LibrarySourcesConfig;
import org.jetbrains.kotlin.js.resolve.BindingContextSlicesJsKt;
import org.jetbrains.kotlin.js.resolve.JsPlatform;
import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.psi.KtFile;
import org.jetbrains.kotlin.resolve.BindingTrace;
import org.jetbrains.kotlin.serialization.js.JsModuleDescriptor;
import org.jetbrains.kotlin.serialization.js.ModuleKind;
import org.jetbrains.kotlin.storage.StorageManager;
import org.jetbrains.kotlin.test.KotlinTestUtils;
@@ -77,9 +80,40 @@ public abstract class AbstractDiagnosticsTestWithJsStdLib extends AbstractDiagno
// TODO: support LANGUAGE directive in JS diagnostic tests
assert languageVersionSettings == null
: BaseDiagnosticsTest.LANGUAGE_DIRECTIVE + " directive is not supported in JS diagnostic tests";
moduleTrace.record(BindingContextSlicesJsKt.MODULE_KIND, moduleContext.getModule(), getModuleKind(ktFiles));
return TopDownAnalyzerFacadeForJS.analyzeFilesWithGivenTrace(ktFiles, moduleTrace, moduleContext, config);
}
@NotNull
private static ModuleKind getModuleKind(@NotNull List<KtFile> ktFiles) {
ModuleKind kind = ModuleKind.PLAIN;
for (KtFile file : ktFiles) {
String text = file.getText();
for (String line : StringUtil.splitByLines(text)) {
line = line.trim();
if (!line.startsWith("//")) continue;
line = line.substring(2).trim();
List<String> parts = StringUtil.split(line, ":");
if (parts.size() != 2) continue;
if (!parts.get(0).trim().equals("MODULE_KIND")) continue;
kind = ModuleKind.valueOf(parts.get(1).trim());
}
}
return kind;
}
@Override
@NotNull
protected List<ModuleDescriptorImpl> getAdditionalDependencies(@NotNull ModuleDescriptorImpl module) {
List<ModuleDescriptorImpl> dependencies = new ArrayList<ModuleDescriptorImpl>();
for (JsModuleDescriptor<ModuleDescriptorImpl> moduleDescriptor : config.getModuleDescriptors()) {
dependencies.add(moduleDescriptor.getData());
}
return dependencies;
}
@Override
public boolean shouldSkipJvmSignatureDiagnostics(Map<TestModule, List<TestFile>> groupedByModule) {
return true;
@@ -99,9 +133,7 @@ public abstract class AbstractDiagnosticsTestWithJsStdLib extends AbstractDiagno
List<ModuleDescriptorImpl> dependencies = new ArrayList<ModuleDescriptorImpl>();
dependencies.add(module);
for (JsModuleDescriptor<ModuleDescriptorImpl> moduleDescriptor : config.getModuleDescriptors()) {
dependencies.add(moduleDescriptor.getData());
}
dependencies.addAll(getAdditionalDependencies(module));
dependencies.add(module.getBuiltIns().getBuiltInsModule());
module.setDependencies(dependencies);
@@ -316,6 +316,18 @@ public class DiagnosticsTestWithJsStdLibGenerated extends AbstractDiagnosticsTes
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithJsStdLib/module/prohibitedOnNonNative.kt");
doTest(fileName);
}
@TestMetadata("wrongCallToModule.kt")
public void testWrongCallToModule() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithJsStdLib/module/wrongCallToModule.kt");
doTest(fileName);
}
@TestMetadata("wrongCallToNonModule.kt")
public void testWrongCallToNonModule() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithJsStdLib/module/wrongCallToNonModule.kt");
doTest(fileName);
}
}
@TestMetadata("compiler/testData/diagnostics/testsWithJsStdLib/name")
@@ -16,6 +16,7 @@
package org.jetbrains.kotlin.js.analyze
import com.intellij.openapi.util.text.StringUtil
import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
import org.jetbrains.kotlin.context.ContextForNewModule
@@ -25,6 +26,7 @@ import org.jetbrains.kotlin.frontend.js.di.createTopDownAnalyzerForJs
import org.jetbrains.kotlin.js.analyzer.JsAnalysisResult
import org.jetbrains.kotlin.js.config.JsConfig
import org.jetbrains.kotlin.js.resolve.JsPlatform
import org.jetbrains.kotlin.js.resolve.MODULE_KIND
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.*
@@ -39,7 +41,9 @@ object TopDownAnalyzerFacadeForJS {
config.moduleDescriptors.map { it.data } +
listOf(JsPlatform.builtIns.builtInsModule)
)
return analyzeFilesWithGivenTrace(files, BindingTraceContext(), context, config)
val trace = BindingTraceContext()
trace.record(MODULE_KIND, context.module, config.moduleKind)
return analyzeFilesWithGivenTrace(files, trace, context, config)
}
@JvmStatic
@@ -37,7 +37,7 @@ object JsPlatformConfigurator : PlatformConfigurator(
JsNameChecker, JsModuleChecker,
PlatformImplDeclarationChecker()
),
additionalCallCheckers = listOf(ReifiedTypeParameterSubstitutionChecker()),
additionalCallCheckers = listOf(ReifiedTypeParameterSubstitutionChecker(), JsModuleCallChecker),
additionalTypeCheckers = listOf(),
additionalClassifierUsageCheckers = listOf(),
additionalAnnotationCheckers = listOf(),
@@ -0,0 +1,24 @@
/*
* Copyright 2010-2016 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.kotlin.js.resolve
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.serialization.js.ModuleKind
import org.jetbrains.kotlin.util.slicedMap.BasicWritableSlice
import org.jetbrains.kotlin.util.slicedMap.RewritePolicy
@JvmField val MODULE_KIND = BasicWritableSlice<ModuleDescriptor, ModuleKind>(RewritePolicy.DO_NOTHING)
@@ -50,6 +50,10 @@ private val DIAGNOSTIC_FACTORY_TO_RENDERER by lazy {
put(ErrorsJs.JS_NAME_PROHIBITED_FOR_NAMED_NATIVE, "@JsName is prohibited for @native declaration with explicit name")
put(ErrorsJs.JS_MODULE_PROHIBITED_ON_VAR, "@JsModule annotation prohibited for 'var' declarations. Use 'val' instead.")
put(ErrorsJs.JS_MODULE_PROHIBITED_ON_NON_NATIVE, "@JsModule annotation prohibited for non-@native declarations.")
put(ErrorsJs.CALL_TO_JS_MODULE_WITHOUT_MODULE_SYSTEM, "Can't access declaration marked with @JsModule annotation " +
"from non-modular project")
put(ErrorsJs.CALL_TO_JS_NON_MODULE_WITH_MODULE_SYSTEM, "Can't access declaration marked with @JsNonModule annotation " +
"from modular project")
put(ErrorsJs.CANNOT_CHECK_FOR_NATIVE_INTERFACE, "Cannot check for native interface: {0}", RENDER_TYPE)
put(ErrorsJs.UNCHECKED_CAST_TO_NATIVE_INTERFACE, "Unchecked cast to native interface: {0} to {1}", RENDER_TYPE, RENDER_TYPE)
put(ErrorsJs.NATIVE_INTERFACE_AS_REIFIED_TYPE_ARGUMENT, "Cannot pass native interface {0} for reified type parameter", RENDER_TYPE)
@@ -54,6 +54,8 @@ public interface ErrorsJs {
DiagnosticFactory0<PsiElement> JS_NAME_PROHIBITED_FOR_NAMED_NATIVE = DiagnosticFactory0.create(ERROR);
DiagnosticFactory0<KtElement> JS_MODULE_PROHIBITED_ON_VAR = DiagnosticFactory0.create(ERROR, DECLARATION_SIGNATURE_OR_DEFAULT);
DiagnosticFactory0<KtElement> JS_MODULE_PROHIBITED_ON_NON_NATIVE = DiagnosticFactory0.create(ERROR, DECLARATION_SIGNATURE_OR_DEFAULT);
DiagnosticFactory0<PsiElement> CALL_TO_JS_MODULE_WITHOUT_MODULE_SYSTEM = DiagnosticFactory0.create(ERROR, DEFAULT);
DiagnosticFactory0<PsiElement> CALL_TO_JS_NON_MODULE_WITH_MODULE_SYSTEM = DiagnosticFactory0.create(ERROR, DEFAULT);
DiagnosticFactory1<PsiElement, KotlinType> CANNOT_CHECK_FOR_NATIVE_INTERFACE = DiagnosticFactory1.create(ERROR);
DiagnosticFactory2<PsiElement, KotlinType, KotlinType> UNCHECKED_CAST_TO_NATIVE_INTERFACE = DiagnosticFactory2.create(WARNING);
DiagnosticFactory1<PsiElement, KotlinType> NATIVE_INTERFACE_AS_REIFIED_TYPE_ARGUMENT = DiagnosticFactory1.create(ERROR);
@@ -0,0 +1,71 @@
/*
* Copyright 2010-2016 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.kotlin.js.resolve.diagnostics
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
import org.jetbrains.kotlin.js.resolve.MODULE_KIND
import org.jetbrains.kotlin.js.translate.utils.AnnotationsUtils
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.resolve.calls.checkers.CallChecker
import org.jetbrains.kotlin.resolve.calls.checkers.CallCheckerContext
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
import org.jetbrains.kotlin.resolve.scopes.receivers.ClassValueReceiver
import org.jetbrains.kotlin.serialization.js.ModuleKind
object JsModuleCallChecker : CallChecker {
override fun check(resolvedCall: ResolvedCall<*>, reportOn: PsiElement, context: CallCheckerContext) {
val bindingContext = context.trace.bindingContext
val containingDescriptor = context.scope.ownerDescriptor
val module = DescriptorUtils.getContainingModule(containingDescriptor)
val moduleKind = bindingContext[MODULE_KIND, module] ?: return
val callee = findRoot(extractModuleCallee(resolvedCall) ?: return)
if (!AnnotationsUtils.isNativeObject(callee)) return
val callToModule = AnnotationsUtils.getModuleName(callee) != null ||
AnnotationsUtils.getFileModuleName(bindingContext, callee) != null
val callToNonModule = AnnotationsUtils.isNonModule(callee) || AnnotationsUtils.isFromNonModuleFile(bindingContext, callee)
if (moduleKind == ModuleKind.PLAIN || moduleKind == ModuleKind.UMD) {
if (!callToNonModule && callToModule) {
context.trace.report(ErrorsJs.CALL_TO_JS_MODULE_WITHOUT_MODULE_SYSTEM.on(reportOn))
}
}
if (moduleKind != ModuleKind.PLAIN) {
if (!callToModule && callToNonModule) {
context.trace.report(ErrorsJs.CALL_TO_JS_NON_MODULE_WITH_MODULE_SYSTEM.on(reportOn))
}
}
}
private fun extractModuleCallee(call: ResolvedCall<*>): DeclarationDescriptor? {
val callee = call.resultingDescriptor
if (DescriptorUtils.isTopLevelDeclaration(callee)) return callee
val receiver = call.dispatchReceiver ?: return callee
if (receiver is ClassValueReceiver) return receiver.classQualifier.descriptor
return null
}
private fun findRoot(callee: DeclarationDescriptor) =
generateSequence(callee) { it.containingDeclaration }
.takeWhile { it !is PackageFragmentDescriptor }
.last()
}
@@ -41,6 +41,7 @@ import java.util.List;
public final class AnnotationsUtils {
private static final String JS_NAME = "kotlin.js.JsName";
private static final FqName JS_MODULE_ANNOTATION = new FqName("kotlin.js.JsModule");
private static final FqName JS_NON_MODULE_ANNOTATION = new FqName("kotlin.js.JsNonModule");
private AnnotationsUtils() {
}
@@ -203,6 +204,24 @@ public final class AnnotationsUtils {
return null;
}
public static boolean isNonModule(@NotNull DeclarationDescriptor declaration) {
return declaration.getAnnotations().findAnnotation(JS_NON_MODULE_ANNOTATION) != null;
}
public static boolean isFromNonModuleFile(@NotNull BindingContext bindingContext, @NotNull DeclarationDescriptor declaration) {
for (AnnotationDescriptor annotation : getContainingFileAnnotations(bindingContext, declaration)) {
DeclarationDescriptor annotationType = annotation.getType().getConstructor().getDeclarationDescriptor();
if (annotationType == null) continue;
FqNameUnsafe fqName = DescriptorUtils.getFqName(annotation.getType().getConstructor().getDeclarationDescriptor());
if (fqName.equals(JS_NON_MODULE_ANNOTATION.toUnsafe())) {
return true;
}
}
return false;
}
@NotNull
private static String extractJsModuleName(@NotNull AnnotationDescriptor annotation) {
ConstantValue<?> importValue = annotation.getAllValueArguments().values().iterator().next();
@@ -225,7 +244,9 @@ public final class AnnotationsUtils {
List<AnnotationDescriptor> annotations = new ArrayList<AnnotationDescriptor>();
for (KtAnnotationEntry psiAnnotation : kotlinFile.getAnnotationEntries()) {
AnnotationDescriptor annotation = bindingContext.get(BindingContext.ANNOTATION, psiAnnotation);
annotations.add(annotation);
if (annotation != null) {
annotations.add(annotation);
}
}
return annotations;
}
+5 -1
View File
@@ -52,4 +52,8 @@ annotation class JsName(val name: String)
@Retention(AnnotationRetention.BINARY)
@Target(CLASS, PROPERTY, FUNCTION, FILE)
annotation class JsModule(val import: String)
annotation class JsModule(val import: String)
@Retention(AnnotationRetention.BINARY)
@Target(CLASS, PROPERTY, FUNCTION, FILE)
annotation class JsNonModule
+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