getting rid of default imports for scripts
This commit is contained in:
@@ -28,12 +28,10 @@ import java.util.List;
|
|||||||
public class JetScriptDefinition {
|
public class JetScriptDefinition {
|
||||||
private final String extension;
|
private final String extension;
|
||||||
private final List<AnalyzerScriptParameter> parameters;
|
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;
|
this.extension = extension;
|
||||||
parameters = scriptParameters == null ? Collections.<AnalyzerScriptParameter>emptyList() : scriptParameters;
|
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) {
|
private static List<ImportPath> importPaths(List<String> imports) {
|
||||||
@@ -44,10 +42,6 @@ public class JetScriptDefinition {
|
|||||||
return paths;
|
return paths;
|
||||||
}
|
}
|
||||||
|
|
||||||
public JetScriptDefinition(String extension, List<AnalyzerScriptParameter> scriptParameters) {
|
|
||||||
this(extension, scriptParameters, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public JetScriptDefinition(String extension, AnalyzerScriptParameter... scriptParameters) {
|
public JetScriptDefinition(String extension, AnalyzerScriptParameter... scriptParameters) {
|
||||||
this(extension, Arrays.asList(scriptParameters));
|
this(extension, Arrays.asList(scriptParameters));
|
||||||
}
|
}
|
||||||
@@ -59,8 +53,4 @@ public class JetScriptDefinition {
|
|||||||
public String getExtension() {
|
public String getExtension() {
|
||||||
return extension;
|
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.ModuleConfiguration;
|
||||||
import org.jetbrains.jet.lang.descriptors.*;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.psi.*;
|
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.name.Name;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
|
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
|
||||||
@@ -80,7 +79,7 @@ public class ImportsResolver {
|
|||||||
private void processImports(boolean onlyClasses, @NotNull JetScope rootScope) {
|
private void processImports(boolean onlyClasses, @NotNull JetScope rootScope) {
|
||||||
for (JetFile file : context.getNamespaceDescriptors().keySet()) {
|
for (JetFile file : context.getNamespaceDescriptors().keySet()) {
|
||||||
WritableScope namespaceScope = context.getNamespaceScopes().get(file);
|
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()) {
|
for (JetScript script : context.getScripts().keySet()) {
|
||||||
WritableScope scriptScope = context.getScriptScopes().get(script);
|
WritableScope scriptScope = context.getScriptScopes().get(script);
|
||||||
|
|||||||
@@ -21,11 +21,7 @@ import com.intellij.psi.PsiElement;
|
|||||||
import com.intellij.psi.util.PsiTreeUtil;
|
import com.intellij.psi.util.PsiTreeUtil;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
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.psi.*;
|
||||||
import org.jetbrains.jet.lang.resolve.ImportPath;
|
|
||||||
import org.jetbrains.jet.lang.resolve.ImportsResolver;
|
import org.jetbrains.jet.lang.resolve.ImportsResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
@@ -76,9 +72,7 @@ public class ScopeProvider {
|
|||||||
writableScope.importScope(rootPackageDescriptor.getMemberScope());
|
writableScope.importScope(rootPackageDescriptor.getMemberScope());
|
||||||
}
|
}
|
||||||
|
|
||||||
List<JetImportDirective> importDirectives = getFileImports(file);
|
ImportsResolver.processImportsInFile(true, writableScope, Lists.newArrayList(file.getImportDirectives()),
|
||||||
|
|
||||||
ImportsResolver.processImportsInFile(true, writableScope, importDirectives,
|
|
||||||
rootPackageDescriptor.getMemberScope(),
|
rootPackageDescriptor.getMemberScope(),
|
||||||
resolveSession.getModuleConfiguration(), resolveSession.getTrace(),
|
resolveSession.getModuleConfiguration(), resolveSession.getTrace(),
|
||||||
resolveSession.getInjector().getQualifiedExpressionResolver());
|
resolveSession.getInjector().getQualifiedExpressionResolver());
|
||||||
@@ -90,22 +84,6 @@ public class ScopeProvider {
|
|||||||
return writableScope;
|
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
|
@NotNull
|
||||||
public JetScope getResolutionScopeForDeclaration(@NotNull JetDeclaration jetDeclaration) {
|
public JetScope getResolutionScopeForDeclaration(@NotNull JetDeclaration jetDeclaration) {
|
||||||
PsiElement immediateParent = jetDeclaration.getParent();
|
PsiElement immediateParent = jetDeclaration.getParent();
|
||||||
|
|||||||
@@ -39,9 +39,6 @@ public class ScriptGenTest extends CodegenTestCase {
|
|||||||
public static final JetScriptDefinition FIB_SCRIPT_DEFINITION =
|
public static final JetScriptDefinition FIB_SCRIPT_DEFINITION =
|
||||||
new JetScriptDefinition(".lang.kt", new AnalyzerScriptParameter("num", "jet.Int"));
|
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
|
@Override
|
||||||
protected void setUp() throws Exception {
|
protected void setUp() throws Exception {
|
||||||
super.setUp();
|
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() {
|
public void testScriptWhereMethodHasClosure() {
|
||||||
JetScriptDefinitionProvider.getInstance(myEnvironment.getProject()).addScriptDefinition(FIB_SCRIPT_DEFINITION);
|
JetScriptDefinitionProvider.getInstance(myEnvironment.getProject()).addScriptDefinition(FIB_SCRIPT_DEFINITION);
|
||||||
loadFile("script/methodWithClosure.lang.kt");
|
loadFile("script/methodWithClosure.lang.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user