未验证 提交 fb318e3b 编写于 作者: S Skylot

fix(gui): revert contextual keywords to identifiers (#1394)

上级 5f3c8816
package jadx.gui.ui.codearea;
import java.util.Set;
import javax.swing.text.Segment;
import org.fife.ui.rsyntaxtextarea.Token;
......@@ -14,6 +16,8 @@ import org.slf4j.LoggerFactory;
import jadx.api.JavaClass;
import jadx.api.JavaNode;
import static jadx.api.plugins.utils.Utils.constSet;
public final class JadxTokenMaker extends JavaTokenMaker {
private static final Logger LOG = LoggerFactory.getLogger(JadxTokenMaker.class);
......@@ -42,6 +46,10 @@ public final class JadxTokenMaker extends JavaTokenMaker {
while (current != null) {
if (prev != null) {
switch (current.getType()) {
case TokenTypes.RESERVED_WORD:
fixContextualKeyword(current);
break;
case TokenTypes.IDENTIFIER:
current = mergeLongClassNames(prev, current, false);
break;
......@@ -56,6 +64,17 @@ public final class JadxTokenMaker extends JavaTokenMaker {
}
}
private static final Set<String> CONTEXTUAL_KEYWORDS = constSet(
"exports", "module", "non-sealed", "open", "opens", "permits", "provides", "record",
"requires", "sealed", "to", "transitive", "uses", "var", "with", "yield");
private static void fixContextualKeyword(Token token) {
String lexeme = token.getLexeme(); // TODO: create new string every call, better to avoid
if (lexeme != null && CONTEXTUAL_KEYWORDS.contains(lexeme)) {
token.setType(TokenTypes.IDENTIFIER);
}
}
@NotNull
private Token mergeLongClassNames(Token prev, Token current, boolean annotation) {
int offset = current.getTextOffset();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册