package tfdiags import ( "encoding/gob" ) type rpcFriendlyDiag struct { Severity_ Severity Summary_ string Detail_ string Subject_ *SourceRange Context_ *SourceRange } // rpcFriendlyDiag transforms a given diagnostic so that is more friendly to // RPC. // // In particular, it currently returns an object that can be serialized and // later re-inflated using gob. This definition may grow to include other // serializations later. func makeRPCFriendlyDiag(diag Diagnostic) Diagnostic { desc := diag.Description() source := diag.Source() return &rpcFriendlyDiag{ Severity_: diag.Severity(), Summary_: desc.Summary, Detail_: desc.Detail, Subject_: source.Subject, Context_: source.Context, } } func (d *rpcFriendlyDiag) Severity() Severity { return d.Severity_ } func (d *rpcFriendlyDiag) Description() Description { return Description{ Summary: d.Summary_, Detail: d.Detail_, } } func (d *rpcFriendlyDiag) Source() Source { return Source{ Subject: d.Subject_, Context: d.Context_, } } func (d rpcFriendlyDiag) FromExpr() *FromExpr { // RPC-friendly diagnostics cannot preserve expression information because // expressions themselves are not RPC-friendly. return nil } func init() { gob.Register((*rpcFriendlyDiag)(nil)) }