// RUN: %clang_cc1 -fsyntax-only -verify -Wno-non-c-typedef-for-linkage -std=gnu++11 %s
// RUN: %clang_cc1 -fsyntax-only -verify -Wno-non-c-typedef-for-linkage -Wno-c++11-extensions -Wno-local-type-template-args %s -std=gnu++98
// RUN: %clang_cc1 -fsyntax-only -verify -Wno-non-c-typedef-for-linkage -Wno-c++11-extensions -Wno-local-type-template-args -fmodules %s
// This is OK. Both test2_f don't have language linkage since they have
// internal linkage.
extern "C"
// pr14898
// This is OK. The variables have internal linkage and therefore no language
// linkage.
extern "C"
extern "C++"
extern "C++"
extern "C"
extern "C"
extern "C++"
// FIXME: This should be invalid. The function has no language linkage, but
// the function type has, so this is redeclaring the function with a different
// type.
extern "C++"
extern "C"
extern "C"
extern "C++"
extern "C"
extern "C++"
extern "C"
extern "C"
extern "C" void ;
static void ;
void
void