Skip to content

Commit 964dcb1

Browse files
Merge pull request #2198 from andybest/query-document-type-check
Swift Codegen: Split up appending of fragments to query document
2 parents c7448da + d1b1ad6 commit 964dcb1

3 files changed

Lines changed: 33 additions & 14 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
- `apollo-codegen-scala`
1010
- <First `apollo-codegen-scala` related entry goes here>
1111
- `apollo-codegen-swift`
12-
- <First `apollo-codegen-scala` related entry goes here>
12+
- Fix issue where a query referencing many fragments caused type checking for `queryDocument` to time out [#2198](https://github.com/apollographql/apollo-tooling/pull/2198)
1313
- `apollo-codegen-typescript`
1414
- <First `apollo-codegen-typescript` related entry goes here>
1515
- `apollo-codegen-core`

packages/apollo-codegen-swift/src/__tests__/__snapshots__/codeGeneration.ts.snap

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,11 @@ exports[`Swift code generation #classDeclarationForOperation() should generate a
315315

316316
public let operationName: String = \\"Hero\\"
317317

318-
public var queryDocument: String { return operationDefinition.appending(\\"\\\\n\\" + HeroDetails.fragmentDefinition) }
318+
public var queryDocument: String {
319+
var document: String = operationDefinition
320+
document.append(\\"\\\\n\\" + HeroDetails.fragmentDefinition)
321+
return document
322+
}
319323

320324
public init() {
321325
}
@@ -460,7 +464,11 @@ exports[`Swift code generation #classDeclarationForOperation() should generate a
460464

461465
public let operationName: String = \\"Hero\\"
462466

463-
public var queryDocument: String { return operationDefinition.appending(\\"\\\\n\\" + DroidDetails.fragmentDefinition) }
467+
public var queryDocument: String {
468+
var document: String = operationDefinition
469+
document.append(\\"\\\\n\\" + DroidDetails.fragmentDefinition)
470+
return document
471+
}
464472

465473
public init() {
466474
}
@@ -633,7 +641,11 @@ exports[`Swift code generation #classDeclarationForOperation() should generate a
633641

634642
public let operationName: String = \\"Hero\\"
635643

636-
public var queryDocument: String { return operationDefinition.appending(\\"\\\\n\\" + HeroDetails.fragmentDefinition) }
644+
public var queryDocument: String {
645+
var document: String = operationDefinition
646+
document.append(\\"\\\\n\\" + HeroDetails.fragmentDefinition)
647+
return document
648+
}
637649

638650
public init() {
639651
}
@@ -834,7 +846,11 @@ exports[`Swift code generation #classDeclarationForOperation() should generate a
834846

835847
public let operationIdentifier: String? = \\"90d0d674eb6a7b33776f63200d6cec3d09f881247c360a2ac9a29037a02210c4\\"
836848

837-
public var queryDocument: String { return operationDefinition.appending(\\"\\\\n\\" + HeroDetails.fragmentDefinition) }
849+
public var queryDocument: String {
850+
var document: String = operationDefinition
851+
document.append(\\"\\\\n\\" + HeroDetails.fragmentDefinition)
852+
return document
853+
}
838854

839855
public init() {
840856
}

packages/apollo-codegen-swift/src/codeGeneration.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -262,17 +262,20 @@ export class SwiftAPIGenerator extends SwiftGenerator<CompilerContext> {
262262

263263
if (fragmentsReferenced.size > 0) {
264264
this.printNewlineIfNeeded();
265-
this.printOnNewline(
266-
swift`public var queryDocument: String { return operationDefinition`
267-
);
268-
fragmentsReferenced.forEach(fragmentName => {
269-
this.print(
270-
swift`.appending("\\n" + ${this.helpers.structNameForFragmentName(
271-
fragmentName
272-
)}.fragmentDefinition)`
265+
this.printOnNewline(swift`public var queryDocument: String`);
266+
this.withinBlock(() => {
267+
this.printOnNewline(
268+
swift`var document: String = operationDefinition`
273269
);
270+
fragmentsReferenced.forEach(fragmentName => {
271+
this.printOnNewline(
272+
swift`document.append("\\n" + ${this.helpers.structNameForFragmentName(
273+
fragmentName
274+
)}.fragmentDefinition)`
275+
);
276+
});
277+
this.printOnNewline(swift`return document`);
274278
});
275-
this.print(swift` }`);
276279
}
277280

278281
this.printNewlineIfNeeded();

0 commit comments

Comments
 (0)