diff --git a/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java b/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java index 2f6cd5b0f22..f5ae2ea66bc 100644 --- a/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java +++ b/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java @@ -118,11 +118,16 @@ public class JetParsing extends AbstractJetParsing { parseModifierList(); if (at(NAMESPACE_KEYWORD)) { - firstEntry.drop(); advance(); // NAMESPACE_KEYWORD parseNamespaceName(); + if (at(LBRACE)) { + firstEntry.rollbackTo(); + return; + } + firstEntry.drop(); + consumeIf(SEMICOLON); } else { firstEntry.rollbackTo(); diff --git a/idea/testData/psi/NamespaceBlockFirst.jet b/idea/testData/psi/NamespaceBlockFirst.jet new file mode 100644 index 00000000000..d3324536a1a --- /dev/null +++ b/idea/testData/psi/NamespaceBlockFirst.jet @@ -0,0 +1,4 @@ +namespace foobar { + val a = 1 + val b = foobar.a +} diff --git a/idea/testData/psi/NamespaceBlockFirst.txt b/idea/testData/psi/NamespaceBlockFirst.txt new file mode 100644 index 00000000000..a115f637a28 --- /dev/null +++ b/idea/testData/psi/NamespaceBlockFirst.txt @@ -0,0 +1,36 @@ +JetFile: NamespaceBlockFirst.jet + NAMESPACE + NAMESPACE + PsiElement(namespace)('namespace') + PsiWhiteSpace(' ') + NAMESPACE_NAME + PsiElement(IDENTIFIER)('foobar') + PsiWhiteSpace(' ') + PsiElement(LBRACE)('{') + PsiWhiteSpace('\n ') + NAMESPACE_BODY + PROPERTY + PsiElement(val)('val') + PsiWhiteSpace(' ') + PsiElement(IDENTIFIER)('a') + PsiWhiteSpace(' ') + PsiElement(EQ)('=') + PsiWhiteSpace(' ') + INTEGER_CONSTANT + PsiElement(INTEGER_LITERAL)('1') + PsiWhiteSpace('\n ') + PROPERTY + PsiElement(val)('val') + PsiWhiteSpace(' ') + PsiElement(IDENTIFIER)('b') + PsiWhiteSpace(' ') + PsiElement(EQ)('=') + PsiWhiteSpace(' ') + DOT_QUALIFIED_EXPRESSION + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foobar') + PsiElement(DOT)('.') + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('a') + PsiWhiteSpace('\n') + PsiElement(RBRACE)('}') \ No newline at end of file