Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import com.sun.source.util.JavacTask;
import com.sun.source.util.TaskEvent;
import com.sun.source.util.TreePathScanner;
import com.sun.source.util.Trees;
import com.sun.tools.javac.code.Symbol;
import com.sun.tools.javac.tree.EndPosTable;
import com.sun.tools.javac.tree.JCTree;
Expand Down Expand Up @@ -75,11 +74,13 @@ private void emitSymbolOccurrence(
}

private void emitSymbolInformation(Symbol sym) {
Semanticdb.SymbolInformation info =
Semanticdb.SymbolInformation.newBuilder()
.setSymbol(semanticdbSymbol(sym))
.setDocumentation(semanticdbDocumentation(sym))
.build();
Semanticdb.SymbolInformation.Builder builder =
Semanticdb.SymbolInformation.newBuilder().setSymbol(semanticdbSymbol(sym));
Semanticdb.Documentation documentation = semanticdbDocumentation(sym);
if (documentation != null) builder.setDocumentation(documentation);

Semanticdb.SymbolInformation info = builder.build();

if (SemanticdbSymbols.isGlobal(info.getSymbol())) {
symbolInfos.add(info);
}
Expand Down Expand Up @@ -242,15 +243,18 @@ private String semanticdbUri() {
return out.toString();
}

private String semanticdbDocumentation(Symbol sym) {
private Semanticdb.Documentation semanticdbDocumentation(Symbol sym) {
try {
Elements elements = task.getElements();
if (elements == null) return "";
if (elements == null) return null;

String doc = elements.getDocComment(sym);
if (doc == null) return "";
if (doc == null) return null;

return doc;
return Semanticdb.Documentation.newBuilder()
.setFormat(Semanticdb.Documentation.Format.JAVADOC)
.setMessage(doc)
.build();
} catch (NullPointerException e) {
// Can happen in `getDocComment()`
// Caused by: java.lang.NullPointerException
Expand All @@ -259,7 +263,7 @@ private String semanticdbDocumentation(Symbol sym) {
// at com.sun.tools.javac.model.JavacElements.getDocComment(JavacElements.java:321)
// at
// com.sourcegraph.semanticdb_javac.SemanticdbVisitor.semanticdbDocumentation(SemanticdbVisitor.java:233)
return "";
return null;
}
}
}
17 changes: 13 additions & 4 deletions semanticdb-javac/src/main/protobuf/semanticdb.proto
Original file line number Diff line number Diff line change
Expand Up @@ -86,12 +86,21 @@ message SymbolInformation {
Kind kind = 3;
int32 properties = 4;
string display_name = 5;
// + spec deviation
string documentation = 20;
// - spec deviation
repeated string overridden_symbols = 19;
Documentation documentation = 20;
}


message Documentation {
enum Format {
HTML = 0;
MARKDOWN = 1;
JAVADOC = 2;
SCALADOC = 3;
KDOC = 4;
}
string message = 1;
Format format = 2;
}

message SymbolOccurrence {
enum Role {
Expand Down