Modifiers for namespaces fixed
This commit is contained in:
@@ -11,7 +11,7 @@ preamble
|
|||||||
;
|
;
|
||||||
|
|
||||||
namespaceHeader
|
namespaceHeader
|
||||||
: "namespace" SimpleName{"."} SEMI?
|
: modifiers "namespace" SimpleName{"."} SEMI?
|
||||||
;
|
;
|
||||||
|
|
||||||
import
|
import
|
||||||
|
|||||||
@@ -337,7 +337,7 @@ public class JetExpressionParsing extends AbstractJetParsing {
|
|||||||
parseFunctionLiteral();
|
parseFunctionLiteral();
|
||||||
}
|
}
|
||||||
else if (!parseLiteralConstant()) {
|
else if (!parseLiteralConstant()) {
|
||||||
// TODO
|
// TODO: betters recovery if FIRST(expression) did not match
|
||||||
errorAndAdvance("Expecting an expression");
|
errorAndAdvance("Expecting an expression");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -110,16 +110,21 @@ public class JetParsing extends AbstractJetParsing {
|
|||||||
private void parsePreamble() {
|
private void parsePreamble() {
|
||||||
/*
|
/*
|
||||||
* namespaceHeader
|
* namespaceHeader
|
||||||
* : "namespace" SimpleName{"."} SEMI?
|
* : modifiers "namespace" SimpleName{"."} SEMI?
|
||||||
* ;
|
* ;
|
||||||
*/
|
*/
|
||||||
|
PsiBuilder.Marker firstEntry = mark();
|
||||||
|
parseModifierList();
|
||||||
|
|
||||||
if (at(NAMESPACE_KEYWORD)) {
|
if (at(NAMESPACE_KEYWORD)) {
|
||||||
// TODO: Modifiers
|
firstEntry.drop();
|
||||||
advance(); // NAMESPACE_KEYWORD
|
advance(); // NAMESPACE_KEYWORD
|
||||||
|
|
||||||
parseNamespaceName();
|
parseNamespaceName();
|
||||||
|
|
||||||
consumeIf(SEMICOLON);
|
consumeIf(SEMICOLON);
|
||||||
|
} else {
|
||||||
|
firstEntry.rollbackTo();
|
||||||
}
|
}
|
||||||
|
|
||||||
while (at(IMPORT_KEYWORD)) {
|
while (at(IMPORT_KEYWORD)) {
|
||||||
@@ -384,7 +389,6 @@ public class JetParsing extends AbstractJetParsing {
|
|||||||
* ;
|
* ;
|
||||||
*/
|
*/
|
||||||
private JetNodeType parseNamespaceBlock() {
|
private JetNodeType parseNamespaceBlock() {
|
||||||
// TODO: Modifiers
|
|
||||||
assert _at(NAMESPACE_KEYWORD);
|
assert _at(NAMESPACE_KEYWORD);
|
||||||
advance(); // NAMESPACE_KEYWORD
|
advance(); // NAMESPACE_KEYWORD
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
public [a] namespace name;
|
||||||
|
|
||||||
|
[a] namespace a {
|
||||||
|
val foo
|
||||||
|
|
||||||
|
private namespace b {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
JetFile: NamespaceModifiers.jet
|
||||||
|
NAMESPACE
|
||||||
|
MODIFIER_LIST
|
||||||
|
PsiElement(public)('public')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
ATTRIBUTE_ANNOTATION
|
||||||
|
PsiElement(LBRACKET)('[')
|
||||||
|
ATTRIBUTE
|
||||||
|
USER_TYPE
|
||||||
|
PsiElement(IDENTIFIER)('a')
|
||||||
|
PsiElement(RBRACKET)(']')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PsiElement(namespace)('namespace')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
NAMESPACE_NAME
|
||||||
|
PsiElement(IDENTIFIER)('name')
|
||||||
|
PsiElement(SEMICOLON)(';')
|
||||||
|
PsiWhiteSpace('\n\n')
|
||||||
|
NAMESPACE
|
||||||
|
MODIFIER_LIST
|
||||||
|
ATTRIBUTE_ANNOTATION
|
||||||
|
PsiElement(LBRACKET)('[')
|
||||||
|
ATTRIBUTE
|
||||||
|
USER_TYPE
|
||||||
|
PsiElement(IDENTIFIER)('a')
|
||||||
|
PsiElement(RBRACKET)(']')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PsiElement(namespace)('namespace')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
NAMESPACE_NAME
|
||||||
|
PsiElement(IDENTIFIER)('a')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PsiElement(LBRACE)('{')
|
||||||
|
PsiWhiteSpace('\n ')
|
||||||
|
NAMESPACE_BODY
|
||||||
|
PROPERTY
|
||||||
|
PsiElement(val)('val')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PsiElement(IDENTIFIER)('foo')
|
||||||
|
PsiWhiteSpace('\n\n ')
|
||||||
|
NAMESPACE
|
||||||
|
MODIFIER_LIST
|
||||||
|
PsiElement(private)('private')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PsiElement(namespace)('namespace')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
NAMESPACE_NAME
|
||||||
|
PsiElement(IDENTIFIER)('b')
|
||||||
|
PsiWhiteSpace(' ')
|
||||||
|
PsiElement(LBRACE)('{')
|
||||||
|
PsiWhiteSpace('\n\n ')
|
||||||
|
NAMESPACE_BODY
|
||||||
|
<empty list>
|
||||||
|
PsiElement(RBRACE)('}')
|
||||||
|
PsiWhiteSpace('\n')
|
||||||
|
PsiElement(RBRACE)('}')
|
||||||
Reference in New Issue
Block a user