Imports moved from under the script node to top level

This commit is contained in:
Andrey Breslav
2014-03-28 15:48:20 +04:00
parent 7bdc56d895
commit d5eea09146
7 changed files with 61 additions and 40 deletions
@@ -93,7 +93,7 @@ public class JetParsing extends AbstractJetParsing {
void parseFile() {
PsiBuilder.Marker fileMarker = mark();
parsePreamble(true);
parsePreamble();
while (!eof()) {
parseTopLevelObject();
@@ -129,10 +129,9 @@ public class JetParsing extends AbstractJetParsing {
void parseScript() {
PsiBuilder.Marker fileMarker = mark();
parsePreamble(false);
parsePreamble();
PsiBuilder.Marker scriptMarker = mark();
parseImportDirectives();
PsiBuilder.Marker blockMarker = mark();
@@ -148,7 +147,7 @@ public class JetParsing extends AbstractJetParsing {
* : packageDirective? import*
* ;
*/
private void parsePreamble(boolean imports) {
private void parsePreamble() {
/*
* packageDirective
* : modifiers "package" SimpleName{"."} SEMI?
@@ -180,8 +179,7 @@ public class JetParsing extends AbstractJetParsing {
}
packageDirective.done(PACKAGE_DIRECTIVE);
if(imports)
parseImportDirectives();
parseImportDirectives();
}
/* SimpleName{"."} */
@@ -19,9 +19,7 @@ package org.jetbrains.jet.lang.psi;
import com.intellij.lang.ASTNode;
import com.intellij.psi.util.PsiTreeUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Collections;
import java.util.List;
// SCRIPT: Script declaration
@@ -36,17 +34,6 @@ public class JetScript extends JetDeclarationImpl {
return findNotNullChildByClass(JetBlockExpression.class);
}
@Nullable
public JetImportList getImportList() {
return findChildByClass(JetImportList.class);
}
@NotNull
public List<JetImportDirective> getImportDirectives() {
JetImportList importList = getImportList();
return importList != null ? importList.getImports() : Collections.<JetImportDirective>emptyList();
}
@NotNull
public List<JetDeclaration> getDeclarations() {
return PsiTreeUtil.getChildrenOfTypeAsList(getBlockExpression(), JetDeclaration.class);
@@ -75,13 +75,14 @@ public class ImportsResolver {
private void processImports(@NotNull TopDownAnalysisContext c, @NotNull LookupMode lookupMode) {
for (JetFile file : c.getFiles()) {
if (file.isScript()) continue;
WritableScope fileScope = c.getFileScopes().get(file);
processImportsInFile(lookupMode, fileScope, Lists.newArrayList(file.getImportDirectives()), file.getPackageFqName().isRoot());
}
// SCRIPT: process script import directives
for (JetScript script : c.getScripts().keySet()) {
WritableScope scriptScope = ((ScriptDescriptorImpl) c.getScripts().get(script)).getScopeForBodyResolution();
processImportsInFile(lookupMode, scriptScope, script.getImportDirectives(), true);
processImportsInFile(lookupMode, scriptScope, ((JetFile) script.getContainingFile()).getImportDirectives(), true);
}
}
+3 -2
View File
@@ -1,7 +1,7 @@
JetFile: Import.kts
PACKAGE_DIRECTIVE
<empty list>
SCRIPT
IMPORT_LIST
IMPORT_DIRECTIVE
PsiElement(import)('import')
PsiWhiteSpace(' ')
@@ -23,7 +23,8 @@ JetFile: Import.kts
PsiElement(IDENTIFIER)('ddd')
PsiElement(DOT)('.')
PsiElement(MUL)('*')
PsiWhiteSpace('\n\n')
PsiWhiteSpace('\n\n')
SCRIPT
BLOCK
FUN
PsiElement(fun)('fun')
@@ -28,7 +28,6 @@ import org.jetbrains.jet.lang.psi.IfNotParsed;
import org.jetbrains.jet.lang.psi.JetElement;
import org.jetbrains.jet.lang.psi.JetVisitorVoid;
import java.io.IOException;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
@@ -73,6 +72,7 @@ public abstract class AbstractJetParsingTest extends ParsingTestCase {
}
protected void doParsingTest(@NotNull String filePath) throws Exception {
myFileExt = FileUtil.getExtension(PathUtil.getFileName(filePath));
myFile = createPsiFile(FileUtil.getNameWithoutExtension(PathUtil.getFileName(filePath)), loadFile(filePath));
myFile.acceptChildren(new JetVisitorVoid() {
@@ -88,6 +88,6 @@ public abstract class AbstractJetParsingTest extends ParsingTestCase {
}
});
doCheckResult(myFullDataPath, filePath.replace(".kt", ".txt"), toParseTreeText(myFile, false, false).trim());
doCheckResult(myFullDataPath, filePath.replaceAll("\\.kts?", ".txt"), toParseTreeText(myFile, false, false).trim());
}
}
@@ -31,7 +31,7 @@ import org.jetbrains.jet.parsing.AbstractJetParsingTest;
/** This class is generated by {@link org.jetbrains.jet.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all")
@TestMetadata("compiler/testData/psi")
@InnerTestClasses({JetParsingTestGenerated.Examples.class, JetParsingTestGenerated.FunctionReceivers.class, JetParsingTestGenerated.GreatSyntacticShift.class, JetParsingTestGenerated.Kdoc.class, JetParsingTestGenerated.PropertyDelegate.class, JetParsingTestGenerated.Recovery.class, JetParsingTestGenerated.StringTemplates.class})
@InnerTestClasses({JetParsingTestGenerated.Examples.class, JetParsingTestGenerated.FunctionReceivers.class, JetParsingTestGenerated.GreatSyntacticShift.class, JetParsingTestGenerated.Kdoc.class, JetParsingTestGenerated.PropertyDelegate.class, JetParsingTestGenerated.Recovery.class, JetParsingTestGenerated.Script.class, JetParsingTestGenerated.StringTemplates.class})
public class JetParsingTestGenerated extends AbstractJetParsingTest {
@TestMetadata("AbsentInnerType.kt")
public void testAbsentInnerType() throws Exception {
@@ -39,7 +39,7 @@ public class JetParsingTestGenerated extends AbstractJetParsingTest {
}
public void testAllFilesPresentInPsi() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi"), Pattern.compile("^(.+)\\.kt$"), true);
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi"), Pattern.compile("^(.*)\\.kts?$"), true);
}
@TestMetadata("AnnotatedExpressions.kt")
@@ -456,7 +456,7 @@ public class JetParsingTestGenerated extends AbstractJetParsingTest {
@InnerTestClasses({Examples.Array.class, Examples.Collections.class, Examples.Io.class, Examples.Map.class, Examples.Priorityqueues.class, Examples.Util.class})
public static class Examples extends AbstractJetParsingTest {
public void testAllFilesPresentInExamples() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi/examples"), Pattern.compile("^(.+)\\.kt$"), true);
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi/examples"), Pattern.compile("^(.*)\\.kts?$"), true);
}
@TestMetadata("AnonymousObjects.kt")
@@ -537,7 +537,7 @@ public class JetParsingTestGenerated extends AbstractJetParsingTest {
@TestMetadata("compiler/testData/psi/examples/array")
public static class Array extends AbstractJetParsingTest {
public void testAllFilesPresentInArray() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi/examples/array"), Pattern.compile("^(.+)\\.kt$"), true);
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi/examples/array"), Pattern.compile("^(.*)\\.kts?$"), true);
}
@TestMetadata("MutableArray.kt")
@@ -550,7 +550,7 @@ public class JetParsingTestGenerated extends AbstractJetParsingTest {
@TestMetadata("compiler/testData/psi/examples/collections")
public static class Collections extends AbstractJetParsingTest {
public void testAllFilesPresentInCollections() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi/examples/collections"), Pattern.compile("^(.+)\\.kt$"), true);
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi/examples/collections"), Pattern.compile("^(.*)\\.kts?$"), true);
}
@TestMetadata("ArrayList.kt")
@@ -618,7 +618,7 @@ public class JetParsingTestGenerated extends AbstractJetParsingTest {
@TestMetadata("compiler/testData/psi/examples/io")
public static class Io extends AbstractJetParsingTest {
public void testAllFilesPresentInIo() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi/examples/io"), Pattern.compile("^(.+)\\.kt$"), true);
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi/examples/io"), Pattern.compile("^(.*)\\.kts?$"), true);
}
@TestMetadata("IOSamples.kt")
@@ -631,7 +631,7 @@ public class JetParsingTestGenerated extends AbstractJetParsingTest {
@TestMetadata("compiler/testData/psi/examples/map")
public static class Map extends AbstractJetParsingTest {
public void testAllFilesPresentInMap() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi/examples/map"), Pattern.compile("^(.+)\\.kt$"), true);
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi/examples/map"), Pattern.compile("^(.*)\\.kts?$"), true);
}
@TestMetadata("IMap.kt")
@@ -644,7 +644,7 @@ public class JetParsingTestGenerated extends AbstractJetParsingTest {
@TestMetadata("compiler/testData/psi/examples/priorityqueues")
public static class Priorityqueues extends AbstractJetParsingTest {
public void testAllFilesPresentInPriorityqueues() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi/examples/priorityqueues"), Pattern.compile("^(.+)\\.kt$"), true);
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi/examples/priorityqueues"), Pattern.compile("^(.*)\\.kts?$"), true);
}
@TestMetadata("BinaryHeap.kt")
@@ -667,7 +667,7 @@ public class JetParsingTestGenerated extends AbstractJetParsingTest {
@TestMetadata("compiler/testData/psi/examples/util")
public static class Util extends AbstractJetParsingTest {
public void testAllFilesPresentInUtil() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi/examples/util"), Pattern.compile("^(.+)\\.kt$"), true);
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi/examples/util"), Pattern.compile("^(.*)\\.kts?$"), true);
}
@TestMetadata("Comparison.kt")
@@ -698,7 +698,7 @@ public class JetParsingTestGenerated extends AbstractJetParsingTest {
@TestMetadata("compiler/testData/psi/functionReceivers")
public static class FunctionReceivers extends AbstractJetParsingTest {
public void testAllFilesPresentInFunctionReceivers() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi/functionReceivers"), Pattern.compile("^(.+)\\.kt$"), true);
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi/functionReceivers"), Pattern.compile("^(.*)\\.kts?$"), true);
}
@TestMetadata("FunctionTypesWithFunctionReceivers.kt")
@@ -721,7 +721,7 @@ public class JetParsingTestGenerated extends AbstractJetParsingTest {
@TestMetadata("compiler/testData/psi/greatSyntacticShift")
public static class GreatSyntacticShift extends AbstractJetParsingTest {
public void testAllFilesPresentInGreatSyntacticShift() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi/greatSyntacticShift"), Pattern.compile("^(.+)\\.kt$"), true);
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi/greatSyntacticShift"), Pattern.compile("^(.*)\\.kts?$"), true);
}
@TestMetadata("functionLiterals.kt")
@@ -744,7 +744,7 @@ public class JetParsingTestGenerated extends AbstractJetParsingTest {
@TestMetadata("compiler/testData/psi/kdoc")
public static class Kdoc extends AbstractJetParsingTest {
public void testAllFilesPresentInKdoc() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi/kdoc"), Pattern.compile("^(.+)\\.kt$"), true);
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi/kdoc"), Pattern.compile("^(.*)\\.kts?$"), true);
}
@TestMetadata("AtTags.kt")
@@ -807,7 +807,7 @@ public class JetParsingTestGenerated extends AbstractJetParsingTest {
@TestMetadata("compiler/testData/psi/propertyDelegate")
public static class PropertyDelegate extends AbstractJetParsingTest {
public void testAllFilesPresentInPropertyDelegate() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi/propertyDelegate"), Pattern.compile("^(.+)\\.kt$"), true);
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi/propertyDelegate"), Pattern.compile("^(.*)\\.kts?$"), true);
}
@TestMetadata("BracketsInDelegate.kt")
@@ -875,7 +875,7 @@ public class JetParsingTestGenerated extends AbstractJetParsingTest {
}
public void testAllFilesPresentInRecovery() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi/recovery"), Pattern.compile("^(.+)\\.kt$"), true);
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi/recovery"), Pattern.compile("^(.*)\\.kts?$"), true);
}
@TestMetadata("ForRecovery.kt")
@@ -935,10 +935,43 @@ public class JetParsingTestGenerated extends AbstractJetParsingTest {
}
@TestMetadata("compiler/testData/psi/script")
public static class Script extends AbstractJetParsingTest {
public void testAllFilesPresentInScript() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi/script"), Pattern.compile("^(.*)\\.kts?$"), true);
}
@TestMetadata("ComplexScript.kts")
public void testComplexScript() throws Exception {
doParsingTest("compiler/testData/psi/script/ComplexScript.kts");
}
@TestMetadata("Import.kts")
public void testImport() throws Exception {
doParsingTest("compiler/testData/psi/script/Import.kts");
}
@TestMetadata("Shebang.kts")
public void testShebang() throws Exception {
doParsingTest("compiler/testData/psi/script/Shebang.kts");
}
@TestMetadata("ShebangIncorrect.kts")
public void testShebangIncorrect() throws Exception {
doParsingTest("compiler/testData/psi/script/ShebangIncorrect.kts");
}
@TestMetadata("SimpleScript.kts")
public void testSimpleScript() throws Exception {
doParsingTest("compiler/testData/psi/script/SimpleScript.kts");
}
}
@TestMetadata("compiler/testData/psi/stringTemplates")
public static class StringTemplates extends AbstractJetParsingTest {
public void testAllFilesPresentInStringTemplates() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi/stringTemplates"), Pattern.compile("^(.+)\\.kt$"), true);
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("compiler/testData/psi/stringTemplates"), Pattern.compile("^(.*)\\.kts?$"), true);
}
@TestMetadata("RawStringsWithManyQuotes.kt")
@@ -957,6 +990,7 @@ public class JetParsingTestGenerated extends AbstractJetParsingTest {
suite.addTestSuite(Kdoc.class);
suite.addTestSuite(PropertyDelegate.class);
suite.addTestSuite(Recovery.class);
suite.addTestSuite(Script.class);
suite.addTestSuite(StringTemplates.class);
return suite;
}
@@ -132,7 +132,7 @@ fun main(args: Array<String>) {
}
testClass(javaClass<AbstractJetParsingTest>()) {
model("psi", testMethod = "doParsingTest")
model("psi", testMethod = "doParsingTest", pattern = "^(.*)\\.kts?$")
}
GenerateRangesCodegenTestData.main(array<String>())