javac ast indices: renames

This commit is contained in:
Dmitry Batkovich
2016-12-19 17:34:31 +03:00
parent f165541592
commit abc528b93a
3 changed files with 25 additions and 19 deletions
@@ -28,7 +28,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.javac.ast.api.JavacDef;
import org.jetbrains.jps.javac.ast.api.JavacFileData;
import org.jetbrains.jps.javac.ast.api.JavacRef;
import org.jetbrains.jps.javac.ast.api.NameTableCache;
import org.jetbrains.jps.javac.ast.api.JavacNameTable;
import javax.lang.model.element.Element;
import javax.lang.model.element.ElementKind;
@@ -49,7 +49,7 @@ final class JavacReferenceCollectorListener implements TaskListener {
private final Elements myElementUtility;
private final Types myTypeUtility;
private final Trees myTreeUtility;
private final NameTableCache myNameTableCache;
private final JavacNameTable myNameTableCache;
private NotNullLazyValue<Name> myAsterisk = new NotNullLazyValue<Name>() {
@NotNull
@@ -98,7 +98,7 @@ final class JavacReferenceCollectorListener implements TaskListener {
myTypeUtility = typeUtility;
myTreeUtility = treeUtility;
myAstScanner = JavacTreeRefScanner.createASTScanner();
myNameTableCache = new NameTableCache(elementUtility);
myNameTableCache = new JavacNameTable(elementUtility);
}
@Override
@@ -23,18 +23,24 @@ import javax.lang.model.element.Name;
import javax.lang.model.element.TypeElement;
import javax.lang.model.util.Elements;
public class NameTableCache extends SLRUCache<Name, String> {
public class JavacNameTable {
private final SLRUCache<Name, String> myParsedNameCache;
private final Elements myElements;
public NameTableCache(Elements elements) {
super(1000, 1000);
public JavacNameTable(Elements elements) {
myParsedNameCache = new SLRUCache<Name, String>(1000, 1000) {
@NotNull
@Override
public String createValue(Name key) {
return key.toString();
}
};
myElements = elements;
}
@NotNull
@Override
public String createValue(Name name) {
return name.toString();
public String parseName(Name name) {
return myParsedNameCache.get(name);
}
public Name getBinaryName(Element element) {
@@ -120,9 +120,9 @@ public interface JavacRef {
abstract class JavacElementRefBase implements JavacRef {
protected final @NotNull Element myOriginalElement;
protected final NameTableCache myNameTableCache;
protected final JavacNameTable myNameTableCache;
protected JavacElementRefBase(@NotNull Element element, NameTableCache nameTableCache) {
protected JavacElementRefBase(@NotNull Element element, JavacNameTable nameTableCache) {
myOriginalElement = element;
myNameTableCache = nameTableCache;
}
@@ -135,7 +135,7 @@ public interface JavacRef {
@NotNull
@Override
public String getName() {
return myNameTableCache.get(myOriginalElement.getSimpleName());
return myNameTableCache.parseName(myOriginalElement.getSimpleName());
}
@Override
@@ -146,10 +146,10 @@ public interface JavacRef {
@NotNull
@Override
public String getOwnerName() {
return myNameTableCache.get(myNameTableCache.getBinaryName(myOriginalElement.getEnclosingElement()));
return myNameTableCache.parseName(myNameTableCache.getBinaryName(myOriginalElement.getEnclosingElement()));
}
public static JavacElementRefBase fromElement(Element element, NameTableCache nameTableCache) {
public static JavacElementRefBase fromElement(Element element, JavacNameTable nameTableCache) {
if (element instanceof TypeElement) {
return new JavacElementClassImpl(element, nameTableCache);
}
@@ -164,24 +164,24 @@ public interface JavacRef {
}
class JavacElementClassImpl extends JavacElementRefBase implements JavacClass {
public JavacElementClassImpl(@NotNull Element element, NameTableCache nameTableCache) {
public JavacElementClassImpl(@NotNull Element element, JavacNameTable nameTableCache) {
super(element, nameTableCache);
}
@NotNull
@Override
public String getName() {
return myNameTableCache.get(myNameTableCache.getBinaryName(myOriginalElement));
return myNameTableCache.parseName(myNameTableCache.getBinaryName(myOriginalElement));
}
@Override
public boolean isAnonymous() {
return myNameTableCache.get(myOriginalElement.getSimpleName()).isEmpty();
return myNameTableCache.parseName(myOriginalElement.getSimpleName()).isEmpty();
}
}
class JavacElementMethodImpl extends JavacElementRefBase implements JavacMethod {
public JavacElementMethodImpl(@NotNull Element element, NameTableCache nameTableCache) {
public JavacElementMethodImpl(@NotNull Element element, JavacNameTable nameTableCache) {
super(element, nameTableCache);
}
@@ -192,7 +192,7 @@ public interface JavacRef {
}
class JavacElementFieldImpl extends JavacElementRefBase implements JavacField {
public JavacElementFieldImpl(@NotNull Element element, NameTableCache nameTableCache) {
public JavacElementFieldImpl(@NotNull Element element, JavacNameTable nameTableCache) {
super(element, nameTableCache);
}
}