getting rid of default imports for scripts

This commit is contained in:
Alex Tkachman
2012-08-06 18:18:17 +03:00
parent 8613db2724
commit 0588d51700
4 changed files with 3 additions and 54 deletions
@@ -28,12 +28,10 @@ import java.util.List;
public class JetScriptDefinition {
private final String extension;
private final List<AnalyzerScriptParameter> parameters;
private final List<ImportPath> imports;
public JetScriptDefinition(String extension, List<AnalyzerScriptParameter> scriptParameters, @Nullable List<String> imports) {
public JetScriptDefinition(String extension, List<AnalyzerScriptParameter> scriptParameters) {
this.extension = extension;
parameters = scriptParameters == null ? Collections.<AnalyzerScriptParameter>emptyList() : scriptParameters;
this.imports = imports == null || imports.isEmpty() ? Collections.<ImportPath>emptyList() : importPaths(imports);
}
private static List<ImportPath> importPaths(List<String> imports) {
@@ -44,10 +42,6 @@ public class JetScriptDefinition {
return paths;
}
public JetScriptDefinition(String extension, List<AnalyzerScriptParameter> scriptParameters) {
this(extension, scriptParameters, null);
}
public JetScriptDefinition(String extension, AnalyzerScriptParameter... scriptParameters) {
this(extension, Arrays.asList(scriptParameters));
}
@@ -59,8 +53,4 @@ public class JetScriptDefinition {
public String getExtension() {
return extension;
}
public List<ImportPath> getImports() {
return imports;
}
}
@@ -22,7 +22,6 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.ModuleConfiguration;
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider;
import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
@@ -80,7 +79,7 @@ public class ImportsResolver {
private void processImports(boolean onlyClasses, @NotNull JetScope rootScope) {
for (JetFile file : context.getNamespaceDescriptors().keySet()) {
WritableScope namespaceScope = context.getNamespaceScopes().get(file);
processImportsInFile(onlyClasses, namespaceScope, ScopeProvider.getFileImports(file), rootScope);
processImportsInFile(onlyClasses, namespaceScope, Lists.newArrayList(file.getImportDirectives()), rootScope);
}
for (JetScript script : context.getScripts().keySet()) {
WritableScope scriptScope = context.getScriptScopes().get(script);
@@ -21,11 +21,7 @@ import com.intellij.psi.PsiElement;
import com.intellij.psi.util.PsiTreeUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
import org.jetbrains.jet.lang.parsing.JetParserDefinition;
import org.jetbrains.jet.lang.parsing.JetScriptDefinition;
import org.jetbrains.jet.lang.parsing.JetScriptDefinitionProvider;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.ImportPath;
import org.jetbrains.jet.lang.resolve.ImportsResolver;
import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
@@ -76,9 +72,7 @@ public class ScopeProvider {
writableScope.importScope(rootPackageDescriptor.getMemberScope());
}
List<JetImportDirective> importDirectives = getFileImports(file);
ImportsResolver.processImportsInFile(true, writableScope, importDirectives,
ImportsResolver.processImportsInFile(true, writableScope, Lists.newArrayList(file.getImportDirectives()),
rootPackageDescriptor.getMemberScope(),
resolveSession.getModuleConfiguration(), resolveSession.getTrace(),
resolveSession.getInjector().getQualifiedExpressionResolver());
@@ -90,22 +84,6 @@ public class ScopeProvider {
return writableScope;
}
public static List<JetImportDirective> getFileImports(JetFile file) {
List<JetImportDirective> fileImports = file.getImportDirectives();
List<JetImportDirective> importDirectives = Lists.newArrayList();
if(file.isScript()) {
JetScriptDefinition definition = JetScriptDefinitionProvider.getInstance(file.getProject()).findScriptDefinition(file);
List<ImportPath> imports = definition.getImports();
if(!imports.isEmpty()) {
for (ImportPath importPath : imports) {
importDirectives.add(JetPsiFactory.createImportDirective(file.getProject(), importPath));
}
}
}
importDirectives.addAll(fileImports);
return importDirectives;
}
@NotNull
public JetScope getResolutionScopeForDeclaration(@NotNull JetDeclaration jetDeclaration) {
PsiElement immediateParent = jetDeclaration.getParent();
@@ -39,9 +39,6 @@ public class ScriptGenTest extends CodegenTestCase {
public static final JetScriptDefinition FIB_SCRIPT_DEFINITION =
new JetScriptDefinition(".lang.kt", new AnalyzerScriptParameter("num", "jet.Int"));
public static final JetScriptDefinition DEFIMPORT_SCRIPT_DEFINITION =
new JetScriptDefinition(".def.kt", null, Arrays.asList("java.util.Collections"));
@Override
protected void setUp() throws Exception {
super.setUp();
@@ -150,21 +147,6 @@ public class ScriptGenTest extends CodegenTestCase {
}
}
public void testDefImports() {
JetScriptDefinitionProvider.getInstance(myEnvironment.getProject()).addScriptDefinition(DEFIMPORT_SCRIPT_DEFINITION);
loadFile("script/withdefimports.def.kt");
final Class aClass = loadClass("Withdefimports", generateClassesInFile());
try {
Constructor constructor = aClass.getConstructor();
Field rv = aClass.getField("rv");
Object script = constructor.newInstance();
assertEquals(Collections.emptyList(),rv.get(script));
}
catch (Exception e) {
throw new RuntimeException(e);
}
}
public void testScriptWhereMethodHasClosure() {
JetScriptDefinitionProvider.getInstance(myEnvironment.getProject()).addScriptDefinition(FIB_SCRIPT_DEFINITION);
loadFile("script/methodWithClosure.lang.kt");