2017-10-05 13:40:31 -05:00
|
|
|
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_,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-10-17 19:47:13 -05:00
|
|
|
func (d rpcFriendlyDiag) FromExpr() *FromExpr {
|
|
|
|
// RPC-friendly diagnostics cannot preserve expression information because
|
|
|
|
// expressions themselves are not RPC-friendly.
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2017-10-05 13:40:31 -05:00
|
|
|
func init() {
|
|
|
|
gob.Register((*rpcFriendlyDiag)(nil))
|
|
|
|
}
|