diff --git a/lib/ClangImporter/ImportType.cpp b/lib/ClangImporter/ImportType.cpp index 7871ee6977ce7..35ef5f19642e2 100644 --- a/lib/ClangImporter/ImportType.cpp +++ b/lib/ClangImporter/ImportType.cpp @@ -787,7 +787,7 @@ namespace { } static const llvm::StringLiteral vaListNames[] = { - "va_list", "__gnuc_va_list", "__va_list" + "va_list", "__gnuc_va_list", "__isoc_va_list", "__va_list" }; ImportHint hint = ImportHint::None; diff --git a/lib/ClangImporter/MappedTypes.def b/lib/ClangImporter/MappedTypes.def index c1a8c8039dcd1..7f11008619a99 100644 --- a/lib/ClangImporter/MappedTypes.def +++ b/lib/ClangImporter/MappedTypes.def @@ -128,6 +128,7 @@ MAP_STDLIB_TYPE("u_int64_t", UnsignedInt, 64, "UInt64", false, DoNothing) // There's an explicit workaround in ImportType.cpp's VisitDecayedType for that. MAP_STDLIB_TYPE("va_list", VaList, 0, "CVaListPointer", false, DoNothing) MAP_STDLIB_TYPE("__gnuc_va_list", VaList, 0, "CVaListPointer", false, DoNothing) +MAP_STDLIB_TYPE("__isoc_va_list", VaList, 0, "CVaListPointer", false, DoNothing) MAP_STDLIB_TYPE("__va_list", VaList, 0, "CVaListPointer", false, DoNothing) // libkern/OSTypes.h types. diff --git a/test/Interop/C/va_list/Inputs/module.modulemap b/test/Interop/C/va_list/Inputs/module.modulemap new file mode 100644 index 0000000000000..be337a926c6bb --- /dev/null +++ b/test/Interop/C/va_list/Inputs/module.modulemap @@ -0,0 +1,4 @@ +module ImportCVAList { + header "va_list.h" + export * +} diff --git a/test/Interop/C/va_list/Inputs/va_list.h b/test/Interop/C/va_list/Inputs/va_list.h new file mode 100644 index 0000000000000..2601016af7088 --- /dev/null +++ b/test/Interop/C/va_list/Inputs/va_list.h @@ -0,0 +1,10 @@ +#include + +typedef va_list __gnuc_va_list; +typedef va_list __isoc_va_list; +typedef va_list __va_list; + +va_list va; +__gnuc_va_list gnu; +__isoc_va_list isoC; +__va_list underscore; diff --git a/test/Interop/C/va_list/va_list.swift b/test/Interop/C/va_list/va_list.swift new file mode 100644 index 0000000000000..859f94343fe8e --- /dev/null +++ b/test/Interop/C/va_list/va_list.swift @@ -0,0 +1,6 @@ +// RUN: %target-swift-ide-test -print-module -module-to-print=ImportCVAList -I %S/Inputs -source-filename=x | %FileCheck %s + +// CHECK: var va: CVaListPointer +// CHECK: var gnu: CVaListPointer +// CHECK: var isoC: CVaListPointer +// CHECK: var underscore: CVaListPointer