Namespace blocks

This commit is contained in:
Andrey Breslav
2010-12-15 17:09:30 +03:00
parent 35a824d2fe
commit 921d74d821
9 changed files with 612 additions and 79 deletions
+29
View File
@@ -0,0 +1,29 @@
namespace foo.bar.goo
import foo as bar
namespace foof {
import foo.bar.*;
class Foo {}
namespace bar {
class Bar {}
namespace ns {
class X
class Y
}
}
}
class Bar<T> {}
namespace foo {}
namespace bar {
import sdf
}
+138
View File
@@ -0,0 +1,138 @@
JetFile: NamespaceBlock.jet
NAMESPACE
PsiElement(NAMESPACE_KEYWORD)('namespace')
PsiWhiteSpace(' ')
NAMESPACE_NAME
PsiElement(IDENTIFIER)('foo')
PsiElement(DOT)('.')
PsiElement(IDENTIFIER)('bar')
PsiElement(DOT)('.')
PsiElement(IDENTIFIER)('goo')
PsiWhiteSpace('\n\n')
IMPORT_DIRECTIVE
PsiElement(import)('import')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('foo')
PsiWhiteSpace(' ')
PsiElement(AS_KEYWORD)('as')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('bar')
PsiWhiteSpace('\n\n')
NAMESPACE
PsiElement(NAMESPACE_KEYWORD)('namespace')
PsiWhiteSpace(' ')
NAMESPACE_NAME
PsiElement(IDENTIFIER)('foof')
PsiWhiteSpace(' ')
PsiElement(LBRACE)('{')
PsiWhiteSpace('\n ')
NAMESPACE_BODY
IMPORT_DIRECTIVE
PsiElement(import)('import')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('foo')
PsiElement(DOT)('.')
PsiElement(IDENTIFIER)('bar')
PsiElement(MAP)('.*')
PsiElement(SEMICOLON)(';')
PsiWhiteSpace('\n\n ')
CLASS
PsiElement(CLASS_KEYWORD)('class')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('Foo')
PsiWhiteSpace(' ')
TYPE_PARAMETER_LIST
<empty list>
CLASS_BODY
PsiElement(LBRACE)('{')
PsiElement(RBRACE)('}')
PsiWhiteSpace('\n\n ')
NAMESPACE
PsiElement(NAMESPACE_KEYWORD)('namespace')
PsiWhiteSpace(' ')
NAMESPACE_NAME
PsiElement(IDENTIFIER)('bar')
PsiWhiteSpace(' ')
PsiElement(LBRACE)('{')
PsiWhiteSpace('\n ')
NAMESPACE_BODY
CLASS
PsiElement(CLASS_KEYWORD)('class')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('Bar')
PsiWhiteSpace(' ')
TYPE_PARAMETER_LIST
<empty list>
CLASS_BODY
PsiElement(LBRACE)('{')
PsiElement(RBRACE)('}')
PsiWhiteSpace('\n\n ')
NAMESPACE
PsiElement(NAMESPACE_KEYWORD)('namespace')
PsiWhiteSpace(' ')
NAMESPACE_NAME
PsiElement(IDENTIFIER)('ns')
PsiWhiteSpace(' ')
PsiElement(LBRACE)('{')
PsiWhiteSpace('\n ')
NAMESPACE_BODY
CLASS
PsiElement(CLASS_KEYWORD)('class')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('X')
PsiWhiteSpace('\n\n ')
TYPE_PARAMETER_LIST
<empty list>
CLASS
PsiElement(CLASS_KEYWORD)('class')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('Y')
PsiWhiteSpace('\n ')
TYPE_PARAMETER_LIST
<empty list>
PsiElement(RBRACE)('}')
PsiWhiteSpace('\n ')
PsiElement(RBRACE)('}')
PsiWhiteSpace('\n')
PsiElement(RBRACE)('}')
PsiWhiteSpace('\n\n\n')
CLASS
PsiElement(CLASS_KEYWORD)('class')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('Bar')
TYPE_PARAMETER_LIST
PsiElement(LT)('<')
TYPE_PARAMETER
PsiElement(IDENTIFIER)('T')
PsiElement(GT)('>')
PsiWhiteSpace(' ')
CLASS_BODY
PsiElement(LBRACE)('{')
PsiElement(RBRACE)('}')
PsiWhiteSpace('\n\n')
NAMESPACE
PsiElement(NAMESPACE_KEYWORD)('namespace')
PsiWhiteSpace(' ')
NAMESPACE_NAME
PsiElement(IDENTIFIER)('foo')
PsiWhiteSpace(' ')
PsiElement(LBRACE)('{')
NAMESPACE_BODY
<empty list>
PsiElement(RBRACE)('}')
PsiWhiteSpace('\n\n')
NAMESPACE
PsiElement(NAMESPACE_KEYWORD)('namespace')
PsiWhiteSpace(' ')
NAMESPACE_NAME
PsiElement(IDENTIFIER)('bar')
PsiWhiteSpace(' ')
PsiElement(LBRACE)('{')
PsiWhiteSpace('\n ')
NAMESPACE_BODY
IMPORT_DIRECTIVE
PsiElement(import)('import')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('sdf')
PsiWhiteSpace('\n\n')
PsiElement(RBRACE)('}')
+44
View File
@@ -0,0 +1,44 @@
namespace foo.bar.goo
import foo as
import foo.
import foo.bar.
import foo. as bar
namespace foof {
import foo.bar.* as bar
import foo.bar.* as
import foo as ;
import foo. ;
import foo.bar. ;
import foo. as bar ;
import foo.bar.* as bar ;
import foo.bar.* as ;
namespace foo
class Foo {}
namespace {
class Bar {}
namespace ns {
class X
class Y
}
}
}
dsfgd
class Bar<T> {}
namespace foo
namespace {}
namespace bar {
import sdf
}
+271
View File
@@ -0,0 +1,271 @@
JetFile: NamespaceBlock_ERR.jet
NAMESPACE
PsiElement(NAMESPACE_KEYWORD)('namespace')
PsiWhiteSpace(' ')
NAMESPACE_NAME
PsiElement(IDENTIFIER)('foo')
PsiElement(DOT)('.')
PsiElement(IDENTIFIER)('bar')
PsiElement(DOT)('.')
PsiElement(IDENTIFIER)('goo')
PsiWhiteSpace('\n\n')
IMPORT_DIRECTIVE
PsiElement(import)('import')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('foo')
PsiWhiteSpace(' ')
PsiElement(AS_KEYWORD)('as')
PsiWhiteSpace('\n')
PsiElement(IDENTIFIER)('import')
PsiWhiteSpace(' ')
PsiErrorElement:Expecting namespace or top level declaration
PsiElement(IDENTIFIER)('foo')
PsiErrorElement:Expecting namespace or top level declaration
PsiElement(DOT)('.')
PsiWhiteSpace('\n')
IMPORT_DIRECTIVE
PsiElement(import)('import')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('foo')
PsiElement(DOT)('.')
PsiElement(IDENTIFIER)('bar')
PsiElement(DOT)('.')
PsiWhiteSpace('\n')
PsiElement(IDENTIFIER)('import')
PsiWhiteSpace(' ')
PsiErrorElement:Expecting namespace or top level declaration
PsiElement(IDENTIFIER)('foo')
PsiErrorElement:Expecting namespace or top level declaration
PsiElement(DOT)('.')
PsiWhiteSpace(' ')
PsiErrorElement:Expecting namespace or top level declaration
PsiElement(AS_KEYWORD)('as')
PsiWhiteSpace(' ')
PsiErrorElement:Expecting namespace or top level declaration
PsiElement(IDENTIFIER)('bar')
PsiWhiteSpace('\n\n')
NAMESPACE
PsiElement(NAMESPACE_KEYWORD)('namespace')
PsiWhiteSpace(' ')
NAMESPACE_NAME
PsiElement(IDENTIFIER)('foof')
PsiWhiteSpace(' ')
PsiElement(LBRACE)('{')
PsiWhiteSpace('\n ')
NAMESPACE_BODY
IMPORT_DIRECTIVE
PsiElement(import)('import')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('foo')
PsiElement(DOT)('.')
PsiElement(IDENTIFIER)('bar')
PsiElement(MAP)('.*')
PsiWhiteSpace(' ')
PsiErrorElement:Cannot rename a all imported items to one identifier
PsiElement(AS_KEYWORD)('as')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('bar')
PsiWhiteSpace('\n ')
IMPORT_DIRECTIVE
PsiElement(import)('import')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('foo')
PsiElement(DOT)('.')
PsiElement(IDENTIFIER)('bar')
PsiElement(MAP)('.*')
PsiWhiteSpace(' ')
PsiErrorElement:Cannot rename a all imported items to one identifier
PsiElement(AS_KEYWORD)('as')
PsiWhiteSpace('\n\n ')
PsiElement(IDENTIFIER)('import')
PsiWhiteSpace(' ')
PsiErrorElement:Expecting namespace or top level declaration
PsiElement(IDENTIFIER)('foo')
PsiWhiteSpace(' ')
PsiErrorElement:Expecting namespace or top level declaration
PsiElement(AS_KEYWORD)('as')
PsiWhiteSpace(' ')
PsiErrorElement:Expecting namespace or top level declaration
PsiElement(SEMICOLON)(';')
PsiWhiteSpace('\n ')
IMPORT_DIRECTIVE
PsiElement(import)('import')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('foo')
PsiElement(DOT)('.')
PsiErrorElement:Qualified name must be a '.'-separated identifier list
<empty list>
PsiWhiteSpace(' ')
PsiElement(SEMICOLON)(';')
PsiWhiteSpace('\n ')
IMPORT_DIRECTIVE
PsiElement(import)('import')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('foo')
PsiElement(DOT)('.')
PsiElement(IDENTIFIER)('bar')
PsiElement(DOT)('.')
PsiErrorElement:Qualified name must be a '.'-separated identifier list
<empty list>
PsiWhiteSpace(' ')
PsiElement(SEMICOLON)(';')
PsiWhiteSpace('\n ')
IMPORT_DIRECTIVE
PsiElement(import)('import')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('foo')
PsiElement(DOT)('.')
PsiErrorElement:Qualified name must be a '.'-separated identifier list
<empty list>
PsiWhiteSpace(' ')
PsiElement(AS_KEYWORD)('as')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('bar')
PsiWhiteSpace(' ')
PsiElement(SEMICOLON)(';')
PsiWhiteSpace('\n ')
IMPORT_DIRECTIVE
PsiElement(import)('import')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('foo')
PsiElement(DOT)('.')
PsiElement(IDENTIFIER)('bar')
PsiElement(MAP)('.*')
PsiWhiteSpace(' ')
PsiErrorElement:Cannot rename a all imported items to one identifier
PsiElement(AS_KEYWORD)('as')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('bar')
PsiWhiteSpace(' ')
PsiElement(SEMICOLON)(';')
PsiWhiteSpace('\n ')
IMPORT_DIRECTIVE
PsiElement(import)('import')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('foo')
PsiElement(DOT)('.')
PsiElement(IDENTIFIER)('bar')
PsiElement(MAP)('.*')
PsiWhiteSpace(' ')
PsiErrorElement:Cannot rename a all imported items to one identifier
PsiElement(AS_KEYWORD)('as')
PsiWhiteSpace(' ')
PsiElement(SEMICOLON)(';')
PsiWhiteSpace('\n\n ')
NAMESPACE
PsiElement(NAMESPACE_KEYWORD)('namespace')
PsiWhiteSpace(' ')
NAMESPACE_NAME
PsiElement(IDENTIFIER)('foo')
PsiErrorElement:A namespace block in '{...}' expected
<empty list>
PsiWhiteSpace('\n\n ')
CLASS
PsiElement(CLASS_KEYWORD)('class')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('Foo')
PsiWhiteSpace(' ')
TYPE_PARAMETER_LIST
<empty list>
CLASS_BODY
PsiElement(LBRACE)('{')
PsiElement(RBRACE)('}')
PsiWhiteSpace('\n ')
NAMESPACE
PsiElement(NAMESPACE_KEYWORD)('namespace')
PsiErrorElement:Expecting namespace name
<empty list>
PsiWhiteSpace(' ')
PsiElement(LBRACE)('{')
PsiWhiteSpace('\n ')
NAMESPACE_BODY
CLASS
PsiElement(CLASS_KEYWORD)('class')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('Bar')
PsiWhiteSpace(' ')
TYPE_PARAMETER_LIST
<empty list>
CLASS_BODY
PsiElement(LBRACE)('{')
PsiElement(RBRACE)('}')
PsiWhiteSpace('\n\n ')
NAMESPACE
PsiElement(NAMESPACE_KEYWORD)('namespace')
PsiWhiteSpace(' ')
NAMESPACE_NAME
PsiElement(IDENTIFIER)('ns')
PsiWhiteSpace(' ')
PsiElement(LBRACE)('{')
PsiWhiteSpace('\n ')
NAMESPACE_BODY
CLASS
PsiElement(CLASS_KEYWORD)('class')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('X')
PsiWhiteSpace('\n\n ')
TYPE_PARAMETER_LIST
<empty list>
CLASS
PsiElement(CLASS_KEYWORD)('class')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('Y')
PsiWhiteSpace('\n ')
TYPE_PARAMETER_LIST
<empty list>
PsiElement(RBRACE)('}')
PsiWhiteSpace('\n ')
PsiElement(RBRACE)('}')
PsiWhiteSpace('\n')
PsiElement(RBRACE)('}')
PsiWhiteSpace('\n\n')
PsiErrorElement:Expecting namespace or top level declaration
PsiElement(IDENTIFIER)('dsfgd')
PsiWhiteSpace('\n\n')
CLASS
PsiElement(CLASS_KEYWORD)('class')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('Bar')
TYPE_PARAMETER_LIST
PsiElement(LT)('<')
TYPE_PARAMETER
PsiElement(IDENTIFIER)('T')
PsiElement(GT)('>')
PsiWhiteSpace(' ')
CLASS_BODY
PsiElement(LBRACE)('{')
PsiElement(RBRACE)('}')
PsiWhiteSpace('\n\n')
NAMESPACE
PsiElement(NAMESPACE_KEYWORD)('namespace')
PsiWhiteSpace(' ')
NAMESPACE_NAME
PsiElement(IDENTIFIER)('foo')
PsiErrorElement:A namespace block in '{...}' expected
<empty list>
PsiWhiteSpace('\n\n')
NAMESPACE
PsiElement(NAMESPACE_KEYWORD)('namespace')
PsiErrorElement:Expecting namespace name
<empty list>
PsiWhiteSpace(' ')
PsiElement(LBRACE)('{')
NAMESPACE_BODY
<empty list>
PsiElement(RBRACE)('}')
PsiWhiteSpace('\n\n')
NAMESPACE
PsiElement(NAMESPACE_KEYWORD)('namespace')
PsiWhiteSpace(' ')
NAMESPACE_NAME
PsiElement(IDENTIFIER)('bar')
PsiWhiteSpace(' ')
PsiElement(LBRACE)('{')
PsiWhiteSpace('\n ')
NAMESPACE_BODY
IMPORT_DIRECTIVE
PsiElement(import)('import')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('sdf')
PsiWhiteSpace('\n\n')
PsiElement(RBRACE)('}')