From 48e351ff70d14fd83fa336f62f9791816e274936 Mon Sep 17 00:00:00 2001 From: Olafur Geirsson Date: Fri, 2 Feb 2024 13:10:01 +0100 Subject: [PATCH] Fix "Find references" bug for interfaces and types Fixes #678 Previously, doing "Find references" on a symbol with kind `INTERFACE` or `TYPE` returned results for all references to symbols that *implement* that symbol. This bug was particularly noticeable for Kotlin sources because scip-kotlin emits the `TYPE` kind for classes. Now, we no longer emit reference relationships so the implementations only appear in "Find implementation" and not "Find references". --- .../java/com/sourcegraph/scip_semanticdb/ScipSemanticdb.java | 2 ++ .../main/generated/com/airbnb/epoxy/BaseEpoxyTouchCallback.java | 2 -- .../src/main/generated/com/airbnb/epoxy/EpoxyController.java | 2 +- .../src/main/generated/com/airbnb/epoxy/EpoxyDragCallback.java | 2 +- .../src/main/generated/com/airbnb/epoxy/EpoxySwipeCallback.java | 2 +- .../snapshots/src/main/generated/com/airbnb/epoxy/UpdateOp.java | 2 +- .../src/main/generated/com/airbnb/epoxy/VisibilityState.java | 2 +- .../tests/minimized/src/main/java/minimized/Annotations.java | 2 +- .../tests/minimized/src/main/java/minimized/InnerClasses.java | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/ScipSemanticdb.java b/scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/ScipSemanticdb.java index 1cb494a0..d566afeb 100644 --- a/scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/ScipSemanticdb.java +++ b/scip-semanticdb/src/main/java/com/sourcegraph/scip_semanticdb/ScipSemanticdb.java @@ -441,6 +441,8 @@ && supportsReferenceRelationship(symbolInformation) private static boolean supportsReferenceRelationship(SymbolInformation info) { switch (info.getKind()) { + case INTERFACE: + case TYPE: case CLASS: case OBJECT: case PACKAGE_OBJECT: diff --git a/tests/snapshots/src/main/generated/com/airbnb/epoxy/BaseEpoxyTouchCallback.java b/tests/snapshots/src/main/generated/com/airbnb/epoxy/BaseEpoxyTouchCallback.java index 37c471b0..9d77d1b6 100644 --- a/tests/snapshots/src/main/generated/com/airbnb/epoxy/BaseEpoxyTouchCallback.java +++ b/tests/snapshots/src/main/generated/com/airbnb/epoxy/BaseEpoxyTouchCallback.java @@ -8,8 +8,6 @@ interface BaseEpoxyTouchCallback { // ^^^^^^^^^^^^^^^^^^^^^^ definition semanticdb maven . . com/airbnb/epoxy/BaseEpoxyTouchCallback# // documentation ```java\ninterface BaseEpoxyTouchCallback\n``` -// relationship is_reference is_implementation semanticdb maven . . com/airbnb/epoxy/EpoxyDragCallback# -// relationship is_reference is_implementation semanticdb maven . . com/airbnb/epoxy/EpoxySwipeCallback# // ^ definition semanticdb maven . . com/airbnb/epoxy/BaseEpoxyTouchCallback#[T] // documentation ```java\nT extends EpoxyModel\n``` // ^^^^^^^^^^ reference semanticdb maven . . com/airbnb/epoxy/EpoxyModel# diff --git a/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyController.java b/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyController.java index f425d7d6..00b2ae54 100644 --- a/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyController.java +++ b/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyController.java @@ -302,7 +302,7 @@ public EpoxyController(Handler modelBuildingHandler, Handler diffingHandler) { // ^^^^^^ reference semanticdb maven maven/androidx.annotation/annotation 1.1.0 androidx/annotation/IntDef# // ^^^^^^^^^^^^^^^^^^^^^^^ definition semanticdb maven . . com/airbnb/epoxy/EpoxyController#RequestedModelBuildType# // documentation ```java\n@Retention(RetentionPolicy.SOURCE)\n@IntDef({RequestedModelBuildType.NONE, RequestedModelBuildType.NEXT_FRAME, RequestedModelBuildType.DELAYED})\nprivate @interface RequestedModelBuildType\n``` -// relationship is_reference is_implementation semanticdb maven jdk 11 java/lang/annotation/Annotation# +// relationship is_implementation semanticdb maven jdk 11 java/lang/annotation/Annotation# // ^^^^^^^^^^^^^^^^^^^^^^^ reference semanticdb maven . . com/airbnb/epoxy/EpoxyController#RequestedModelBuildType# // ^^^^ reference semanticdb maven . . com/airbnb/epoxy/EpoxyController#RequestedModelBuildType#NONE. RequestedModelBuildType.NEXT_FRAME, diff --git a/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyDragCallback.java b/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyDragCallback.java index 7b0e64ce..196656ef 100644 --- a/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyDragCallback.java +++ b/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxyDragCallback.java @@ -12,7 +12,7 @@ public interface EpoxyDragCallback extends BaseEpoxyTouchC // ^^^^^^^^^^^^^^^^^ definition semanticdb maven . . com/airbnb/epoxy/EpoxyDragCallback# // documentation ```java\npublic interface EpoxyDragCallback\n``` // documentation For use with {@link EpoxyModelTouchCallback}\n -// relationship is_reference is_implementation semanticdb maven . . com/airbnb/epoxy/BaseEpoxyTouchCallback# +// relationship is_implementation semanticdb maven . . com/airbnb/epoxy/BaseEpoxyTouchCallback# // ^ definition semanticdb maven . . com/airbnb/epoxy/EpoxyDragCallback#[T] // documentation ```java\nT extends EpoxyModel\n``` // ^^^^^^^^^^ reference semanticdb maven . . com/airbnb/epoxy/EpoxyModel# diff --git a/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxySwipeCallback.java b/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxySwipeCallback.java index 7440c563..c3da8ac1 100644 --- a/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxySwipeCallback.java +++ b/tests/snapshots/src/main/generated/com/airbnb/epoxy/EpoxySwipeCallback.java @@ -22,7 +22,7 @@ public interface EpoxySwipeCallback extends BaseEpoxyTouch // ^^^^^^^^^^^^^^^^^^ definition semanticdb maven . . com/airbnb/epoxy/EpoxySwipeCallback# // documentation ```java\npublic interface EpoxySwipeCallback\n``` // documentation For use with {@link EpoxyModelTouchCallback}\n -// relationship is_reference is_implementation semanticdb maven . . com/airbnb/epoxy/BaseEpoxyTouchCallback# +// relationship is_implementation semanticdb maven . . com/airbnb/epoxy/BaseEpoxyTouchCallback# // ^ definition semanticdb maven . . com/airbnb/epoxy/EpoxySwipeCallback#[T] // documentation ```java\nT extends EpoxyModel\n``` // ^^^^^^^^^^ reference semanticdb maven . . com/airbnb/epoxy/EpoxyModel# diff --git a/tests/snapshots/src/main/generated/com/airbnb/epoxy/UpdateOp.java b/tests/snapshots/src/main/generated/com/airbnb/epoxy/UpdateOp.java index 2e44bd30..e3bf39c7 100644 --- a/tests/snapshots/src/main/generated/com/airbnb/epoxy/UpdateOp.java +++ b/tests/snapshots/src/main/generated/com/airbnb/epoxy/UpdateOp.java @@ -44,7 +44,7 @@ class UpdateOp { @interface Type { // ^^^^ definition semanticdb maven . . com/airbnb/epoxy/UpdateOp#Type# // documentation ```java\n@IntDef({ADD, REMOVE, UPDATE, MOVE})\n@Retention(RetentionPolicy.SOURCE)\n@interface Type\n``` -// relationship is_reference is_implementation semanticdb maven jdk 11 java/lang/annotation/Annotation# +// relationship is_implementation semanticdb maven jdk 11 java/lang/annotation/Annotation# } static final int ADD = 0; diff --git a/tests/snapshots/src/main/generated/com/airbnb/epoxy/VisibilityState.java b/tests/snapshots/src/main/generated/com/airbnb/epoxy/VisibilityState.java index e8691da8..762b95bc 100644 --- a/tests/snapshots/src/main/generated/com/airbnb/epoxy/VisibilityState.java +++ b/tests/snapshots/src/main/generated/com/airbnb/epoxy/VisibilityState.java @@ -44,7 +44,7 @@ public final class VisibilityState { public @interface Visibility { // ^^^^^^^^^^ definition semanticdb maven . . com/airbnb/epoxy/VisibilityState#Visibility# // documentation ```java\n@Retention(RetentionPolicy.SOURCE)\n@IntDef({VISIBLE, INVISIBLE, FOCUSED_VISIBLE, UNFOCUSED_VISIBLE, FULL_IMPRESSION_VISIBLE, PARTIAL_IMPRESSION_VISIBLE, PARTIAL_IMPRESSION_INVISIBLE})\npublic @interface Visibility\n``` -// relationship is_reference is_implementation semanticdb maven jdk 11 java/lang/annotation/Annotation# +// relationship is_implementation semanticdb maven jdk 11 java/lang/annotation/Annotation# } /** diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Annotations.java b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Annotations.java index 97ca51e9..d547e1ef 100644 --- a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Annotations.java +++ b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/Annotations.java @@ -53,7 +53,7 @@ public @interface Annotations { // ^^^^^^^^^^^ definition semanticdb maven . . minimized/Annotations# // documentation ```java\n@Documented\n@Retention(RetentionPolicy.RUNTIME)\n@Target({CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})\npublic @interface Annotations\n``` -// relationship is_reference is_implementation semanticdb maven jdk 11 java/lang/annotation/Annotation# +// relationship is_implementation semanticdb maven jdk 11 java/lang/annotation/Annotation# String value() default ""; //^^^^^^ reference semanticdb maven jdk 11 java/lang/String# diff --git a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/InnerClasses.java b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/InnerClasses.java index 0c988658..994deb5b 100644 --- a/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/InnerClasses.java +++ b/tests/snapshots/src/main/generated/tests/minimized/src/main/java/minimized/InnerClasses.java @@ -72,7 +72,7 @@ public interface InnerInterface { public @interface InnerAnnotation { // ^^^^^^^^^^^^^^^ definition semanticdb maven . . minimized/InnerClasses#InnerAnnotation# // documentation ```java\npublic @interface InnerAnnotation\n``` -// relationship is_reference is_implementation semanticdb maven jdk 11 java/lang/annotation/Annotation# +// relationship is_implementation semanticdb maven jdk 11 java/lang/annotation/Annotation# int value(); // ^^^^^ definition semanticdb maven . . minimized/InnerClasses#InnerAnnotation#value(). // documentation ```java\npublic abstract int value()\n```