brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 352e012 Raw
93 lines · cpp
1// RUN: rm -fR %t2// RUN: split-file %s %t3// RUN: cd %t4// RUN: %clang_cc1 -verify -std=c++20 -Werror=uninitialized -xc++ -emit-module module.cppmap -fmodule-name=mock_resolver -o mock_resolver.pcm5// RUN: %clang_cc1 -verify -std=c++20 -Werror=uninitialized -xc++ -emit-module module.cppmap -fmodule-name=sql_internal -o sql_internal.pcm6// RUN: %clang_cc1 -verify -std=c++20 -Werror=uninitialized -xc++ -fmodule-file=mock_resolver.pcm -fmodule-file=sql_internal.pcm main.cc -o main.o7 8//--- module.cppmap9module "mock_resolver" {10  export *11  module "mock_resolver.h" {12    export *13    header "mock_resolver.h"14  }15}16 17module "sql_internal" {18  export *19  module "sql_transform_builder.h" {20    export *21    header "sql_transform_builder.h"22  }23}24 25//--- set_bits2.h26// expected-no-diagnostics27#pragma once28 29template <typename T>30void fwd(const T& x) {}31 32namespace vox::bitset {33 34template <typename TFunc>35void ForEachSetBit2(const TFunc&) {36  fwd([](int) {37    const int bit_index_base = 0;38    (void)[&](int) {39      int v = bit_index_base;40    };41  });42}43 44}  // namespace vox::bitset45 46//--- sql_transform_builder.h47// expected-no-diagnostics48#pragma once49 50#include "set_bits2.h"51 52class QualifyingSet3 {53 public:54  void GetIndexes() const {55    vox::bitset::ForEachSetBit2([]() {});56  }57};58 59template <typename T>60void DoTransform() {61  vox::bitset::ForEachSetBit2([]() {});62}63 64//--- mock_resolver.h65// expected-no-diagnostics66#pragma once 67#include "set_bits2.h"68 69class QualifyingSet2 {70 public:71  void GetIndexes() const {72    vox::bitset::ForEachSetBit2([]() {});73  }74};75 76//--- main.cc77// expected-no-diagnostics78#include "sql_transform_builder.h"79 80template <typename Callable>81void get(const Callable& fn) {82  fwd<Callable>(fn);83}84 85namespace {86 87void test() {88  get([]() {});89  DoTransform<int>();90}91 92} // namespace93