Minor, repl: clean up code

This commit is contained in:
Pavel V. Talanov
2015-11-18 16:02:33 +03:00
parent bdc64f322c
commit 917b8bfe66
2 changed files with 6 additions and 34 deletions
@@ -18,7 +18,6 @@ package org.jetbrains.kotlin.cli.jvm.repl;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.descriptors.ScriptDescriptor; import org.jetbrains.kotlin.descriptors.ScriptDescriptor;
import org.jetbrains.org.objectweb.asm.Type;
public class EarlierLine { public class EarlierLine {
@NotNull @NotNull
@@ -29,21 +28,17 @@ public class EarlierLine {
private final Class<?> scriptClass; private final Class<?> scriptClass;
@NotNull @NotNull
private final Object scriptInstance; private final Object scriptInstance;
@NotNull
private final Type classType;
public EarlierLine( public EarlierLine(
@NotNull String code, @NotNull String code,
@NotNull ScriptDescriptor scriptDescriptor, @NotNull ScriptDescriptor scriptDescriptor,
@NotNull Class<?> scriptClass, @NotNull Class<?> scriptClass,
@NotNull Object scriptInstance, @NotNull Object scriptInstance
@NotNull Type classType
) { ) {
this.code = code; this.code = code;
this.scriptDescriptor = scriptDescriptor; this.scriptDescriptor = scriptDescriptor;
this.scriptClass = scriptClass; this.scriptClass = scriptClass;
this.scriptInstance = scriptInstance; this.scriptInstance = scriptInstance;
this.classType = classType;
} }
@NotNull @NotNull
@@ -65,9 +60,4 @@ public class EarlierLine {
public Object getScriptInstance() { public Object getScriptInstance() {
return scriptInstance; return scriptInstance;
} }
@NotNull
public Type getClassType() {
return classType;
}
} }
@@ -20,7 +20,6 @@ import com.google.common.base.Throwables;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.intellij.openapi.Disposable; import com.intellij.openapi.Disposable;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.vfs.CharsetToolkit; import com.intellij.openapi.vfs.CharsetToolkit;
import com.intellij.psi.PsiFileFactory; import com.intellij.psi.PsiFileFactory;
import com.intellij.psi.impl.PsiFileFactoryImpl; import com.intellij.psi.impl.PsiFileFactoryImpl;
@@ -68,7 +67,6 @@ import org.jetbrains.kotlin.resolve.lazy.declarations.*;
import org.jetbrains.kotlin.resolve.lazy.descriptors.LazyScriptDescriptor; import org.jetbrains.kotlin.resolve.lazy.descriptors.LazyScriptDescriptor;
import org.jetbrains.kotlin.resolve.scopes.LexicalScope; import org.jetbrains.kotlin.resolve.scopes.LexicalScope;
import org.jetbrains.kotlin.utils.ExceptionUtilsKt; import org.jetbrains.kotlin.utils.ExceptionUtilsKt;
import org.jetbrains.org.objectweb.asm.Type;
import java.io.File; import java.io.File;
import java.io.PrintWriter; import java.io.PrintWriter;
@@ -82,8 +80,6 @@ import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import static org.jetbrains.kotlin.codegen.AsmUtil.asmTypeByFqNameWithoutInnerClasses;
public class ReplInterpreter { public class ReplInterpreter {
private static final String SCRIPT_RESULT_FIELD_NAME = "$$result"; private static final String SCRIPT_RESULT_FIELD_NAME = "$$result";
@@ -260,7 +256,6 @@ public class ReplInterpreter {
++lineNumber; ++lineNumber;
FqName scriptFqName = new FqName("Line" + lineNumber); FqName scriptFqName = new FqName("Line" + lineNumber);
Type scriptClassType = asmTypeByFqNameWithoutInnerClasses(scriptFqName);
StringBuilder fullText = new StringBuilder(); StringBuilder fullText = new StringBuilder();
for (String prevLine : previousIncompleteLines) { for (String prevLine : previousIncompleteLines) {
@@ -304,11 +299,10 @@ public class ReplInterpreter {
return LineResult.compileError(errorHolder.getRenderedDiagnostics()); return LineResult.compileError(errorHolder.getRenderedDiagnostics());
} }
List<Pair<ScriptDescriptor, Type>> earlierScripts = Lists.newArrayList(); List<ScriptDescriptor> earlierScripts = Lists.newArrayList();
for (EarlierLine earlierLine : earlierLines) { for (EarlierLine earlierLine : earlierLines) {
//TODO_R: not needed earlierScripts.add(earlierLine.getScriptDescriptor());
earlierScripts.add(Pair.create(earlierLine.getScriptDescriptor(), earlierLine.getClassType()));
} }
GenerationState state = new GenerationState(psiFile.getProject(), ClassBuilderFactories.BINARIES, GenerationState state = new GenerationState(psiFile.getProject(), ClassBuilderFactories.BINARIES,
@@ -350,7 +344,7 @@ public class ReplInterpreter {
rvField.setAccessible(true); rvField.setAccessible(true);
Object rv = rvField.get(scriptInstance); Object rv = rvField.get(scriptInstance);
earlierLines.add(new EarlierLine(line, scriptDescriptor, scriptClass, scriptInstance, scriptClassType)); earlierLines.add(new EarlierLine(line, scriptDescriptor, scriptClass, scriptInstance));
return LineResult.successful(rv, !state.getReplSpecific().getHasResult()); return LineResult.successful(rv, !state.getReplSpecific().getHasResult());
} }
@@ -422,26 +416,14 @@ public class ReplInterpreter {
classLoader.dumpClasses(out); classLoader.dumpClasses(out);
} }
private static void registerEarlierScripts(
@NotNull GenerationState state,
@NotNull List<Pair<ScriptDescriptor, Type>> earlierScripts
) {
List<ScriptDescriptor> earlierScriptDescriptors = new ArrayList<ScriptDescriptor>(earlierScripts.size());
for (Pair<ScriptDescriptor, Type> pair : earlierScripts) {
ScriptDescriptor earlierDescriptor = pair.first;
earlierScriptDescriptors.add(earlierDescriptor);
}
state.getReplSpecific().setEarlierScriptsForReplInterpreter(earlierScriptDescriptors);
}
public static void compileScript( public static void compileScript(
@NotNull KtScript script, @NotNull KtScript script,
@NotNull List<Pair<ScriptDescriptor, Type>> earlierScripts, @NotNull List<ScriptDescriptor> earlierScripts,
@NotNull GenerationState state, @NotNull GenerationState state,
@NotNull CompilationErrorHandler errorHandler @NotNull CompilationErrorHandler errorHandler
) { ) {
state.getReplSpecific().setScriptResultFieldName(SCRIPT_RESULT_FIELD_NAME); state.getReplSpecific().setScriptResultFieldName(SCRIPT_RESULT_FIELD_NAME);
registerEarlierScripts(state, earlierScripts); state.getReplSpecific().setEarlierScriptsForReplInterpreter(new ArrayList<ScriptDescriptor>(earlierScripts));
state.beforeCompile(); state.beforeCompile();
KotlinCodegenFacade.generatePackage( KotlinCodegenFacade.generatePackage(