# Compile with:
#    cat >modules.modulemap <<EOF
#      module Foo {
#        header "Foo.h"
#        export *
#      }
#      module Bar {
#        header "Bar.h"
#        export *
#      }
# EOF
#    echo 'typedef int bar;' >Bar.h
#    echo '@import Bar; typedef bar foo;' >Foo.h
#    echo '@import Foo; foo f() { return 0; }' >module-warnings.m
#    clang -cc1 -emit-obj -fmodules -fmodule-map-file=modules.modulemap \
#      -fmodule-format=obj -debug-info-kind=standalone -dwarf-ext-refs \
#      -fmodules-cache-path=ModuleCache \
#      -fdisable-module-hash module-warnings.m -o 1.o
#
# Test for module-related warnings.
#
# RUN: rm -rf %t.dir && mkdir %t.dir && mkdir %t.dir/ModuleCache
# RUN: cp %p/../Inputs/module-warnings/1.o %t.dir
# RUN: cp %p/../Inputs/module-warnings/Foo.pcm %t.dir/ModuleCache
#
# RUN: dsymutil -f -oso-prepend-path=%t.dir -y \
# RUN:   %p/dummy-debug-map.map -o %t 2>&1 | FileCheck %s
#
# Module-not-found should be reported only once.
# The exact error message depends on the OS so we don't check for it.
# CHECK:     warning: {{.*}}Bar.pcm:
# CHECK-NOT: warning: {{.*}}Bar.pcm:
#
# RUN: cp %p/../Inputs/module-warnings/libstatic.a %t.dir
# RUN: dsymutil -f -oso-prepend-path=%t.dir -y %s -o %t 2>&1 | FileCheck %s
# CHECK: rebuild the module cache
# CHECK-NOT: static libraries
#
# RUN: rm -rf %t.dir/ModuleCache
# RUN: dsymutil -f -oso-prepend-path=%t.dir -y %s -o %t 2>&1 \
# RUN:   | FileCheck %s --check-prefix=STATIC
# STATIC: warning: {{.*}}Bar.pcm:
# STATIC: note: Linking a static library
# STATIC: warning: {{.*}}Foo.pcm:
# STATIC-NOT: warning:

---
triple:          'x86_64-apple-darwin'
objects:
  - filename: libstatic.a(1.o)
    symbols:
      - { sym: __Z3foov, objAddr: 0x0, binAddr: 0x10000, size: 0x10 }
...
