diff --git a/grammar/src/toplevel.grm b/grammar/src/toplevel.grm index 88c02fdcd6b..75c5a1e919e 100644 --- a/grammar/src/toplevel.grm +++ b/grammar/src/toplevel.grm @@ -15,7 +15,7 @@ namespaceHeader ; import - : "import" SimpleName{"."} ("." "*" | "as" SimpleName)? + : "import" ("namespace" ".")? SimpleName{"."} ("." "*" | "as" SimpleName)? SEMI? ; toplevelObject diff --git a/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java b/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java index 173ed7eab0e..420e95ee0fc 100644 --- a/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java +++ b/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java @@ -146,7 +146,7 @@ public class JetParsing extends AbstractJetParsing { /* * import - * : "import" SimpleName{"."} ("." "*" | "as" SimpleName)? + * : "import" ("namespace" ".")? SimpleName{"."} ("." "*" | "as" SimpleName)? SEMI? * ; */ private void parseImportDirective() { @@ -154,26 +154,31 @@ public class JetParsing extends AbstractJetParsing { PsiBuilder.Marker importDirective = mark(); advance(); // IMPORT_KEYWORD - expect(IDENTIFIER, "Expecting qualified name", TokenSet.create(DOT, MAP)); - while (at(DOT)) { - advance(); // DOT - if (at(IDENTIFIER)) { - advance(); // IDENTIFIER - } - else if (at(MUL)) { - advance(); // MUL - handleUselessRename(); - break; - } - else { - errorWithRecovery("Qualified name must be a '.'-separated identifier list", TokenSet.create(AS_KEYWORD, DOT, MAP, SEMICOLON)); - } + + PsiBuilder.Marker reference = mark(); + + if (at(NAMESPACE_KEYWORD)) { + advance(); // NAMESPACE_KEYWORD + expect(DOT, "Expecting '.'", TokenSet.create(IDENTIFIER, MUL, SEMICOLON)); } - if (at(MAP)) { - advance(); // MAP + + expect(IDENTIFIER, "Expecting qualified name", TokenSet.create(DOT, AS_KEYWORD)); + while (at(DOT) && lookahead(1) != MUL) { + PsiBuilder.Marker precede = reference.precede(); + reference.done(REFERENCE_EXPRESSION); + reference = precede; + advance(); // DOT + expect(IDENTIFIER, "Qualified name must be a '.'-separated identifier list", TokenSet.create(AS_KEYWORD, DOT, SEMICOLON)); + } + reference.done(REFERENCE_EXPRESSION); + + if (at(DOT)) { + advance(); // DOT + assert _at(MUL); + advance(); // MUL handleUselessRename(); } - else if (at(AS_KEYWORD)) { + if (at(AS_KEYWORD)) { advance(); // AS_KEYWORD expect(IDENTIFIER, "Expecting identifier", TokenSet.create(SEMICOLON)); } diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetImportDirective.java b/idea/src/org/jetbrains/jet/lang/psi/JetImportDirective.java index 980837ff222..00695a7706f 100644 --- a/idea/src/org/jetbrains/jet/lang/psi/JetImportDirective.java +++ b/idea/src/org/jetbrains/jet/lang/psi/JetImportDirective.java @@ -4,6 +4,7 @@ import com.intellij.lang.ASTNode; import com.intellij.psi.tree.IElementType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jet.JetNodeTypes; import org.jetbrains.jet.lexer.JetTokens; /** @@ -19,23 +20,13 @@ public class JetImportDirective extends JetElement { visitor.visitImportDirective(this); } - @NotNull - public String getImportedName() { - StringBuilder answer = new StringBuilder(); - ASTNode childNode = getNode().getFirstChildNode(); - while (childNode != null) { - IElementType tt = childNode.getElementType(); - if (tt == JetTokens.MAP || tt == JetTokens.AS_KEYWORD) break; - if (tt == JetTokens.IDENTIFIER || tt == JetTokens.DOT) { - answer.append(childNode.getText()); - } - childNode = childNode.getTreeNext(); - } - return answer.toString(); + @Nullable @IfNotParsed + public JetReferenceExpression getImportedName() { + return (JetReferenceExpression) findChildByType(JetNodeTypes.REFERENCE_EXPRESSION); } @Nullable - private ASTNode getAliasNameNode() { + public ASTNode getAliasNameNode() { boolean asPassed = false; ASTNode childNode = getNode().getFirstChildNode(); while (childNode != null) { @@ -60,6 +51,6 @@ public class JetImportDirective extends JetElement { } public boolean isAllUnder() { - return getNode().findChildByType(JetTokens.MAP) != null; + return getNode().findChildByType(JetTokens.MUL) != null; } } diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetReferenceExpression.java b/idea/src/org/jetbrains/jet/lang/psi/JetReferenceExpression.java index a31c73b3098..3bee8e2514b 100644 --- a/idea/src/org/jetbrains/jet/lang/psi/JetReferenceExpression.java +++ b/idea/src/org/jetbrains/jet/lang/psi/JetReferenceExpression.java @@ -31,8 +31,10 @@ public class JetReferenceExpression extends JetExpression { return findChildByClass(JetReferenceExpression.class); } + @Nullable @IfNotParsed public String getReferencedName() { - return getNode().findChildByType(REFERENCE_TOKENS).getText(); + ASTNode node = getNode().findChildByType(REFERENCE_TOKENS); + return node == null ? null : node.getText(); } @Override @@ -47,6 +49,7 @@ public class JetReferenceExpression extends JetExpression { @Override public PsiReference getReference() { + if (getReferencedName() == null) return null; return new PsiReference() { @Override public PsiElement getElement() { diff --git a/idea/src/org/jetbrains/jet/lexer/Jet.flex b/idea/src/org/jetbrains/jet/lexer/Jet.flex index a79342778da..41ea7b7c0fc 100644 --- a/idea/src/org/jetbrains/jet/lexer/Jet.flex +++ b/idea/src/org/jetbrains/jet/lexer/Jet.flex @@ -136,8 +136,8 @@ RAW_STRING_LITERAL = {THREE_QUO} {QUO_STRING_CHAR}* {THREE_QUO}? "||" { return JetTokens.OROR ; } "?." { return JetTokens.SAFE_ACCESS;} "?:" { return JetTokens.ELVIS ; } - ".*" { return JetTokens.MAP ; } - ".?" { return JetTokens.FILTER ; } +// ".*" { return JetTokens.MAP ; } +// ".?" { return JetTokens.FILTER ; } "*=" { return JetTokens.MULTEQ ; } "/=" { return JetTokens.DIVEQ ; } "%=" { return JetTokens.PERCEQ ; } diff --git a/idea/src/org/jetbrains/jet/lexer/JetTokens.java b/idea/src/org/jetbrains/jet/lexer/JetTokens.java index ede761524ca..0dfb6febc87 100644 --- a/idea/src/org/jetbrains/jet/lexer/JetTokens.java +++ b/idea/src/org/jetbrains/jet/lexer/JetTokens.java @@ -88,8 +88,8 @@ public interface JetTokens { JetToken OROR = new JetToken("OROR"); JetToken SAFE_ACCESS = new JetToken("SAFE_ACCESS"); JetToken ELVIS = new JetToken("ELVIS"); - JetToken MAP = new JetToken("MAP"); - JetToken FILTER = new JetToken("FILTER"); +// JetToken MAP = new JetToken("MAP"); +// JetToken FILTER = new JetToken("FILTER"); JetToken QUEST = new JetToken("QUEST"); JetToken COLON = new JetToken("COLON"); JetToken SEMICOLON = new JetToken("SEMICOLON"); @@ -160,6 +160,8 @@ public interface JetTokens { TokenSet OPERATIONS = TokenSet.create(AS_KEYWORD, IS_KEYWORD, IN_KEYWORD, DOT, PLUSPLUS, MINUSMINUS, MUL, PLUS, MINUS, EXCL, DIV, PERC, LT, GT, LTEQ, GTEQ, EQEQEQ, ARROW, EXCLEQEQEQ, EQEQ, EXCLEQ, ANDAND, OROR, - SAFE_ACCESS, ELVIS, MAP, FILTER, QUEST, COLON, SEMICOLON, RANGE, EQ, MULTEQ, DIVEQ, PERCEQ, PLUSEQ, MINUSEQ, + SAFE_ACCESS, ELVIS, +// MAP, FILTER, + QUEST, COLON, SEMICOLON, RANGE, EQ, MULTEQ, DIVEQ, PERCEQ, PLUSEQ, MINUSEQ, NOT_IN, NOT_IS, HASH, IDENTIFIER, LABEL_IDENTIFIER, ATAT, AT); } diff --git a/idea/src/org/jetbrains/jet/lexer/_JetLexer.java b/idea/src/org/jetbrains/jet/lexer/_JetLexer.java index fe64124121e..d286218bdd8 100644 --- a/idea/src/org/jetbrains/jet/lexer/_JetLexer.java +++ b/idea/src/org/jetbrains/jet/lexer/_JetLexer.java @@ -1,4 +1,4 @@ -/* The following code was generated by JFlex 1.4.3 on 2/24/11 7:13 PM */ +/* The following code was generated by JFlex 1.4.3 on 3/5/11 4:42 PM */ /* It's an automatically generated code. Do not modify it. */ package org.jetbrains.jet.lexer; @@ -13,7 +13,7 @@ import org.jetbrains.jet.lexer.JetTokens; /** * This class is a scanner generated by * JFlex 1.4.3 - * on 2/24/11 7:13 PM from the specification file + * on 3/5/11 4:42 PM from the specification file * /Users/abreslav/work/jet/idea/src/org/jetbrains/jet/lexer/Jet.flex */ class _JetLexer implements FlexLexer { @@ -145,22 +145,21 @@ class _JetLexer implements FlexLexer { "\1\23\1\24\1\25\1\26\1\27\1\30\1\31\1\32"+ "\1\33\1\34\1\35\1\36\1\0\1\36\1\0\1\37"+ "\1\0\1\40\1\0\1\41\1\42\1\43\1\44\1\45"+ - "\1\0\2\2\1\36\1\46\1\47\1\50\1\51\1\52"+ - "\1\53\2\12\3\13\3\3\1\54\7\3\1\55\1\56"+ - "\1\57\11\3\1\60\1\61\1\62\1\0\1\63\1\64"+ - "\1\65\1\66\1\67\1\70\1\71\1\72\1\73\1\74"+ - "\1\75\1\36\1\3\2\0\1\43\1\76\2\0\1\35"+ - "\3\0\1\13\1\77\1\3\1\100\6\3\1\101\6\3"+ - "\1\102\1\103\4\3\1\104\1\105\1\106\1\107\1\110"+ - "\1\111\1\37\1\40\1\0\2\76\1\0\1\36\2\0"+ - "\1\3\1\112\1\3\1\113\2\3\1\114\1\115\1\116"+ - "\5\3\1\117\1\3\1\120\1\43\1\0\1\36\1\0"+ - "\3\3\1\121\1\3\1\122\2\3\1\123\1\124\1\125"+ - "\1\77\3\3\1\126\1\127\1\130\5\3\1\131\1\132"+ - "\1\133"; + "\1\0\2\2\1\36\1\46\1\47\1\50\1\51\2\12"+ + "\3\13\3\3\1\52\7\3\1\53\1\54\1\55\11\3"+ + "\1\56\1\57\1\60\1\0\1\61\1\62\1\63\1\64"+ + "\1\65\1\66\1\67\1\70\1\71\1\72\1\73\1\36"+ + "\1\3\2\0\1\43\1\74\2\0\1\35\3\0\1\13"+ + "\1\75\1\3\1\76\6\3\1\77\6\3\1\100\1\101"+ + "\4\3\1\102\1\103\1\104\1\105\1\106\1\107\1\37"+ + "\1\40\1\0\2\74\1\0\1\36\2\0\1\3\1\110"+ + "\1\3\1\111\2\3\1\112\1\113\1\114\5\3\1\115"+ + "\1\3\1\116\1\43\1\0\1\36\1\0\3\3\1\117"+ + "\1\3\1\120\2\3\1\121\1\122\1\123\1\75\3\3"+ + "\1\124\1\125\1\126\5\3\1\127\1\130\1\131"; private static int [] zzUnpackAction() { - int [] result = new int[212]; + int [] result = new int[210]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -193,28 +192,28 @@ class _JetLexer implements FlexLexer { "\0\103\0\103\0\103\0\103\0\103\0\103\0\103\0\103"+ "\0\103\0\103\0\u09f2\0\u0a35\0\u0a78\0\u0abb\0\u0afe\0\u0b41"+ "\0\u0b84\0\103\0\u0bc7\0\u0c0a\0\103\0\103\0\u0c4d\0\u0c90"+ - "\0\u0cd3\0\u0d16\0\103\0\103\0\103\0\103\0\103\0\103"+ - "\0\103\0\u0d59\0\u0d9c\0\u0ddf\0\u0e22\0\u0e65\0\u0ea8\0\u0eeb"+ - "\0\311\0\u0f2e\0\u0f71\0\u0fb4\0\u0ff7\0\u103a\0\u107d\0\u10c0"+ - "\0\311\0\311\0\311\0\u1103\0\u1146\0\u1189\0\u11cc\0\u120f"+ - "\0\u1252\0\u1295\0\u12d8\0\u131b\0\311\0\u135e\0\103\0\u13a1"+ - "\0\u13e4\0\103\0\103\0\103\0\103\0\103\0\103\0\103"+ - "\0\103\0\103\0\103\0\u1427\0\103\0\u146a\0\u14ad\0\u14f0"+ - "\0\u1533\0\u1576\0\u15b9\0\u15b9\0\u15fc\0\u163f\0\u1682\0\103"+ - "\0\u16c5\0\u1708\0\311\0\u174b\0\u178e\0\u17d1\0\u1814\0\u1857"+ - "\0\u189a\0\311\0\u18dd\0\u1920\0\u1963\0\u19a6\0\u19e9\0\u1a2c"+ - "\0\311\0\311\0\u1a6f\0\u1ab2\0\u1af5\0\u1b38\0\311\0\311"+ - "\0\103\0\103\0\103\0\103\0\103\0\103\0\u1b7b\0\u1bbe"+ - "\0\103\0\u1c01\0\u1c44\0\u1c87\0\u1cca\0\u1d0d\0\311\0\u1d50"+ - "\0\311\0\u1d93\0\u1dd6\0\311\0\u1e19\0\311\0\u1e5c\0\u1e9f"+ - "\0\u1ee2\0\u1f25\0\u1f68\0\311\0\u1fab\0\311\0\103\0\u1fee"+ - "\0\u15b9\0\u2031\0\u2074\0\u20b7\0\u20fa\0\311\0\u213d\0\311"+ - "\0\u2180\0\u21c3\0\311\0\311\0\311\0\103\0\u2206\0\u2249"+ - "\0\u228c\0\311\0\311\0\311\0\u22cf\0\u2312\0\u2355\0\u2398"+ - "\0\u23db\0\311\0\311\0\311"; + "\0\u0cd3\0\u0d16\0\103\0\103\0\103\0\103\0\103\0\u0d59"+ + "\0\u0d9c\0\u0ddf\0\u0e22\0\u0e65\0\u0ea8\0\u0eeb\0\311\0\u0f2e"+ + "\0\u0f71\0\u0fb4\0\u0ff7\0\u103a\0\u107d\0\u10c0\0\311\0\311"+ + "\0\311\0\u1103\0\u1146\0\u1189\0\u11cc\0\u120f\0\u1252\0\u1295"+ + "\0\u12d8\0\u131b\0\311\0\u135e\0\103\0\u13a1\0\u13e4\0\103"+ + "\0\103\0\103\0\103\0\103\0\103\0\103\0\103\0\103"+ + "\0\103\0\u1427\0\103\0\u146a\0\u14ad\0\u14f0\0\u1533\0\u1576"+ + "\0\u15b9\0\u15b9\0\u15fc\0\u163f\0\u1682\0\103\0\u16c5\0\u1708"+ + "\0\311\0\u174b\0\u178e\0\u17d1\0\u1814\0\u1857\0\u189a\0\311"+ + "\0\u18dd\0\u1920\0\u1963\0\u19a6\0\u19e9\0\u1a2c\0\311\0\311"+ + "\0\u1a6f\0\u1ab2\0\u1af5\0\u1b38\0\311\0\311\0\103\0\103"+ + "\0\103\0\103\0\103\0\103\0\u1b7b\0\u1bbe\0\103\0\u1c01"+ + "\0\u1c44\0\u1c87\0\u1cca\0\u1d0d\0\311\0\u1d50\0\311\0\u1d93"+ + "\0\u1dd6\0\311\0\u1e19\0\311\0\u1e5c\0\u1e9f\0\u1ee2\0\u1f25"+ + "\0\u1f68\0\311\0\u1fab\0\311\0\103\0\u1fee\0\u15b9\0\u2031"+ + "\0\u2074\0\u20b7\0\u20fa\0\311\0\u213d\0\311\0\u2180\0\u21c3"+ + "\0\311\0\311\0\311\0\103\0\u2206\0\u2249\0\u228c\0\311"+ + "\0\311\0\311\0\u22cf\0\u2312\0\u2355\0\u2398\0\u23db\0\311"+ + "\0\311\0\311"; private static int [] zzUnpackRowMap() { - int [] result = new int[212]; + int [] result = new int[210]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -258,212 +257,212 @@ class _JetLexer implements FlexLexer { "\1\73\1\74\45\0\1\75\102\0\1\76\23\0\1\77"+ "\12\0\1\77\1\100\1\101\1\61\1\62\1\63\1\64"+ "\10\0\1\64\3\0\1\100\6\0\1\62\1\101\3\0"+ - "\1\61\3\0\1\62\24\0\1\102\10\0\1\103\1\0"+ - "\1\102\4\0\1\104\45\0\1\105\36\0\1\106\34\0"+ - "\1\107\3\0\1\110\16\0\13\16\1\0\11\16\1\111"+ - "\1\112\54\16\13\113\1\0\12\113\1\114\1\115\53\113"+ - "\1\0\2\4\1\0\2\4\1\0\1\4\4\0\5\4"+ - "\1\0\1\4\1\0\1\4\3\0\1\4\1\116\1\4"+ - "\1\117\7\4\1\120\14\4\24\0\2\4\1\0\2\4"+ + "\1\61\3\0\1\62\24\0\1\102\12\0\1\102\4\0"+ + "\1\103\104\0\1\104\34\0\1\105\3\0\1\106\16\0"+ + "\13\16\1\0\11\16\1\107\1\110\54\16\13\111\1\0"+ + "\12\111\1\112\1\113\53\111\1\0\2\4\1\0\2\4"+ "\1\0\1\4\4\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\4\4\1\121\23\4\24\0\2\4\1\0\2\4"+ - "\1\0\1\4\4\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\7\4\1\122\13\4\1\123\4\4\24\0\2\4"+ - "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\12\4\1\124\10\4\1\125\4\4"+ + "\3\0\1\4\1\114\1\4\1\115\7\4\1\116\14\4"+ "\24\0\2\4\1\0\2\4\1\0\1\4\4\0\5\4"+ - "\1\0\1\4\1\0\1\4\3\0\14\4\1\126\1\127"+ - "\4\4\1\130\5\4\24\0\2\4\1\0\2\4\1\0"+ - "\1\4\4\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\1\131\3\4\1\132\11\4\1\133\11\4\24\0\2\4"+ - "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\17\4\1\134\10\4\24\0\2\4"+ - "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\3\4\1\135\24\4\24\0\2\4"+ - "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\1\4\1\136\10\4\1\137\1\140"+ - "\14\4\24\0\2\4\1\0\2\4\1\0\1\4\4\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\14\4\1\141"+ - "\13\4\24\0\2\4\1\0\2\4\1\0\1\4\4\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\22\4\1\142"+ - "\5\4\24\0\2\4\1\0\2\4\1\0\1\4\4\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\22\4\1\143"+ - "\5\4\24\0\2\4\1\0\2\4\1\0\1\4\4\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\1\4\1\144"+ - "\26\4\24\0\2\4\1\0\2\4\1\0\1\4\4\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\12\4\1\145"+ - "\15\4\103\0\1\146\3\0\1\147\57\0\1\150\16\0"+ - "\1\151\102\0\1\152\1\0\1\153\100\0\1\154\102\0"+ - "\1\155\107\0\1\156\103\0\1\157\35\0\1\160\46\0"+ - "\1\161\72\0\1\162\23\0\1\102\12\0\1\102\4\0"+ - "\1\163\62\0\1\164\12\0\1\164\3\0\1\62\2\0"+ - "\1\164\22\0\1\62\10\0\1\62\2\0\1\164\21\0"+ - "\2\65\1\0\2\65\1\165\1\65\4\0\5\65\1\0"+ - "\1\65\1\0\1\65\3\0\30\65\24\0\2\66\1\0"+ - "\2\66\1\0\1\66\4\0\5\66\1\0\1\66\1\0"+ - "\1\66\3\0\30\66\25\0\1\166\1\0\1\166\2\0"+ - "\1\166\5\0\4\166\1\0\1\166\1\0\1\166\3\0"+ - "\30\166\24\0\2\70\1\0\2\70\1\0\1\70\4\0"+ - "\5\70\1\0\1\70\1\0\1\70\3\0\30\70\25\0"+ - "\1\167\1\0\1\167\2\0\1\167\5\0\4\167\1\0"+ - "\1\167\1\0\1\167\3\0\30\167\23\0\13\73\1\0"+ - "\67\73\12\170\1\171\70\170\1\0\1\77\12\0\1\77"+ - "\3\0\1\62\1\172\1\64\10\0\1\64\12\0\1\62"+ - "\10\0\1\62\23\0\1\173\2\100\10\173\1\0\1\100"+ - "\1\173\1\100\1\174\1\100\1\175\1\100\1\173\1\176"+ - "\4\173\1\100\1\173\1\100\1\173\1\176\1\100\7\173"+ - "\2\100\3\173\1\174\3\173\1\100\23\173\1\0\1\101"+ - "\12\0\1\101\2\0\1\61\1\0\1\177\31\0\1\61"+ - "\30\0\1\102\12\0\1\102\3\0\1\62\1\0\1\64"+ - "\10\0\1\64\12\0\1\62\10\0\1\62\23\0\13\16"+ - "\1\0\67\16\13\113\1\0\12\113\1\114\1\200\66\113"+ - "\1\0\67\113\27\0\1\201\54\0\2\4\1\0\2\4"+ - "\1\0\1\4\4\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\2\4\1\202\25\4\24\0\2\4\1\0\2\4"+ - "\1\0\1\4\4\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\21\4\1\203\6\4\24\0\2\4\1\0\2\4"+ - "\1\0\1\4\4\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\23\4\1\204\4\4\24\0\2\4\1\0\2\4"+ - "\1\0\1\4\4\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\10\4\1\205\17\4\24\0\2\4\1\0\2\4"+ - "\1\0\1\4\4\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\4\4\1\206\23\4\24\0\2\4\1\0\2\4"+ - "\1\0\1\4\4\0\5\4\1\0\1\4\1\0\1\4"+ - "\3\0\1\207\27\4\24\0\2\4\1\0\2\4\1\0"+ - "\1\4\4\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\1\4\1\210\26\4\24\0\2\4\1\0\2\4\1\0"+ - "\1\4\4\0\5\4\1\0\1\4\1\0\1\4\3\0"+ - "\13\4\1\211\1\4\1\212\12\4\24\0\2\4\1\0"+ - "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ - "\1\4\3\0\5\4\1\213\22\4\24\0\2\4\1\0"+ - "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ - "\1\4\3\0\11\4\1\214\2\4\1\215\13\4\24\0"+ - "\2\4\1\0\2\4\1\0\1\4\4\0\5\4\1\0"+ - "\1\4\1\0\1\4\3\0\20\4\1\216\7\4\24\0"+ - "\2\4\1\0\2\4\1\0\1\4\4\0\5\4\1\0"+ - "\1\4\1\0\1\4\3\0\10\4\1\217\17\4\24\0"+ - "\2\4\1\0\2\4\1\0\1\4\4\0\5\4\1\0"+ - "\1\4\1\0\1\4\3\0\23\4\1\220\4\4\24\0"+ - "\2\4\1\0\2\4\1\0\1\4\4\0\5\4\1\0"+ - "\1\4\1\0\1\4\3\0\14\4\1\221\13\4\24\0"+ - "\2\4\1\0\2\4\1\0\1\4\4\0\5\4\1\0"+ - "\1\4\1\0\1\4\3\0\1\222\27\4\24\0\2\4"+ - "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\3\4\1\223\24\4\24\0\2\4"+ - "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ - "\1\0\1\4\3\0\3\4\1\224\5\4\1\225\16\4"+ + "\1\0\1\4\1\0\1\4\3\0\4\4\1\117\23\4"+ "\24\0\2\4\1\0\2\4\1\0\1\4\4\0\5\4"+ - "\1\0\1\4\1\0\1\4\3\0\11\4\1\226\16\4"+ - "\24\0\2\4\1\0\2\4\1\0\1\4\4\0\5\4"+ - "\1\0\1\4\1\0\1\4\3\0\14\4\1\227\6\4"+ - "\1\230\4\4\103\0\1\231\52\0\1\232\3\0\1\233"+ - "\126\0\1\234\23\0\1\164\12\0\1\164\3\0\1\62"+ - "\25\0\1\62\10\0\1\62\24\0\2\166\1\0\2\166"+ - "\1\235\1\166\4\0\5\166\1\0\1\166\1\0\1\166"+ - "\3\0\30\166\24\0\2\167\1\0\2\167\1\236\1\167"+ - "\4\0\5\167\1\0\1\167\1\0\1\167\3\0\30\167"+ - "\23\0\12\170\1\237\70\170\11\240\1\241\1\171\70\240"+ - "\1\0\1\102\12\0\1\102\67\0\2\173\11\0\1\173"+ - "\1\0\1\173\1\0\1\173\1\0\1\173\1\0\1\242"+ - "\4\0\1\173\1\0\1\173\1\0\1\242\1\173\7\0"+ - "\2\173\7\0\1\173\24\0\2\173\11\0\1\173\1\0"+ - "\1\173\1\0\1\173\1\163\1\173\1\0\1\242\4\0"+ - "\1\173\1\0\1\173\1\0\1\242\1\173\7\0\2\173"+ - "\7\0\1\173\24\0\1\243\1\173\11\0\1\243\1\0"+ - "\1\173\1\0\1\173\1\0\1\173\1\244\1\242\4\0"+ - "\1\173\1\0\1\173\1\0\1\242\1\173\7\0\2\173"+ - "\7\0\1\173\2\0\1\244\41\0\1\163\61\0\27\201"+ - "\1\245\53\201\1\0\2\4\1\0\2\4\1\0\1\4"+ - "\4\0\5\4\1\0\1\4\1\0\1\4\3\0\3\4"+ - "\1\246\24\4\24\0\2\4\1\0\2\4\1\0\1\4"+ - "\4\0\5\4\1\0\1\4\1\0\1\4\3\0\23\4"+ - "\1\247\4\4\24\0\2\4\1\0\2\4\1\0\1\4"+ - "\4\0\5\4\1\0\1\4\1\0\1\4\3\0\3\4"+ - "\1\250\24\4\24\0\2\4\1\0\2\4\1\0\1\4"+ - "\4\0\5\4\1\0\1\4\1\0\1\4\3\0\3\4"+ - "\1\251\24\4\24\0\2\4\1\0\2\4\1\0\1\4"+ - "\4\0\5\4\1\0\1\4\1\0\1\4\3\0\10\4"+ - "\1\252\17\4\24\0\2\4\1\0\2\4\1\0\1\4"+ - "\4\0\5\4\1\0\1\4\1\0\1\4\3\0\4\4"+ - "\1\253\23\4\24\0\2\4\1\0\2\4\1\0\1\4"+ - "\4\0\5\4\1\0\1\4\1\0\1\4\3\0\3\4"+ - "\1\254\24\4\24\0\2\4\1\0\2\4\1\0\1\4"+ - "\4\0\5\4\1\0\1\4\1\0\1\4\3\0\3\4"+ - "\1\255\24\4\24\0\2\4\1\0\2\4\1\0\1\4"+ - "\4\0\5\4\1\0\1\4\1\0\1\4\3\0\4\4"+ - "\1\256\23\4\24\0\2\4\1\0\2\4\1\0\1\4"+ + "\1\0\1\4\1\0\1\4\3\0\7\4\1\120\13\4"+ + "\1\121\4\4\24\0\2\4\1\0\2\4\1\0\1\4"+ "\4\0\5\4\1\0\1\4\1\0\1\4\3\0\12\4"+ - "\1\257\15\4\24\0\2\4\1\0\2\4\1\0\1\4"+ + "\1\122\10\4\1\123\4\4\24\0\2\4\1\0\2\4"+ + "\1\0\1\4\4\0\5\4\1\0\1\4\1\0\1\4"+ + "\3\0\14\4\1\124\1\125\4\4\1\126\5\4\24\0"+ + "\2\4\1\0\2\4\1\0\1\4\4\0\5\4\1\0"+ + "\1\4\1\0\1\4\3\0\1\127\3\4\1\130\11\4"+ + "\1\131\11\4\24\0\2\4\1\0\2\4\1\0\1\4"+ + "\4\0\5\4\1\0\1\4\1\0\1\4\3\0\17\4"+ + "\1\132\10\4\24\0\2\4\1\0\2\4\1\0\1\4"+ "\4\0\5\4\1\0\1\4\1\0\1\4\3\0\3\4"+ - "\1\260\24\4\24\0\2\4\1\0\2\4\1\0\1\4"+ - "\4\0\5\4\1\0\1\4\1\0\1\4\3\0\13\4"+ - "\1\261\14\4\24\0\2\4\1\0\2\4\1\0\1\4"+ - "\4\0\5\4\1\0\1\4\1\0\1\4\3\0\4\4"+ - "\1\262\23\4\24\0\2\4\1\0\2\4\1\0\1\4"+ + "\1\133\24\4\24\0\2\4\1\0\2\4\1\0\1\4"+ "\4\0\5\4\1\0\1\4\1\0\1\4\3\0\1\4"+ - "\1\263\26\4\24\0\2\4\1\0\2\4\1\0\1\4"+ - "\4\0\5\4\1\0\1\4\1\0\1\4\3\0\1\264"+ - "\27\4\24\0\2\4\1\0\2\4\1\0\1\4\4\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\23\4\1\265"+ - "\4\4\24\0\2\4\1\0\2\4\1\0\1\4\4\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\4\4\1\266"+ - "\23\4\23\0\11\170\1\267\1\237\70\170\12\240\1\270"+ - "\70\240\1\0\1\164\12\0\1\164\6\0\1\244\36\0"+ - "\1\244\21\0\1\243\1\173\11\0\1\243\1\0\1\173"+ - "\1\0\1\271\1\0\1\173\1\0\1\242\4\0\1\173"+ - "\1\0\1\173\1\0\1\242\1\173\7\0\1\271\1\173"+ - "\7\0\1\271\24\0\1\164\12\0\1\164\66\0\27\201"+ - "\1\272\53\201\1\0\2\4\1\0\2\4\1\0\1\4"+ - "\4\0\5\4\1\0\1\4\1\0\1\4\3\0\4\4"+ - "\1\273\23\4\24\0\2\4\1\0\2\4\1\0\1\4"+ - "\4\0\5\4\1\0\1\4\1\0\1\4\3\0\1\274"+ - "\27\4\24\0\2\4\1\0\2\4\1\0\1\4\4\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\11\4\1\275"+ - "\16\4\24\0\2\4\1\0\2\4\1\0\1\4\4\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\4\4\1\276"+ - "\23\4\24\0\2\4\1\0\2\4\1\0\1\4\4\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\12\4\1\277"+ - "\15\4\24\0\2\4\1\0\2\4\1\0\1\4\4\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\21\4\1\300"+ - "\6\4\24\0\2\4\1\0\2\4\1\0\1\4\4\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\6\4\1\301"+ - "\21\4\24\0\2\4\1\0\2\4\1\0\1\4\4\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\14\4\1\302"+ - "\13\4\24\0\2\4\1\0\2\4\1\0\1\4\4\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\3\4\1\303"+ - "\24\4\24\0\2\4\1\0\2\4\1\0\1\4\4\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\24\4\1\304"+ - "\3\4\24\0\2\4\1\0\2\4\1\0\1\4\4\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\3\4\1\305"+ - "\24\4\23\0\11\240\1\241\1\270\70\240\27\201\1\306"+ - "\53\201\1\0\2\4\1\0\2\4\1\0\1\4\4\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\5\4\1\307"+ + "\1\134\10\4\1\135\1\136\14\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\14\4\1\137\13\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\22\4\1\140\5\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\22\4\1\141\5\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\1\4\1\142\26\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\12\4\1\143\15\4\103\0\1\144\3\0"+ + "\1\145\57\0\1\146\16\0\1\147\102\0\1\150\1\0"+ + "\1\151\100\0\1\152\102\0\1\153\107\0\1\154\103\0"+ + "\1\155\35\0\1\156\46\0\1\157\72\0\1\160\23\0"+ + "\1\102\12\0\1\102\4\0\1\161\62\0\1\162\12\0"+ + "\1\162\3\0\1\62\2\0\1\162\22\0\1\62\10\0"+ + "\1\62\2\0\1\162\21\0\2\65\1\0\2\65\1\163"+ + "\1\65\4\0\5\65\1\0\1\65\1\0\1\65\3\0"+ + "\30\65\24\0\2\66\1\0\2\66\1\0\1\66\4\0"+ + "\5\66\1\0\1\66\1\0\1\66\3\0\30\66\25\0"+ + "\1\164\1\0\1\164\2\0\1\164\5\0\4\164\1\0"+ + "\1\164\1\0\1\164\3\0\30\164\24\0\2\70\1\0"+ + "\2\70\1\0\1\70\4\0\5\70\1\0\1\70\1\0"+ + "\1\70\3\0\30\70\25\0\1\165\1\0\1\165\2\0"+ + "\1\165\5\0\4\165\1\0\1\165\1\0\1\165\3\0"+ + "\30\165\23\0\13\73\1\0\67\73\12\166\1\167\70\166"+ + "\1\0\1\77\12\0\1\77\3\0\1\62\1\170\1\64"+ + "\10\0\1\64\12\0\1\62\10\0\1\62\23\0\1\171"+ + "\2\100\10\171\1\0\1\100\1\171\1\100\1\172\1\100"+ + "\1\173\1\100\1\171\1\174\4\171\1\100\1\171\1\100"+ + "\1\171\1\174\1\100\7\171\2\100\3\171\1\172\3\171"+ + "\1\100\23\171\1\0\1\101\12\0\1\101\2\0\1\61"+ + "\1\0\1\175\31\0\1\61\30\0\1\102\12\0\1\102"+ + "\3\0\1\62\1\0\1\64\10\0\1\64\12\0\1\62"+ + "\10\0\1\62\23\0\13\16\1\0\67\16\13\111\1\0"+ + "\12\111\1\112\1\176\66\111\1\0\67\111\27\0\1\177"+ + "\54\0\2\4\1\0\2\4\1\0\1\4\4\0\5\4"+ + "\1\0\1\4\1\0\1\4\3\0\2\4\1\200\25\4"+ + "\24\0\2\4\1\0\2\4\1\0\1\4\4\0\5\4"+ + "\1\0\1\4\1\0\1\4\3\0\21\4\1\201\6\4"+ + "\24\0\2\4\1\0\2\4\1\0\1\4\4\0\5\4"+ + "\1\0\1\4\1\0\1\4\3\0\23\4\1\202\4\4"+ + "\24\0\2\4\1\0\2\4\1\0\1\4\4\0\5\4"+ + "\1\0\1\4\1\0\1\4\3\0\10\4\1\203\17\4"+ + "\24\0\2\4\1\0\2\4\1\0\1\4\4\0\5\4"+ + "\1\0\1\4\1\0\1\4\3\0\4\4\1\204\23\4"+ + "\24\0\2\4\1\0\2\4\1\0\1\4\4\0\5\4"+ + "\1\0\1\4\1\0\1\4\3\0\1\205\27\4\24\0"+ + "\2\4\1\0\2\4\1\0\1\4\4\0\5\4\1\0"+ + "\1\4\1\0\1\4\3\0\1\4\1\206\26\4\24\0"+ + "\2\4\1\0\2\4\1\0\1\4\4\0\5\4\1\0"+ + "\1\4\1\0\1\4\3\0\13\4\1\207\1\4\1\210"+ + "\12\4\24\0\2\4\1\0\2\4\1\0\1\4\4\0"+ + "\5\4\1\0\1\4\1\0\1\4\3\0\5\4\1\211"+ "\22\4\24\0\2\4\1\0\2\4\1\0\1\4\4\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\4\4\1\310"+ - "\23\4\24\0\2\4\1\0\2\4\1\0\1\4\4\0"+ - "\5\4\1\0\1\4\1\0\1\4\3\0\1\311\27\4"+ - "\24\0\2\4\1\0\2\4\1\0\1\4\4\0\5\4"+ - "\1\0\1\4\1\0\1\4\3\0\16\4\1\312\11\4"+ - "\24\0\2\4\1\0\2\4\1\0\1\4\4\0\5\4"+ - "\1\0\1\4\1\0\1\4\3\0\10\4\1\313\17\4"+ - "\24\0\2\4\1\0\2\4\1\0\1\4\4\0\5\4"+ - "\1\0\1\4\1\0\1\4\3\0\1\314\27\4\24\0"+ - "\2\4\1\0\2\4\1\0\1\4\4\0\5\4\1\0"+ - "\1\4\1\0\1\4\3\0\1\4\1\315\26\4\24\0"+ - "\2\4\1\0\2\4\1\0\1\4\4\0\5\4\1\0"+ - "\1\4\1\0\1\4\3\0\11\4\1\316\16\4\24\0"+ - "\2\4\1\0\2\4\1\0\1\4\4\0\5\4\1\0"+ - "\1\4\1\0\1\4\3\0\13\4\1\317\14\4\24\0"+ - "\2\4\1\0\2\4\1\0\1\4\4\0\5\4\1\0"+ - "\1\4\1\0\1\4\3\0\6\4\1\320\21\4\24\0"+ - "\2\4\1\0\2\4\1\0\1\4\4\0\5\4\1\0"+ - "\1\4\1\0\1\4\3\0\12\4\1\321\15\4\24\0"+ - "\2\4\1\0\2\4\1\0\1\4\4\0\5\4\1\0"+ - "\1\4\1\0\1\4\3\0\3\4\1\322\24\4\24\0"+ - "\2\4\1\0\2\4\1\0\1\4\4\0\5\4\1\0"+ - "\1\4\1\0\1\4\3\0\3\4\1\323\24\4\24\0"+ - "\2\4\1\0\2\4\1\0\1\4\4\0\5\4\1\0"+ - "\1\4\1\0\1\4\3\0\1\324\27\4\23\0"; + "\5\4\1\0\1\4\1\0\1\4\3\0\11\4\1\212"+ + "\2\4\1\213\13\4\24\0\2\4\1\0\2\4\1\0"+ + "\1\4\4\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\20\4\1\214\7\4\24\0\2\4\1\0\2\4\1\0"+ + "\1\4\4\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\10\4\1\215\17\4\24\0\2\4\1\0\2\4\1\0"+ + "\1\4\4\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\23\4\1\216\4\4\24\0\2\4\1\0\2\4\1\0"+ + "\1\4\4\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\14\4\1\217\13\4\24\0\2\4\1\0\2\4\1\0"+ + "\1\4\4\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\1\220\27\4\24\0\2\4\1\0\2\4\1\0\1\4"+ + "\4\0\5\4\1\0\1\4\1\0\1\4\3\0\3\4"+ + "\1\221\24\4\24\0\2\4\1\0\2\4\1\0\1\4"+ + "\4\0\5\4\1\0\1\4\1\0\1\4\3\0\3\4"+ + "\1\222\5\4\1\223\16\4\24\0\2\4\1\0\2\4"+ + "\1\0\1\4\4\0\5\4\1\0\1\4\1\0\1\4"+ + "\3\0\11\4\1\224\16\4\24\0\2\4\1\0\2\4"+ + "\1\0\1\4\4\0\5\4\1\0\1\4\1\0\1\4"+ + "\3\0\14\4\1\225\6\4\1\226\4\4\103\0\1\227"+ + "\52\0\1\230\3\0\1\231\126\0\1\232\23\0\1\162"+ + "\12\0\1\162\3\0\1\62\25\0\1\62\10\0\1\62"+ + "\24\0\2\164\1\0\2\164\1\233\1\164\4\0\5\164"+ + "\1\0\1\164\1\0\1\164\3\0\30\164\24\0\2\165"+ + "\1\0\2\165\1\234\1\165\4\0\5\165\1\0\1\165"+ + "\1\0\1\165\3\0\30\165\23\0\12\166\1\235\70\166"+ + "\11\236\1\237\1\167\70\236\1\0\1\102\12\0\1\102"+ + "\67\0\2\171\11\0\1\171\1\0\1\171\1\0\1\171"+ + "\1\0\1\171\1\0\1\240\4\0\1\171\1\0\1\171"+ + "\1\0\1\240\1\171\7\0\2\171\7\0\1\171\24\0"+ + "\2\171\11\0\1\171\1\0\1\171\1\0\1\171\1\161"+ + "\1\171\1\0\1\240\4\0\1\171\1\0\1\171\1\0"+ + "\1\240\1\171\7\0\2\171\7\0\1\171\24\0\1\241"+ + "\1\171\11\0\1\241\1\0\1\171\1\0\1\171\1\0"+ + "\1\171\1\242\1\240\4\0\1\171\1\0\1\171\1\0"+ + "\1\240\1\171\7\0\2\171\7\0\1\171\2\0\1\242"+ + "\41\0\1\161\61\0\27\177\1\243\53\177\1\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\244\24\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\23\4\1\245\4\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\246\24\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\247\24\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\10\4\1\250\17\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\4\4\1\251\23\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\252\24\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\253\24\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\4\4\1\254\23\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\12\4\1\255\15\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\3\4\1\256\24\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\13\4\1\257\14\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\4\4\1\260\23\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\1\4\1\261\26\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\1\262\27\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\23\4\1\263\4\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\4\4\1\264\23\4\23\0\11\166\1\265"+ + "\1\235\70\166\12\236\1\266\70\236\1\0\1\162\12\0"+ + "\1\162\6\0\1\242\36\0\1\242\21\0\1\241\1\171"+ + "\11\0\1\241\1\0\1\171\1\0\1\267\1\0\1\171"+ + "\1\0\1\240\4\0\1\171\1\0\1\171\1\0\1\240"+ + "\1\171\7\0\1\267\1\171\7\0\1\267\24\0\1\162"+ + "\12\0\1\162\66\0\27\177\1\270\53\177\1\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\4\4\1\271\23\4\24\0\2\4"+ + "\1\0\2\4\1\0\1\4\4\0\5\4\1\0\1\4"+ + "\1\0\1\4\3\0\1\272\27\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\11\4\1\273\16\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\4\4\1\274\23\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\12\4\1\275\15\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\21\4\1\276\6\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\6\4\1\277\21\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\14\4\1\300\13\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\3\4\1\301\24\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\24\4\1\302\3\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\3\4\1\303\24\4\23\0\11\236\1\237"+ + "\1\266\70\236\27\177\1\304\53\177\1\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\5\4\1\305\22\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\4\4\1\306\23\4\24\0\2\4\1\0"+ + "\2\4\1\0\1\4\4\0\5\4\1\0\1\4\1\0"+ + "\1\4\3\0\1\307\27\4\24\0\2\4\1\0\2\4"+ + "\1\0\1\4\4\0\5\4\1\0\1\4\1\0\1\4"+ + "\3\0\16\4\1\310\11\4\24\0\2\4\1\0\2\4"+ + "\1\0\1\4\4\0\5\4\1\0\1\4\1\0\1\4"+ + "\3\0\10\4\1\311\17\4\24\0\2\4\1\0\2\4"+ + "\1\0\1\4\4\0\5\4\1\0\1\4\1\0\1\4"+ + "\3\0\1\312\27\4\24\0\2\4\1\0\2\4\1\0"+ + "\1\4\4\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\1\4\1\313\26\4\24\0\2\4\1\0\2\4\1\0"+ + "\1\4\4\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\11\4\1\314\16\4\24\0\2\4\1\0\2\4\1\0"+ + "\1\4\4\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\13\4\1\315\14\4\24\0\2\4\1\0\2\4\1\0"+ + "\1\4\4\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\6\4\1\316\21\4\24\0\2\4\1\0\2\4\1\0"+ + "\1\4\4\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\12\4\1\317\15\4\24\0\2\4\1\0\2\4\1\0"+ + "\1\4\4\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\3\4\1\320\24\4\24\0\2\4\1\0\2\4\1\0"+ + "\1\4\4\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\3\4\1\321\24\4\24\0\2\4\1\0\2\4\1\0"+ + "\1\4\4\0\5\4\1\0\1\4\1\0\1\4\3\0"+ + "\1\322\27\4\23\0"; private static int [] zzUnpackTrans() { int [] result = new int[9246]; @@ -509,13 +508,13 @@ class _JetLexer implements FlexLexer { private static final String ZZ_ATTRIBUTE_PACKED_0 = "\1\0\1\11\43\1\1\11\1\1\13\11\1\0\1\1"+ "\1\0\1\1\1\0\1\1\1\0\1\11\2\1\2\11"+ - "\1\0\3\1\7\11\35\1\1\11\1\0\1\1\12\11"+ + "\1\0\3\1\5\11\35\1\1\11\1\0\1\1\12\11"+ "\1\1\1\11\2\0\2\1\2\0\1\1\3\0\1\11"+ "\30\1\6\11\1\0\1\1\1\11\1\0\1\1\2\0"+ "\21\1\1\11\1\0\1\1\1\0\13\1\1\11\16\1"; private static int [] zzUnpackAttribute() { - int [] result = new int[212]; + int [] result = new int[210]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -823,367 +822,359 @@ class _JetLexer implements FlexLexer { case 3: { return JetTokens.IDENTIFIER; } - case 92: break; - case 66: + case 90: break; + case 64: { return JetTokens.FOR_KEYWORD ; } - case 93: break; - case 88: + case 91: break; + case 86: { return JetTokens.RETURN_KEYWORD ; } - case 94: break; - case 74: + case 92: break; + case 72: { return JetTokens.NULL_KEYWORD ; } - case 95: break; + case 93: break; case 15: { return JetTokens.LT ; } - case 96: break; - case 48: + case 94: break; + case 46: { return JetTokens.DO_KEYWORD ; } - case 97: break; + case 95: break; case 14: { return JetTokens.PLUS ; } - case 98: break; + case 96: break; case 29: { return JetTokens.LONG_LITERAL; } - case 99: break; - case 63: + case 97: break; + case 61: { return JetTokens.RAW_STRING_LITERAL; } - case 100: break; - case 52: + case 98: break; + case 50: { return JetTokens.PLUSEQ ; } - case 101: break; + case 99: break; case 27: { return JetTokens.COMMA ; } - case 102: break; + case 100: break; case 16: { return JetTokens.GT ; } - case 103: break; + case 101: break; case 4: { return JetTokens.WHITE_SPACE; } - case 104: break; - case 86: + case 102: break; + case 84: { return JetTokens.TYPEOF_KEYWORD ; } - case 105: break; + case 103: break; case 25: { return JetTokens.RPAR ; } - case 106: break; - case 50: + case 104: break; + case 48: { return JetTokens.DOUBLE_ARROW; } - case 107: break; - case 76: + case 105: break; + case 74: { return JetTokens.TRUE_KEYWORD ; } - case 108: break; + case 106: break; case 31: { return JetTokens.FIELD_IDENTIFIER; } - case 109: break; - case 56: + case 107: break; + case 54: { return JetTokens.ANDAND ; } - case 110: break; - case 62: + case 108: break; + case 60: { return JetTokens.DOC_COMMENT; } - case 111: break; + case 109: break; case 30: { return JetTokens.FLOAT_LITERAL; } - case 112: break; + case 110: break; case 34: { return JetTokens.EOL_COMMENT; } - case 113: break; - case 79: + case 111: break; + case 77: { return JetTokens.WHEN_KEYWORD ; } - case 114: break; + case 112: break; case 18: { return JetTokens.COLON ; } - case 115: break; - case 54: + case 113: break; + case 52: { return JetTokens.LTEQ ; } - case 116: break; - case 43: + case 114: break; + case 41: { return JetTokens.ARROW ; } - case 117: break; + case 115: break; case 20: { return JetTokens.LBRACKET ; } - case 118: break; - case 61: + case 116: break; + case 59: { yypushback(2); return JetTokens.INTEGER_LITERAL; } - case 119: break; + case 117: break; case 10: { return JetTokens.CHARACTER_LITERAL; } - case 120: break; - case 68: + case 118: break; + case 66: { return JetTokens.VAR_KEYWORD ; } - case 121: break; - case 55: + case 119: break; + case 53: { return JetTokens.GTEQ ; } - case 122: break; + case 120: break; case 2: { return JetTokens.INTEGER_LITERAL; } - case 123: break; + case 121: break; case 23: { return JetTokens.RBRACE ; } - case 124: break; - case 81: + case 122: break; + case 79: { return JetTokens.CLASS_KEYWORD ; } - case 125: break; + case 123: break; case 13: { return JetTokens.EXCL ; } - case 126: break; - case 65: + case 124: break; + case 63: { return JetTokens.TRY_KEYWORD ; } - case 127: break; - case 51: + case 125: break; + case 49: { return JetTokens.EXCLEQ ; } - case 128: break; - case 42: + case 126: break; + case 40: { return JetTokens.MINUSEQ ; } - case 129: break; - case 82: + case 127: break; + case 80: { return JetTokens.THROW_KEYWORD ; } - case 130: break; - case 85: + case 128: break; + case 83: { return JetTokens.WHILE_KEYWORD ; } - case 131: break; - case 41: + case 129: break; + case 39: { return JetTokens.MINUSMINUS; } - case 132: break; - case 89: + case 130: break; + case 87: { return JetTokens.CONTINUE_KEYWORD ; } - case 133: break; + case 131: break; case 33: { return JetTokens.ATAT ; } - case 134: break; - case 71: + case 132: break; + case 69: { return JetTokens.NOT_IN; } - case 135: break; + case 133: break; case 6: { return JetTokens.DIV ; } - case 136: break; - case 59: + case 134: break; + case 57: { return JetTokens.ELVIS ; } - case 137: break; + case 135: break; case 32: { return JetTokens.LABEL_IDENTIFIER; } - case 138: break; + case 136: break; case 17: { return JetTokens.QUEST ; } - case 139: break; - case 57: + case 137: break; + case 55: { return JetTokens.OROR ; } - case 140: break; + case 138: break; case 19: { return JetTokens.PERC ; } - case 141: break; - case 73: + case 139: break; + case 71: { return JetTokens.EXCLEQEQEQ; } - case 142: break; - case 60: + case 140: break; + case 58: { return JetTokens.PERCEQ ; } - case 143: break; - case 39: + case 141: break; + case 38: { return JetTokens.RANGE ; } - case 144: break; + case 142: break; case 1: { return TokenType.BAD_CHARACTER; } - case 145: break; - case 58: + case 143: break; + case 56: { return JetTokens.SAFE_ACCESS; } - case 146: break; - case 90: + case 144: break; + case 88: { return JetTokens.NAMESPACE_KEYWORD ; } - case 147: break; - case 72: + case 145: break; + case 70: { return JetTokens.NOT_IS; } - case 148: break; + case 146: break; case 7: { return JetTokens.MUL ; } - case 149: break; + case 147: break; case 21: { return JetTokens.RBRACKET ; } - case 150: break; - case 53: + case 148: break; + case 51: { return JetTokens.PLUSPLUS ; } - case 151: break; - case 78: + case 149: break; + case 76: { return JetTokens.THIS_KEYWORD ; } - case 152: break; + case 150: break; case 8: { return JetTokens.DOT ; } - case 153: break; + case 151: break; case 26: { return JetTokens.SEMICOLON ; } - case 154: break; - case 47: + case 152: break; + case 45: { return JetTokens.IF_KEYWORD ; } - case 155: break; + case 153: break; case 12: { return JetTokens.EQ ; } - case 156: break; + case 154: break; case 5: { return JetTokens.AT ; } - case 157: break; + case 155: break; case 24: { return JetTokens.LPAR ; } - case 158: break; + case 156: break; case 9: { return JetTokens.MINUS ; } - case 159: break; - case 83: + case 157: break; + case 81: { return JetTokens.FALSE_KEYWORD ; } - case 160: break; - case 77: + case 158: break; + case 75: { return JetTokens.TYPE_KEYWORD ; } - case 161: break; - case 67: + case 159: break; + case 65: { return JetTokens.FUN_KEYWORD ; } - case 162: break; - case 46: + case 160: break; + case 44: { return JetTokens.IS_KEYWORD ; } - case 163: break; + case 161: break; case 36: { return JetTokens.DIVEQ ; } - case 164: break; - case 91: + case 162: break; + case 89: { return JetTokens.EXTENSION_KEYWORD ; } - case 165: break; - case 75: + case 163: break; + case 73: { return JetTokens.ELSE_KEYWORD ; } - case 166: break; - case 44: + case 164: break; + case 42: { return JetTokens.AS_KEYWORD ; } - case 167: break; - case 45: + case 165: break; + case 43: { return JetTokens.IN_KEYWORD ; } - case 168: break; - case 49: + case 166: break; + case 47: { return JetTokens.EQEQ ; } - case 169: break; - case 69: + case 167: break; + case 67: { return JetTokens.VAL_KEYWORD ; } - case 170: break; - case 70: + case 168: break; + case 68: { return JetTokens.EQEQEQ ; } - case 171: break; - case 80: + case 169: break; + case 78: { return JetTokens.CAPITALIZED_THIS_KEYWORD ; } - case 172: break; - case 64: + case 170: break; + case 62: { return JetTokens.NEW_KEYWORD ; } - case 173: break; + case 171: break; case 37: { return JetTokens.MULTEQ ; } - case 174: break; + case 172: break; case 11: { return JetTokens.STRING_LITERAL; } - case 175: break; + case 173: break; case 22: { return JetTokens.LBRACE ; } - case 176: break; - case 87: + case 174: break; + case 85: { return JetTokens.OBJECT_KEYWORD ; } - case 177: break; - case 84: + case 175: break; + case 82: { return JetTokens.BREAK_KEYWORD ; } - case 178: break; + case 176: break; case 35: { return JetTokens.BLOCK_COMMENT; } - case 179: break; - case 40: - { return JetTokens.FILTER ; - } - case 180: break; + case 177: break; case 28: { return JetTokens.HASH ; } - case 181: break; - case 38: - { return JetTokens.MAP ; - } - case 182: break; + case 178: break; default: if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { zzAtEOF = true; diff --git a/idea/testData/psi/FileStart_ERR.txt b/idea/testData/psi/FileStart_ERR.txt index cfb916ad671..c1c82dcfa0e 100644 --- a/idea/testData/psi/FileStart_ERR.txt +++ b/idea/testData/psi/FileStart_ERR.txt @@ -15,4 +15,5 @@ JetFile: FileStart_ERR.jet IMPORT_DIRECTIVE PsiElement(import)('import') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('foo') \ No newline at end of file + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foo') \ No newline at end of file diff --git a/idea/testData/psi/ImportSoftKW.txt b/idea/testData/psi/ImportSoftKW.txt index 92bc59acba0..47cbcbb2e66 100644 --- a/idea/testData/psi/ImportSoftKW.txt +++ b/idea/testData/psi/ImportSoftKW.txt @@ -3,13 +3,17 @@ JetFile: ImportSoftKW.jet IMPORT_DIRECTIVE PsiElement(import)('import') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('import') - PsiElement(DOT)('.') - PsiElement(IDENTIFIER)('import') - PsiElement(DOT)('.') - PsiElement(IDENTIFIER)('import') - PsiElement(DOT)('.') - PsiElement(IDENTIFIER)('import') + REFERENCE_EXPRESSION + REFERENCE_EXPRESSION + REFERENCE_EXPRESSION + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('import') + PsiElement(DOT)('.') + PsiElement(IDENTIFIER)('import') + PsiElement(DOT)('.') + PsiElement(IDENTIFIER)('import') + PsiElement(DOT)('.') + PsiElement(IDENTIFIER)('import') PsiWhiteSpace(' ') PsiElement(as)('as') PsiWhiteSpace(' ') diff --git a/idea/testData/psi/Imports.jet b/idea/testData/psi/Imports.jet index 606c82fdde9..6230669c2ae 100644 --- a/idea/testData/psi/Imports.jet +++ b/idea/testData/psi/Imports.jet @@ -1,5 +1,6 @@ namespace foo.bar.goo +import namespace.foo import foo import foo.bar import foo as bar diff --git a/idea/testData/psi/Imports.txt b/idea/testData/psi/Imports.txt index 25b7c3e414e..693941aa2c4 100644 --- a/idea/testData/psi/Imports.txt +++ b/idea/testData/psi/Imports.txt @@ -12,19 +12,31 @@ JetFile: Imports.jet IMPORT_DIRECTIVE PsiElement(import)('import') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('foo') + REFERENCE_EXPRESSION + PsiElement(namespace)('namespace') + PsiElement(DOT)('.') + PsiElement(IDENTIFIER)('foo') PsiWhiteSpace('\n') IMPORT_DIRECTIVE PsiElement(import)('import') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('foo') - PsiElement(DOT)('.') - PsiElement(IDENTIFIER)('bar') + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foo') PsiWhiteSpace('\n') IMPORT_DIRECTIVE PsiElement(import)('import') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('foo') + REFERENCE_EXPRESSION + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foo') + PsiElement(DOT)('.') + PsiElement(IDENTIFIER)('bar') + PsiWhiteSpace('\n') + IMPORT_DIRECTIVE + PsiElement(import)('import') + PsiWhiteSpace(' ') + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foo') PsiWhiteSpace(' ') PsiElement(as)('as') PsiWhiteSpace(' ') @@ -33,9 +45,11 @@ JetFile: Imports.jet IMPORT_DIRECTIVE PsiElement(import)('import') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('foo') - PsiElement(DOT)('.') - PsiElement(IDENTIFIER)('bar') + REFERENCE_EXPRESSION + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foo') + PsiElement(DOT)('.') + PsiElement(IDENTIFIER)('bar') PsiWhiteSpace(' ') PsiElement(as)('as') PsiWhiteSpace(' ') @@ -44,13 +58,16 @@ JetFile: Imports.jet IMPORT_DIRECTIVE PsiElement(import)('import') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('foo') - PsiElement(MAP)('.*') + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foo') + PsiElement(DOT)('.') + PsiElement(MUL)('*') PsiWhiteSpace('\n') IMPORT_DIRECTIVE PsiElement(import)('import') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('foo') + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foo') PsiElement(DOT)('.') PsiWhiteSpace(' ') PsiElement(MUL)('*') \ No newline at end of file diff --git a/idea/testData/psi/Imports_ERR.jet b/idea/testData/psi/Imports_ERR.jet index e0dd8554138..3d27c2cefdf 100644 --- a/idea/testData/psi/Imports_ERR.jet +++ b/idea/testData/psi/Imports_ERR.jet @@ -1,5 +1,9 @@ namespace foo.bar.goo +import namespace ; +import namespace.* +import namespace. ; + import foo as import foo. import foo.bar. diff --git a/idea/testData/psi/Imports_ERR.txt b/idea/testData/psi/Imports_ERR.txt index cdd283aea18..1599d5d869d 100644 --- a/idea/testData/psi/Imports_ERR.txt +++ b/idea/testData/psi/Imports_ERR.txt @@ -12,7 +12,38 @@ JetFile: Imports_ERR.jet IMPORT_DIRECTIVE PsiElement(import)('import') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('foo') + REFERENCE_EXPRESSION + PsiElement(namespace)('namespace') + PsiErrorElement:Expecting '.' + + PsiWhiteSpace(' ') + PsiErrorElement:Expecting qualified name + PsiElement(SEMICOLON)(';') + PsiWhiteSpace('\n') + IMPORT_DIRECTIVE + PsiElement(import)('import') + PsiWhiteSpace(' ') + REFERENCE_EXPRESSION + PsiElement(namespace)('namespace') + PsiElement(DOT)('.') + PsiErrorElement:Expecting qualified name + PsiElement(MUL)('*') + PsiWhiteSpace('\n') + IMPORT_DIRECTIVE + PsiElement(import)('import') + PsiWhiteSpace(' ') + REFERENCE_EXPRESSION + PsiElement(namespace)('namespace') + PsiElement(DOT)('.') + PsiWhiteSpace(' ') + PsiErrorElement:Expecting qualified name + PsiElement(SEMICOLON)(';') + PsiWhiteSpace('\n\n') + IMPORT_DIRECTIVE + PsiElement(import)('import') + PsiWhiteSpace(' ') + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foo') PsiWhiteSpace(' ') PsiElement(as)('as') PsiWhiteSpace('\n') @@ -26,12 +57,15 @@ JetFile: Imports_ERR.jet IMPORT_DIRECTIVE PsiElement(import)('import') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('foo') - PsiElement(DOT)('.') - PsiElement(IDENTIFIER)('bar') - PsiElement(DOT)('.') - PsiWhiteSpace('\n') - PsiElement(IDENTIFIER)('import') + REFERENCE_EXPRESSION + REFERENCE_EXPRESSION + REFERENCE_EXPRESSION + 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') @@ -47,10 +81,13 @@ JetFile: Imports_ERR.jet IMPORT_DIRECTIVE PsiElement(import)('import') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('foo') + REFERENCE_EXPRESSION + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foo') + PsiElement(DOT)('.') + PsiElement(IDENTIFIER)('bar') PsiElement(DOT)('.') - PsiElement(IDENTIFIER)('bar') - PsiElement(MAP)('.*') + PsiElement(MUL)('*') PsiWhiteSpace(' ') PsiErrorElement:Cannot rename a all imported items to one identifier PsiElement(as)('as') @@ -60,10 +97,13 @@ JetFile: Imports_ERR.jet IMPORT_DIRECTIVE PsiElement(import)('import') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('foo') + REFERENCE_EXPRESSION + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foo') + PsiElement(DOT)('.') + PsiElement(IDENTIFIER)('bar') PsiElement(DOT)('.') - PsiElement(IDENTIFIER)('bar') - PsiElement(MAP)('.*') + PsiElement(MUL)('*') PsiWhiteSpace(' ') PsiErrorElement:Cannot rename a all imported items to one identifier PsiElement(as)('as') @@ -82,32 +122,39 @@ JetFile: Imports_ERR.jet IMPORT_DIRECTIVE PsiElement(import)('import') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('foo') - PsiElement(DOT)('.') - PsiErrorElement:Qualified name must be a '.'-separated identifier list - + REFERENCE_EXPRESSION + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foo') + PsiElement(DOT)('.') + PsiErrorElement:Qualified name must be a '.'-separated identifier 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 - + REFERENCE_EXPRESSION + REFERENCE_EXPRESSION + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foo') + PsiElement(DOT)('.') + PsiElement(IDENTIFIER)('bar') + PsiElement(DOT)('.') + PsiErrorElement:Qualified name must be a '.'-separated identifier 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 - + REFERENCE_EXPRESSION + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foo') + PsiElement(DOT)('.') + PsiErrorElement:Qualified name must be a '.'-separated identifier list + PsiWhiteSpace(' ') PsiElement(as)('as') PsiWhiteSpace(' ') @@ -118,10 +165,13 @@ JetFile: Imports_ERR.jet IMPORT_DIRECTIVE PsiElement(import)('import') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('foo') + REFERENCE_EXPRESSION + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foo') + PsiElement(DOT)('.') + PsiElement(IDENTIFIER)('bar') PsiElement(DOT)('.') - PsiElement(IDENTIFIER)('bar') - PsiElement(MAP)('.*') + PsiElement(MUL)('*') PsiWhiteSpace(' ') PsiErrorElement:Cannot rename a all imported items to one identifier PsiElement(as)('as') @@ -133,10 +183,13 @@ JetFile: Imports_ERR.jet IMPORT_DIRECTIVE PsiElement(import)('import') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('foo') + REFERENCE_EXPRESSION + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foo') + PsiElement(DOT)('.') + PsiElement(IDENTIFIER)('bar') PsiElement(DOT)('.') - PsiElement(IDENTIFIER)('bar') - PsiElement(MAP)('.*') + PsiElement(MUL)('*') PsiWhiteSpace(' ') PsiErrorElement:Cannot rename a all imported items to one identifier PsiElement(as)('as') diff --git a/idea/testData/psi/NamespaceBlock.txt b/idea/testData/psi/NamespaceBlock.txt index 273c796bf20..ca99238338a 100644 --- a/idea/testData/psi/NamespaceBlock.txt +++ b/idea/testData/psi/NamespaceBlock.txt @@ -12,7 +12,8 @@ JetFile: NamespaceBlock.jet IMPORT_DIRECTIVE PsiElement(import)('import') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('foo') + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foo') PsiWhiteSpace(' ') PsiElement(as)('as') PsiWhiteSpace(' ') @@ -30,10 +31,13 @@ JetFile: NamespaceBlock.jet IMPORT_DIRECTIVE PsiElement(import)('import') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('foo') + REFERENCE_EXPRESSION + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foo') + PsiElement(DOT)('.') + PsiElement(IDENTIFIER)('bar') PsiElement(DOT)('.') - PsiElement(IDENTIFIER)('bar') - PsiElement(MAP)('.*') + PsiElement(MUL)('*') PsiElement(SEMICOLON)(';') PsiWhiteSpace('\n\n ') CLASS @@ -133,6 +137,7 @@ JetFile: NamespaceBlock.jet IMPORT_DIRECTIVE PsiElement(import)('import') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('sdf') + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('sdf') PsiWhiteSpace('\n\n') PsiElement(RBRACE)('}') \ No newline at end of file diff --git a/idea/testData/psi/NamespaceBlock_ERR.txt b/idea/testData/psi/NamespaceBlock_ERR.txt index a65f05f5eeb..c4eacb3a814 100644 --- a/idea/testData/psi/NamespaceBlock_ERR.txt +++ b/idea/testData/psi/NamespaceBlock_ERR.txt @@ -12,7 +12,8 @@ JetFile: NamespaceBlock_ERR.jet IMPORT_DIRECTIVE PsiElement(import)('import') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('foo') + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foo') PsiWhiteSpace(' ') PsiElement(as)('as') PsiWhiteSpace('\n') @@ -26,12 +27,15 @@ JetFile: NamespaceBlock_ERR.jet IMPORT_DIRECTIVE PsiElement(import)('import') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('foo') - PsiElement(DOT)('.') - PsiElement(IDENTIFIER)('bar') - PsiElement(DOT)('.') - PsiWhiteSpace('\n') - PsiElement(IDENTIFIER)('import') + REFERENCE_EXPRESSION + REFERENCE_EXPRESSION + REFERENCE_EXPRESSION + 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') @@ -56,10 +60,13 @@ JetFile: NamespaceBlock_ERR.jet IMPORT_DIRECTIVE PsiElement(import)('import') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('foo') + REFERENCE_EXPRESSION + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foo') + PsiElement(DOT)('.') + PsiElement(IDENTIFIER)('bar') PsiElement(DOT)('.') - PsiElement(IDENTIFIER)('bar') - PsiElement(MAP)('.*') + PsiElement(MUL)('*') PsiWhiteSpace(' ') PsiErrorElement:Cannot rename a all imported items to one identifier PsiElement(as)('as') @@ -69,10 +76,13 @@ JetFile: NamespaceBlock_ERR.jet IMPORT_DIRECTIVE PsiElement(import)('import') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('foo') + REFERENCE_EXPRESSION + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foo') + PsiElement(DOT)('.') + PsiElement(IDENTIFIER)('bar') PsiElement(DOT)('.') - PsiElement(IDENTIFIER)('bar') - PsiElement(MAP)('.*') + PsiElement(MUL)('*') PsiWhiteSpace(' ') PsiErrorElement:Cannot rename a all imported items to one identifier PsiElement(as)('as') @@ -91,32 +101,39 @@ JetFile: NamespaceBlock_ERR.jet IMPORT_DIRECTIVE PsiElement(import)('import') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('foo') - PsiElement(DOT)('.') - PsiErrorElement:Qualified name must be a '.'-separated identifier list - + REFERENCE_EXPRESSION + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foo') + PsiElement(DOT)('.') + PsiErrorElement:Qualified name must be a '.'-separated identifier 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 - + REFERENCE_EXPRESSION + REFERENCE_EXPRESSION + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foo') + PsiElement(DOT)('.') + PsiElement(IDENTIFIER)('bar') + PsiElement(DOT)('.') + PsiErrorElement:Qualified name must be a '.'-separated identifier 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 - + REFERENCE_EXPRESSION + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foo') + PsiElement(DOT)('.') + PsiErrorElement:Qualified name must be a '.'-separated identifier list + PsiWhiteSpace(' ') PsiElement(as)('as') PsiWhiteSpace(' ') @@ -127,10 +144,13 @@ JetFile: NamespaceBlock_ERR.jet IMPORT_DIRECTIVE PsiElement(import)('import') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('foo') + REFERENCE_EXPRESSION + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foo') + PsiElement(DOT)('.') + PsiElement(IDENTIFIER)('bar') PsiElement(DOT)('.') - PsiElement(IDENTIFIER)('bar') - PsiElement(MAP)('.*') + PsiElement(MUL)('*') PsiWhiteSpace(' ') PsiErrorElement:Cannot rename a all imported items to one identifier PsiElement(as)('as') @@ -142,10 +162,13 @@ JetFile: NamespaceBlock_ERR.jet IMPORT_DIRECTIVE PsiElement(import)('import') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('foo') + REFERENCE_EXPRESSION + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foo') + PsiElement(DOT)('.') + PsiElement(IDENTIFIER)('bar') PsiElement(DOT)('.') - PsiElement(IDENTIFIER)('bar') - PsiElement(MAP)('.*') + PsiElement(MUL)('*') PsiWhiteSpace(' ') PsiErrorElement:Cannot rename a all imported items to one identifier PsiElement(as)('as') @@ -266,6 +289,7 @@ JetFile: NamespaceBlock_ERR.jet IMPORT_DIRECTIVE PsiElement(import)('import') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('sdf') + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('sdf') PsiWhiteSpace('\n\n') PsiElement(RBRACE)('}') \ No newline at end of file diff --git a/idea/testData/psi/SoftKeywords.txt b/idea/testData/psi/SoftKeywords.txt index d7aeede08a6..5132ef60e70 100644 --- a/idea/testData/psi/SoftKeywords.txt +++ b/idea/testData/psi/SoftKeywords.txt @@ -12,7 +12,8 @@ JetFile: SoftKeywords.jet IMPORT_DIRECTIVE PsiElement(import)('import') PsiWhiteSpace(' ') - PsiElement(IDENTIFIER)('foo') + REFERENCE_EXPRESSION + PsiElement(IDENTIFIER)('foo') PsiWhiteSpace('\n\n') CLASS MODIFIER_LIST