7e48e8726b
This change adds back component output properties. Doing so requires splitting the RPC interface for creating resources in half, with an initial RegisterResource which contains all of the input properties, and a final CompleteResource which optionally contains any output properties synthesized by the component.
56 lines
1.6 KiB
Go
56 lines
1.6 KiB
Go
// Copyright 2016-2017, Pulumi Corporation. All rights reserved.
|
|
|
|
package diag
|
|
|
|
// ID is a unique diagnostics identifier.
|
|
type ID int
|
|
|
|
// Diag is an instance of an error or warning generated by the compiler.
|
|
type Diag struct {
|
|
ID ID // a unique identifier for this diagnostic.
|
|
Message string // a human-friendly message for this diagnostic.
|
|
Raw bool // true if this diagnostic should not be formatted when displayed.
|
|
Doc *Document // the document in which this diagnostic occurred.
|
|
Loc *Location // the document location at which this diagnostic occurred.
|
|
}
|
|
|
|
// Message returns an anonymous diagnostic message without any source or ID information.
|
|
func Message(msg string) *Diag {
|
|
return &Diag{Message: msg}
|
|
}
|
|
|
|
// RawMessage returns an anonymous diagnostic message without any source or ID information that will not be rendered
|
|
// with Sprintf.
|
|
func RawMessage(msg string) *Diag {
|
|
return &Diag{Message: msg, Raw: true}
|
|
}
|
|
|
|
// Diagable can be used to determine a diagnostic's position.
|
|
type Diagable interface {
|
|
Where() (*Document, *Location)
|
|
}
|
|
|
|
// At adds a position to an existing diagnostic, retaining its ID and message.
|
|
func (diag *Diag) At(d Diagable) *Diag {
|
|
var doc *Document
|
|
var loc *Location
|
|
if d != nil {
|
|
doc, loc = d.Where()
|
|
}
|
|
return &Diag{
|
|
ID: diag.ID,
|
|
Message: diag.Message,
|
|
Doc: doc,
|
|
Loc: loc,
|
|
}
|
|
}
|
|
|
|
// AtFile adds a file to an existing diagnostic, retaining its ID and message.
|
|
func (diag *Diag) AtFile(file string) *Diag {
|
|
return &Diag{
|
|
ID: diag.ID,
|
|
Message: diag.Message,
|
|
Doc: NewDocument(file),
|
|
}
|
|
}
|