diff --git a/idea/src/org/jetbrains/jet/lang/parsing/AbstractJetParsing.java b/idea/src/org/jetbrains/jet/lang/parsing/AbstractJetParsing.java index 2acf413086b..b4b5b4102eb 100644 --- a/idea/src/org/jetbrains/jet/lang/parsing/AbstractJetParsing.java +++ b/idea/src/org/jetbrains/jet/lang/parsing/AbstractJetParsing.java @@ -19,12 +19,12 @@ import static org.jetbrains.jet.lexer.JetTokens.*; * @author abreslav */ /*package*/ abstract class AbstractJetParsing { - private static final Set SOFT_KEYWORD_TEXTS = new HashSet(); + private static final Map SOFT_KEYWORD_TEXTS = new HashMap(); static { for (IElementType type : JetTokens.SOFT_KEYWORDS.getTypes()) { JetKeywordToken keywordToken = (JetKeywordToken) type; assert keywordToken.isSoft(); - SOFT_KEYWORD_TEXTS.add(keywordToken.getValue()); + SOFT_KEYWORD_TEXTS.put(keywordToken.getValue(), keywordToken); } } @@ -137,16 +137,11 @@ import static org.jetbrains.jet.lexer.JetTokens.*; if (token == SEMICOLON) return true; if (myBuilder.eolInLastWhitespace()) return true; } - if (token == IDENTIFIER && SOFT_KEYWORD_TEXTS.contains(myBuilder.getTokenText())) { - // TODO : this loop seems to be a bad solution - for (IElementType type : set.getTypes()) { - if (type instanceof JetKeywordToken) { - JetKeywordToken expectedKeyword = (JetKeywordToken) type; - if (expectedKeyword.isSoft() && expectedKeyword.getValue().equals(myBuilder.getTokenText())) { - myBuilder.remapCurrentToken(type); - return true; - } - } + if (token == IDENTIFIER) { + JetKeywordToken keywordToken = SOFT_KEYWORD_TEXTS.get(myBuilder.getTokenText()); + if (keywordToken != null && set.contains(keywordToken)) { + myBuilder.remapCurrentToken(keywordToken); + return true; } } return false; diff --git a/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java b/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java index b89a1aa782f..4632f8202bb 100644 --- a/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java +++ b/idea/src/org/jetbrains/jet/lang/parsing/JetParsing.java @@ -21,7 +21,6 @@ import static org.jetbrains.jet.lexer.JetTokens.*; */ public class JetParsing extends AbstractJetParsing { // TODO: token sets to constants, including derived methods - public static final Map MODIFIER_KEYWORD_MAP = new HashMap(); static { for (IElementType softKeyword : MODIFIER_KEYWORDS.getTypes()) { @@ -528,6 +527,7 @@ public class JetParsing extends AbstractJetParsing { * ; */ /*package*/ void parseClassBody() { + // TODO : initializer? assert at(LBRACE); PsiBuilder.Marker body = mark();