Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Builders of builders #1342

Merged
merged 294 commits into from Nov 15, 2022
Merged
Show file tree
Hide file tree
Changes from 250 commits
Commits
Show all changes
294 commits
Select commit Hold shift + click to select a range
1fd9c74
add note about EventStreamTestTools being incorrectly used for server…
david-perez Apr 25, 2022
3d18e88
Add copyright notice to constrained.rs
david-perez Apr 25, 2022
6e67a1c
Fix AWS SDK
david-perez Apr 25, 2022
442eddd
Merge branch 'davidpz-pub-crate' into davidpz-builders-of-builders
david-perez Apr 25, 2022
a274ec5
Don't crash codegen with unsupported constraint traits
david-perez Apr 28, 2022
9f2065d
Merge remote-tracking branch 'awslabs/main' into davidpz-builders-of-…
david-perez May 5, 2022
3a9bc56
make svt yield fewer errors
david-perez May 5, 2022
2fe280d
disable svt
david-perez May 5, 2022
8864f1d
operation_deser builders take in unconstrained types
david-perez May 5, 2022
b77f6fb
fix aws sdk sso
david-perez May 5, 2022
07da98f
Revert "disable svt"
david-perez May 6, 2022
1f6ef66
Merge remote-tracking branch 'awslabs/main' into davidpz-builders-of-…
david-perez May 9, 2022
0cc2644
changes in UnconstrainedShapeSymbolProvider
david-perez May 9, 2022
e9e8205
sst works for lists
david-perez May 9, 2022
4422b52
sst and srt work for lists
david-perez May 9, 2022
8c46710
svt not working for maps
david-perez May 10, 2022
831bfc0
sst list of list works
david-perez May 10, 2022
465139b
sst map of map works
david-perez May 10, 2022
ff0c43b
this commit build sst, srt, and svt
david-perez May 10, 2022
03ff5fd
fix unit tests
david-perez May 10, 2022
8f322cd
ConstraintTests.kt
david-perez May 10, 2022
80ec705
replace DFS in Constraints.kt in favor of Walker implementation
david-perez May 10, 2022
fde11e9
refactor renderBuilderMemberFn
david-perez May 10, 2022
fcd75c8
Merge remote-tracking branch 'awslabs/main' into davidpz-builders-of-…
david-perez May 10, 2022
f81550c
move Constrained trait impl to Constrained* generators
david-perez May 11, 2022
d7b6071
Length constraint trait on map shapes implemented
david-perez May 11, 2022
c9b84c8
Length constraint trait on string shapes implemented
david-perez May 11, 2022
3670c69
Merge remote-tracking branch 'awslabs/main' into davidpz-builders-of-…
david-perez May 11, 2022
fb168a5
comment
david-perez May 12, 2022
0a03b71
fixed when deser of HTTP-bound @length string shapes; sst/svt/srt/ser…
david-perez May 12, 2022
af9871f
Merge remote-tracking branch 'awslabs/main' into davidpz-builders-of-…
david-perez May 12, 2022
733d235
make clippy happy; unions of structures don't work
david-perez May 13, 2022
d97abfe
make clippy happy about recursive shapes
david-perez May 13, 2022
fe35cc2
Merge remote-tracking branch 'awslabs/main' into davidpz-builders-of-…
david-perez May 13, 2022
4fc2ee5
add some docs to UnconstrainedShapeSymbolProvider
david-perez May 13, 2022
6488239
remove unused TryFrom,TryInto imports, we're now using Rust 2021 edition
david-perez May 13, 2022
ae351a3
add support for transitively constrained sets
david-perez May 13, 2022
ca32c8e
rename isConstrained to isDirectlyConstrained
david-perez May 13, 2022
07007ab
only map holding constrained value needs iterating to constrain value
david-perez May 13, 2022
5c7636d
support maps of constrained strings with httpHeaderPrefix trait
david-perez May 17, 2022
5accf0b
support lists/sets of constrained strings with httpHeader trait
david-perez May 18, 2022
9b163ab
support lists/sets of constrained strings with httpQuery trait
david-perez May 18, 2022
5acda33
support maps of constrained strings with httpQueryParams trait
david-perez May 18, 2022
587fa9c
support maps of list/set of constrained strings with httpQueryParams …
david-perez May 18, 2022
8f26ac0
cleanup sst model; all of this should pass but it doesn't
david-perez May 18, 2022
cda1c09
comment out things that don't work from sst
david-perez May 18, 2022
4e31944
Make public maps implement Deref
david-perez May 19, 2022
98b5c62
Make public maps work in httpHeadersPrefix
david-perez May 19, 2022
b143866
Add MinLengthString, MaxLengthString, FixedLengthString to model
david-perez May 19, 2022
326cbd1
Appease clippy, consider allowing type_complexity
david-perez May 19, 2022
94a6fa2
Add a LengthString bound to httpLabel
david-perez May 19, 2022
e3616fd
dont implement Deref or AsRef, rely on .0; add inner()
david-perez May 20, 2022
3b5e751
enable allow type_complexity globally, everything except XML works
david-perez May 20, 2022
51c83b6
Fix XML
david-perez May 20, 2022
893060e
Add constraints model and don't use simple anymore
david-perez May 20, 2022
fb21f93
rename everything
david-perez May 20, 2022
c50ca58
cleanup and some docs for {PubCrate}ConstrainedShapeSymbolProvider
david-perez May 20, 2022
4317175
general cleanups
david-perez May 20, 2022
e691bf7
Merge remote-tracking branch 'awslabs/main' into davidpz-builders-of-…
david-perez May 20, 2022
0a02661
fix SymbolVisitor: send config
david-perez May 20, 2022
af2dda1
Cleanup member shape impl of PubCrateConstrainedShapeSymbolProvider
david-perez May 23, 2022
6e458ea
Move ConstraintViolations to model module
david-perez May 23, 2022
8afed5e
Clean up ConstraintViolationSymbolProvider
david-perez May 23, 2022
1168c5b
Have a single collection visitor method in ServerCodegenVisitor
david-perez May 23, 2022
4abc947
Add some docs to the constrained type generators and their generated …
david-perez May 23, 2022
3874c0e
SIMPLE SIMPLE SIMPLE MODEL
david-perez May 23, 2022
783d384
Remove some stale TODOs
david-perez May 23, 2022
498a0d5
Revert "SIMPLE SIMPLE SIMPLE MODEL"
david-perez May 23, 2022
9d06368
Fix server unit tests
david-perez May 24, 2022
39b1712
Fix UnconstrainedMapGeneratorTest.kt
david-perez May 26, 2022
0602785
Merge remote-tracking branch 'awslabs/main' into davidpz-builders-of-…
david-perez May 26, 2022
aa1a2fb
Use Display and TryFrom from RuntimeType
david-perez May 26, 2022
6036e9e
Add support for enums in payloads
david-perez May 27, 2022
83dd8c8
Modify constraints.smithy to take into account enums bound to HTTP me…
david-perez May 30, 2022
effa0e5
Revert "Modify constraints.smithy to take into account enums bound to…
david-perez May 30, 2022
7d9f601
Merge remote-tracking branch 'upstream/main' into davidpz-builders-of…
david-perez May 30, 2022
3afae8e
Constrained unions work
david-perez May 31, 2022
a52886d
Fix server enum unit tests
david-perez May 31, 2022
71fb17f
Revert "Revert "Modify constraints.smithy to take into account enums …
david-perez May 31, 2022
8d3f434
Uncomment codegen server integration tests
david-perez Jun 1, 2022
6496b47
Modify constraints.smithy to make it pass, link issues
david-perez Jun 1, 2022
2744eb5
Address some easy TODOs
david-perez Jun 1, 2022
679518e
Merge remote-tracking branch 'upstream/main' into davidpz-builders-of…
david-perez Jun 1, 2022
0983546
Add TODO about pulling out type_complexity to a separate commit
david-perez Jun 2, 2022
ea1bbca
Assorted fixes for constrained unions
david-perez Jun 3, 2022
d34af64
Merge remote-tracking branch 'upstream/main' into davidpz-builders-of…
david-perez Jun 3, 2022
7829ddc
Add links to PRs/issues for some TODOs
david-perez Jun 6, 2022
e280a01
save work
david-perez Jun 6, 2022
f2e3b27
Use io.kotest.inspectors.forAll
david-perez Jun 6, 2022
b20e5c4
Unit tests for ConstrainedShapeSymbolProvider and PubCrateConstrained…
david-perez Jun 6, 2022
52be445
Rename to PubCrateConstrainedCollectionGenerator
david-perez Jun 6, 2022
0e4ce40
Not doing unit tests for these
david-perez Jun 6, 2022
fbf0aac
Merge remote-tracking branch 'upstream/main' into davidpz-builders-of…
david-perez Jun 6, 2022
dc37a8d
Remove useless statement from InlineDependencyTest
david-perez Jun 6, 2022
ad86d7d
Fail at trying to rewrite unit tests spanning multiple modules using …
david-perez Jun 7, 2022
eaf918b
Revert "Fail at trying to rewrite unit tests spanning multiple module…
david-perez Jun 7, 2022
a2f9980
ConstrainedStringGeneratorTest
david-perez Jun 7, 2022
f7218d2
ConstrainedMapGeneratorTest
david-perez Jun 8, 2022
6d78301
Remove TODO addressed in previous commit
david-perez Jun 9, 2022
21a117a
Merge remote-tracking branch 'upstream/main' into davidpz-builders-of…
david-perez Jun 9, 2022
c56d9fb
Remove incorrect TODO
david-perez Jun 9, 2022
d327f31
UnconstrainedUnionGeneratorTest
david-perez Jun 9, 2022
3bdb1ca
save work
david-perez Jun 10, 2022
0d8bdb9
Merge remote-tracking branch 'upstream/main' into davidpz-builders-of…
david-perez Jun 13, 2022
0b9cd6b
Comment out @error message constrained string type
david-perez Jun 14, 2022
d51238d
CodegenContext split: cst, sst, sdk work
david-perez Jun 15, 2022
61cc2e7
Merge remote-tracking branch 'upstream/main' into davidpz-builders-of…
david-perez Jul 6, 2022
96981d3
Merge remote-tracking branch 'upstream/main' into davidpz-builders-of…
david-perez Jul 6, 2022
3fc9af4
spst compiles but doesn't work
david-perez Jul 6, 2022
4f0ffef
Merge remote-tracking branch 'upstream/main' into davidpz-builders-of…
david-perez Aug 4, 2022
c2e2b56
save work
david-perez Aug 9, 2022
fbba870
sst constraints_without_public_constrained_types,constraints - Constr…
david-perez Aug 11, 2022
7cf173e
constraints,constraints_without_public_constrained_types work: Constr…
david-perez Aug 22, 2022
850a1bf
constraints,constraints_without_public_constrained_types work: Constr…
david-perez Aug 22, 2022
194a19b
constraints,constraints_without_public_constrained_types work: Constr…
david-perez Aug 22, 2022
7a6b9ca
constraints,constraints_without_public_constrained_types work: Constr…
david-perez Aug 22, 2022
ce42e3e
constraints,constraints_without_public_constrained_types work: Constr…
david-perez Aug 22, 2022
9f8f925
small refactor in UnconstrainedUnionGenerator
david-perez Aug 22, 2022
035e4c7
constraints,constraints_without_public_constrained_types work: Constr…
david-perez Aug 22, 2022
bbfc42e
constraints,constraints_without_public_constrained_types work: Constr…
david-perez Aug 22, 2022
91cce7a
save work
david-perez Aug 22, 2022
a674f9a
Revert more or less until 4f0ffefb, with constraints.smithy working fine
david-perez Aug 23, 2022
56dc435
constraints,constraints_without_public_constrained_types work: Constr…
david-perez Aug 25, 2022
24da7b1
constraints,constraints_without_public_constrained_types work: Constr…
david-perez Aug 29, 2022
183fe57
constraints,constraints_without_public_constrained_types work: Constr…
david-perez Aug 30, 2022
1e7c975
save work
david-perez Aug 30, 2022
3692e67
constraints,constraints_without_public_constrained_types work: Constr…
david-perez Aug 30, 2022
466b03c
constraints,constraints_without_public_constrained_types work: Constr…
david-perez Aug 31, 2022
4e62c13
constraints,constraints_without_public_constrained_types work: Constr…
david-perez Sep 1, 2022
39c457d
constraints,constraints_without_public_constrained_types work: Constr…
david-perez Sep 1, 2022
181769b
constraints,constraints_without_public_constrained_types work: Constr…
david-perez Sep 1, 2022
3c9fb91
constraints,constraints_without_public_constrained_types work: Constr…
david-perez Sep 1, 2022
d8a1591
constraints,constraints_without_public_constrained_types work: all op…
david-perez Sep 1, 2022
f0bccb3
constraints,constraints_without_public_constrained_types work: blob s…
david-perez Sep 1, 2022
b49aa17
Add an event streams operation to constraints.smithy
david-perez Sep 5, 2022
eafcc30
Merge remote-tracking branch 'upstream/main' into davidpz-builders-of…
david-perez Sep 5, 2022
493cd6c
constraints,constraints_without_public_constrained_types work: event …
david-perez Sep 7, 2022
d816c8f
rename namespace of constraints.smithy
david-perez Sep 7, 2022
77acd23
pokemon service: server and client SDKs work
david-perez Sep 7, 2022
b19ae9a
fix server builder setter names, rest_json_extras server now works
david-perez Sep 8, 2022
89c927b
Handle enum shapes in UnconstrainedShapeSymbolProvider
david-perez Sep 8, 2022
c40b158
avoid useless_conversion when converting from the pub(crate) constrai…
david-perez Sep 9, 2022
e64203e
clippy: fix redundant closure
david-perez Sep 9, 2022
3111c7c
clippy: fix enum_variant_names
david-perez Sep 12, 2022
5487991
clippy: redundant unconstrained.into() when converting unions
david-perez Sep 12, 2022
c3806eb
constraints,constraints_without_public_constrained_types clippy work
david-perez Sep 12, 2022
dbf7d9e
Refactor to use `workingWithPublicConstrainedWrapperTupleType` in `Co…
david-perez Sep 12, 2022
0789fce
Don't use curly braces where not needed; ---- ssa works ----
david-perez Sep 12, 2022
d6e3f89
sa, ca work
david-perez Sep 12, 2022
9569928
Update Pokémon Service to work with constraint traits
david-perez Sep 12, 2022
d9abb86
./gradlew ktlintFormat
david-perez Sep 12, 2022
c312910
Make spst compile
david-perez Sep 13, 2022
860e272
Fix Python server; spst fully works
david-perez Sep 14, 2022
e8c42fd
Make server-unit-tests compile; no pass yet
david-perez Sep 14, 2022
f8a323b
Fix 'it should generate unconstrained unions' test
david-perez Sep 14, 2022
0f799a4
Missing to `String` conversion in EventStreamUnmarshallerGenerator; s…
david-perez Sep 14, 2022
33e20d8
Fix Python Pokémon server SDK generation
david-perez Sep 14, 2022
6d09543
./gradlew ktlintFormat
david-perez Sep 14, 2022
b7b2644
Merge remote-tracking branch 'upstream/main' into davidpz-builders-of…
david-perez Sep 15, 2022
018dea9
Merge remote-tracking branch 'upstream/main' into davidpz-builders-of…
david-perez Sep 15, 2022
fd0d94a
Fix some copyright headers: no full stop at the end of Apache-2.0
david-perez Sep 15, 2022
f8c700c
Refactor Constraints.kt
david-perez Sep 16, 2022
c491fb3
Inline deserializerBuilderSetterName, adjust TODOs
david-perez Sep 16, 2022
97f5955
Docs; simplified renderBuilderMemberFn
david-perez Sep 16, 2022
c6ac759
./gradlew ktlintFormat
david-perez Sep 16, 2022
a79db74
Make ServerBuilder constraint violation rendering DRYer
david-perez Sep 19, 2022
603bf5c
Add documentation to `UnconstrainedMapGenerator`, `UnconstrainedUnion…
david-perez Sep 19, 2022
8e63017
Remove incorrect TODO
david-perez Sep 19, 2022
28b3f6f
Attach issue to TODO about sensitive Display trait impl in Constraine…
david-perez Sep 19, 2022
3f9478b
Adjust TODO about Display impl not honoring sensitive trait in Constr…
david-perez Sep 19, 2022
e624a53
Add validation to ensure unsupported constraints are not used
david-perez Sep 21, 2022
94ab662
Adjust TODOs
david-perez Sep 21, 2022
148cc64
Merge remote-tracking branch 'upstream/main' into davidpz-builders-of…
david-perez Sep 21, 2022
274adf1
./gradlew ktlintFormat
david-perez Sep 21, 2022
defe1fe
save work -- was trying to get rest_json_validation to compile
david-perez Sep 27, 2022
050e225
passes protocol tests
david-perez Sep 28, 2022
4cad83e
fix length map and length map key validation messages
david-perez Sep 28, 2022
169e6de
fix enum and recursive structures test
david-perez Sep 28, 2022
8af068d
fix list value test cases
david-perez Sep 28, 2022
3cbf2cf
fix rest_json_malformed_enum_map
david-perez Sep 28, 2022
42cb88e
bring back LengthMapValue tests; we haven't implemented range on list…
david-perez Sep 28, 2022
925bd70
Link to 2.0 spec in Constraints.kt
david-perez Oct 3, 2022
b421e05
Explicitly type `Boolean` return type in `Constraints.kt`
david-perez Oct 3, 2022
5396e73
Adjust docs for PubCrateConstrainedShapeSymbolProvider
david-perez Oct 3, 2022
881ecb3
Adjust docs in PubCrateConstrainedShapeSymbolProvider
david-perez Oct 3, 2022
ef4b7ba
Type `Boolean` as return type in functinos for StructureGenerator
david-perez Oct 3, 2022
48920b5
Try to make ErrorGenerator messageSymbol return type calculation a bi…
david-perez Oct 3, 2022
2c0c0d6
Refactor `HttpBindingGenerator.renderPrefixHeader`
david-perez Oct 3, 2022
42ee464
Document and rename to `AggregateShapeReachableFromOperationInputTagT…
david-perez Oct 3, 2022
281e61f
Move `isShapeReachableFromOperationInput` into `AggregateShapeReachab…
david-perez Oct 3, 2022
973f44a
Add phrase about Python having `publicConstrainedTypes` set to `false`
david-perez Oct 3, 2022
1de207c
Try to move MaybeConstrained, Constrained into aws-smithy-http-server
david-perez Oct 3, 2022
7c029d4
Revert "Try to move MaybeConstrained, Constrained into aws-smithy-htt…
david-perez Oct 3, 2022
a180566
Make PubCrateConstraintViolationSymbolProvider wrap ConstraintViolati…
david-perez Oct 3, 2022
af57b95
Constraint violation error messages start with uppercase
david-perez Oct 3, 2022
ddeedbf
Merge remote-tracking branch 'upstream/main' into davidpz-builders-of…
david-perez Oct 3, 2022
7b1a2a9
save work
david-perez Oct 4, 2022
62b279c
save work
david-perez Oct 4, 2022
cadf33f
fix merge at the expense of hardcoding always server + publicConstrai…
david-perez Oct 4, 2022
94c3d6e
sst constraints,constraints_without_public_constrained_types test + c…
david-perez Oct 5, 2022
be594bb
attach ValidationException on operations whose input is constrained f…
david-perez Oct 6, 2022
cc3c71b
Add ValidationException to the error set of the StoreServiceBlob oper…
david-perez Oct 7, 2022
b013e62
Add ValidationException to the error set of a bunch of services
david-perez Oct 7, 2022
ccbbb35
Comment out s3 model; sa works
david-perez Oct 10, 2022
24315cd
Calculate shapesReachableFromConstrainedOperationInputs in AggregateS…
david-perez Oct 10, 2022
b45a633
Revert "Calculate shapesReachableFromConstrainedOperationInputs in Ag…
david-perez Oct 10, 2022
4ac0511
Make `server-unit-tests` work
david-perez Oct 10, 2022
4bd38a1
Fix spst and python-tests
david-perez Oct 11, 2022
7b177bf
Fix server-e2e-tests
david-perez Oct 11, 2022
09b22da
./gradlew ktlintFormat
david-perez Oct 11, 2022
8e8c59d
Tackle a few TODOs
david-perez Oct 11, 2022
8ada4a0
./gradlew ktlintFormat
david-perez Oct 11, 2022
d709b58
Fix more TODOs
david-perez Oct 11, 2022
f99ece8
Fix more TODOs
david-perez Oct 11, 2022
ad3fb6a
Fix more TODOs
david-perez Oct 11, 2022
7d0d230
Merge remote-tracking branch 'upstream/main' into davidpz-builders-of…
david-perez Oct 11, 2022
abd003b
Adjust two TODOs
david-perez Oct 12, 2022
fc116ad
Add TODOs from first PR review
david-perez Oct 14, 2022
35da738
Refactor `Instantiator`
david-perez Oct 14, 2022
fe25616
Merge remote-tracking branch 'upstream/main' into davidpz-builders-of…
david-perez Oct 18, 2022
77b315e
Merge remote-tracking branch 'upstream/davidpz/split-instantiator' in…
david-perez Oct 19, 2022
7439f3d
./gradlew ktlintFormat
david-perez Oct 19, 2022
2b73958
Merge remote-tracking branch 'upstream/main' into davidpz-builders-of…
david-perez Oct 21, 2022
824d6d7
Delete ConstraintsButThisShouldNotStayInCore
david-perez Oct 21, 2022
21a8df3
Address some TODOs
david-perez Oct 21, 2022
c4e4ad5
Merge remote-tracking branch 'upstream/main' into davidpz-builders-of…
david-perez Oct 21, 2022
51f11b9
Address some TODOs
david-perez Oct 24, 2022
a4fa15c
Merge remote-tracking branch 'upstream/main' into davidpz-builders-of…
david-perez Oct 24, 2022
4ec72aa
./gradlew ktlintFormat
david-perez Oct 24, 2022
3a0a413
Address some TODOs
david-perez Oct 24, 2022
e9e5633
Merge remote-tracking branch 'upstream/main' into davidpz-builders-of…
david-perez Oct 24, 2022
d7e0aaa
./gradlew ktlintFormat
david-perez Oct 24, 2022
fb4b5cd
Fix Clippy XML serialization of `String`
david-perez Oct 25, 2022
4380391
Validate operations with constrained input have ValidationException a…
david-perez Oct 26, 2022
e372bb8
Honor `sensitive` in constrained strings
david-perez Oct 26, 2022
7457edf
Remove `parse` method
david-perez Oct 27, 2022
0cd7ffd
Merge remote-tracking branch 'upstream/main' into davidpz-builders-of…
david-perez Oct 27, 2022
4bf2cbb
Copyright header
david-perez Oct 27, 2022
425bbde
Merge remote-tracking branch 'upstream/main' into davidpz-builders-of…
david-perez Oct 27, 2022
7c8c9ff
rest_json_extras,misc need ValidationException
david-perez Oct 27, 2022
9215707
Merge remote-tracking branch 'upstream/main' into davidpz-builders-of…
david-perez Oct 27, 2022
5f12751
Merge remote-tracking branch 'upstream/main' into davidpz-builders-of…
david-perez Nov 4, 2022
945e42e
Address jdisanti's comments
david-perez Nov 4, 2022
9f81653
Add changelog entries
david-perez Nov 4, 2022
87063b4
Merge remote-tracking branch 'upstream/main' into davidpz-builders-of…
david-perez Nov 4, 2022
655fd1d
Bring back failing test and comment I inadvertently deleted in past m…
david-perez Nov 4, 2022
9679158
Merge remote-tracking branch 'upstream/main' into davidpz-builders-of…
david-perez Nov 15, 2022
e1e729f
Merge remote-tracking branch 'upstream/main' into davidpz-builders-of…
david-perez Nov 15, 2022
d35394e
Fix EventStreamUnmarshallerGeneratorTest
david-perez Nov 15, 2022
a8301db
Kick-off CI again
david-perez Nov 15, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -6,20 +6,34 @@
package software.amazon.smithy.rust.codegen.client.smithy.generators

