in com.microsoft.java.lsif.core/src/com/microsoft/java/lsif/core/internal/visitors/SymbolData.java [161:185]
synchronized public void resolveDefinition(LsifService lsif, IJavaElement element, Location definitionLocation) {
if (this.definitionResolved) {
return;
}
org.eclipse.lsp4j.Range definitionLspRange = definitionLocation.getRange();
Document definitionDocument = Repository.getInstance().enlistDocument(lsif, definitionLocation.getUri(),
project);
Range definitionRange = Repository.getInstance().enlistRange(lsif, definitionDocument, definitionLspRange);
DefinitionResult defResult = VisitorUtils.ensureDefinitionResult(lsif, this.resultSet);
LsifEmitter.getInstance().emit(lsif.getEdgeBuilder().item(defResult, definitionRange, document,
ItemEdge.ItemEdgeProperties.DEFINITIONS));
if (element instanceof IMethod) {
IMethod mostAbstractMethod = getMostAbstractDeclaration((IMethod) element);
if (mostAbstractMethod != null) {
Location abstractDefinitionLocation = JdtlsUtils.getElementLocation(mostAbstractMethod);
String id = VisitorUtils.createSymbolKey(abstractDefinitionLocation);
Document abstractDefinitionDocument = Repository.getInstance().enlistDocument(lsif,
abstractDefinitionLocation.getUri(), this.project);
SymbolData abstractSymbolData = Repository.getInstance().enlistSymbolData(id,
abstractDefinitionDocument, this.project);
Repository.getInstance().addReferenceResults(this, abstractSymbolData);
}
}
this.definitionResolved = true;
}