Skip to content

Commit 38565eb

Browse files
committed
Emit local symbols for anonymous classes.
Anonymous class symbols can't escape a single compilation unit so they can use local symbols according to the SemanticDB spec, and for consistency with the Scala implementation.
1 parent 0d693a4 commit 38565eb

File tree

15 files changed

+1369
-1361
lines changed

15 files changed

+1369
-1361
lines changed

semanticdb-javac/src/main/java/com/sourcegraph/semanticdb_javac/GlobalSymbolsCache.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ private String uncachedSemanticdbSymbol(Symbol sym, LocalSymbolsCache locals) {
3939
String owner = semanticdbSymbol(sym.owner, locals);
4040
if (owner.equals(SemanticdbSymbols.NONE)) {
4141
return SemanticdbSymbols.ROOT_PACKAGE;
42-
} else if (sym instanceof Symbol.VarSymbol && sym.isLocal()) {
42+
} else if (SemanticdbSymbols.isLocal(owner) || isAnonymousClass(sym) || isLocalVariable(sym)) {
4343
return locals.put(sym);
4444
}
4545
SemanticdbSymbols.Descriptor desc = semanticdbDescriptor(sym);
@@ -53,6 +53,14 @@ private String uncachedSemanticdbSymbol(Symbol sym, LocalSymbolsCache locals) {
5353
return SemanticdbSymbols.global(owner, desc);
5454
}
5555

56+
private boolean isLocalVariable(Symbol sym) {
57+
return sym instanceof Symbol.VarSymbol && sym.isLocal();
58+
}
59+
60+
private boolean isAnonymousClass(Symbol sym) {
61+
return sym instanceof Symbol.ClassSymbol && sym.name.isEmpty();
62+
}
63+
5664
private SemanticdbSymbols.Descriptor semanticdbDescriptor(Symbol sym) {
5765
if (sym instanceof Symbol.ClassSymbol) {
5866
return new SemanticdbSymbols.Descriptor(

tests/snapshots/src/main/generated/com/airbnb/epoxy/AsyncEpoxyDiffer.java

Lines changed: 50 additions & 50 deletions
Large diffs are not rendered by default.

tests/snapshots/src/main/generated/com/airbnb/epoxy/BaseEpoxyAdapter.java

Lines changed: 110 additions & 110 deletions
Large diffs are not rendered by default.

tests/snapshots/src/main/generated/com/airbnb/epoxy/Carousel.java

Lines changed: 211 additions & 211 deletions
Large diffs are not rendered by default.

tests/snapshots/src/main/generated/com/airbnb/epoxy/ControllerModelList.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,16 @@ class ControllerModelList extends ModelList {
1414
private static final ModelListObserver OBSERVER = new ModelListObserver() {
1515
// ^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/ModelList#ModelListObserver#
1616
// ^^^^^^^^ definition com/airbnb/epoxy/ControllerModelList#OBSERVER.
17-
// ^^^^^^^^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/ControllerModelList#OBSERVER.``#`<init>`(). 12:3
17+
// ^^^^^^^^^^^^^^^^^^^^^^^^^ reference local1 12:3
1818
// ^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/ModelList#ModelListObserver#
1919
// ^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/ModelList#ModelListObserver#
20-
// ^ definition com/airbnb/epoxy/ControllerModelList#OBSERVER.``#`<init>`(). 1:4
20+
// ^ definition local1 1:4
2121
@Override
2222
// ^^^^^^^^ reference java/lang/Override#
2323
public void onItemRangeInserted(int positionStart, int itemCount) {
24-
// ^^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/ControllerModelList#OBSERVER.``#onItemRangeInserted().
25-
// ^^^^^^^^^^^^^ definition local0
26-
// ^^^^^^^^^ definition local1
24+
// ^^^^^^^^^^^^^^^^^^^ definition local2
25+
// ^^^^^^^^^^^^^ definition local3
26+
// ^^^^^^^^^ definition local4
2727
throw new IllegalStateException(
2828
// ^^^^^^^^^^^^^^^^^^^^^^^^^^ reference java/lang/IllegalStateException#`<init>`(+1). 1:75
2929
// ^^^^^^^^^^^^^^^^^^^^^ reference java/lang/IllegalStateException#
@@ -33,9 +33,9 @@ public void onItemRangeInserted(int positionStart, int itemCount) {
3333
@Override
3434
// ^^^^^^^^ reference java/lang/Override#
3535
public void onItemRangeRemoved(int positionStart, int itemCount) {
36-
// ^^^^^^^^^^^^^^^^^^ definition com/airbnb/epoxy/ControllerModelList#OBSERVER.``#onItemRangeRemoved().
37-
// ^^^^^^^^^^^^^ definition local2
38-
// ^^^^^^^^^ definition local3
36+
// ^^^^^^^^^^^^^^^^^^ definition local5
37+
// ^^^^^^^^^^^^^ definition local6
38+
// ^^^^^^^^^ definition local7
3939
throw new IllegalStateException(
4040
// ^^^^^^^^^^^^^^^^^^^^^^^^^^ reference java/lang/IllegalStateException#`<init>`(+1). 1:75
4141
// ^^^^^^^^^^^^^^^^^^^^^ reference java/lang/IllegalStateException#
@@ -45,10 +45,10 @@ public void onItemRangeRemoved(int positionStart, int itemCount) {
4545

4646
ControllerModelList(int expectedModelCount) {
4747
^^^^^^ definition com/airbnb/epoxy/ControllerModelList#`<init>`().
48-
// ^^^^^^^^^^^^^^^^^^ definition local4
48+
// ^^^^^^^^^^^^^^^^^^ definition local8
4949
super(expectedModelCount);
5050
// ^^^^^ reference com/airbnb/epoxy/ModelList#`<init>`().
51-
// ^^^^^^^^^^^^^^^^^^ reference local4
51+
// ^^^^^^^^^^^^^^^^^^ reference local8
5252
pauseNotifications();
5353
// ^^^^^^^^^^^^^^^^^^ reference com/airbnb/epoxy/ModelList#pauseNotifications().
5454
}

0 commit comments

Comments
 (0)