diff --git a/type_definition.go b/type_definition.go new file mode 100644 index 0000000..50538f6 --- /dev/null +++ b/type_definition.go @@ -0,0 +1,35 @@ +package protocol + +type TypeDefinitionResult struct { + Vertex +} + +func NewTypeDefinitionResult(id uint64) TypeDefinitionResult { + return TypeDefinitionResult{Vertex{ + Element: Element{ + ID: id, + Type: ElementVertex, + }, + Label: VertexTypeDefinitionResult, + }} +} + +type TextDocumentTypeDefinition struct { + Edge + OutV uint64 `json:"outV"` + InV uint64 `json:"inV"` +} + +func NewTextDocumentTypeDefinition(id uint64, outV, inV uint64) TextDocumentTypeDefinition { + return TextDocumentTypeDefinition{ + Edge: Edge{ + Element: Element{ + ID: id, + Type: ElementEdge, + }, + Label: EdgeTextDocumentTypeDefinition, + }, + OutV: outV, + InV: inV, + } +} diff --git a/writer/emitter.go b/writer/emitter.go index a4cd505..a1c7b0e 100644 --- a/writer/emitter.go +++ b/writer/emitter.go @@ -68,12 +68,24 @@ func (e *Emitter) EmitDefinitionResult() uint64 { return id } +func (e *Emitter) EmitTypeDefinitionResult() uint64 { + id := e.nextID() + e.writer.Write(protocol.NewTypeDefinitionResult(id)) + return id +} + func (e *Emitter) EmitTextDocumentDefinition(outV, inV uint64) uint64 { id := e.nextID() e.writer.Write(protocol.NewTextDocumentDefinition(id, outV, inV)) return id } +func (e *Emitter) EmitTextDocumentTypeDefinition(outV, inV uint64) uint64 { + id := e.nextID() + e.writer.Write(protocol.NewTextDocumentTypeDefinition(id, outV, inV)) + return id +} + func (e *Emitter) EmitReferenceResult() uint64 { id := e.nextID() e.writer.Write(protocol.NewReferenceResult(id))