| // RUN: rm -rf %t && mkdir -p %t |
| // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/ModulesCache -fapinotes-modules -fapinotes-cache-path=%t/APINotesCache -fsyntax-only -I %S/Inputs/Headers -F %S/Inputs/Frameworks %s -verify |
| |
| // Test with Swift version 3.0. This should only affect the few APIs that have an entry in the 3.0 tables. |
| |
| // RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t/ModulesCache -fapinotes-modules -fapinotes-cache-path=%t/APINotesCache -fapinotes-swift-version=3.0 -fsyntax-only -I %S/Inputs/Headers -F %S/Inputs/Frameworks %s -verify -DSWIFT_VERSION_3_0 -fmodules-ignore-macro=SWIFT_VERSION_3_0 |
| |
| #import <SomeKit/SomeKit.h> |
| |
| int main() { |
| A *a; |
| |
| #if SWIFT_VERSION_3_0 |
| float *fp = // expected-warning{{incompatible pointer types initializing 'float *' with an expression of type 'A * _Nullable'}} |
| [a transform: 0 integer: 0]; |
| #else |
| float *fp = // expected-warning{{incompatible pointer types initializing 'float *' with an expression of type 'A *'}} |
| [a transform: 0 integer: 0]; // expected-warning{{null passed to a callee that requires a non-null argument}} |
| #endif |
| |
| [a setNonnullAInstance: 0]; // expected-warning{{null passed to a callee that requires a non-null argument}} |
| [A setNonnullAInstance: 0]; // no warning |
| |
| [a setNonnullAClass: 0]; // no warning |
| [A setNonnullAClass: 0]; // expected-warning{{null passed to a callee that requires a non-null argument}} |
| |
| [a setNonnullABoth: 0]; // expected-warning{{null passed to a callee that requires a non-null argument}} |
| [A setNonnullABoth: 0]; // expected-warning{{null passed to a callee that requires a non-null argument}} |
| |
| [a setInternalProperty: 0]; // expected-warning{{null passed to a callee that requires a non-null argument}} |
| |
| #if SWIFT_VERSION_3_0 |
| // Version 3 information overrides header information. |
| [a setExplicitNonnullInstance: 0]; // okay |
| [a setExplicitNullableInstance: 0]; // expected-warning{{null passed to a callee that requires a non-null argument}} |
| #else |
| // Header information overrides unversioned information. |
| [a setExplicitNonnullInstance: 0]; // expected-warning{{null passed to a callee that requires a non-null argument}} |
| [a setExplicitNullableInstance: 0]; // okay |
| #endif |
| |
| return 0; |
| } |
| |