Merge "Document how properties work in defaults modules." am: 188236ff23

am: 3b2542d1db

Change-Id: I4e81eeab8ad85cc686cdbeb124677070b45ad226
This commit is contained in:
Martin Stjernholm 2019-07-08 20:11:52 -07:00 committed by android-build-merger
commit 605e18c806

View file

@ -63,9 +63,28 @@ func InitDefaultableModule(module DefaultableModule) {
type DefaultsModuleBase struct {
DefaultableModuleBase
defaultProperties []interface{}
}
// The common pattern for defaults modules is to register separate instances of
// the xxxProperties structs in the AddProperties calls, rather than reusing the
// ones inherited from Module.
//
// The effect is that e.g. myDefaultsModuleInstance.base().xxxProperties won't
// contain the values that have been set for the defaults module. Rather, to
// retrieve the values it is necessary to iterate over properties(). E.g. to get
// the commonProperties instance that have the real values:
//
// d := myModule.(Defaults)
// for _, props := range d.properties() {
// if cp, ok := props.(*commonProperties); ok {
// ... access property values in cp ...
// }
// }
//
// The rationale is that the properties on a defaults module apply to the
// defaultable modules using it, not to the defaults module itself. E.g. setting
// the "enabled" property false makes inheriting modules disabled by default,
// rather than disabling the defaults module itself.
type Defaults interface {
Defaultable
isDefaults() bool