// 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. ] }