getting rid of default imports for scripts
This commit is contained in:
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user