2023-05-02 10:33:06 -05:00
|
|
|
// Copyright (c) HashiCorp, Inc.
|
|
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
|
2018-03-30 21:58:57 -05:00
|
|
|
package addrs
|
|
|
|
|
|
|
|
// Referenceable is an interface implemented by all address types that can
|
|
|
|
// appear as references in configuration language expressions.
|
|
|
|
type Referenceable interface {
|
2018-04-03 20:03:47 -05:00
|
|
|
// All implementations of this interface must be covered by the type switch
|
|
|
|
// in lang.Scope.buildEvalContext.
|
2018-03-30 21:58:57 -05:00
|
|
|
referenceableSigil()
|
2018-04-03 20:03:47 -05:00
|
|
|
|
2021-07-10 17:18:19 -05:00
|
|
|
// All Referenceable address types must have unique keys.
|
|
|
|
UniqueKeyer
|
|
|
|
|
2018-04-03 20:03:47 -05:00
|
|
|
// String produces a string representation of the address that could be
|
|
|
|
// parsed as a HCL traversal and passed to ParseRef to produce an identical
|
|
|
|
// result.
|
|
|
|
String() string
|
2018-03-30 21:58:57 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
type referenceable struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r referenceable) referenceableSigil() {
|
|
|
|
}
|