If Var is a free variable, it will be turned into an attributed variable with a single attribute Attribute whose name is AttrName. If Var is already an attributed variable with other attributes, then the new attribute will be added to it.
Otherwise, if the attribute slot for AttrName is already occupied, or Var is already instantiated, then a new attributed variable with the single attribute Attribute is created, and subsequently unified with Var.
If AttrName is an atom, the attribute corresponds to a previous meta_attribute declaration. If AttrName is an integer, it is directly used as an attribute index slot (this is mainly used by the compiler to resolve attribute references at compile time).
[eclipse 6]: meta_attribute(extra, []). yes. [eclipse 3]: add_attribute(X, a, extra), printf("%QPMw", X). X{suspend : _g270 , extra : a} X = X yes