From 44304caa6c8e1dc4488aea14f5c94682b924f4ed Mon Sep 17 00:00:00 2001 From: JordonPhillips Date: Thu, 6 Jan 2022 16:45:26 +0100 Subject: [PATCH] Update mixins to use square brackets --- designs/mixins.md | 62 ++++++++----------- .../jsonschema/model-with-mixins.smithy | 2 +- .../smithy/model/loader/IdlModelParser.java | 32 +++------- .../shapes/SmithyIdlModelSerializer.java | 24 ++++--- .../mixin-illegal-redefined-member.smithy | 6 +- .../mixins/mixin-trait-applied.smithy | 2 +- .../smithy/model/knowledge/premixin.smithy | 6 +- .../invalid/mixins/dangling-with.smithy | 2 +- .../mixins/missing-rest-of-with-word.smithy | 4 +- .../loader/invalid/mixins/mix-types.smithy | 2 +- .../mixins-usage-in-explicit-1-0.smithy | 4 +- .../mixins-usage-in-implicit-1-0.smithy | 4 +- .../invalid/mixins/with-but-no-ids.smithy | 4 +- .../mixins/mixin-conflict-acceptable-1.smithy | 2 +- .../mixins/mixin-conflict-acceptable-2.smithy | 2 +- .../loader/mixins/mixin-conflict-error.smithy | 2 +- .../mixins/mixins-can-override-traits.smithy | 8 +-- .../loader/valid/inline-io/inline-io.smithy | 8 +-- .../mixins/idl-mixins-redefine-member.smithy | 2 +- .../loads-mixins-with-whitespace.smithy | 4 +- .../loader/valid/mixins/loads-mixins.smithy | 46 +++++++------- .../loader/valid/mixins/mixin-names.smithy | 2 +- .../mixins-with-members-and-traits.smithy | 8 +-- .../valid/mixins/mixins-with-members.smithy | 8 +-- .../mixins-with-mixin-local-traits.smithy | 2 +- .../loader/valid/mixins/operations.smithy | 2 +- .../loader/valid/mixins/resources.smithy | 2 +- .../model/loader/valid/mixins/services.smithy | 2 +- .../selector/structure-with-mixins.smithy | 4 +- .../cases/data-mixins.smithy | 32 +++++----- .../idl-serialization/cases/inline-io.smithy | 8 +-- .../idl-serialization/cases/mixins.smithy | 17 ++--- .../cases/operation-mixins.smithy | 2 +- .../cases/resource-mixins.smithy | 2 +- .../cases/service-mixins-with-merging.smithy | 2 +- .../cases/service-mixins.smithy | 2 +- .../transform/mixin-removal/model.smithy | 12 ++-- .../without-a-a2-a3-b-b2-b3.smithy | 2 +- .../mixin-removal/without-a-a2-a3.smithy | 8 +-- .../mixin-removal/without-a-a2.smithy | 8 +-- .../mixin-removal/without-a-b.smithy | 8 +-- .../transform/mixin-removal/without-a.smithy | 10 +-- .../transform/mixin-removal/without-a2.smithy | 8 +-- .../transform/mixin-removal/without-a3.smithy | 10 +-- .../transform/mixin-removal/without-b.smithy | 10 +-- .../transform/mixin-removal/without-b2.smithy | 8 +-- .../transform/mixin-removal/without-b3.smithy | 10 +-- .../transform/mixin-removal/without-c.smithy | 8 +-- .../transform/mixin-removal/without-d.smithy | 10 +-- .../fromsmithy/model-with-mixins.smithy | 2 +- 50 files changed, 205 insertions(+), 232 deletions(-) diff --git a/designs/mixins.md b/designs/mixins.md index cb75b13711c..a3960b8f55d 100644 --- a/designs/mixins.md +++ b/designs/mixins.md @@ -120,7 +120,7 @@ shape marked with the `@mixin` trait. Shapes can only use mixins that are of the same shape type. ``` -structure GetCityInput with CityResourceInput { +structure GetCityInput with [CityResourceInput] { foo: String } ``` @@ -128,10 +128,10 @@ structure GetCityInput with CityResourceInput { Multiple mixins can be applied: ``` -structure GetAnotherCityInput with +structure GetAnotherCityInput with [ CityResourceInput SomeOtherMixin -{ +]{ foo: String } ``` @@ -145,11 +145,11 @@ structure MixinA { } @mixin -structure MixinB with MixinA { +structure MixinB with [MixinA] { b: String } -structure C with MixinB { +structure C with [MixinB] { c: String } ``` @@ -181,7 +181,7 @@ union UserActions { unsubscribe: UnsubscribeAction, } -union AdminActions with UserAction { +union AdminActions with [UserAction] { banUser: BanUserAction, promoteToAdmin: PromoteToAdminAction } @@ -204,7 +204,7 @@ structure UserInfo { userId: String } -structure UserSummary with UserInfo {} +structure UserSummary with [UserInfo] {} ``` Is equivalent to the following flattened structure because it inherits the @@ -230,7 +230,7 @@ structure UserInfo { /// Specific documentation @tags(["replaced-tags"]) -structure UserSummary with UserInfo {} +structure UserSummary with [UserInfo] {} ``` Is equivalent to the following flattened structure because it inherits the @@ -268,13 +268,11 @@ structure StructB {} /// C @threeTrait @mixin -structure StructC with - StructA - StructB {} +structure StructC with [StructA StructB] {} /// D @fourTrait -structure StructD with StructC {} +structure StructD with [StructC] {} ``` Is equivalent to the following flattened structure: @@ -325,7 +323,7 @@ structure PrivateMixin { foo: String } -structure PublicShape with PrivateMixin {} +structure PublicShape with [PrivateMixin] {} ``` `PublicShape` is equivalent to the following flattened structure: @@ -462,7 +460,7 @@ structure MyMixin { mixinMember: String } -structure MyStruct with MyMixin {} +structure MyStruct with [MyMixin] {} apply MyStruct$mixinMember @documentation("Specific docs") ``` @@ -478,7 +476,7 @@ structure MyMixin { mixinMember: String } -structure MyStruct with MyMixin { +structure MyStruct with [MyMixin] { /// Specific docs mixinMember: String } @@ -533,10 +531,10 @@ Mixins MUST NOT introduce circular references. The following model is invalid: ``` @mixin -structure CycleA with CycleB {} +structure CycleA with [CycleB] {} @mixin -structure CycleB with CycleA {} +structure CycleB with [CycleA] {} ``` @@ -557,9 +555,7 @@ structure A2 { a: Integer } -structure Invalid with - A1 - A2 {} +structure Invalid with [A1 A2] {} ``` The following model is also invalid, but not specifically because of mixins. @@ -577,9 +573,7 @@ structure A2 { A: Integer } -structure Invalid with - A1 - A2 {} +structure Invalid with [A1 A2] {} ``` A shape MAY use a member name that has already defined, but if it does it MUST @@ -599,9 +593,7 @@ structure A2 { a: String } -structure Valid with - A1 - A2 {} +structure Valid with [A1 A2] {} ``` @@ -623,7 +615,7 @@ union_statement = "union" ws identifier ws [mixins ws] union_members service_statement = "service" ws identifier ws [mixins ws] node_object operation_statement = "operation" ws identifier ws [mixins ws] node_object resource_statement = "resource" ws identifier ws [mixins ws] node_object -mixins = "with" 1*(ws shape_id) +mixins = "with" ws "[" 1*(ws shape_id) ws "]" ``` @@ -684,7 +676,7 @@ structure PaginatedInput { pageSize: Integer } -structure ListSomethingInput with PaginatedInput { +structure ListSomethingInput with [PaginatedInput] { nameFilter: String } ``` @@ -761,10 +753,10 @@ structure PaginatedInput { pageSize: Integer } -structure ListSomethingInput with +structure ListSomethingInput with [ PaginatedInput FilteredByName -{ +]{ sizeFilter: Integer } ``` @@ -800,7 +792,7 @@ service A { operation OperationB {} @mixin -service B with A { +service B with [A] { version: "B" rename: { "smithy.example#OperationA": "OperA" @@ -811,7 +803,7 @@ service B with A { operation OperationC {} -service C with B { +service C with [B] { version: "C" rename: { "smithy.example#OperationA": "OpA" @@ -981,7 +973,7 @@ mixin UserActions { subscribe: SubscribeAction, } -union AdminActions with UserAction {} +union AdminActions with [UserAction] {} ``` The `required` trait on `UserActions$subscribe` is valid, but it makes it so @@ -1024,7 +1016,7 @@ structure FooMixin { otherMember: String } -structure ApplicationOfFooMixin with FooMixin { +structure ApplicationOfFooMixin with [FooMixin] { // Remove the required trait from this member. @override([omitTraits: [required]]) someMember: String @@ -1048,7 +1040,7 @@ structure FooMixinOptional { } @mixin -structure FooMixinRequired with FooMixinOptional {} +structure FooMixinRequired with [FooMixinOptional] {} apply FooMixinRequired$someMember @required ``` diff --git a/smithy-jsonschema/src/test/resources/software/amazon/smithy/jsonschema/model-with-mixins.smithy b/smithy-jsonschema/src/test/resources/software/amazon/smithy/jsonschema/model-with-mixins.smithy index 2b78022d96b..4e109f46b1f 100644 --- a/smithy-jsonschema/src/test/resources/software/amazon/smithy/jsonschema/model-with-mixins.smithy +++ b/smithy-jsonschema/src/test/resources/software/amazon/smithy/jsonschema/model-with-mixins.smithy @@ -7,6 +7,6 @@ structure Mixin { foo: String } -structure UsesMixin with Mixin { +structure UsesMixin with [Mixin] { baz: String } diff --git a/smithy-model/src/main/java/software/amazon/smithy/model/loader/IdlModelParser.java b/smithy-model/src/main/java/software/amazon/smithy/model/loader/IdlModelParser.java index cc99b890398..11f1ea4646f 100644 --- a/smithy-model/src/main/java/software/amazon/smithy/model/loader/IdlModelParser.java +++ b/smithy-model/src/main/java/software/amazon/smithy/model/loader/IdlModelParser.java @@ -589,36 +589,16 @@ private void parseMixins(ShapeId id) { } ws(); + expect('['); + ws(); + do { clearPendingDocs(); String target = ParserUtils.parseShapeId(this); modelFile.addForwardReference(target, resolved -> modelFile.addPendingMixin(id, resolved)); ws(); - } while (!peekEndWith()); - } - - private boolean peekEndWith() { - if (peek() == '{' || peek() == '@' || eof()) { - return true; - } - - // We could make this more efficient with a prefix trie - for (String shapeType : SHAPE_TYPES) { - if (peekString(shapeType)) { - return true; - } - } - - return false; - } - - private boolean peekString(String possibility) { - for (int i = 0; i < possibility.length(); i++) { - if (peek(i) != possibility.charAt(i)) { - return false; - } - } - return !ParserUtils.isValidIdentifierCharacter(peek(possibility.length())); + } while (peek() != ']'); + expect(']'); } private void parseOperationStatement(ShapeId id, SourceLocation location) { @@ -724,6 +704,7 @@ private void parseIdList(Consumer consumer) { private void parseServiceStatement(ShapeId id, SourceLocation location) { ws(); parseMixins(id); + ws(); ServiceShape.Builder builder = new ServiceShape.Builder().id(id).source(location); ObjectNode shapeNode = IdlNodeParser.parseObjectNode(this, id.toString()); LoaderUtils.checkForAdditionalProperties(shapeNode, id, SERVICE_PROPERTY_NAMES, modelFile.events()); @@ -754,6 +735,7 @@ private void optionalIdList(ObjectNode node, String name, Consumer cons private void parseResourceStatement(ShapeId id, SourceLocation location) { ws(); parseMixins(id); + ws(); ResourceShape.Builder builder = ResourceShape.builder().id(id).source(location); modelFile.onShape(builder); ObjectNode shapeNode = IdlNodeParser.parseObjectNode(this, id.toString()); diff --git a/smithy-model/src/main/java/software/amazon/smithy/model/shapes/SmithyIdlModelSerializer.java b/smithy-model/src/main/java/software/amazon/smithy/model/shapes/SmithyIdlModelSerializer.java index 6a355f01c66..808a9f37839 100644 --- a/smithy-model/src/main/java/software/amazon/smithy/model/shapes/SmithyIdlModelSerializer.java +++ b/smithy-model/src/main/java/software/amazon/smithy/model/shapes/SmithyIdlModelSerializer.java @@ -393,7 +393,7 @@ private static final class ShapeSerializer extends ShapeVisitor.Default { protected Void getDefault(Shape shape) { serializeTraits(shape); codeWriter.writeInline("$L $L ", shape.getType(), shape.getId().getName()); - writeMixins(shape, false); + writeMixins(shape); codeWriter.write("").write(""); return null; } @@ -412,24 +412,22 @@ private void shapeWithMembers(Shape shape, List members) { serializeTraits(shape); codeWriter.writeInline("$L $L ", shape.getType(), shape.getId().getName()); - writeMixins(shape, !nonMixinMembers.isEmpty()); + writeMixins(shape); writeShapeMembers(nonMixinMembers); codeWriter.write(""); applyIntroducedTraits(mixinMembers); } - private void writeMixins(Shape shape, boolean hasNonMixinMembers) { + private void writeMixins(Shape shape) { if (shape.getMixins().size() == 1) { - codeWriter.writeInline("with $I ", shape.getMixins().iterator().next()); + codeWriter.writeInline("with [$I] ", shape.getMixins().iterator().next()); } else if (shape.getMixins().size() > 1) { - codeWriter.writeInline("with"); + codeWriter.write("with [").indent(); for (ShapeId id : shape.getMixins()) { // Trailing spaces are trimmed. - codeWriter.writeInline("\n $I ", id); - } - if (hasNonMixinMembers) { - codeWriter.write(""); + codeWriter.write("$I", id); } + codeWriter.dedent().writeInline("] "); } } @@ -550,7 +548,7 @@ public Void unionShape(UnionShape shape) { public Void serviceShape(ServiceShape shape) { serializeTraits(shape); codeWriter.writeInline("service $L ", shape.getId().getName()); - writeMixins(shape, false); + writeMixins(shape); codeWriter.openBlock("{"); ServiceShape preMixinShape = preMixinIndex.getPreMixinShape(shape).asServiceShape().get(); @@ -577,7 +575,7 @@ public Void serviceShape(ServiceShape shape) { public Void resourceShape(ResourceShape shape) { serializeTraits(shape); codeWriter.writeInline("resource $L ", shape.getId().getName()); - writeMixins(shape, false); + writeMixins(shape); codeWriter.openBlock("{"); if (!shape.getIdentifiers().isEmpty()) { codeWriter.openBlock("identifiers: {"); @@ -608,7 +606,7 @@ public Void operationShape(OperationShape shape) { OperationShape preMixinShape = preMixinIndex.getPreMixinShape(shape).asOperationShape().get(); serializeTraits(shape); codeWriter.writeInline("operation $L ", shape.getId().getName()); - writeMixins(shape, false); + writeMixins(shape); codeWriter.openBlock("{"); List mixinMembers = new ArrayList<>(); mixinMembers.addAll(writeInlineableProperty("input", shape.getInputShape(), InputTrait.ID)); @@ -650,7 +648,7 @@ private Collection writeInlineableProperty(String key, ShapeId shap } } - writeMixins(structure, !nonMixinMembers.isEmpty()); + writeMixins(structure); writeShapeMembers(nonMixinMembers); if (!hasOnlyDefaultTrait(structure, defaultTrait)) { diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/errorfiles/validators/mixins/mixin-illegal-redefined-member.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/errorfiles/validators/mixins/mixin-illegal-redefined-member.smithy index 089c39c394a..2a6455bb470 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/errorfiles/validators/mixins/mixin-illegal-redefined-member.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/errorfiles/validators/mixins/mixin-illegal-redefined-member.smithy @@ -8,18 +8,18 @@ structure Foo { bar: String } -structure Baz with Foo { +structure Baz with [Foo] { foo: Integer // cannot redefine mixin members! bar: String // This is allowed because the target hasn't changed } @mixin -structure Bam with Foo { +structure Bam with [Foo] { foo: Integer // cannot redefine mixin members! bar: String // This is allowed because the target hasn't changed } -structure Boo with Bam { +structure Boo with [Bam] { foo: Long // cannot redefine mixin members! bar: String // This is allowed because the target hasn't changed } diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/errorfiles/validators/mixins/mixin-trait-applied.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/errorfiles/validators/mixins/mixin-trait-applied.smithy index a7e48f4e018..c234a49322b 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/errorfiles/validators/mixins/mixin-trait-applied.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/errorfiles/validators/mixins/mixin-trait-applied.smithy @@ -6,7 +6,7 @@ namespace smithy.example structure mixinTrait {} // This is fine, and it makes this shape a trait! -structure usesMixinTrait with mixinTrait {} +structure usesMixinTrait with [mixinTrait] {} @usesMixinTrait structure FineUseOfTrait {} diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/knowledge/premixin.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/knowledge/premixin.smithy index cc59b3a18eb..0e7afe6e25d 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/knowledge/premixin.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/knowledge/premixin.smithy @@ -3,7 +3,7 @@ $version: "2.0" namespace smithy.example @private -service MixedService with MixinService { +service MixedService with [MixinService] { version: "2022-01-01" operations: [ MixedServiceOperation @@ -50,7 +50,7 @@ operation MixinOperation { } @private -operation MixedOperation with MixinOperation { +operation MixedOperation with [MixinOperation] { errors: [MixedError] } @@ -84,6 +84,6 @@ string MixinRename string MixinString @private -string MixedString with MixinString +string MixedString with [MixinString] string OverriddenRename diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/invalid/mixins/dangling-with.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/invalid/mixins/dangling-with.smithy index f55462a2ffe..b8319bb95cb 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/invalid/mixins/dangling-with.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/invalid/mixins/dangling-with.smithy @@ -1,4 +1,4 @@ -// Parse error at line 6, column 1 near ``: Expected a valid identifier character, but found '' +// Parse error at line 6, column 1 near ``: Expected: '[', but found '' $version: "2" namespace com.foo diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/invalid/mixins/missing-rest-of-with-word.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/invalid/mixins/missing-rest-of-with-word.smithy index d7e31186a52..f038cf9b8f6 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/invalid/mixins/missing-rest-of-with-word.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/invalid/mixins/missing-rest-of-with-word.smithy @@ -1,5 +1,5 @@ -// Parse error at line 5, column 18 near ` Baz`: Expected: 'h', but found ' ' +// Parse error at line 5, column 18 near ` `: Expected: 'h', but found ' ' $version: "2" namespace com.foo -structure Foo wit Baz {} +structure Foo wit [Baz] {} diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/invalid/mixins/mix-types.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/invalid/mixins/mix-types.smithy index 823ceaf93f3..7c415c1b3cb 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/invalid/mixins/mix-types.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/invalid/mixins/mix-types.smithy @@ -7,4 +7,4 @@ union Bar { first: String } -structure Foo with Bar {} +structure Foo with [Bar] {} diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/invalid/mixins/mixins-usage-in-explicit-1-0.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/invalid/mixins/mixins-usage-in-explicit-1-0.smithy index 5634323e0e4..3de5b363575 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/invalid/mixins/mixins-usage-in-explicit-1-0.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/invalid/mixins/mixins-usage-in-explicit-1-0.smithy @@ -1,5 +1,5 @@ -// Parse error at line 5, column 19 near ` Bar`: Mixins can only be used with Smithy version 2 or later. Attempted to use mixins with version `1.0`. +// Parse error at line 5, column 19 near ` `: Mixins can only be used with Smithy version 2 or later. Attempted to use mixins with version `1.0`. $version: "1.0" namespace smithy.example -structure Foo with Bar {} +structure Foo with [Bar] {} diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/invalid/mixins/mixins-usage-in-implicit-1-0.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/invalid/mixins/mixins-usage-in-implicit-1-0.smithy index 22291e3be0a..df8a67024d4 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/invalid/mixins/mixins-usage-in-implicit-1-0.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/invalid/mixins/mixins-usage-in-implicit-1-0.smithy @@ -1,4 +1,4 @@ -// Parse error at line 4, column 19 near ` Bar`: Mixins can only be used with Smithy version 2 or later. Attempted to use mixins with version `1.0`. +// Parse error at line 4, column 19 near ` `: Mixins can only be used with Smithy version 2 or later. Attempted to use mixins with version `1.0`. namespace smithy.example -structure Foo with Bar {} +structure Foo with [Bar] {} diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/invalid/mixins/with-but-no-ids.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/invalid/mixins/with-but-no-ids.smithy index 2a32ac1a8b1..f9fd01569ba 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/invalid/mixins/with-but-no-ids.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/invalid/mixins/with-but-no-ids.smithy @@ -1,5 +1,5 @@ -// Parse error at line 5, column 20 near `{}`: Expected a valid identifier character, but found '{' +// Parse error at line 5, column 21 near `] `: Expected a valid identifier character, but found ']' $version: "2" namespace com.foo -structure Foo with {} +structure Foo with [] {} diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/mixins/mixin-conflict-acceptable-1.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/mixins/mixin-conflict-acceptable-1.smithy index 09fd6389650..a39bc837ed8 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/mixins/mixin-conflict-acceptable-1.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/mixins/mixin-conflict-acceptable-1.smithy @@ -3,7 +3,7 @@ $version: "2.0" namespace smithy.example @mixin -structure A with B { +structure A with [B] { a: String } diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/mixins/mixin-conflict-acceptable-2.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/mixins/mixin-conflict-acceptable-2.smithy index 37e2185b578..412a4111324 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/mixins/mixin-conflict-acceptable-2.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/mixins/mixin-conflict-acceptable-2.smithy @@ -3,6 +3,6 @@ $version: "2.0" namespace smithy.example @mixin -structure A with B { +structure A with [B] { a: String } diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/mixins/mixin-conflict-error.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/mixins/mixin-conflict-error.smithy index 0307fa5a8d6..a299c4ec41d 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/mixins/mixin-conflict-error.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/mixins/mixin-conflict-error.smithy @@ -4,6 +4,6 @@ $version: "2.0" namespace smithy.example @mixin -structure A with B { +structure A with [B] { a: Integer } diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/mixins/mixins-can-override-traits.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/mixins/mixins-can-override-traits.smithy index 6c73aac11c4..5edeb5f4a5d 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/mixins/mixins-can-override-traits.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/mixins/mixins-can-override-traits.smithy @@ -12,7 +12,7 @@ structure A { /// B @deprecated @mixin -structure B with A { +structure B with [A] { /// B.b b: String } @@ -28,7 +28,7 @@ structure C { /// D @mixin @externalDocumentation(web: "http://example.com") -structure D with C { +structure D with [C] { /// D.d d: String } @@ -40,14 +40,14 @@ apply D$c @documentation("I've changed") /// E @since("X") @mixin -structure E with D { +structure E with [D] { /// E.e e: String } /// F @internal -structure F with B, E { +structure F with [B, E] { /// F.f f: String } diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/inline-io/inline-io.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/inline-io/inline-io.smithy index 2438c748680..858368f5d09 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/inline-io/inline-io.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/inline-io/inline-io.smithy @@ -30,11 +30,11 @@ structure NameBearer { } operation UsesMixins { - input := with NameBearer { + input := with [NameBearer] { id: String } - output := with NameBearer { + output := with [NameBearer] { id: String } } @@ -42,13 +42,13 @@ operation UsesMixins { operation UsesTraitsAndMixins { input := @sensitive - with NameBearer { + with [NameBearer] { id: String } output := @sensitive - with NameBearer { + with [NameBearer] { id: String } } diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/idl-mixins-redefine-member.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/idl-mixins-redefine-member.smithy index a9d896fd98c..96d901f885d 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/idl-mixins-redefine-member.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/idl-mixins-redefine-member.smithy @@ -8,7 +8,7 @@ structure MixinStructure { redefineable: String } -structure MixedStructure with MixinStructure { +structure MixedStructure with [MixinStructure] { // Since the target hasn't changed, this is an acceptable redefinition. // Traits are still inherited as normal, they just don't have to use // apply to introduce new ones. diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/loads-mixins-with-whitespace.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/loads-mixins-with-whitespace.smithy index 3a2ac3b7d70..17d4082292d 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/loads-mixins-with-whitespace.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/loads-mixins-with-whitespace.smithy @@ -8,8 +8,8 @@ structure A {} @mixin structure B {} -structure C with +structure C with [ A ,,, - , B ,,, , {} + , B ,,, , ] {} diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/loads-mixins.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/loads-mixins.smithy index f2784592b91..5055db8be9b 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/loads-mixins.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/loads-mixins.smithy @@ -5,97 +5,97 @@ namespace smithy.example @mixin structure A {} -structure B with A {} +structure B with [A] {} @mixin structure C {} @mixin -structure D with C {} +structure D with [C] {} @mixin -structure E with D {} +structure E with [D] {} -structure F with A, E {} +structure F with [A, E] {} @mixin blob MixinBlob -blob MixedBlob with MixinBlob +blob MixedBlob with [MixinBlob] @mixin boolean MixinBoolean -boolean MixedBoolean with MixinBoolean +boolean MixedBoolean with [MixinBoolean] @mixin string MixinString -string MixedString with MixinString +string MixedString with [MixinString] @mixin byte MixinByte -byte MixedByte with MixinByte +byte MixedByte with [MixinByte] @mixin short MixinShort -short MixedShort with MixinShort +short MixedShort with [MixinShort] @mixin integer MixinInteger -integer MixedInteger with MixinInteger +integer MixedInteger with [MixinInteger] @mixin long MixinLong -long MixedLong with MixinLong +long MixedLong with [MixinLong] @mixin float MixinFloat -float MixedFloat with MixinFloat +float MixedFloat with [MixinFloat] @mixin double MixinDouble -double MixedDouble with MixinDouble +double MixedDouble with [MixinDouble] @mixin bigInteger MixinBigInt -bigInteger MixedBigInt with MixinBigInt +bigInteger MixedBigInt with [MixinBigInt] @mixin bigDecimal MixinBigDecimal -bigDecimal MixedBigDecimal with MixinBigDecimal +bigDecimal MixedBigDecimal with [MixinBigDecimal] @mixin timestamp MixinTimestamp -timestamp MixedTimestamp with MixinTimestamp +timestamp MixedTimestamp with [MixinTimestamp] @mixin document MixinDocument -document MixedDocument with MixinDocument +document MixedDocument with [MixinDocument] @mixin list MixinList { member: String } -list MixedList with MixinList {} +list MixedList with [MixinList] {} @mixin set MixinSet { member: String } -set MixedSet with MixinSet {} +set MixedSet with [MixinSet] {} @mixin map MixinMap { @@ -103,19 +103,19 @@ map MixinMap { value: String } -map MixedMap with MixinMap {} +map MixedMap with [MixinMap] {} @mixin service MixinService {} -service MixedService with MixinService {} +service MixedService with [MixinService] {} @mixin resource MixinResource {} -resource MixedResource with MixinResource {} +resource MixedResource with [MixinResource] {} @mixin operation MixinOperation {} -operation MixedOperation with MixinOperation {} +operation MixedOperation with [MixinOperation] {} diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/mixin-names.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/mixin-names.smithy index 26cc2476420..69359715e82 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/mixin-names.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/mixin-names.smithy @@ -16,6 +16,6 @@ integer NotPrefixed @mixin integer iiiiiii -integer MixedInt with NotPrefixed integerPrefixed iiiiiii +integer MixedInt with [NotPrefixed integerPrefixed iiiiiii] integer SafeInt diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/mixins-with-members-and-traits.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/mixins-with-members-and-traits.smithy index 2185be685ac..7d9e89d9535 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/mixins-with-members-and-traits.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/mixins-with-members-and-traits.smithy @@ -13,7 +13,7 @@ structure A { /// B @deprecated @mixin -structure B with A { +structure B with [A] { /// B.b b: String } @@ -29,7 +29,7 @@ structure C { /// D @mixin @externalDocumentation(web: "http://example.com") -structure D with C { +structure D with [C] { /// D.d d: String } @@ -41,14 +41,14 @@ apply D$c @documentation("I've changed") /// E @since("X") @mixin -structure E with D { +structure E with [D] { /// E.e e: String } /// F @internal -structure F with B, E { +structure F with [B, E] { /// F.f f: String } diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/mixins-with-members.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/mixins-with-members.smithy index 3a084c370d6..d7ddbe8b4ce 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/mixins-with-members.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/mixins-with-members.smithy @@ -8,7 +8,7 @@ structure A { } @mixin -structure B with A { +structure B with [A] { b: String } @@ -18,15 +18,15 @@ structure C { } @mixin -structure D with C { +structure D with [C] { d: String } @mixin -structure E with D { +structure E with [D] { e: String } -structure F with B, E { +structure F with [B, E] { f: String } diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/mixins-with-mixin-local-traits.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/mixins-with-mixin-local-traits.smithy index e4091a58873..70169b1123a 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/mixins-with-mixin-local-traits.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/mixins-with-mixin-local-traits.smithy @@ -11,4 +11,4 @@ structure PrivateMixin { foo: String } -structure PublicShape with PrivateMixin {} +structure PublicShape with [PrivateMixin] {} diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/operations.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/operations.smithy index 713ab580aab..368e9ea0967 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/operations.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/operations.smithy @@ -14,6 +14,6 @@ operation InternalMixin { errors: [MixinError] } -operation ConcreteOperation with InternalMixin { +operation ConcreteOperation with [InternalMixin] { errors: [ConcreteError] } diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/resources.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/resources.smithy index 0c3c9c86892..b06a60d054d 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/resources.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/resources.smithy @@ -6,4 +6,4 @@ namespace smithy.example @internal resource MixinResource {} -resource MixedResource with MixinResource {} +resource MixedResource with [MixinResource] {} diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/services.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/services.smithy index 5f5e9c2bd75..7b8085ed568 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/services.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/loader/valid/mixins/services.smithy @@ -25,4 +25,4 @@ service MixinService { resources: [MixinResource] } -service MixedService with MixinService {} +service MixedService with [MixinService] {} diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/selector/structure-with-mixins.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/selector/structure-with-mixins.smithy index 4e99ef54e70..650dbfbafeb 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/selector/structure-with-mixins.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/selector/structure-with-mixins.smithy @@ -6,9 +6,9 @@ namespace smithy.example structure Mixin1 {} @mixin -structure Mixin2 with Mixin1 {} +structure Mixin2 with [Mixin1] {} -structure Concrete with Mixin2 {} +structure Concrete with [Mixin2] {} structure NoMixins {} diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/data-mixins.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/data-mixins.smithy index 19ae396cee8..1aa73197fe0 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/data-mixins.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/data-mixins.smithy @@ -2,7 +2,7 @@ $version: "2.0" namespace smithy.example -list MixedList with MixinList {} +list MixedList with [MixinList] {} @internal @mixin @@ -10,7 +10,7 @@ list MixinList { member: String } -set MixedSet with MixinSet {} +set MixedSet with [MixinSet] {} @internal @mixin @@ -18,7 +18,7 @@ set MixinSet { member: String } -map MixedMap with MixinMap {} +map MixedMap with [MixinMap] {} @internal @mixin @@ -27,31 +27,31 @@ map MixinMap { value: String } -bigDecimal MixedBigDecimal with MixinBigDecimal +bigDecimal MixedBigDecimal with [MixinBigDecimal] -bigInteger MixedBigInt with MixinBigInt +bigInteger MixedBigInt with [MixinBigInt] -blob MixedBlob with MixinBlob +blob MixedBlob with [MixinBlob] -boolean MixedBoolean with MixinBoolean +boolean MixedBoolean with [MixinBoolean] -byte MixedByte with MixinByte +byte MixedByte with [MixinByte] -document MixedDocument with MixinDocument +document MixedDocument with [MixinDocument] -double MixedDouble with MixinDouble +double MixedDouble with [MixinDouble] -float MixedFloat with MixinFloat +float MixedFloat with [MixinFloat] -integer MixedInteger with MixinInteger +integer MixedInteger with [MixinInteger] -long MixedLong with MixinLong +long MixedLong with [MixinLong] -short MixedShort with MixinShort +short MixedShort with [MixinShort] -string MixedString with MixinString +string MixedString with [MixinString] -timestamp MixedTimestamp with MixinTimestamp +timestamp MixedTimestamp with [MixinTimestamp] @internal @mixin diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/inline-io.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/inline-io.smithy index 521b35b0738..3b192bcc73a 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/inline-io.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/inline-io.smithy @@ -31,10 +31,10 @@ operation HasDocComments { } operation UsesMixins { - input := with NameBearer { + input := with [NameBearer] { id: String } - output := with NameBearer { + output := with [NameBearer] { id: String } } @@ -55,12 +55,12 @@ operation UsesTraits { operation UsesTraitsAndMixins { input := @sensitive - with NameBearer { + with [NameBearer] { id: String } output := @sensitive - with NameBearer { + with [NameBearer] { id: String } } diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/mixins.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/mixins.smithy index 68d19cb55c5..1c3585cf4ea 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/mixins.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/mixins.smithy @@ -13,7 +13,7 @@ structure A { /// B @deprecated @mixin -structure B with A { +structure B with [A] { /// B.b b: String } @@ -33,7 +33,7 @@ structure C { web: "http://example.com" ) @mixin -structure D with C { +structure D with [C] { /// D.d d: String } @@ -46,17 +46,17 @@ apply D$c { /// E @mixin @since("X") -structure E with D { +structure E with [D] { /// E.e e: String } /// F @internal -structure F with +structure F with [ B E -{ +] { /// F.f f: String } @@ -68,10 +68,11 @@ apply F$a { apply F$e @sensitive -structure G with +structure G with [ B - E {} + E +] {} -structure H with B {} +structure H with [B] {} structure I {} diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/operation-mixins.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/operation-mixins.smithy index 24a041e3f45..074f742ebfd 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/operation-mixins.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/operation-mixins.smithy @@ -2,7 +2,7 @@ $version: "2.0" namespace smithy.example -operation ConcreteOperation with InternalMixin { +operation ConcreteOperation with [InternalMixin] { input: Unit output: Unit errors: [ diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/resource-mixins.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/resource-mixins.smithy index a8c89fbe8c4..325a6f403ba 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/resource-mixins.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/resource-mixins.smithy @@ -2,7 +2,7 @@ $version: "2.0" namespace smithy.example -resource MixedResource with MixinResource { +resource MixedResource with [MixinResource] { } @internal diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/service-mixins-with-merging.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/service-mixins-with-merging.smithy index 16ac8196e5c..0cbe5249ea4 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/service-mixins-with-merging.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/service-mixins-with-merging.smithy @@ -2,7 +2,7 @@ $version: "2.0" namespace smithy.example -service MixedService with MixinService { +service MixedService with [MixinService] { version: "2022-01-01" operations: [ MixedOperation diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/service-mixins.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/service-mixins.smithy index ce3b75f3c7b..f98a1ab14a0 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/service-mixins.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/shapes/idl-serialization/cases/service-mixins.smithy @@ -2,7 +2,7 @@ $version: "2.0" namespace smithy.example -service MixedService with MixinService { +service MixedService with [MixinService] { } @internal diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/model.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/model.smithy index 2082229ef3a..aedd4db24ae 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/model.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/model.smithy @@ -9,14 +9,14 @@ structure A { } @mixin -structure A2 with A { +structure A2 with [A] { a2: String } apply A2$a @documentation("A2") @mixin -structure A3 with A2 { +structure A3 with [A2] { a3: String } @@ -28,23 +28,23 @@ structure B { } @mixin -structure B2 with B { +structure B2 with [B] { b2: String } @mixin -structure B3 with B2 { +structure B3 with [B2] { b3: String } @mixin -structure C with A3, B3 { +structure C with [A3, B3] { c: String } apply C$a @documentation("C") -structure D with C { +structure D with [C] { d: String } diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a-a2-a3-b-b2-b3.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a-a2-a3-b-b2-b3.smithy index b7a0b8d3b3a..3abdd383f49 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a-a2-a3-b-b2-b3.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a-a2-a3-b-b2-b3.smithy @@ -7,6 +7,6 @@ structure C { c: String } -structure D with C { +structure D with [C] { d: String } diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a-a2-a3.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a-a2-a3.smithy index 2a9ca83efce..58f96956cf8 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a-a2-a3.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a-a2-a3.smithy @@ -8,20 +8,20 @@ structure B { } @mixin -structure B2 with B { +structure B2 with [B] { b2: String } @mixin -structure B3 with B2 { +structure B3 with [B2] { b3: String } @mixin -structure C with B3 { +structure C with [B3] { c: String } -structure D with C { +structure D with [C] { d: String } diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a-a2.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a-a2.smithy index dc5a55765fd..34da3740069 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a-a2.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a-a2.smithy @@ -13,20 +13,20 @@ structure B { } @mixin -structure B2 with B { +structure B2 with [B] { b2: String } @mixin -structure B3 with B2 { +structure B3 with [B2] { b3: String } @mixin -structure C with A3, B3 { +structure C with [A3, B3] { c: String } -structure D with C { +structure D with [C] { d: String } diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a-b.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a-b.smithy index e95e468a6ce..53d18568f44 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a-b.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a-b.smithy @@ -8,7 +8,7 @@ structure A2 { } @mixin -structure A3 with A2 { +structure A3 with [A2] { a3: String } @@ -18,15 +18,15 @@ structure B2 { } @mixin -structure B3 with B2 { +structure B3 with [B2] { b3: String } @mixin -structure C with A3, B3 { +structure C with [A3, B3] { c: String } -structure D with C { +structure D with [C] { d: String } diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a.smithy index 327a8929f8d..54eea282916 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a.smithy @@ -8,7 +8,7 @@ structure A2 { } @mixin -structure A3 with A2 { +structure A3 with [A2] { a3: String } @@ -18,20 +18,20 @@ structure B { } @mixin -structure B2 with B { +structure B2 with [B] { b2: String } @mixin -structure B3 with B2 { +structure B3 with [B2] { b3: String } @mixin -structure C with A3, B3 { +structure C with [A3, B3] { c: String } -structure D with C { +structure D with [C] { d: String } diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a2.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a2.smithy index 90607a9ce22..7f0c3be9446 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a2.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a2.smithy @@ -19,20 +19,20 @@ structure B { } @mixin -structure B2 with B { +structure B2 with [B] { b2: String } @mixin -structure B3 with B2 { +structure B3 with [B2] { b3: String } @mixin -structure C with A3, B3 { +structure C with [A3, B3] { c: String } -structure D with C { +structure D with [C] { d: String } diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a3.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a3.smithy index 04f56c5b6cf..16942c7007e 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a3.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-a3.smithy @@ -9,7 +9,7 @@ structure A { } @mixin -structure A2 with A { +structure A2 with [A] { a2: String } @@ -21,20 +21,20 @@ structure B { } @mixin -structure B2 with B { +structure B2 with [B] { b2: String } @mixin -structure B3 with B2 { +structure B3 with [B2] { b3: String } @mixin -structure C with B3 { +structure C with [B3] { c: String } -structure D with C { +structure D with [C] { d: String } diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-b.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-b.smithy index 8bd7c4c6f80..d80b7402d09 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-b.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-b.smithy @@ -9,14 +9,14 @@ structure A { } @mixin -structure A2 with A { +structure A2 with [A] { a2: String } apply A2$a @documentation("A2") @mixin -structure A3 with A2 { +structure A3 with [A2] { a3: String } @@ -28,18 +28,18 @@ structure B2 { } @mixin -structure B3 with B2 { +structure B3 with [B2] { b3: String } @mixin -structure C with A3, B3 { +structure C with [A3, B3] { c: String } apply C$a @documentation("C") -structure D with C { +structure D with [C] { d: String } diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-b2.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-b2.smithy index 531921ab821..5056fe8440d 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-b2.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-b2.smithy @@ -9,14 +9,14 @@ structure A { } @mixin -structure A2 with A { +structure A2 with [A] { a2: String } apply A2$a @documentation("A2") @mixin -structure A3 with A2 { +structure A3 with [A2] { a3: String } @@ -33,13 +33,13 @@ structure B3 { } @mixin -structure C with A3, B3 { +structure C with [A3, B3] { c: String } apply C$a @documentation("C") -structure D with C { +structure D with [C] { d: String } diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-b3.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-b3.smithy index a8ad265cdde..94cbb77633d 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-b3.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-b3.smithy @@ -9,14 +9,14 @@ structure A { } @mixin -structure A2 with A { +structure A2 with [A] { a2: String } apply A2$a @documentation("A2") @mixin -structure A3 with A2 { +structure A3 with [A2] { a3: String } @@ -28,18 +28,18 @@ structure B { } @mixin -structure B2 with B { +structure B2 with [B] { b2: String } @mixin -structure C with A3 { +structure C with [A3] { c: String } apply C$a @documentation("C") -structure D with C { +structure D with [C] { d: String } diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-c.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-c.smithy index 1a855bb381d..650c4ca6539 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-c.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-c.smithy @@ -12,14 +12,14 @@ structure A { } @mixin -structure A2 with A { +structure A2 with [A] { a2: String } apply A2$a @documentation("A2") @mixin -structure A3 with A2 { +structure A3 with [A2] { a3: String } @@ -31,12 +31,12 @@ structure B { } @mixin -structure B2 with B { +structure B2 with [B] { b2: String } @mixin -structure B3 with B2 { +structure B3 with [B2] { b3: String } diff --git a/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-d.smithy b/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-d.smithy index 50e5b9b4c6c..a82391c3c3d 100644 --- a/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-d.smithy +++ b/smithy-model/src/test/resources/software/amazon/smithy/model/transform/mixin-removal/without-d.smithy @@ -11,14 +11,14 @@ structure A { } @mixin -structure A2 with A { +structure A2 with [A] { a2: String } apply A2$a @documentation("A2") @mixin -structure A3 with A2 { +structure A3 with [A2] { a3: String } @@ -30,17 +30,17 @@ structure B { } @mixin -structure B2 with B { +structure B2 with [B] { b2: String } @mixin -structure B3 with B2 { +structure B3 with [B2] { b3: String } @mixin -structure C with A3, B3 { +structure C with [A3, B3] { c: String } diff --git a/smithy-openapi/src/test/resources/software/amazon/smithy/openapi/fromsmithy/model-with-mixins.smithy b/smithy-openapi/src/test/resources/software/amazon/smithy/openapi/fromsmithy/model-with-mixins.smithy index d0041360f8c..c9c09f68ba8 100644 --- a/smithy-openapi/src/test/resources/software/amazon/smithy/openapi/fromsmithy/model-with-mixins.smithy +++ b/smithy-openapi/src/test/resources/software/amazon/smithy/openapi/fromsmithy/model-with-mixins.smithy @@ -19,6 +19,6 @@ structure Mixin { greeting: String } -structure Output with Mixin { +structure Output with [Mixin] { language: String }