// Test the output from -module-file-info about C++20 Modules
// can reflect macros definitions correctly.
// RUN: rm -rf %t
// RUN: mkdir -p %t
// RUN: split-file %s %t
//
// RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header %t/foo.h -o %t/foo.pcm
// RUN: %clang_cc1 -module-file-info %t/foo.pcm | FileCheck %t/foo.h
//
// RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header %t/include_foo.h -o %t/include_foo.pcm
// RUN: %clang_cc1 -module-file-info %t/include_foo.pcm | FileCheck %t/include_foo.h

// RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header -fmodule-file=%t/foo.pcm \
// RUN:     %t/import_foo.h -o %t/import_foo.pcm
// RUN: %clang_cc1 -module-file-info %t/import_foo.pcm | FileCheck %t/import_foo.h
//
// RUN: %clang_cc1 -std=c++20 %t/named_module.cppm -emit-module-interface -o %t/M.pcm
// RUN: %clang_cc1 -module-file-info %t/M.pcm | FileCheck %t/named_module.cppm

//--- foo.h
#pragma once
#define FOO
#define CONSTANT 43
#define FUNC_Macro(X) (X+1)
#define TO_BE_UNDEF
#undef TO_BE_UNDEF

#ifndef FOO
#define CONDITIONAL_DEF
#endif

#define REDEFINE
#define REDEFINE

// CHECK: Macro Definitions:
// CHECK-DAG: REDEFINE
// CHECK-DAG: FUNC_Macro
// CHECK-DAG: CONSTANT
// CHECK-DAG: FOO
// CHECK-NEXT: ===

//--- include_foo.h
#include "foo.h"
#undef REDEFINE
// CHECK: Macro Definitions:
// CHECK-DAG: CONSTANT
// CHECK-DAG: FUNC_Macro
// CHECK-DAG: FOO
// CHECK-NEXT: ===

//--- import_foo.h
import "foo.h";
#undef REDEFINE
// CHECK: Macro Definitions:
// CHECK-DAG: CONSTANT
// CHECK-DAG: FUNC_Macro
// CHECK-DAG: FOO
// CHECK-NEXT: ===

//--- named_module.cppm
module;
#include "foo.h"
export module M;
#define M_Module 43
// CHECK-NOT: Macro Definitions:
