diff --git a/tests/ios/InclusionProblemRepro/BUILD.bazel b/tests/ios/InclusionProblemRepro/BUILD.bazel new file mode 100644 index 000000000..9e96f94ef --- /dev/null +++ b/tests/ios/InclusionProblemRepro/BUILD.bazel @@ -0,0 +1,81 @@ +load("//rules:library.bzl", "apple_library") +load("//rules:hmap.bzl", "headermap") + +apple_library( + name = "LibraryA", + srcs = glob([ + "Classes/HeaderB.h", + "Classes/HeaderC.h", + "Classes/Extensions/D.h", + "Classes/Extensions/D.m", + ]), + platforms = {"ios": "8.0"}, + public_headers = [ + "Classes/HeaderB.h", + "Classes/HeaderC.h", + "Classes/Extensions/D.h", + ], + visibility = ["//visibility:public"], +) + + +headermap( + name="LibraryTest_private_hmap", + hdrs=glob([ + "Classes/HeaderB.h", + "Classes/HeaderC.h", + "Classes/Extensions/D.h", + ]), +) + +# it looks like the use of header maps combined with -fmodules is waht causes the problem to happen. +objc_library( + name = "LibraryNoWorky_objc", + srcs = glob([ + "Classes/HeaderB.h", + "Classes/HeaderC.h", + "Classes/Extensions/D.h", + "Classes/Extensions/D.m", + ]), + deps = ["LibraryTest_private_hmap"], + copts = [ + "-fmodules", + "-fmodule-name=LibraryNoWorky", + "-iquote$(execpath :LibraryTest_private_hmap)", + "-I." + ], + visibility = ["//visibility:public"], +) + + +objc_library( + name = "LibraryWorky_objc", + srcs = glob([ + "Classes/HeaderB.h", + "Classes/HeaderC.h", + "Classes/Extensions/D.h", + "Classes/Extensions/D.m", + ]), + copts = [ + "-fmodules", + "-fmodule-name=LibraryWorky", + "-iquotetests/ios/InclusionProblemRepro/Classes", + ], + visibility = ["//visibility:public"], +) + +objc_library( + name = "LibraryWorkyToo_objc", + srcs = glob([ + "Classes/HeaderB.h", + "Classes/HeaderC.h", + "Classes/Extensions/D.h", + "Classes/Extensions/D.m", + ]), + deps = ["LibraryTest_private_hmap"], + copts = [ + "-iquote$(execpath :LibraryTest_private_hmap)", + "-I." + ], + visibility = ["//visibility:public"], +) diff --git a/tests/ios/InclusionProblemRepro/Classes/Extensions/D.h b/tests/ios/InclusionProblemRepro/Classes/Extensions/D.h new file mode 100644 index 000000000..a6d0c07a1 --- /dev/null +++ b/tests/ios/InclusionProblemRepro/Classes/Extensions/D.h @@ -0,0 +1 @@ +#import "HeaderC.h" \ No newline at end of file diff --git a/tests/ios/InclusionProblemRepro/Classes/Extensions/D.m b/tests/ios/InclusionProblemRepro/Classes/Extensions/D.m new file mode 100644 index 000000000..79b222238 --- /dev/null +++ b/tests/ios/InclusionProblemRepro/Classes/Extensions/D.m @@ -0,0 +1 @@ +#import "D.h" \ No newline at end of file diff --git a/tests/ios/InclusionProblemRepro/Classes/HeaderB.h b/tests/ios/InclusionProblemRepro/Classes/HeaderB.h new file mode 100644 index 000000000..e69de29bb diff --git a/tests/ios/InclusionProblemRepro/Classes/HeaderC.h b/tests/ios/InclusionProblemRepro/Classes/HeaderC.h new file mode 100644 index 000000000..703e195cb --- /dev/null +++ b/tests/ios/InclusionProblemRepro/Classes/HeaderC.h @@ -0,0 +1 @@ +#import "HeaderB.h" \ No newline at end of file