diff --git a/engine-contract.json b/engine-contract.json index 783385b..b0c8908 100644 --- a/engine-contract.json +++ b/engine-contract.json @@ -632,6 +632,20 @@ "kind": "package", "consumers": [] }, + { + "name": "MigrationMetadata::AppliedStereotype", + "kind": "metadata", + "attributes": [ + "stereotype", + "profile", + "tags" + ], + "migratorEmitted": true, + "consumers": [ + "internal/semantic/semantics/synthesized_name.go", + "internal/translate/migrate/migrate.go" + ] + }, { "name": "MigrationMetadata::DeferredEvent", "kind": "metadata", diff --git a/libraries/MigrationMetadata.sysml b/libraries/MigrationMetadata.sysml index 169dd88..af5bc02 100644 --- a/libraries/MigrationMetadata.sysml +++ b/libraries/MigrationMetadata.sysml @@ -34,6 +34,18 @@ library package MigrationMetadata { attribute sourceName : ScalarValues::String; } + metadata def AppliedStereotype { + doc /* The annotated element carried the named stereotype in the + * source, and its v2 form does not: the element is itself the + * stereotype's form, as a dependency is a «Trace»'s, or the + * stereotype comes from a profile the migration did not write, + * named by profile. tags keeps, as `tag = value`, the tag values + * no v2 feature holds. */ + attribute stereotype : ScalarValues::String; + attribute profile : ScalarValues::String[0..1]; + attribute tags : ScalarValues::String[0..*]; + } + metadata def StandIn { doc /* The annotated element stands for no element of the source: the * migration made it up to write what the source left implicit,