Support specifying integration-specific context type names. #36
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issue #, if available:
Description of changes: Support specifying integration-specific context type names. There are two use cases this change enables-
i. define a generic context type[1]
ii. a non-generic typealias[2] in its integration target
iii. specify the non-generic typealias[3] as the
contextTypeName
iv. then use a context with concrete types at runtime, avoiding the runtime overhead of existentials
v. specify a context with Mock concrete types[4] for testing
[1] https://github.com/amzn/smoke-framework-examples/blob/no_existential_types_example/NoExistentialTypesExampleService/Sources/NoExistentialTypesExampleOperations/NoExistentialTypesExampleOperationsContext.swift#L35
[2] https://github.com/amzn/smoke-framework-examples/blob/no_existential_types_example/NoExistentialTypesExampleService/Sources/NoExistentialTypesExampleOperationsHTTP1/HTTPNoExistentialTypesExampleOperationsContext.swift#L24
[3] https://github.com/amzn/smoke-framework-examples/blob/no_existential_types_example/NoExistentialTypesExampleService/smoke-framework-codegen.json#L8
[4] https://github.com/amzn/smoke-framework-examples/blob/no_existential_types_example/NoExistentialTypesExampleService/Tests/NoExistentialTypesExampleOperationsTests/NoExistentialTypesExampleTestConfiguration.swift#L71
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.