Skip to content

Commit e56d533

Browse files
authored
Merge pull request #10543 from bitjammer/rdar-32604558-migrator-skip-ast-passes-swift-4-swift-4.0-branch
[Migrator] Don't run AST passes when in Swift 4 or later
2 parents d567b5e + 9a4cb90 commit e56d533

File tree

5 files changed

+31
-4
lines changed

5 files changed

+31
-4
lines changed

lib/Migrator/Migrator.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,11 @@ bool migrator::updateCodeAndEmitRemap(CompilerInstance *Instance,
5353
}
5454

5555
// Phase 2: Syntactic Transformations
56-
auto FailedSyntacticPasses = M.performSyntacticPasses();
57-
if (FailedSyntacticPasses) {
58-
return true;
56+
if (Invocation.getLangOptions().EffectiveLanguageVersion[0] < 4) {
57+
auto FailedSyntacticPasses = M.performSyntacticPasses();
58+
if (FailedSyntacticPasses) {
59+
return true;
60+
}
5961
}
6062

6163
// Phase 3: Post Fix-it Passes

lib/Migrator/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ Here are the passes:
4848
2. AST Passes
4949

5050
If the Pre-fix-it Pass was successful, or skipped because it was unnecessary, the
51-
*AST Passes* run. These include:
51+
*AST Passes* run if you are migrating *from before Swift 4*. These include:
5252

5353
- API Diff Pass
5454

test/Migrator/DoubleEditAPI.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
11
[
2+
{
3+
"DiffItemKind": "TypeMemberDiffItem",
4+
"Usr": "c:@E@FooComparisonResult@FooOrderedAscending",
5+
"OldPrintedName": "FooOrderedAscending",
6+
"NewPrintedName": "orderedAscending",
7+
"NewTypeName": "FooComparisonResult"
8+
},
29
{
310
"DiffItemKind": "TypeMemberDiffItem",
411
"Usr": "c:@SA@SomeItemSet",
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// REQUIRES: objc_interop
2+
// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/Inputs/DoubleEditAPI.json -emit-migrated-file-path %t/no_ast_passes_after_swift4.swift.result -emit-remap-file-path %t/no_ast_passes_after_swift4.swift.remap -o /dev/null -swift-version 4
3+
// RUN: diff -u %S/no_ast_passes_after_swift4.swift.expected %t/no_ast_passes_after_swift4.swift.result
4+
// RUN: %target-swift-frontend -typecheck -F %S/mock-sdk -swift-version 4 %t/no_ast_passes_after_swift4.swift.result
5+
6+
import Bar
7+
func foo() -> FooComparisonResult {
8+
return FooComparisonResult.orderedAscending
9+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// REQUIRES: objc_interop
2+
// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/Inputs/DoubleEditAPI.json -emit-migrated-file-path %t/no_ast_passes_after_swift4.swift.result -emit-remap-file-path %t/no_ast_passes_after_swift4.swift.remap -o /dev/null -swift-version 4
3+
// RUN: diff -u %S/no_ast_passes_after_swift4.swift.expected %t/no_ast_passes_after_swift4.swift.result
4+
// RUN: %target-swift-frontend -typecheck -F %S/mock-sdk -swift-version 4 %t/no_ast_passes_after_swift4.swift.result
5+
6+
import Bar
7+
func foo() -> FooComparisonResult {
8+
return FooComparisonResult.orderedAscending
9+
}

0 commit comments

Comments
 (0)