diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java index 3317753b646..8a918e918ed 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/parsing/JetParsing.java @@ -107,6 +107,9 @@ public class JetParsing extends AbstractJetParsing { void parseScript() { PsiBuilder.Marker fileMarker = mark(); PsiBuilder.Marker scriptMarker = mark(); + + parseImportDirectives(); + PsiBuilder.Marker blockMarker = mark(); myExpressionParsing.parseStatements(); @@ -167,10 +170,7 @@ public class JetParsing extends AbstractJetParsing { } namespaceHeader.done(NAMESPACE_HEADER); - // TODO: Duplicate with parsing imports in parseToplevelDeclarations - while (at(IMPORT_KEYWORD)) { - parseImportDirective(); - } + parseImportDirectives(); } /* SimpleName{"."} */ @@ -248,6 +248,13 @@ public class JetParsing extends AbstractJetParsing { importDirective.done(IMPORT_DIRECTIVE); } + private void parseImportDirectives() { + // TODO: Duplicate with parsing imports in parseToplevelDeclarations + while (at(IMPORT_KEYWORD)) { + parseImportDirective(); + } + } + private void handleUselessRename() { if (at(AS_KEYWORD)) { PsiBuilder.Marker as = mark(); diff --git a/compiler/testData/psi/script/Import.ktscript b/compiler/testData/psi/script/Import.ktscript new file mode 100644 index 00000000000..a4a39f01e82 --- /dev/null +++ b/compiler/testData/psi/script/Import.ktscript @@ -0,0 +1,4 @@ +import aaa.bbb.Ccc +import ddd.* + +fun foo() = 1 diff --git a/compiler/testData/psi/script/Import.txt b/compiler/testData/psi/script/Import.txt new file mode 100644 index 00000000000..0a6ff977933 --- /dev/null +++ b/compiler/testData/psi/script/Import.txt @@ -0,0 +1,37 @@ +JetFile: Import.ktscript + SCRIPT + IMPORT_DIRECTIVE + PsiElement(import)('import') + PsiWhiteSpace(' ') + DOT_QUALIFIED_EXPRESSION + DOT_QUALIFIED_EXPRESSION + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('aaa') + PsiElement(DOT)('.') + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('bbb') + PsiElement(DOT)('.') + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('Ccc') + PsiWhiteSpace('\n') + IMPORT_DIRECTIVE + PsiElement(import)('import') + PsiWhiteSpace(' ') + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('ddd') + PsiElement(DOT)('.') + PsiElement(MUL)('*') + PsiWhiteSpace('\n\n') + BLOCK + FUN + PsiElement(fun)('fun') + PsiWhiteSpace(' ') + PsiElement(IDENTIFIER)('foo') + VALUE_PARAMETER_LIST + PsiElement(LPAR)('(') + PsiElement(RPAR)(')') + PsiWhiteSpace(' ') + PsiElement(EQ)('=') + PsiWhiteSpace(' ') + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('1')