Use mutable lists before deserialization of project structure

The problem is that we perform xml deserialization using intellij
 mechanism which tries to clear target object if it isn't unmodifiable
 (see CollectionBinding.isMutableCollection). This check fails for
 kotlin.EmptyList (emptyList()) which then cause exception

 #KT-27321 Fixed
This commit is contained in:
Mikhail Zarechenskiy
2018-10-01 14:54:11 +03:00
parent da9c486a70
commit e74469fdfc
8 changed files with 89 additions and 3 deletions
@@ -32,6 +32,7 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiJavaModule;
import com.intellij.psi.PsiRequiresStatement;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.kotlin.cli.common.arguments.InternalArgument;
import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments;
import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments;
import org.jetbrains.kotlin.config.*;
@@ -53,6 +54,7 @@ import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.StreamSupport;
import static java.util.Collections.emptyList;
@@ -308,6 +310,15 @@ public class ConfigureKotlinTest extends AbstractConfigureKotlinTest {
);
}
public void testProjectWithInternalArgs() {
List<InternalArgument> internalArguments =
KotlinCommonCompilerArgumentsHolder.Companion.getInstance(myProject).getSettings().getInternalArguments();
assertEquals(
0,
internalArguments.size()
);
}
private void checkAddStdlibModule() {
doTestOneJavaModule(KotlinWithLibraryConfigurator.FileState.COPY);
@@ -32,6 +32,7 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiJavaModule;
import com.intellij.psi.PsiRequiresStatement;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.kotlin.cli.common.arguments.InternalArgument;
import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments;
import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments;
import org.jetbrains.kotlin.config.*;
@@ -53,6 +54,7 @@ import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.StreamSupport;
import static java.util.Collections.emptyList;
@@ -308,6 +310,15 @@ public class ConfigureKotlinTest extends AbstractConfigureKotlinTest {
);
}
public void testProjectWithInternalArgs() {
List<InternalArgument> internalArguments =
KotlinCommonCompilerArgumentsHolder.Companion.getInstance(myProject).getSettings().getInternalArguments();
assertEquals(
0,
internalArguments.size()
);
}
private void checkAddStdlibModule() {
doTestOneJavaModule(KotlinWithLibraryConfigurator.FileState.COPY);