| // Verify that a malformed standard modules manifest triggers an error. |
| |
| // RUN: split-file %s %t |
| |
| // The standard library modules manifest (libc++.modules.json) is discovered |
| // relative to the installed C++ standard library runtime libraries |
| // We need to create them in order for Clang to find the manifest. |
| // RUN: rm -rf %t && split-file %s %t && cd %t |
| // RUN: mkdir -p %t/Inputs/usr/lib/x86_64-linux-gnu |
| // RUN: touch %t/Inputs/usr/lib/x86_64-linux-gnu/libc++.so |
| // RUN: touch %t/Inputs/usr/lib/x86_64-linux-gnu/libc++.a |
| |
| // Add the standard module manifest itself. |
| // RUN: cat %t/libc++.modules.json.in > \ |
| // RUN: %t/Inputs/usr/lib/x86_64-linux-gnu/libc++.modules.json |
| |
| // RUN: not %clang -std=c++20 \ |
| // RUN: -fmodules-driver -Rmodules-driver \ |
| // RUN: -stdlib=libc++ \ |
| // RUN: -resource-dir=%t/Inputs/usr/lib/x86_64-linux-gnu \ |
| // RUN: --target=x86_64-linux-gnu \ |
| // RUN: -fmodules-cache-path=%t/modules-cache \ |
| // RUN: %t/main.cpp \ |
| // RUN: -### 2>&1 \ |
| // RUN: | sed 's:\\\\\?:/:g' \ |
| // RUN: | FileCheck %s -DPREFIX=%/t |
| |
| // CHECK: remark: using standard modules manifest file '[[PREFIX]]/Inputs/usr/lib/x86_64-linux-gnu/libc++.modules.json' [-Rmodules-driver] |
| // CHECK: error: failure while parsing standard modules manifest: '[5:7, byte=57]: Invalid JSON value (true?)' |
| |
| //--- main.cpp |
| // empty |
| |
| //--- libc++.modules.json.in |
| { |
| "version": 1, |
| "revision": 1, |
| "modules": [ |
| this is malformed. |
| ] |
| } |