// Tests that the ODR check wouldn't produce false-positive result for preferred_name attribute.
//
// RUN: rm -rf %t
// RUN: mkdir -p %t
// RUN: split-file %s %t
//
// RUN: %clang_cc1 -std=c++20 %t/A.cppm -emit-module-interface -o %t/A.pcm
// RUN: %clang_cc1 -std=c++20 -fprebuilt-module-path=%t -I%t %t/Use.cppm -verify -fsyntax-only
// RUN: %clang_cc1 -std=c++20 -fprebuilt-module-path=%t -I%t %t/Use1.cpp -verify -fsyntax-only
// RUN: %clang_cc1 -std=c++20 -fprebuilt-module-path=%t -I%t %t/Use2.cpp -verify -fsyntax-only
//
//--- foo.h
template<class _CharT>
class foo_templ;

typedef foo_templ<char> foo;

template<class _CharT>
class
__attribute__((__preferred_name__(foo)))
foo_templ {
public:
    foo_templ() {}
};

inline foo_templ<char> bar()
{
  return foo_templ<char>();
}

//--- A.cppm
module;
#include "foo.h"
export module A;

//--- Use.cppm
// expected-no-diagnostics
module;
#include "foo.h"
export module Use;
import A;

//--- Use1.cpp
import A;         // expected-warning@foo.h:8 {{attribute declaration must precede definition}}
#include "foo.h"  // expected-note@foo.h:9 {{previous definition is here}}

//--- Use2.cpp
// expected-no-diagnostics
#include "foo.h"
import A;
