Soft keywords processing optimized
This commit is contained in:
@@ -19,12 +19,12 @@ import static org.jetbrains.jet.lexer.JetTokens.*;
|
|||||||
* @author abreslav
|
* @author abreslav
|
||||||
*/
|
*/
|
||||||
/*package*/ abstract class AbstractJetParsing {
|
/*package*/ abstract class AbstractJetParsing {
|
||||||
private static final Set<String> SOFT_KEYWORD_TEXTS = new HashSet<String>();
|
private static final Map<String, JetKeywordToken> SOFT_KEYWORD_TEXTS = new HashMap<String, JetKeywordToken>();
|
||||||
static {
|
static {
|
||||||
for (IElementType type : JetTokens.SOFT_KEYWORDS.getTypes()) {
|
for (IElementType type : JetTokens.SOFT_KEYWORDS.getTypes()) {
|
||||||
JetKeywordToken keywordToken = (JetKeywordToken) type;
|
JetKeywordToken keywordToken = (JetKeywordToken) type;
|
||||||
assert keywordToken.isSoft();
|
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 (token == SEMICOLON) return true;
|
||||||
if (myBuilder.eolInLastWhitespace()) return true;
|
if (myBuilder.eolInLastWhitespace()) return true;
|
||||||
}
|
}
|
||||||
if (token == IDENTIFIER && SOFT_KEYWORD_TEXTS.contains(myBuilder.getTokenText())) {
|
if (token == IDENTIFIER) {
|
||||||
// TODO : this loop seems to be a bad solution
|
JetKeywordToken keywordToken = SOFT_KEYWORD_TEXTS.get(myBuilder.getTokenText());
|
||||||
for (IElementType type : set.getTypes()) {
|
if (keywordToken != null && set.contains(keywordToken)) {
|
||||||
if (type instanceof JetKeywordToken) {
|
myBuilder.remapCurrentToken(keywordToken);
|
||||||
JetKeywordToken expectedKeyword = (JetKeywordToken) type;
|
return true;
|
||||||
if (expectedKeyword.isSoft() && expectedKeyword.getValue().equals(myBuilder.getTokenText())) {
|
|
||||||
myBuilder.remapCurrentToken(type);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ import static org.jetbrains.jet.lexer.JetTokens.*;
|
|||||||
*/
|
*/
|
||||||
public class JetParsing extends AbstractJetParsing {
|
public class JetParsing extends AbstractJetParsing {
|
||||||
// TODO: token sets to constants, including derived methods
|
// TODO: token sets to constants, including derived methods
|
||||||
|
|
||||||
public static final Map<String, IElementType> MODIFIER_KEYWORD_MAP = new HashMap<String, IElementType>();
|
public static final Map<String, IElementType> MODIFIER_KEYWORD_MAP = new HashMap<String, IElementType>();
|
||||||
static {
|
static {
|
||||||
for (IElementType softKeyword : MODIFIER_KEYWORDS.getTypes()) {
|
for (IElementType softKeyword : MODIFIER_KEYWORDS.getTypes()) {
|
||||||
@@ -528,6 +527,7 @@ public class JetParsing extends AbstractJetParsing {
|
|||||||
* ;
|
* ;
|
||||||
*/
|
*/
|
||||||
/*package*/ void parseClassBody() {
|
/*package*/ void parseClassBody() {
|
||||||
|
// TODO : initializer?
|
||||||
assert at(LBRACE);
|
assert at(LBRACE);
|
||||||
PsiBuilder.Marker body = mark();
|
PsiBuilder.Marker body = mark();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user