mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[Serialization] Only diagnose a bad architecture when there are others (#20550)
This diagnostic needs to be adapted for swiftinterfaces too, but
meanwhile let's not have it get in the way when dealing with a
multi-architecture module that has parseable interfaces.
MyKit.framework/
Modules/
MyKit.swiftmodule/
x86_64.swiftinterface
x86_64.swiftdoc
# no x86_64.swiftmodule
This commit is contained in:
@@ -117,6 +117,13 @@ static void addDiagnosticInfoForArchitectureMismatch(ASTContext &ctx,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (foundArchs.empty()) {
|
||||||
|
// Maybe this swiftmodule directory only contains swiftinterfaces, or
|
||||||
|
// maybe something else is going on. Regardless, we shouldn't emit a
|
||||||
|
// possibly incorrect diagnostic.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ctx.Diags.diagnose(sourceLocation, diag::sema_no_import_arch, moduleName,
|
ctx.Diags.diagnose(sourceLocation, diag::sema_no_import_arch, moduleName,
|
||||||
archName, foundArchs);
|
archName, foundArchs);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,23 +5,29 @@
|
|||||||
// RUN: touch %t/new_module.swiftmodule/ppc65.swiftmodule
|
// RUN: touch %t/new_module.swiftmodule/ppc65.swiftmodule
|
||||||
// RUN: touch %t/new_module.swiftmodule/i387.swiftdoc
|
// RUN: touch %t/new_module.swiftmodule/i387.swiftdoc
|
||||||
// RUN: touch %t/new_module.swiftmodule/ppc65.swiftdoc
|
// RUN: touch %t/new_module.swiftmodule/ppc65.swiftdoc
|
||||||
// RUN: not %target-swift-frontend %s -typecheck -I %t -show-diagnostics-after-fatal 2>&1 | %FileCheck %s -DTARGET_ARCHITECTURE=$(echo %target-swiftmodule-name | cut -d. -f1)
|
// RUN: not %target-swift-frontend %s -typecheck -I %t -show-diagnostics-after-fatal 2>&1 | %FileCheck %s -check-prefix=CHECK -check-prefix CHECK-ALL -DTARGET_ARCHITECTURE=$(echo %target-swiftmodule-name | cut -d. -f1)
|
||||||
|
|
||||||
// RUN: %empty-directory(%t)
|
// RUN: %empty-directory(%t)
|
||||||
// RUN: mkdir -p %t/new_module.framework/Modules/new_module.swiftmodule/
|
// RUN: mkdir -p %t/new_module.framework/Modules/new_module.swiftmodule/
|
||||||
// RUN: touch %t/new_module.framework/Modules/new_module.swiftmodule/i387.swiftmodule
|
// RUN: touch %t/new_module.framework/Modules/new_module.swiftmodule/i387.swiftmodule
|
||||||
// RUN: touch %t/new_module.framework/Modules/new_module.swiftmodule/ppc65.swiftmodule
|
// RUN: touch %t/new_module.framework/Modules/new_module.swiftmodule/ppc65.swiftmodule
|
||||||
// RUN: not %target-swift-frontend %s -F %t -typecheck -show-diagnostics-after-fatal 2>&1 | %FileCheck %s -DTARGET_ARCHITECTURE=$(echo %target-swiftmodule-name | cut -d. -f1)
|
// RUN: not %target-swift-frontend %s -F %t -typecheck -show-diagnostics-after-fatal 2>&1 | %FileCheck %s -check-prefix=CHECK -check-prefix CHECK-ALL -DTARGET_ARCHITECTURE=$(echo %target-swiftmodule-name | cut -d. -f1)
|
||||||
|
|
||||||
//CHECK: {{.*}} error: could not find module 'new_module' for architecture '[[TARGET_ARCHITECTURE]]'; found: {{ppc65, i387|i387, ppc65}}
|
// RUN: %empty-directory(%t)
|
||||||
//CHECK-NEXT: import new_module
|
// RUN: mkdir %t/new_module.swiftmodule
|
||||||
//CHECK-NEXT: ^
|
// RUN: not %target-swift-frontend %s -typecheck -I %t -show-diagnostics-after-fatal 2>&1 | %FileCheck %s -check-prefix=CHECK-EMPTY -check-prefix CHECK-ALL -DTARGET_ARCHITECTURE=$(echo %target-swiftmodule-name | cut -d. -f1)
|
||||||
//CHECK: error: no such module 'new_module'
|
|
||||||
//CHECK-NEXT: import new_module
|
// CHECK-ALL-NOT: error:
|
||||||
//CHECK-NEXT: ^
|
// CHECK: {{.*}} error: could not find module 'new_module' for architecture '[[TARGET_ARCHITECTURE]]'; found: {{ppc65, i387|i387, ppc65}}
|
||||||
//CHECK: error: use of unresolved identifier 'new_module'
|
// CHECK-NEXT: import new_module
|
||||||
//CHECK-NEXT: new_module.foo()
|
// CHECK-NEXT: ^
|
||||||
//CHECK-NEXT: ^~~~~~~~~~
|
// CHECK-ALL: error: no such module 'new_module'
|
||||||
|
// CHECK-ALL-NEXT: import new_module
|
||||||
|
// CHECK-ALL-NEXT: ^
|
||||||
|
// CHECK-ALL: error: use of unresolved identifier 'new_module'
|
||||||
|
// CHECK-ALL-NEXT: new_module.foo()
|
||||||
|
// CHECK-ALL-NEXT: ^~~~~~~~~~
|
||||||
|
// CHECK-ALL-NOT: error:
|
||||||
|
|
||||||
import new_module
|
import new_module
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user