From dc4b00536e7a1b9e2f405a914350282c8b83f08f Mon Sep 17 00:00:00 2001 From: Cody Schroeder Date: Fri, 6 Oct 2023 16:15:23 -0400 Subject: [PATCH] feat(java_indexer): add method type parameters to MarkedSource (#5882) --- .../kythe/analyzers/java/MarkedSources.java | 16 ++++++++++++++++ .../java/testdata/pkg/RenderedCode.java | 18 +++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/kythe/java/com/google/devtools/kythe/analyzers/java/MarkedSources.java b/kythe/java/com/google/devtools/kythe/analyzers/java/MarkedSources.java index e28b422d1b..e6a7050829 100644 --- a/kythe/java/com/google/devtools/kythe/analyzers/java/MarkedSources.java +++ b/kythe/java/com/google/devtools/kythe/analyzers/java/MarkedSources.java @@ -151,6 +151,22 @@ private static MarkedSource construct( .build()); } } + if (sym.getKind() == ElementKind.METHOD && !sym.getTypeParameters().isEmpty()) { + MarkedSource.Builder typeParams = + markedSource + .addChildBuilder() + .setKind(MarkedSource.Kind.TYPE) + .setPostChildText(" ") + .setAddFinalListToken(true) + .addChildBuilder() + .setKind(MarkedSource.Kind.PARAMETER) + .setPreText("<") + .setPostText(">") + .setPostChildText(", "); + for (Symbol t : sym.getTypeParameters()) { + typeParams.addChildBuilder().setKind(MarkedSource.Kind.IDENTIFIER).setPreText(t.toString()); + } + } if (markedType != null && sym.getKind() != ElementKind.CONSTRUCTOR) { markedSource.addChild(markedType); } diff --git a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/RenderedCode.java b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/RenderedCode.java index e21b18ef94..926191404e 100644 --- a/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/RenderedCode.java +++ b/kythe/javatests/com/google/devtools/kythe/analyzers/java/testdata/pkg/RenderedCode.java @@ -12,12 +12,28 @@ public final class RenderedCode { // - Constructor.code/rendered/callsite_signature "RenderedCode()" private RenderedCode() {} + // - @create defines/binding Create + // - Create.code/rendered/qualified_name "pkg.RenderedCode.create" + // - Create.code/rendered/signature "public static RenderedCode create()" + // - Create.code/rendered/callsite_signature "create()" + public static RenderedCode create() { + return null; + } + // - @Inner defines/binding Inner // - Inner.code/rendered/qualified_name "pkg.RenderedCode.Inner" // - Inner.code/rendered/signature "public static class Inner" // - Inner tparam.0 T // - T.code/rendered/qualified_name "pkg.RenderedCode.Inner.T" - public static class Inner {} + public static class Inner { + // - @create defines/binding CreateInner + // - CreateInner.code/rendered/qualified_name "pkg.RenderedCode.Inner.create" + // - CreateInner.code/rendered/signature "public static Inner create()" + // - CreateInner.code/rendered/callsite_signature "create()" + public static Inner create() { + return null; + } + } // - @CONSTANT defines/binding Constant // - Constant.code/rendered/signature "public static final String CONSTANT"