import software.amazon.smithy.codegen.core.Symbol
import software.amazon.smithy.model.shapes.MemberShape
import software.amazon.smithy.model.shapes.StructureShape
import software.amazon.smithy.rust.codegen.core.rustlang.Writable
import software.amazon.smithy.rust.codegen.core.rustlang.rust
import software.amazon.smithy.rust.codegen.core.rustlang.writable
import software.amazon.smithy.rust.codegen.core.smithy.CodegenContext
import software.amazon.smithy.rust.codegen.core.smithy.generators.BuilderGenerator
import software.amazon.smithy.rust.codegen.core.smithy.generators.Instantiator
import software.amazon.smithy.rust.codegen.core.smithy.generators.setterName

private fun enumFromStringFn(enumSymbol: Symbol, data: String): Writable = writable {
rust("#T::from($data)", enumSymbol)
}

class ClientBuilderKindBehavior(val codegenContext: CodegenContext) : Instantiator.BuilderKindBehavior {
override fun hasFallibleBuilder(shape: StructureShape): Boolean =
BuilderGenerator.hasFallibleBuilder(shape, codegenContext.symbolProvider)

override fun setterName(memberShape: MemberShape): String = memberShape.setterName()

override fun doesSetterTakeInOption(memberShape: MemberShape): Boolean = true
}

