From 2b9f0066d88dcc1104cc5d672ce8d21f52f53e2c Mon Sep 17 00:00:00 2001 From: rishav-karanjit Date: Tue, 21 Jan 2025 13:10:06 -0800 Subject: [PATCH 01/10] auto commit --- .../amazon/polymorph/smithygo/codegen/SymbolUtils.java | 5 +++-- .../smithygo/localservice/DafnyLocalServiceGenerator.java | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/SymbolUtils.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/SymbolUtils.java index ec7d1aba80..44dcc3b719 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/SymbolUtils.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/SymbolUtils.java @@ -29,6 +29,7 @@ public final class SymbolUtils { public static final String GO_SLICE = "goSlice"; public static final String GO_MAP = "goMap"; public static final String GO_ELEMENT_TYPE = "goElementType"; + public static final String SHAPE = "shape"; // Used when a given shape must be represented differently on input. public static final String INPUT_VARIANT = "inputVariant"; @@ -66,7 +67,7 @@ public static Symbol.Builder createValueSymbolBuilder( Shape shape, String typeName ) { - return createValueSymbolBuilder(typeName).putProperty("shape", shape); + return createValueSymbolBuilder(typeName).putProperty(SHAPE, shape); } /** @@ -80,7 +81,7 @@ public static Symbol.Builder createPointableSymbolBuilder( Shape shape, String typeName ) { - return createPointableSymbolBuilder(typeName).putProperty("shape", shape); + return createPointableSymbolBuilder(typeName).putProperty(SHAPE, shape); } /** diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java index 191a740745..8b39e5007c 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java @@ -13,6 +13,7 @@ import software.amazon.polymorph.smithygo.codegen.GoDelegator; import software.amazon.polymorph.smithygo.codegen.GoWriter; import software.amazon.polymorph.smithygo.codegen.SmithyGoDependency; +import software.amazon.polymorph.smithygo.codegen.SymbolUtils; import software.amazon.polymorph.smithygo.codegen.UnionGenerator; import software.amazon.polymorph.smithygo.localservice.nameresolver.DafnyNameResolver; import software.amazon.polymorph.smithygo.localservice.nameresolver.SmithyNameResolver; @@ -31,6 +32,7 @@ import software.amazon.smithy.model.shapes.OperationShape; import software.amazon.smithy.model.shapes.ResourceShape; import software.amazon.smithy.model.shapes.ServiceShape; +import software.amazon.smithy.model.shapes.Shape; import software.amazon.smithy.model.traits.ErrorTrait; import software.amazon.smithy.model.traits.UnitTypeTrait; @@ -139,7 +141,7 @@ func NewClient(clientConfig $L) (*$T, error) { """, serviceSymbol, dafnyClient, - SmithyNameResolver.getSmithyType(service, configSymbol), + SmithyNameResolver.getSmithyType(configSymbol.expectProperty(SymbolUtils.SHAPE, Shape.class), configSymbol), serviceSymbol, SmithyNameResolver.getToDafnyMethodName( service, From f7736759194f85b431f984102b82fa1b466f1542 Mon Sep 17 00:00:00 2001 From: rishav-karanjit Date: Wed, 22 Jan 2025 12:12:49 -0800 Subject: [PATCH 02/10] handle top level shapes in aws sdk --- .../nameresolver/SmithyNameResolver.java | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/nameresolver/SmithyNameResolver.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/nameresolver/SmithyNameResolver.java index 566ada9ce2..17c57ccef0 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/nameresolver/SmithyNameResolver.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/nameresolver/SmithyNameResolver.java @@ -7,9 +7,12 @@ import java.util.HashSet; import java.util.Map; import software.amazon.smithy.aws.traits.ServiceTrait; +import software.amazon.smithy.codegen.core.CodegenException; import software.amazon.smithy.codegen.core.Symbol; +import software.amazon.smithy.model.shapes.OperationShape; import software.amazon.smithy.model.shapes.ServiceShape; import software.amazon.smithy.model.shapes.Shape; +import software.amazon.smithy.model.Model; public class SmithyNameResolver { @@ -62,6 +65,18 @@ public static String shapeNamespace(final Shape shape) { } public static String smithyTypesNamespace(final Shape shape) { + if (isShapeFromAWSSDK(shape)) { + throw new CodegenException( + "Unsupported function used for namespace resolution of AWS SDK shapes. Use smithyTypesNamespace(shape, model) instead." + ); + } + return shape.toShapeId().getNamespace() + .replace(DOT, BLANK) + .toLowerCase() + .concat("smithygeneratedtypes"); + } + + public static String smithyTypesNamespace(final Shape shape, final Model model) { final String shapeNameSpace = shape.toShapeId().getNamespace(); if (isShapeFromAWSSDK(shape)) { final String sdkName = shapeNameSpace @@ -70,12 +85,13 @@ public static String smithyTypesNamespace(final Shape shape) { if (shape.hasTrait(ServiceTrait.class)) { return sdkName; } - return sdkName.concat("types"); + // Boolean to hold if shape is input or output of any operation + boolean isTopLevelShape = model.shapes(OperationShape.class) + .anyMatch( op -> op.getInput().filter(shape.getId()::equals).isPresent() || + op.getOutput().filter(shape.getId()::equals).isPresent()); + return isTopLevelShape ? sdkName : sdkName.concat("types"); } - return shapeNameSpace - .replace(DOT, BLANK) - .toLowerCase() - .concat("smithygeneratedtypes"); + return smithyTypesNamespace(shape); } public static String getGoModuleNameForSdkNamespace( From cb22b028eed0b3565a7afcf7f8e7380b02e313c6 Mon Sep 17 00:00:00 2001 From: rishav-karanjit Date: Wed, 22 Jan 2025 12:15:41 -0800 Subject: [PATCH 03/10] Revert "auto commit" This reverts commit 2b9f0066d88dcc1104cc5d672ce8d21f52f53e2c. --- .../amazon/polymorph/smithygo/codegen/SymbolUtils.java | 5 ++--- .../smithygo/localservice/DafnyLocalServiceGenerator.java | 4 +--- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/SymbolUtils.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/SymbolUtils.java index 44dcc3b719..ec7d1aba80 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/SymbolUtils.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/SymbolUtils.java @@ -29,7 +29,6 @@ public final class SymbolUtils { public static final String GO_SLICE = "goSlice"; public static final String GO_MAP = "goMap"; public static final String GO_ELEMENT_TYPE = "goElementType"; - public static final String SHAPE = "shape"; // Used when a given shape must be represented differently on input. public static final String INPUT_VARIANT = "inputVariant"; @@ -67,7 +66,7 @@ public static Symbol.Builder createValueSymbolBuilder( Shape shape, String typeName ) { - return createValueSymbolBuilder(typeName).putProperty(SHAPE, shape); + return createValueSymbolBuilder(typeName).putProperty("shape", shape); } /** @@ -81,7 +80,7 @@ public static Symbol.Builder createPointableSymbolBuilder( Shape shape, String typeName ) { - return createPointableSymbolBuilder(typeName).putProperty(SHAPE, shape); + return createPointableSymbolBuilder(typeName).putProperty("shape", shape); } /** diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java index 8b39e5007c..191a740745 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java @@ -13,7 +13,6 @@ import software.amazon.polymorph.smithygo.codegen.GoDelegator; import software.amazon.polymorph.smithygo.codegen.GoWriter; import software.amazon.polymorph.smithygo.codegen.SmithyGoDependency; -import software.amazon.polymorph.smithygo.codegen.SymbolUtils; import software.amazon.polymorph.smithygo.codegen.UnionGenerator; import software.amazon.polymorph.smithygo.localservice.nameresolver.DafnyNameResolver; import software.amazon.polymorph.smithygo.localservice.nameresolver.SmithyNameResolver; @@ -32,7 +31,6 @@ import software.amazon.smithy.model.shapes.OperationShape; import software.amazon.smithy.model.shapes.ResourceShape; import software.amazon.smithy.model.shapes.ServiceShape; -import software.amazon.smithy.model.shapes.Shape; import software.amazon.smithy.model.traits.ErrorTrait; import software.amazon.smithy.model.traits.UnitTypeTrait; @@ -141,7 +139,7 @@ func NewClient(clientConfig $L) (*$T, error) { """, serviceSymbol, dafnyClient, - SmithyNameResolver.getSmithyType(configSymbol.expectProperty(SymbolUtils.SHAPE, Shape.class), configSymbol), + SmithyNameResolver.getSmithyType(service, configSymbol), serviceSymbol, SmithyNameResolver.getToDafnyMethodName( service, From 7aafe7626db7bbf8e3b2258ec0c38817c0be68c5 Mon Sep 17 00:00:00 2001 From: rishav-karanjit Date: Wed, 22 Jan 2025 12:16:45 -0800 Subject: [PATCH 04/10] auto commit --- .../smithygo/codegen/SymbolVisitor.java | 5 ++--- .../nameresolver/SmithyNameResolver.java | 20 +++++++++++++------ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/SymbolVisitor.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/SymbolVisitor.java index 68e5b08256..7711b2341a 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/SymbolVisitor.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/SymbolVisitor.java @@ -400,9 +400,8 @@ public Symbol mapShape(MapShape shape) { private Symbol.Builder symbolBuilderFor(Shape shape, String typeName) { final String namespace; - if (shape.hasTrait(ServiceTrait.class)) { - namespace = - shape.expectTrait(ServiceTrait.class).getSdkId().toLowerCase(); + if (SmithyNameResolver.isShapeFromAWSSDK(shape)) { + namespace = SmithyNameResolver.smithyTypesNamespace(shape, model); } else { namespace = SmithyNameResolver.smithyTypesNamespace(shape); } diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/nameresolver/SmithyNameResolver.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/nameresolver/SmithyNameResolver.java index 17c57ccef0..5f483a1645 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/nameresolver/SmithyNameResolver.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/nameresolver/SmithyNameResolver.java @@ -9,10 +9,10 @@ import software.amazon.smithy.aws.traits.ServiceTrait; import software.amazon.smithy.codegen.core.CodegenException; import software.amazon.smithy.codegen.core.Symbol; +import software.amazon.smithy.model.Model; import software.amazon.smithy.model.shapes.OperationShape; import software.amazon.smithy.model.shapes.ServiceShape; import software.amazon.smithy.model.shapes.Shape; -import software.amazon.smithy.model.Model; public class SmithyNameResolver { @@ -70,13 +70,18 @@ public static String smithyTypesNamespace(final Shape shape) { "Unsupported function used for namespace resolution of AWS SDK shapes. Use smithyTypesNamespace(shape, model) instead." ); } - return shape.toShapeId().getNamespace() + return shape + .toShapeId() + .getNamespace() .replace(DOT, BLANK) .toLowerCase() .concat("smithygeneratedtypes"); } - public static String smithyTypesNamespace(final Shape shape, final Model model) { + public static String smithyTypesNamespace( + final Shape shape, + final Model model + ) { final String shapeNameSpace = shape.toShapeId().getNamespace(); if (isShapeFromAWSSDK(shape)) { final String sdkName = shapeNameSpace @@ -86,9 +91,12 @@ public static String smithyTypesNamespace(final Shape shape, final Model model) return sdkName; } // Boolean to hold if shape is input or output of any operation - boolean isTopLevelShape = model.shapes(OperationShape.class) - .anyMatch( op -> op.getInput().filter(shape.getId()::equals).isPresent() || - op.getOutput().filter(shape.getId()::equals).isPresent()); + boolean isTopLevelShape = model + .shapes(OperationShape.class) + .anyMatch(op -> + op.getInput().filter(shape.getId()::equals).isPresent() || + op.getOutput().filter(shape.getId()::equals).isPresent() + ); return isTopLevelShape ? sdkName : sdkName.concat("types"); } return smithyTypesNamespace(shape); From 91efc1dd4f50045e5f44d8752792ce5620263f3e Mon Sep 17 00:00:00 2001 From: rishav-karanjit Date: Wed, 22 Jan 2025 13:43:03 -0800 Subject: [PATCH 05/10] add model parameter to smithyTypesNamespace --- .../smithygo/codegen/StructureGenerator.java | 4 +- .../smithygo/codegen/SymbolVisitor.java | 16 +-- .../smithygo/codegen/UnionGenerator.java | 2 +- .../smithygo/codegen/ValidationGenerator.java | 27 +++-- .../DafnyLocalServiceGenerator.java | 67 ++++++----- ...fnyLocalServiceTypeConversionProtocol.java | 112 +++++++++++------- .../nameresolver/SmithyNameResolver.java | 31 ++--- .../DafnyToSmithyShapeVisitor.java | 41 +++---- .../SmithyToDafnyShapeVisitor.java | 4 +- .../smithygo/utils/GoCodegenUtils.java | 11 +- 10 files changed, 172 insertions(+), 143 deletions(-) diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/StructureGenerator.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/StructureGenerator.java index b507764b98..1424abb77f 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/StructureGenerator.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/StructureGenerator.java @@ -115,7 +115,7 @@ public void renderStructure(Runnable runnable, boolean isInputStructure) { .getProperty(SymbolUtils.INPUT_VARIANT, Symbol.class) .orElse(memberSymbol); } - var namespace = SmithyNameResolver.smithyTypesNamespace(targetShape); + var namespace = SmithyNameResolver.smithyTypesNamespace(targetShape, model); if (targetShape.hasTrait(ReferenceTrait.class)) { memberSymbol = @@ -158,7 +158,7 @@ public void renderStructure(Runnable runnable, boolean isInputStructure) { targetShape.getId().getNamespace() ), "types", - SmithyNameResolver.smithyTypesNamespace(targetShape) + SmithyNameResolver.smithyTypesNamespace(targetShape, model) ); } else if ( !member diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/SymbolVisitor.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/SymbolVisitor.java index 7711b2341a..35b12fbfa9 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/SymbolVisitor.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/SymbolVisitor.java @@ -403,7 +403,7 @@ private Symbol.Builder symbolBuilderFor(Shape shape, String typeName) { if (SmithyNameResolver.isShapeFromAWSSDK(shape)) { namespace = SmithyNameResolver.smithyTypesNamespace(shape, model); } else { - namespace = SmithyNameResolver.smithyTypesNamespace(shape); + namespace = SmithyNameResolver.smithyTypesNamespace(shape, model); } if (pointableIndex.isPointable(shape)) { return SymbolUtils.createPointableSymbolBuilder( @@ -540,11 +540,11 @@ public Symbol stringShape(StringShape shape) { return symbolBuilderFor( shape, name, - SmithyNameResolver.smithyTypesNamespace(shape) + SmithyNameResolver.smithyTypesNamespace(shape, model) ) .definitionFile( "./%s/enums.go".formatted( - SmithyNameResolver.smithyTypesNamespace(shape) + SmithyNameResolver.smithyTypesNamespace(shape, model) ) ) .build(); @@ -575,13 +575,13 @@ public Symbol structureShape(StructureShape shape) { if (shape.hasTrait(ErrorTrait.ID)) { builder.definitionFile( "./%s/errors.go".formatted( - SmithyNameResolver.smithyTypesNamespace(shape) + SmithyNameResolver.smithyTypesNamespace(shape, model) ) ); } else { builder.definitionFile( "./%s/types.go".formatted( - SmithyNameResolver.smithyTypesNamespace(shape) + SmithyNameResolver.smithyTypesNamespace(shape, model) ) ); } @@ -645,7 +645,7 @@ public Symbol unionShape(UnionShape shape) { return symbolBuilderFor( shape, name, - SmithyNameResolver.smithyTypesNamespace(shape) + SmithyNameResolver.smithyTypesNamespace(shape, model) ) .definitionFile("./types/types.go") .build(); @@ -671,11 +671,11 @@ public Symbol intEnumShape(IntEnumShape shape) { return symbolBuilderFor( shape, name, - SmithyNameResolver.smithyTypesNamespace(settings.getService(model)) + SmithyNameResolver.smithyTypesNamespace(settings.getService(model), model) ) .definitionFile( "./%s/enums.go".formatted( - SmithyNameResolver.smithyTypesNamespace(shape) + SmithyNameResolver.smithyTypesNamespace(shape, model) ) ) .build(); diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/UnionGenerator.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/UnionGenerator.java index 328743d0b2..6325408ef3 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/UnionGenerator.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/UnionGenerator.java @@ -89,7 +89,7 @@ public void generateUnion(GoWriter writer) { writer.write("Value $T", memberSymbol); } else { // Handling smithy-dafny Reference Trait begins - var namespace = SmithyNameResolver.smithyTypesNamespace(target); + var namespace = SmithyNameResolver.smithyTypesNamespace(target, model); var newMemberSymbol = memberSymbol; if (target.hasTrait(ReferenceTrait.class)) { newMemberSymbol = diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/ValidationGenerator.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/ValidationGenerator.java index 376077c6bd..f9690d07f1 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/ValidationGenerator.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/ValidationGenerator.java @@ -515,7 +515,8 @@ private void renderListShape( final var inputType = GoCodegenUtils.getType( symbolProvider.toSymbol(currentShape), currentShape, - isExternalShape + isExternalShape, + context.model() ); if (isExternalShape) { if (SmithyNameResolver.isShapeFromAWSSDK(currentShape)) { @@ -524,14 +525,14 @@ private void renderListShape( currentShape.getId().getNamespace() ), "types", - SmithyNameResolver.smithyTypesNamespace(currentShape) + SmithyNameResolver.smithyTypesNamespace(currentShape, model) ); } else { writer.addImportFromModule( SmithyNameResolver.getGoModuleNameForSmithyNamespace( currentShape.getId().getNamespace() ), - SmithyNameResolver.smithyTypesNamespace(currentShape) + SmithyNameResolver.smithyTypesNamespace(currentShape, model) ); } } @@ -612,7 +613,8 @@ private void renderMapShape( final var inputType = GoCodegenUtils.getType( symbolProvider.toSymbol(currentShape), currentShape, - isExternalShape + isExternalShape, + context.model() ); if (isExternalShape) { if (SmithyNameResolver.isShapeFromAWSSDK(currentShape)) { @@ -621,14 +623,14 @@ private void renderMapShape( currentShape.getId().getNamespace() ), "types", - SmithyNameResolver.smithyTypesNamespace(currentShape) + SmithyNameResolver.smithyTypesNamespace(currentShape, model) ); } else { writer.addImportFromModule( SmithyNameResolver.getGoModuleNameForSmithyNamespace( currentShape.getId().getNamespace() ), - SmithyNameResolver.smithyTypesNamespace(currentShape) + SmithyNameResolver.smithyTypesNamespace(currentShape, model) ); } } @@ -673,10 +675,10 @@ private void renderUnionShape( var dataSourceForUnion = dataSource; final var currServiceShapeNamespace = SmithyNameResolver.smithyTypesNamespace( - context.settings().getService(model) + context.settings().getService(model), model ); final var currShapeNamespace = SmithyNameResolver.smithyTypesNamespace( - memberShape + memberShape, model ); if (!funcInput.isEmpty()) { final Boolean isExternalShape = @@ -685,7 +687,8 @@ private void renderUnionShape( final var inputType = GoCodegenUtils.getType( symbolProvider.toSymbol(currentShape), currentShape, - isExternalShape + isExternalShape, + context.model() ); if (isExternalShape) { if (SmithyNameResolver.isShapeFromAWSSDK(currentShape)) { @@ -694,14 +697,14 @@ private void renderUnionShape( currentShape.getId().getNamespace() ), "types", - SmithyNameResolver.smithyTypesNamespace(currentShape) + SmithyNameResolver.smithyTypesNamespace(currentShape, model) ); } else { writer.addImportFromModule( SmithyNameResolver.getGoModuleNameForSmithyNamespace( currentShape.getId().getNamespace() ), - SmithyNameResolver.smithyTypesNamespace(currentShape) + SmithyNameResolver.smithyTypesNamespace(currentShape, model) ); } } @@ -724,7 +727,7 @@ private void renderUnionShape( ); for (final var memberInUnion : currentShape.getAllMembers().values()) { final var currMemberNamespace = SmithyNameResolver.smithyTypesNamespace( - currentShape + currentShape, model ); final Boolean isExternalShape = !currServiceShapeNamespace.equals(currMemberNamespace) && diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java index 191a740745..7cd6f55b8d 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java @@ -79,8 +79,8 @@ void generateClient(GoWriter writer) { ); writerDelegator.useFileWriter( - "%s/types.go".formatted(SmithyNameResolver.smithyTypesNamespace(service)), - SmithyNameResolver.smithyTypesNamespace(service), + "%s/types.go".formatted(SmithyNameResolver.smithyTypesNamespace(service, model)), + SmithyNameResolver.smithyTypesNamespace(service, model), writer1 -> { model .getUnionShapes() @@ -115,7 +115,7 @@ void generateClient(GoWriter writer) { SmithyNameResolver.getGoModuleNameForSmithyNamespace( context.settings().getService().getNamespace() ), - SmithyNameResolver.smithyTypesNamespace(service) + SmithyNameResolver.smithyTypesNamespace(service, model) ); writer.addUseImports(SmithyGoDependency.CONTEXT); @@ -139,7 +139,7 @@ func NewClient(clientConfig $L) (*$T, error) { """, serviceSymbol, dafnyClient, - SmithyNameResolver.getSmithyType(service, configSymbol), + SmithyNameResolver.getSmithyType(service, configSymbol, model), serviceSymbol, SmithyNameResolver.getToDafnyMethodName( service, @@ -183,7 +183,7 @@ func NewClient(clientConfig $L) (*$T, error) { SmithyNameResolver.getGoModuleNameForSmithyNamespace( outputShape.toShapeId().getNamespace() ), - SmithyNameResolver.smithyTypesNamespace(outputShape) + SmithyNameResolver.smithyTypesNamespace(outputShape, model) ); if ( !outputShape @@ -201,13 +201,13 @@ func NewClient(clientConfig $L) (*$T, error) { var inputType = inputShape.hasTrait(UnitTypeTrait.class) ? "" : ", params %s.%s".formatted( - SmithyNameResolver.smithyTypesNamespace(inputShape), + SmithyNameResolver.smithyTypesNamespace(inputShape, model), inputShape.toShapeId().getName() ); var outputType = outputShape.hasTrait(UnitTypeTrait.class) ? "" : "*%s.%s,".formatted( - SmithyNameResolver.smithyTypesNamespace(outputShape), + SmithyNameResolver.smithyTypesNamespace(outputShape, model), outputShape.toShapeId().getName() ); String baseClientCall; @@ -238,7 +238,8 @@ func NewClient(clientConfig $L) (*$T, error) { ", params %s".formatted( SmithyNameResolver.getSmithyType( inputShape, - symbolProvider.toSymbol(inputShape) + symbolProvider.toSymbol(inputShape), + model ) ); } else { @@ -295,7 +296,8 @@ func NewClient(clientConfig $L) (*$T, error) { SmithyNameResolver .getSmithyType( outputShape, - symbolProvider.toSymbol(outputShape) + symbolProvider.toSymbol(outputShape), + model ) .concat(","); GoCodegenUtils.importNamespace(outputShape, writer); @@ -316,7 +318,8 @@ func NewClient(clientConfig $L) (*$T, error) { return defaultVal,""".formatted( SmithyNameResolver.getSmithyType( outputShape, - symbolProvider.toSymbol(outputShape) + symbolProvider.toSymbol(outputShape), + model ) ); } else { @@ -361,7 +364,7 @@ func NewClient(clientConfig $L) (*$T, error) { %s opaqueErr } """.formatted( - SmithyNameResolver.smithyTypesNamespace(inputShape), + SmithyNameResolver.smithyTypesNamespace(inputShape, model), returnError ); } @@ -410,7 +413,7 @@ void generateShim() { SmithyNameResolver.getGoModuleNameForSmithyNamespace( context.settings().getService().getNamespace() ), - SmithyNameResolver.smithyTypesNamespace(service) + SmithyNameResolver.smithyTypesNamespace(service, model) ); writer.addUseImports(SmithyGoDependency.CONTEXT); writer.addImportFromModule( @@ -634,10 +637,10 @@ void shimErrors(GoWriter writer) { """, - SmithyNameResolver.smithyTypesNamespace(error), + SmithyNameResolver.smithyTypesNamespace(error, model), symbolProvider.toSymbol(error).getName(), SmithyNameResolver.getToDafnyMethodName(service, error, ""), - SmithyNameResolver.smithyTypesNamespace(error), + SmithyNameResolver.smithyTypesNamespace(error, model), symbolProvider.toSymbol(error).getName() ); } @@ -656,17 +659,17 @@ void resourceErrors(GoWriter writer) { """, - SmithyNameResolver.getSmithyType(error, symbolProvider.toSymbol(error)), + SmithyNameResolver.getSmithyType(error, symbolProvider.toSymbol(error), model), SmithyNameResolver.getToDafnyMethodName(service, error, ""), - SmithyNameResolver.getSmithyType(error, symbolProvider.toSymbol(error)) + SmithyNameResolver.getSmithyType(error, symbolProvider.toSymbol(error), model) ); } } void generateUnmodelledErrors(GenerationContext context) { writerDelegator.useFileWriter( - "%s/types.go".formatted(SmithyNameResolver.smithyTypesNamespace(service)), - SmithyNameResolver.smithyTypesNamespace(service), + "%s/types.go".formatted(SmithyNameResolver.smithyTypesNamespace(service, model)), + SmithyNameResolver.smithyTypesNamespace(service, model), writer -> { writer.write( """ @@ -683,9 +686,9 @@ void generateUnmodelledErrors(GenerationContext context) { ); writerDelegator.useFileWriter( "%s/unmodelled_errors.go".formatted( - SmithyNameResolver.smithyTypesNamespace(service) + SmithyNameResolver.smithyTypesNamespace(service, model) ), - SmithyNameResolver.smithyTypesNamespace(service), + SmithyNameResolver.smithyTypesNamespace(service, model), writer -> { writer.addUseImports(SmithyGoDependency.FMT); writer.write( @@ -736,9 +739,9 @@ void generateReferencedResources(final GenerationContext context) { } writerDelegator.useFileWriter( "%s/types.go".formatted( - SmithyNameResolver.smithyTypesNamespace(service) + SmithyNameResolver.smithyTypesNamespace(service, model) ), - SmithyNameResolver.smithyTypesNamespace(service), + SmithyNameResolver.smithyTypesNamespace(service, model), writer -> { writer.write( """ @@ -805,7 +808,7 @@ void generateReferencedResources(final GenerationContext context) { SmithyNameResolver.getGoModuleNameForSmithyNamespace( context.settings().getService().getNamespace() ), - SmithyNameResolver.smithyTypesNamespace(service) + SmithyNameResolver.smithyTypesNamespace(service, model) ); writer.addImportFromModule( SmithyNameResolver.getGoModuleNameForSmithyNamespace( @@ -846,7 +849,8 @@ void generateReferencedResources(final GenerationContext context) { : "*%s,".formatted( SmithyNameResolver.getSmithyType( outputShape, - symbolProvider.toSymbol(outputShape) + symbolProvider.toSymbol(outputShape), + model ) ); @@ -874,7 +878,8 @@ void generateReferencedResources(final GenerationContext context) { "params %s".formatted( SmithyNameResolver.getSmithyType( inputShape, - symbolProvider.toSymbol(inputShape) + symbolProvider.toSymbol(inputShape), + model ) ); baseClientCall = @@ -934,7 +939,7 @@ void generateReferencedResources(final GenerationContext context) { SmithyNameResolver .getSmithyType( outputShape, - symbolProvider.toSymbol(outputShape) + symbolProvider.toSymbol(outputShape), model ) .concat(","); final var typeAssertion = outputShape.isResourceShape() @@ -962,7 +967,8 @@ void generateReferencedResources(final GenerationContext context) { return defaultVal,""".formatted( SmithyNameResolver.getSmithyType( outputShape, - symbolProvider.toSymbol(outputShape) + symbolProvider.toSymbol(outputShape), + model ) ); } else { @@ -1028,7 +1034,7 @@ void generateNativeResourceWrapper( writer -> { writer.addImportFromModule( context.settings().getModuleName(), - SmithyNameResolver.smithyTypesNamespace(service) + SmithyNameResolver.smithyTypesNamespace(service, model) ); writer.addImportFromModule(SMITHY_DAFNY_STD_LIB_GO, "Wrappers"); writer.addImportFromModule( @@ -1048,7 +1054,7 @@ void generateNativeResourceWrapper( resourceShape.getId().getName(), DafnyNameResolver.dafnyTypesNamespace(resourceShape), resourceShape.getId().getName(), - SmithyNameResolver.smithyTypesNamespace(resourceShape), + SmithyNameResolver.smithyTypesNamespace(resourceShape, model), resourceShape.getId().getName() ) ); @@ -1069,7 +1075,8 @@ void generateNativeResourceWrapper( : "*%s,".formatted( SmithyNameResolver.getSmithyType( outputShape, - symbolProvider.toSymbol(outputShape) + symbolProvider.toSymbol(outputShape), + model ) ); String fromDafnyConvMethodNameForInput = diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java index fa4660f9b2..ff38db1365 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java @@ -120,7 +120,7 @@ public void generateSerializers(final GenerationContext context) { SmithyNameResolver.getGoModuleNameForSmithyNamespace( input.toShapeId().getNamespace() ), - SmithyNameResolver.smithyTypesNamespace(input) + SmithyNameResolver.smithyTypesNamespace(input, model) ); writer.write( """ @@ -128,7 +128,7 @@ public void generateSerializers(final GenerationContext context) { ${C|} }""", inputToDafnyMethodName, - SmithyNameResolver.getSmithyType(input, inputSymbol), + SmithyNameResolver.getSmithyType(input, inputSymbol, model), outputType, writer.consumer(w -> generateRequestSerializer( @@ -179,7 +179,7 @@ public void generateSerializers(final GenerationContext context) { SmithyNameResolver.getGoModuleNameForSmithyNamespace( output.toShapeId().getNamespace() ), - SmithyNameResolver.smithyTypesNamespace(output) + SmithyNameResolver.smithyTypesNamespace(output, model) ); writer.write( """ @@ -187,7 +187,7 @@ public void generateSerializers(final GenerationContext context) { ${C|} }""", outputToDafnyMethodName, - SmithyNameResolver.getSmithyType(output, outputSymbol), + SmithyNameResolver.getSmithyType(output, outputSymbol, model), DafnyNameResolver.getDafnyType(output, outputSymbol), writer.consumer(w -> generateResponseSerializer( @@ -281,7 +281,7 @@ public void generateSerializers(final GenerationContext context) { SmithyNameResolver.getGoModuleNameForSmithyNamespace( input.toShapeId().getNamespace() ), - SmithyNameResolver.smithyTypesNamespace(input) + SmithyNameResolver.smithyTypesNamespace(input, model) ); writer.write( """ @@ -289,7 +289,7 @@ public void generateSerializers(final GenerationContext context) { ${C|} }""", inputToDafnyMethodName, - SmithyNameResolver.getSmithyType(input, inputSymbol), + SmithyNameResolver.getSmithyType(input, inputSymbol, model), outputType, writer.consumer(w -> generateRequestSerializer( @@ -344,7 +344,7 @@ public void generateSerializers(final GenerationContext context) { SmithyNameResolver.getGoModuleNameForSmithyNamespace( output.toShapeId().getNamespace() ), - SmithyNameResolver.smithyTypesNamespace(output) + SmithyNameResolver.smithyTypesNamespace(output, model) ); writer.write( """ @@ -352,7 +352,7 @@ public void generateSerializers(final GenerationContext context) { ${C|} }""", outputToDafnyMethodName, - SmithyNameResolver.getSmithyType(output, outputSymbol), + SmithyNameResolver.getSmithyType(output, outputSymbol, model), DafnyNameResolver.getDafnyType(output, outputSymbol), writer.consumer(w -> generateResponseSerializer( @@ -407,7 +407,7 @@ public void generateSerializers(final GenerationContext context) { } """, resourceShape.getId().getName(), - SmithyNameResolver.smithyTypesNamespace(resourceShape), + SmithyNameResolver.smithyTypesNamespace(resourceShape, model), resourceShape.getId().getName(), DafnyNameResolver.dafnyTypesNamespace(resourceShape), resourceShape.getId().getName(), @@ -485,7 +485,8 @@ public void generateOrphanShapeSerializer( GoCodegenUtils.getType( context.symbolProvider().toSymbol(resourceOrService), resourceOrService, - true + true, + context.model() ); } else { outputType = @@ -497,7 +498,7 @@ public void generateOrphanShapeSerializer( .concat(context.symbolProvider().toSymbol(serviceShape).getName()); } } else { - inputType = GoCodegenUtils.getType(curSymbol, shape, true); + inputType = GoCodegenUtils.getType(curSymbol, shape, true, context.model()); outputType = DafnyNameResolver.getDafnyType(shape, curSymbol); } writerDelegator.useFileWriter( @@ -511,7 +512,7 @@ public void generateOrphanShapeSerializer( SmithyNameResolver.getGoModuleNameForSmithyNamespace( shape.toShapeId().getNamespace() ), - SmithyNameResolver.smithyTypesNamespace(shape) + SmithyNameResolver.smithyTypesNamespace(shape, context.model()) ); writer.write( """ @@ -614,7 +615,7 @@ public void generateDeserializers(final GenerationContext context) { SmithyNameResolver.getGoModuleNameForSmithyNamespace( input.toShapeId().getNamespace() ), - SmithyNameResolver.smithyTypesNamespace(input) + SmithyNameResolver.smithyTypesNamespace(input, context.model()) ); writer.write( @@ -624,7 +625,7 @@ public void generateDeserializers(final GenerationContext context) { }""", inputFromDafnyMethodName, inputType, - SmithyNameResolver.getSmithyType(input, inputSymbol), + SmithyNameResolver.getSmithyType(input, inputSymbol, context.model()), writer.consumer(w -> generateRequestDeserializer( context, @@ -679,7 +680,7 @@ public void generateDeserializers(final GenerationContext context) { SmithyNameResolver.getGoModuleNameForSmithyNamespace( output.toShapeId().getNamespace() ), - SmithyNameResolver.smithyTypesNamespace(output) + SmithyNameResolver.smithyTypesNamespace(output, context.model()) ); writer.write( @@ -689,7 +690,7 @@ public void generateDeserializers(final GenerationContext context) { }""", outputFromDafnyMethodName, DafnyNameResolver.getDafnyType(output, outputSymbol), - SmithyNameResolver.getSmithyType(output, outputSymbol), + SmithyNameResolver.getSmithyType(output, outputSymbol, context.model()), writer.consumer(w -> generateResponseDeserializer( context, @@ -787,7 +788,7 @@ public void generateDeserializers(final GenerationContext context) { SmithyNameResolver.getGoModuleNameForSmithyNamespace( input.toShapeId().getNamespace() ), - SmithyNameResolver.smithyTypesNamespace(input) + SmithyNameResolver.smithyTypesNamespace(input, context.model()) ); writer.write( @@ -797,7 +798,7 @@ public void generateDeserializers(final GenerationContext context) { }""", inputFromDafnyMethodName, inputType, - SmithyNameResolver.getSmithyType(input, inputSymbol), + SmithyNameResolver.getSmithyType(input, inputSymbol, context.model()), writer.consumer(w -> generateRequestDeserializer( context, @@ -854,7 +855,7 @@ public void generateDeserializers(final GenerationContext context) { SmithyNameResolver.getGoModuleNameForSmithyNamespace( output.toShapeId().getNamespace() ), - SmithyNameResolver.smithyTypesNamespace(output) + SmithyNameResolver.smithyTypesNamespace(output, context.model()) ); writer.write( @@ -864,7 +865,7 @@ public void generateDeserializers(final GenerationContext context) { }""", outputFromDafnyMethodName, DafnyNameResolver.getDafnyType(output, outputSymbol), - SmithyNameResolver.getSmithyType(output, outputSymbol), + SmithyNameResolver.getSmithyType(output, outputSymbol, context.model()), writer.consumer(w -> generateResponseDeserializer( context, @@ -913,7 +914,7 @@ public void generateDeserializers(final GenerationContext context) { resourceShape.getId().getName(), DafnyNameResolver.dafnyTypesNamespace(resourceShape), resourceShape.getId().getName(), - SmithyNameResolver.smithyTypesNamespace(resourceShape), + SmithyNameResolver.smithyTypesNamespace(resourceShape, context.model()), resourceShape.getId().getName(), extendableResourceWrapperCheck, resourceShape.getId().getName() @@ -995,7 +996,8 @@ public void generateOrphanShapeDeserializer( GoCodegenUtils.getType( context.symbolProvider().toSymbol(shape), shape, - true + true, + context.model() ); } writerDelegator.useFileWriter( @@ -1009,7 +1011,7 @@ public void generateOrphanShapeDeserializer( SmithyNameResolver.getGoModuleNameForSmithyNamespace( shape.toShapeId().getNamespace() ), - SmithyNameResolver.smithyTypesNamespace(shape) + SmithyNameResolver.smithyTypesNamespace(shape, context.model()) ); writer.write( """ @@ -1190,7 +1192,8 @@ private void generateConfigSerializer( getInputToDafnyMethodName, SmithyNameResolver.getSmithyType( configShape, - context.symbolProvider().toSymbol(configShape) + context.symbolProvider().toSymbol(configShape), + context.model() ), DafnyNameResolver.getDafnyType( configShape, @@ -1262,7 +1265,8 @@ private void generateErrorSerializer( getInputToDafnyMethodName, SmithyNameResolver.getSmithyType( errorShape, - context.symbolProvider().toSymbol(errorShape) + context.symbolProvider().toSymbol(errorShape), + context.model() ), DafnyNameResolver.getDafnyBaseErrorType(errorShape), writer.consumer(w -> { @@ -1311,10 +1315,10 @@ func CollectionOfErrors_Input_ToDafny(nativeInput $L.CollectionOfErrors)($L.Erro func OpaqueError_Input_ToDafny(nativeInput $L.OpaqueError)($L.Error) { return $L.Companion_Error_.Create_Opaque_(nativeInput.ErrObject) }""", - SmithyNameResolver.smithyTypesNamespace(serviceShape), + SmithyNameResolver.smithyTypesNamespace(serviceShape, context.model()), DafnyNameResolver.dafnyTypesNamespace(serviceShape), DafnyNameResolver.dafnyTypesNamespace(serviceShape), - SmithyNameResolver.smithyTypesNamespace(serviceShape), + SmithyNameResolver.smithyTypesNamespace(serviceShape, context.model()), DafnyNameResolver.dafnyTypesNamespace(serviceShape), DafnyNameResolver.dafnyTypesNamespace(serviceShape) ); @@ -1380,7 +1384,8 @@ func Error_ToDafny(err error)($L.Error) { context.model().expectShape(error), context .symbolProvider() - .toSymbol(context.model().expectShape(error)) + .toSymbol(context.model().expectShape(error)), + context.model() ), SmithyNameResolver.getToDafnyMethodName( serviceShape, @@ -1391,7 +1396,8 @@ func Error_ToDafny(err error)($L.Error) { context.model().expectShape(error), context .symbolProvider() - .toSymbol(context.model().expectShape(error)) + .toSymbol(context.model().expectShape(error)), + context.model() ) ); } @@ -1408,9 +1414,9 @@ func Error_ToDafny(err error)($L.Error) { handleDepErrorSerializer(context, w, dependencies); } }), - SmithyNameResolver.smithyTypesNamespace(serviceShape), - SmithyNameResolver.smithyTypesNamespace(serviceShape), - SmithyNameResolver.smithyTypesNamespace(serviceShape) + SmithyNameResolver.smithyTypesNamespace(serviceShape, context.model()), + SmithyNameResolver.smithyTypesNamespace(serviceShape, context.model()), + SmithyNameResolver.smithyTypesNamespace(serviceShape, context.model()) ); } ); @@ -1487,7 +1493,7 @@ private void handleDepErrorSerializer( SmithyNameResolver.getGoModuleNameForSmithyNamespace( depShape.toShapeId().getNamespace() ), - SmithyNameResolver.smithyTypesNamespace(depShape) + SmithyNameResolver.smithyTypesNamespace(depShape, context.model()) ); w.addImportFromModule( SmithyNameResolver.getGoModuleNameForSmithyNamespace( @@ -1500,7 +1506,7 @@ private void handleDepErrorSerializer( case $L.$LBaseException: return $L.Create_$L_($L.Error_ToDafny(err)) """, - SmithyNameResolver.smithyTypesNamespace(depShape), + SmithyNameResolver.smithyTypesNamespace(depShape, context.model()), dep.getName(), DafnyNameResolver.getDafnyErrorCompanion(serviceShape), DafnyNameResolver.dafnyDependentErrorName(depShape), @@ -1555,7 +1561,7 @@ private void generateConfigDeserializer( SmithyNameResolver.getGoModuleNameForSmithyNamespace( configShape.toShapeId().getNamespace() ), - SmithyNameResolver.smithyTypesNamespace(configShape) + SmithyNameResolver.smithyTypesNamespace(configShape, context.model()) ); writer.write( """ @@ -1569,7 +1575,8 @@ private void generateConfigDeserializer( ), SmithyNameResolver.getSmithyType( configShape, - context.symbolProvider().toSymbol(configShape) + context.symbolProvider().toSymbol(configShape), + context.model() ), writer.consumer(w -> { final String output = configShape.accept( @@ -1638,7 +1645,8 @@ private void generateErrorDeserializer( DafnyNameResolver.getDafnyBaseErrorType(errorShape), SmithyNameResolver.getSmithyType( errorShape, - context.symbolProvider().toSymbol(errorShape) + context.symbolProvider().toSymbol(errorShape), + context.model() ), writer.consumer(w -> { final String output = errorShape.accept( @@ -1709,12 +1717,12 @@ func OpaqueError_Output_FromDafny(dafnyOutput $L.Error)($L.OpaqueError) { } }""", DafnyNameResolver.dafnyTypesNamespace(serviceShape), - SmithyNameResolver.smithyTypesNamespace(serviceShape), - SmithyNameResolver.smithyTypesNamespace(serviceShape), + SmithyNameResolver.smithyTypesNamespace(serviceShape, context.model()), + SmithyNameResolver.smithyTypesNamespace(serviceShape, context.model()), DafnyNameResolver.dafnyTypesNamespace(serviceShape), DafnyNameResolver.dafnyTypesNamespace(serviceShape), - SmithyNameResolver.smithyTypesNamespace(serviceShape), - SmithyNameResolver.smithyTypesNamespace(serviceShape) + SmithyNameResolver.smithyTypesNamespace(serviceShape, context.model()), + SmithyNameResolver.smithyTypesNamespace(serviceShape, context.model()) ); } ); @@ -1859,8 +1867,22 @@ private void generateSerializerFunctions( GoCodegenUtils.getType( context.symbolProvider().toSymbol(visitingShape), visitingShape, - true + true, + context.model() ); + if ( + model + .shapes(OperationShape.class) + .anyMatch(op -> + op + .getInput() + .filter(visitingShape.getId()::equals) + .isPresent() || + op.getOutput().filter(visitingShape.getId()::equals).isPresent() + ) + ) { + System.out.println(visitingShape); + } Boolean isPointable = context .symbolProvider() .toSymbol(visitingMemberShape) @@ -1892,7 +1914,8 @@ private void generateSerializerFunctions( GoCodegenUtils.getType( context.symbolProvider().toSymbol(resourceOrService), resourceOrService, - true + true, + context.model() ); } else { outputType = @@ -1963,7 +1986,8 @@ private void generateDeserializerFunctions( var outputType = GoCodegenUtils.getType( context.symbolProvider().toSymbol(visitingShape), visitingShape, - true + true, + context.model() ); Boolean isPointable = context .symbolProvider() diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/nameresolver/SmithyNameResolver.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/nameresolver/SmithyNameResolver.java index 5f483a1645..66e2c02a40 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/nameresolver/SmithyNameResolver.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/nameresolver/SmithyNameResolver.java @@ -64,20 +64,6 @@ public static String shapeNamespace(final Shape shape) { .concat("smithygenerated"); } - public static String smithyTypesNamespace(final Shape shape) { - if (isShapeFromAWSSDK(shape)) { - throw new CodegenException( - "Unsupported function used for namespace resolution of AWS SDK shapes. Use smithyTypesNamespace(shape, model) instead." - ); - } - return shape - .toShapeId() - .getNamespace() - .replace(DOT, BLANK) - .toLowerCase() - .concat("smithygeneratedtypes"); - } - public static String smithyTypesNamespace( final Shape shape, final Model model @@ -99,7 +85,12 @@ public static String smithyTypesNamespace( ); return isTopLevelShape ? sdkName : sdkName.concat("types"); } - return smithyTypesNamespace(shape); + return shape + .toShapeId() + .getNamespace() + .replace(DOT, BLANK) + .toLowerCase() + .concat("smithygeneratedtypes"); } public static String getGoModuleNameForSdkNamespace( @@ -118,7 +109,7 @@ public static String smithyTypesNamespaceAws( return serviceTrait.getSdkId().toLowerCase(); } - public static String getSmithyType(final Shape shape, final Symbol symbol) { + public static String getSmithyType(final Shape shape, final Symbol symbol, final Model model) { if ( symbol.getNamespace().contains("smithy.") || symbol.getNamespace().equals("smithyapitypes") || @@ -128,7 +119,7 @@ public static String getSmithyType(final Shape shape, final Symbol symbol) { } if (shape.isResourceShape()) { return SmithyNameResolver - .smithyTypesNamespace(shape) + .smithyTypesNamespace(shape, model) .concat(DOT) .concat("I") .concat(shape.toShapeId().getName()); @@ -138,14 +129,14 @@ public static String getSmithyType(final Shape shape, final Symbol symbol) { return "time".concat(DOT).concat(symbol.getName()); } return SmithyNameResolver - .smithyTypesNamespace(shape) + .smithyTypesNamespace(shape, model) .concat(DOT) .concat(symbol.getName()); } - public static String getSmithyType(final Shape shape) { + public static String getSmithyType(final Shape shape, Model model) { return SmithyNameResolver - .smithyTypesNamespace(shape) + .smithyTypesNamespace(shape, model) .concat(DOT) .concat(shape.toShapeId().getName()); } diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/shapevisitor/DafnyToSmithyShapeVisitor.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/shapevisitor/DafnyToSmithyShapeVisitor.java index 3c50229d2b..21fb6252db 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/shapevisitor/DafnyToSmithyShapeVisitor.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/shapevisitor/DafnyToSmithyShapeVisitor.java @@ -235,7 +235,7 @@ private String referencedResourceShape(final Shape resourceOrService) { SmithyNameResolver.getGoModuleNameForSmithyNamespace( resourceOrService.toShapeId().getNamespace() ), - SmithyNameResolver.smithyTypesNamespace(resourceShape) + SmithyNameResolver.smithyTypesNamespace(resourceShape, context.model()) ); namespace = SmithyNameResolver.shapeNamespace(resourceOrService).concat("."); @@ -253,7 +253,7 @@ private String referencedResourceShape(final Shape resourceOrService) { } return %s }()""".formatted( - SmithyNameResolver.smithyTypesNamespace(resourceShape), + SmithyNameResolver.smithyTypesNamespace(resourceShape, context.model()), resourceShape.getId().getName(), dataSource, "%s_FromDafny(%s.(%s.I%s))".formatted( @@ -285,7 +285,7 @@ public String blobShape(final BlobShape shape) { shape.getId().getNamespace() ), "types", - SmithyNameResolver.smithyTypesNamespace(shape) + SmithyNameResolver.smithyTypesNamespace(shape, context.model()) ); } writer.addImportFromModule(DAFNY_RUNTIME_GO_LIBRARY_MODULE, "dafny"); @@ -315,7 +315,7 @@ public String structureShape(final StructureShape shape) { shape.getId().getNamespace() ), "types", - SmithyNameResolver.smithyTypesNamespace(shape) + SmithyNameResolver.smithyTypesNamespace(shape, context.model()) ); } if (shape.hasTrait(ReferenceTrait.class)) { @@ -350,7 +350,7 @@ public String structureShape(final StructureShape shape) { "return %1$s%2$s{".formatted( referenceType, SmithyNameResolver - .smithyTypesNamespace(shape) + .smithyTypesNamespace(shape, context.model()) .concat(".") .concat(shape.getId().getName()) ) @@ -430,7 +430,7 @@ public String listShape(final ListShape shape) { shape.getId().getNamespace() ), "types", - SmithyNameResolver.smithyTypesNamespace(shape) + SmithyNameResolver.smithyTypesNamespace(shape, context.model()) ); } final StringBuilder typeConversionMethodBuilder = new StringBuilder(); @@ -459,7 +459,7 @@ public String listShape(final ListShape shape) { } fieldValue = append(fieldValue, %s)} """.formatted( - GoCodegenUtils.getType(symbol, shape, true), + GoCodegenUtils.getType(symbol, shape, true, context.model()), dataSource, ShapeVisitorHelper.toNativeShapeVisitorWriter( memberShape, @@ -485,7 +485,7 @@ public String mapShape(final MapShape shape) { shape.getId().getNamespace() ), "types", - SmithyNameResolver.smithyTypesNamespace(shape) + SmithyNameResolver.smithyTypesNamespace(shape, context.model()) ); } final StringBuilder typeConversionMethodBuilder = new StringBuilder(); @@ -496,7 +496,8 @@ public String mapShape(final MapShape shape) { .expectShape(valueMemberShape.getTarget()); final var type = SmithyNameResolver.getSmithyType( valueTargetShape, - context.symbolProvider().toSymbol(valueTargetShape) + context.symbolProvider().toSymbol(valueTargetShape), + context.model() ); final String valueDataSource = "(*val.(dafny.Tuple).IndexInt(1))"; typeConversionMethodBuilder.append( @@ -550,7 +551,7 @@ public String booleanShape(final BooleanShape shape) { shape.getId().getNamespace() ), "types", - SmithyNameResolver.smithyTypesNamespace(shape) + SmithyNameResolver.smithyTypesNamespace(shape, context.model()) ); } if (this.isOptional) { @@ -584,7 +585,7 @@ public String stringShape(final StringShape shape) { shape.getId().getNamespace() ), "types", - SmithyNameResolver.smithyTypesNamespace(shape) + SmithyNameResolver.smithyTypesNamespace(shape, context.model()) ); } if (shape.hasTrait(EnumTrait.class)) { @@ -622,9 +623,9 @@ public String stringShape(final StringShape shape) { return &u.Values()[index] }()""".formatted( - SmithyNameResolver.smithyTypesNamespace(shape), + SmithyNameResolver.smithyTypesNamespace(shape, context.model()), context.symbolProvider().toSymbol(shape).getName(), - SmithyNameResolver.smithyTypesNamespace(shape), + SmithyNameResolver.smithyTypesNamespace(shape, context.model()), context.symbolProvider().toSymbol(shape).getName(), dataSource, dataSource, @@ -659,9 +660,9 @@ public String stringShape(final StringShape shape) { return u.Values()[index] }()""".formatted( - SmithyNameResolver.smithyTypesNamespace(shape), + SmithyNameResolver.smithyTypesNamespace(shape, context.model()), context.symbolProvider().toSymbol(shape).getName(), - SmithyNameResolver.smithyTypesNamespace(shape), + SmithyNameResolver.smithyTypesNamespace(shape, context.model()), context.symbolProvider().toSymbol(shape).getName(), dataSource, DafnyNameResolver.getDafnyType( @@ -738,7 +739,7 @@ public String integerShape(final IntegerShape shape) { shape.getId().getNamespace() ), "types", - SmithyNameResolver.smithyTypesNamespace(shape) + SmithyNameResolver.smithyTypesNamespace(shape, context.model()) ); } if (isOptional) { @@ -771,7 +772,7 @@ public String longShape(final LongShape shape) { shape.getId().getNamespace() ), "types", - SmithyNameResolver.smithyTypesNamespace(shape) + SmithyNameResolver.smithyTypesNamespace(shape, context.model()) ); } if (isOptional) { @@ -805,7 +806,7 @@ public String doubleShape(final DoubleShape shape) { shape.getId().getNamespace() ), "types", - SmithyNameResolver.smithyTypesNamespace(shape) + SmithyNameResolver.smithyTypesNamespace(shape, context.model()) ); } writer.addUseImports(SmithyGoDependency.MATH); @@ -850,7 +851,7 @@ public String unionShape(final UnionShape shape) { shape.getId().getNamespace() ), "types", - SmithyNameResolver.smithyTypesNamespace(shape) + SmithyNameResolver.smithyTypesNamespace(shape, context.model()) ); } @@ -923,7 +924,7 @@ public String unionShape(final UnionShape shape) { """.formatted( isMemberCheck, wrappedDataSource, - SmithyNameResolver.smithyTypesNamespace(shape), + SmithyNameResolver.smithyTypesNamespace(shape, context.model()), memberName, pointerForPointableShape, ShapeVisitorHelper.toNativeShapeVisitorWriter( diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/shapevisitor/SmithyToDafnyShapeVisitor.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/shapevisitor/SmithyToDafnyShapeVisitor.java index 10bc55e32e..ee1702762d 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/shapevisitor/SmithyToDafnyShapeVisitor.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/shapevisitor/SmithyToDafnyShapeVisitor.java @@ -752,14 +752,14 @@ public String unionShape(final UnionShape shape) { var inputToConversion = %s return %s """.formatted( - SmithyNameResolver.smithyTypesNamespace(shape), + SmithyNameResolver.smithyTypesNamespace(shape, context.model()), context.symbolProvider().toMemberName(member), ShapeVisitorHelper.toDafnyShapeVisitorWriter( member, context, dataSource + ".(*" + - SmithyNameResolver.smithyTypesNamespace(shape) + + SmithyNameResolver.smithyTypesNamespace(shape, context.model()) + "." + context.symbolProvider().toMemberName(member) + ").Value", diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/utils/GoCodegenUtils.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/utils/GoCodegenUtils.java index 8715cbf9b3..9f647c45a3 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/utils/GoCodegenUtils.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/utils/GoCodegenUtils.java @@ -55,19 +55,21 @@ public static String getType( public static String getType( final Symbol symbol, final Shape shape, - final Boolean includeNamespace + final Boolean includeNamespace, + final Model model ) { if ( symbol.getProperty(SymbolUtils.GO_ELEMENT_TYPE, Symbol.class).isEmpty() ) { return includeNamespace - ? SmithyNameResolver.getSmithyType(shape, symbol) + ? SmithyNameResolver.getSmithyType(shape, symbol, model) : symbol.getName(); } var type = getType( symbol.expectProperty(SymbolUtils.GO_ELEMENT_TYPE, Symbol.class), shape, - includeNamespace + includeNamespace, + model ); if (symbol.getProperty(SymbolUtils.GO_MAP).isPresent()) { type = "map[string]" + type; @@ -179,7 +181,8 @@ private static String getInputOrOutputName( return ( SmithyNameResolver.getSmithyType( curShape, - symbolProvider.toSymbol(curShape) + symbolProvider.toSymbol(curShape), + model ) ); } else { From a3f3933c5193324dee9b4ee9c604b51004644014 Mon Sep 17 00:00:00 2001 From: rishav-karanjit Date: Wed, 22 Jan 2025 13:47:39 -0800 Subject: [PATCH 06/10] formatting --- .../smithygo/codegen/StructureGenerator.java | 5 +- .../smithygo/codegen/UnionGenerator.java | 5 +- .../smithygo/codegen/ValidationGenerator.java | 9 +- .../DafnyLocalServiceGenerator.java | 23 +++- ...fnyLocalServiceTypeConversionProtocol.java | 129 ++++++++++++++---- .../nameresolver/SmithyNameResolver.java | 16 ++- .../DafnyToSmithyShapeVisitor.java | 2 +- 7 files changed, 146 insertions(+), 43 deletions(-) diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/StructureGenerator.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/StructureGenerator.java index 1424abb77f..c0386f9758 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/StructureGenerator.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/StructureGenerator.java @@ -115,7 +115,10 @@ public void renderStructure(Runnable runnable, boolean isInputStructure) { .getProperty(SymbolUtils.INPUT_VARIANT, Symbol.class) .orElse(memberSymbol); } - var namespace = SmithyNameResolver.smithyTypesNamespace(targetShape, model); + var namespace = SmithyNameResolver.smithyTypesNamespace( + targetShape, + model + ); if (targetShape.hasTrait(ReferenceTrait.class)) { memberSymbol = diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/UnionGenerator.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/UnionGenerator.java index 6325408ef3..38ee96f7ff 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/UnionGenerator.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/UnionGenerator.java @@ -89,7 +89,10 @@ public void generateUnion(GoWriter writer) { writer.write("Value $T", memberSymbol); } else { // Handling smithy-dafny Reference Trait begins - var namespace = SmithyNameResolver.smithyTypesNamespace(target, model); + var namespace = SmithyNameResolver.smithyTypesNamespace( + target, + model + ); var newMemberSymbol = memberSymbol; if (target.hasTrait(ReferenceTrait.class)) { newMemberSymbol = diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/ValidationGenerator.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/ValidationGenerator.java index f9690d07f1..ca20e3cd59 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/ValidationGenerator.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/codegen/ValidationGenerator.java @@ -675,10 +675,12 @@ private void renderUnionShape( var dataSourceForUnion = dataSource; final var currServiceShapeNamespace = SmithyNameResolver.smithyTypesNamespace( - context.settings().getService(model), model + context.settings().getService(model), + model ); final var currShapeNamespace = SmithyNameResolver.smithyTypesNamespace( - memberShape, model + memberShape, + model ); if (!funcInput.isEmpty()) { final Boolean isExternalShape = @@ -727,7 +729,8 @@ private void renderUnionShape( ); for (final var memberInUnion : currentShape.getAllMembers().values()) { final var currMemberNamespace = SmithyNameResolver.smithyTypesNamespace( - currentShape, model + currentShape, + model ); final Boolean isExternalShape = !currServiceShapeNamespace.equals(currMemberNamespace) && diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java index 7cd6f55b8d..f51c82ba43 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java @@ -79,7 +79,9 @@ void generateClient(GoWriter writer) { ); writerDelegator.useFileWriter( - "%s/types.go".formatted(SmithyNameResolver.smithyTypesNamespace(service, model)), + "%s/types.go".formatted( + SmithyNameResolver.smithyTypesNamespace(service, model) + ), SmithyNameResolver.smithyTypesNamespace(service, model), writer1 -> { model @@ -659,16 +661,26 @@ void resourceErrors(GoWriter writer) { """, - SmithyNameResolver.getSmithyType(error, symbolProvider.toSymbol(error), model), + SmithyNameResolver.getSmithyType( + error, + symbolProvider.toSymbol(error), + model + ), SmithyNameResolver.getToDafnyMethodName(service, error, ""), - SmithyNameResolver.getSmithyType(error, symbolProvider.toSymbol(error), model) + SmithyNameResolver.getSmithyType( + error, + symbolProvider.toSymbol(error), + model + ) ); } } void generateUnmodelledErrors(GenerationContext context) { writerDelegator.useFileWriter( - "%s/types.go".formatted(SmithyNameResolver.smithyTypesNamespace(service, model)), + "%s/types.go".formatted( + SmithyNameResolver.smithyTypesNamespace(service, model) + ), SmithyNameResolver.smithyTypesNamespace(service, model), writer -> { writer.write( @@ -939,7 +951,8 @@ void generateReferencedResources(final GenerationContext context) { SmithyNameResolver .getSmithyType( outputShape, - symbolProvider.toSymbol(outputShape), model + symbolProvider.toSymbol(outputShape), + model ) .concat(","); final var typeAssertion = outputShape.isResourceShape() diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java index ff38db1365..96b0eee6e5 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java @@ -187,7 +187,11 @@ public void generateSerializers(final GenerationContext context) { ${C|} }""", outputToDafnyMethodName, - SmithyNameResolver.getSmithyType(output, outputSymbol, model), + SmithyNameResolver.getSmithyType( + output, + outputSymbol, + model + ), DafnyNameResolver.getDafnyType(output, outputSymbol), writer.consumer(w -> generateResponseSerializer( @@ -289,7 +293,11 @@ public void generateSerializers(final GenerationContext context) { ${C|} }""", inputToDafnyMethodName, - SmithyNameResolver.getSmithyType(input, inputSymbol, model), + SmithyNameResolver.getSmithyType( + input, + inputSymbol, + model + ), outputType, writer.consumer(w -> generateRequestSerializer( @@ -352,7 +360,11 @@ public void generateSerializers(final GenerationContext context) { ${C|} }""", outputToDafnyMethodName, - SmithyNameResolver.getSmithyType(output, outputSymbol, model), + SmithyNameResolver.getSmithyType( + output, + outputSymbol, + model + ), DafnyNameResolver.getDafnyType(output, outputSymbol), writer.consumer(w -> generateResponseSerializer( @@ -407,7 +419,10 @@ public void generateSerializers(final GenerationContext context) { } """, resourceShape.getId().getName(), - SmithyNameResolver.smithyTypesNamespace(resourceShape, model), + SmithyNameResolver.smithyTypesNamespace( + resourceShape, + model + ), resourceShape.getId().getName(), DafnyNameResolver.dafnyTypesNamespace(resourceShape), resourceShape.getId().getName(), @@ -498,7 +513,8 @@ public void generateOrphanShapeSerializer( .concat(context.symbolProvider().toSymbol(serviceShape).getName()); } } else { - inputType = GoCodegenUtils.getType(curSymbol, shape, true, context.model()); + inputType = + GoCodegenUtils.getType(curSymbol, shape, true, context.model()); outputType = DafnyNameResolver.getDafnyType(shape, curSymbol); } writerDelegator.useFileWriter( @@ -615,7 +631,10 @@ public void generateDeserializers(final GenerationContext context) { SmithyNameResolver.getGoModuleNameForSmithyNamespace( input.toShapeId().getNamespace() ), - SmithyNameResolver.smithyTypesNamespace(input, context.model()) + SmithyNameResolver.smithyTypesNamespace( + input, + context.model() + ) ); writer.write( @@ -625,7 +644,11 @@ public void generateDeserializers(final GenerationContext context) { }""", inputFromDafnyMethodName, inputType, - SmithyNameResolver.getSmithyType(input, inputSymbol, context.model()), + SmithyNameResolver.getSmithyType( + input, + inputSymbol, + context.model() + ), writer.consumer(w -> generateRequestDeserializer( context, @@ -680,7 +703,10 @@ public void generateDeserializers(final GenerationContext context) { SmithyNameResolver.getGoModuleNameForSmithyNamespace( output.toShapeId().getNamespace() ), - SmithyNameResolver.smithyTypesNamespace(output, context.model()) + SmithyNameResolver.smithyTypesNamespace( + output, + context.model() + ) ); writer.write( @@ -690,7 +716,11 @@ public void generateDeserializers(final GenerationContext context) { }""", outputFromDafnyMethodName, DafnyNameResolver.getDafnyType(output, outputSymbol), - SmithyNameResolver.getSmithyType(output, outputSymbol, context.model()), + SmithyNameResolver.getSmithyType( + output, + outputSymbol, + context.model() + ), writer.consumer(w -> generateResponseDeserializer( context, @@ -788,7 +818,10 @@ public void generateDeserializers(final GenerationContext context) { SmithyNameResolver.getGoModuleNameForSmithyNamespace( input.toShapeId().getNamespace() ), - SmithyNameResolver.smithyTypesNamespace(input, context.model()) + SmithyNameResolver.smithyTypesNamespace( + input, + context.model() + ) ); writer.write( @@ -798,7 +831,11 @@ public void generateDeserializers(final GenerationContext context) { }""", inputFromDafnyMethodName, inputType, - SmithyNameResolver.getSmithyType(input, inputSymbol, context.model()), + SmithyNameResolver.getSmithyType( + input, + inputSymbol, + context.model() + ), writer.consumer(w -> generateRequestDeserializer( context, @@ -855,7 +892,10 @@ public void generateDeserializers(final GenerationContext context) { SmithyNameResolver.getGoModuleNameForSmithyNamespace( output.toShapeId().getNamespace() ), - SmithyNameResolver.smithyTypesNamespace(output, context.model()) + SmithyNameResolver.smithyTypesNamespace( + output, + context.model() + ) ); writer.write( @@ -865,7 +905,11 @@ public void generateDeserializers(final GenerationContext context) { }""", outputFromDafnyMethodName, DafnyNameResolver.getDafnyType(output, outputSymbol), - SmithyNameResolver.getSmithyType(output, outputSymbol, context.model()), + SmithyNameResolver.getSmithyType( + output, + outputSymbol, + context.model() + ), writer.consumer(w -> generateResponseDeserializer( context, @@ -914,7 +958,10 @@ public void generateDeserializers(final GenerationContext context) { resourceShape.getId().getName(), DafnyNameResolver.dafnyTypesNamespace(resourceShape), resourceShape.getId().getName(), - SmithyNameResolver.smithyTypesNamespace(resourceShape, context.model()), + SmithyNameResolver.smithyTypesNamespace( + resourceShape, + context.model() + ), resourceShape.getId().getName(), extendableResourceWrapperCheck, resourceShape.getId().getName() @@ -1315,10 +1362,16 @@ func CollectionOfErrors_Input_ToDafny(nativeInput $L.CollectionOfErrors)($L.Erro func OpaqueError_Input_ToDafny(nativeInput $L.OpaqueError)($L.Error) { return $L.Companion_Error_.Create_Opaque_(nativeInput.ErrObject) }""", - SmithyNameResolver.smithyTypesNamespace(serviceShape, context.model()), + SmithyNameResolver.smithyTypesNamespace( + serviceShape, + context.model() + ), DafnyNameResolver.dafnyTypesNamespace(serviceShape), DafnyNameResolver.dafnyTypesNamespace(serviceShape), - SmithyNameResolver.smithyTypesNamespace(serviceShape, context.model()), + SmithyNameResolver.smithyTypesNamespace( + serviceShape, + context.model() + ), DafnyNameResolver.dafnyTypesNamespace(serviceShape), DafnyNameResolver.dafnyTypesNamespace(serviceShape) ); @@ -1385,7 +1438,7 @@ func Error_ToDafny(err error)($L.Error) { context .symbolProvider() .toSymbol(context.model().expectShape(error)), - context.model() + context.model() ), SmithyNameResolver.getToDafnyMethodName( serviceShape, @@ -1397,7 +1450,7 @@ func Error_ToDafny(err error)($L.Error) { context .symbolProvider() .toSymbol(context.model().expectShape(error)), - context.model() + context.model() ) ); } @@ -1414,9 +1467,18 @@ func Error_ToDafny(err error)($L.Error) { handleDepErrorSerializer(context, w, dependencies); } }), - SmithyNameResolver.smithyTypesNamespace(serviceShape, context.model()), - SmithyNameResolver.smithyTypesNamespace(serviceShape, context.model()), - SmithyNameResolver.smithyTypesNamespace(serviceShape, context.model()) + SmithyNameResolver.smithyTypesNamespace( + serviceShape, + context.model() + ), + SmithyNameResolver.smithyTypesNamespace( + serviceShape, + context.model() + ), + SmithyNameResolver.smithyTypesNamespace( + serviceShape, + context.model() + ) ); } ); @@ -1561,7 +1623,10 @@ private void generateConfigDeserializer( SmithyNameResolver.getGoModuleNameForSmithyNamespace( configShape.toShapeId().getNamespace() ), - SmithyNameResolver.smithyTypesNamespace(configShape, context.model()) + SmithyNameResolver.smithyTypesNamespace( + configShape, + context.model() + ) ); writer.write( """ @@ -1717,12 +1782,24 @@ func OpaqueError_Output_FromDafny(dafnyOutput $L.Error)($L.OpaqueError) { } }""", DafnyNameResolver.dafnyTypesNamespace(serviceShape), - SmithyNameResolver.smithyTypesNamespace(serviceShape, context.model()), - SmithyNameResolver.smithyTypesNamespace(serviceShape, context.model()), + SmithyNameResolver.smithyTypesNamespace( + serviceShape, + context.model() + ), + SmithyNameResolver.smithyTypesNamespace( + serviceShape, + context.model() + ), DafnyNameResolver.dafnyTypesNamespace(serviceShape), DafnyNameResolver.dafnyTypesNamespace(serviceShape), - SmithyNameResolver.smithyTypesNamespace(serviceShape, context.model()), - SmithyNameResolver.smithyTypesNamespace(serviceShape, context.model()) + SmithyNameResolver.smithyTypesNamespace( + serviceShape, + context.model() + ), + SmithyNameResolver.smithyTypesNamespace( + serviceShape, + context.model() + ) ); } ); diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/nameresolver/SmithyNameResolver.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/nameresolver/SmithyNameResolver.java index 66e2c02a40..e3d6f8dac0 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/nameresolver/SmithyNameResolver.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/nameresolver/SmithyNameResolver.java @@ -86,11 +86,11 @@ public static String smithyTypesNamespace( return isTopLevelShape ? sdkName : sdkName.concat("types"); } return shape - .toShapeId() - .getNamespace() - .replace(DOT, BLANK) - .toLowerCase() - .concat("smithygeneratedtypes"); + .toShapeId() + .getNamespace() + .replace(DOT, BLANK) + .toLowerCase() + .concat("smithygeneratedtypes"); } public static String getGoModuleNameForSdkNamespace( @@ -109,7 +109,11 @@ public static String smithyTypesNamespaceAws( return serviceTrait.getSdkId().toLowerCase(); } - public static String getSmithyType(final Shape shape, final Symbol symbol, final Model model) { + public static String getSmithyType( + final Shape shape, + final Symbol symbol, + final Model model + ) { if ( symbol.getNamespace().contains("smithy.") || symbol.getNamespace().equals("smithyapitypes") || diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/shapevisitor/DafnyToSmithyShapeVisitor.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/shapevisitor/DafnyToSmithyShapeVisitor.java index 21fb6252db..93efd6bf29 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/shapevisitor/DafnyToSmithyShapeVisitor.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/shapevisitor/DafnyToSmithyShapeVisitor.java @@ -496,7 +496,7 @@ public String mapShape(final MapShape shape) { .expectShape(valueMemberShape.getTarget()); final var type = SmithyNameResolver.getSmithyType( valueTargetShape, - context.symbolProvider().toSymbol(valueTargetShape), + context.symbolProvider().toSymbol(valueTargetShape), context.model() ); final String valueDataSource = "(*val.(dafny.Tuple).IndexInt(1))"; From 88a1d11fe77b0e5f329aef01abcfb991d485c79b Mon Sep 17 00:00:00 2001 From: rishav-karanjit Date: Wed, 22 Jan 2025 14:17:30 -0800 Subject: [PATCH 07/10] remove debugging code --- .../DafnyLocalServiceTypeConversionProtocol.java | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java index 96b0eee6e5..edc89e28e9 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java @@ -1947,19 +1947,6 @@ private void generateSerializerFunctions( true, context.model() ); - if ( - model - .shapes(OperationShape.class) - .anyMatch(op -> - op - .getInput() - .filter(visitingShape.getId()::equals) - .isPresent() || - op.getOutput().filter(visitingShape.getId()::equals).isPresent() - ) - ) { - System.out.println(visitingShape); - } Boolean isPointable = context .symbolProvider() .toSymbol(visitingMemberShape) From b58a0e3f262a84bb3da83af63694db2d9d989ee5 Mon Sep 17 00:00:00 2001 From: rishav-karanjit Date: Mon, 27 Jan 2025 13:35:57 -0800 Subject: [PATCH 08/10] auto commit --- .../smithygo/localservice/nameresolver/SmithyNameResolver.java | 1 - 1 file changed, 1 deletion(-) diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/nameresolver/SmithyNameResolver.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/nameresolver/SmithyNameResolver.java index e3d6f8dac0..c704231e56 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/nameresolver/SmithyNameResolver.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/nameresolver/SmithyNameResolver.java @@ -7,7 +7,6 @@ import java.util.HashSet; import java.util.Map; import software.amazon.smithy.aws.traits.ServiceTrait; -import software.amazon.smithy.codegen.core.CodegenException; import software.amazon.smithy.codegen.core.Symbol; import software.amazon.smithy.model.Model; import software.amazon.smithy.model.shapes.OperationShape; From 320d54860f6c0ed222ee06d587ff6b1a668f9c6e Mon Sep 17 00:00:00 2001 From: rishav-karanjit Date: Mon, 27 Jan 2025 14:02:41 -0800 Subject: [PATCH 09/10] fix merge --- .../smithygo/localservice/DafnyLocalServiceGenerator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java index d85d2b1bd4..09516c0d05 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceGenerator.java @@ -136,7 +136,7 @@ void generateClient(GoWriter writer) { SmithyNameResolver.getGoModuleNameForSmithyNamespace( configShape.toShapeId().getNamespace() ), - SmithyNameResolver.smithyTypesNamespace(configShape) + SmithyNameResolver.smithyTypesNamespace(configShape, model) ); writer.addImportFromModule( SmithyNameResolver.getGoModuleNameForSmithyNamespace( From 915a6e69a77788e2806f332ce478964d5b25b861 Mon Sep 17 00:00:00 2001 From: rishav-karanjit Date: Mon, 27 Jan 2025 14:07:34 -0800 Subject: [PATCH 10/10] formatting --- ...fnyLocalServiceTypeConversionProtocol.java | 21 +++++++++---------- .../smithygo/utils/GoCodegenUtils.java | 6 +++++- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java index c6d153de0e..91e664f9a7 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/localservice/DafnyLocalServiceTypeConversionProtocol.java @@ -420,10 +420,7 @@ public void generateSerializers(final GenerationContext context) { } """, resourceShape.getId().getName(), - SmithyNameResolver.smithyTypesNamespace( - resourceShape, - model - ), + SmithyNameResolver.smithyTypesNamespace(resourceShape, model), resourceShape.getId().getName(), DafnyNameResolver.dafnyTypesNamespace(resourceShape), resourceShape.getId().getName(), @@ -512,8 +509,7 @@ public void generateOrphanShapeSerializer( .concat(context.symbolProvider().toSymbol(serviceShape).getName()); } } else { - inputType = - GoCodegenUtils.getType(curSymbol, true, context.model()); + inputType = GoCodegenUtils.getType(curSymbol, true, context.model()); outputType = DafnyNameResolver.getDafnyType(shape, curSymbol); } writerDelegator.useFileWriter( @@ -959,9 +955,9 @@ public void generateDeserializers(final GenerationContext context) { DafnyNameResolver.dafnyTypesNamespace(resourceShape), resourceShape.getId().getName(), SmithyNameResolver.smithyTypesNamespace( - resourceShape, - context.model() - ), + resourceShape, + context.model() + ), resourceShape.getId().getName(), extendableResourceWrapperCheck, resourceShape.getId().getName() @@ -1039,8 +1035,11 @@ public void generateOrphanShapeDeserializer( } } else { outputType = - GoCodegenUtils.getType(context.symbolProvider().toSymbol(shape), true, - context.model()); + GoCodegenUtils.getType( + context.symbolProvider().toSymbol(shape), + true, + context.model() + ); } writerDelegator.useFileWriter( "%s/%s".formatted( diff --git a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/utils/GoCodegenUtils.java b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/utils/GoCodegenUtils.java index f72f6b3997..9dccbb2e1a 100644 --- a/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/utils/GoCodegenUtils.java +++ b/codegen/smithy-dafny-codegen/src/main/java/software/amazon/polymorph/smithygo/utils/GoCodegenUtils.java @@ -61,7 +61,11 @@ public static String getType( symbol.getProperty(SymbolUtils.GO_ELEMENT_TYPE, Symbol.class).isEmpty() ) { return includeNamespace - ? SmithyNameResolver.getSmithyType(symbol.expectProperty(SymbolUtils.SHAPE, Shape.class), symbol, model) + ? SmithyNameResolver.getSmithyType( + symbol.expectProperty(SymbolUtils.SHAPE, Shape.class), + symbol, + model + ) : symbol.getName(); } var type = getType(