fun clientInstantiator(codegenContext: CodegenContext) =
Instantiator(
codegenContext.symbolProvider,
codegenContext.model,
codegenContext.runtimeConfig,
ClientBuilderKindBehavior(codegenContext),
::enumFromStringFn,
)
Expand Up @@ -26,7 +26,7 @@ import software.amazon.smithy.rust.codegen.core.smithy.RuntimeType
import software.amazon.smithy.rust.codegen.core.smithy.customize.OperationCustomization
import software.amazon.smithy.rust.codegen.core.smithy.customize.OperationSection
import software.amazon.smithy.rust.codegen.core.smithy.customize.writeCustomizations
import software.amazon.smithy.rust.codegen.core.smithy.generators.StructureGenerator
import software.amazon.smithy.rust.codegen.core.smithy.generators.BuilderGenerator
import software.amazon.smithy.rust.codegen.core.smithy.generators.builderSymbol
import software.amazon.smithy.rust.codegen.core.smithy.generators.error.errorSymbol
import software.amazon.smithy.rust.codegen.core.smithy.generators.http.ResponseBindingGenerator
Expand Down Expand Up @@ -332,7 +332,7 @@ class HttpBoundProtocolTraitImplGenerator(
}
}

val err = if (StructureGenerator.hasFallibleBuilder(outputShape, symbolProvider)) {
val err = if (BuilderGenerator.hasFallibleBuilder(outputShape, symbolProvider)) {
".map_err(${format(errorSymbol)}::unhandled)?"
} else ""

Expand Down