<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/96515>96515</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Missing Trait Compiler Error for Pointers in LLVM YAML API
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          Nirhar
      </td>
    </tr>
</table>

<pre>
    I have been trying to write a yaml parser using llvm's yaml API, but ran into an error. Here is the code that I'm attempting to compile:
```cpp
#include "llvm/Support/YAMLTraits.h"
#include "llvm/IR/Module.h"

using namespace llvm;

using llvm::yaml::MappingTraits;
using llvm::yaml::ScalarTraits;
using llvm::yaml::IO;


struct Foo {
  unsigned x;
  llvm::Value* v; // Lets assume that this would be constants only
};

// Yaml traits
template <>
struct yaml::ScalarTraits<llvm::Value*> {
 static void output(const llvm::Value* &value, void*,
 llvm::raw_ostream &out) {
    value->print(out);
  }
  static StringRef input(StringRef scalar, void*, llvm::Value* &value) {
    // Code that parses a string and converts it to llvm::Value*
    return StringRef();
  }
  static QuotingType mustQuote(StringRef) { return QuotingType::None; }
};

template <>
struct yaml::MappingTraits<Foo> {
  static void mapping(IO &io, Foo &f) {
 io.mapRequired("x",  f.x);
    io.mapRequired("v", f.v);
 }
};

int main() {
  // Code to read-write from/to a yaml file.
  return 0;
}
```

However, I get the following error when I try to compile it:
```
...include/llvm/Support/YAMLTraits.h:1172:42: error: invalid application of 'sizeof' to incomplete type 'llvm::yaml::MissingTrait<llvm::Value*>'
   char missing_yaml_trait_for_type[sizeof(MissingTrait<T>)];
```

As far as I understand, this error would be generated if I fail to give a trait definition for llvm::Value*. But I've done so. So I'm confused as to why this error is generated. Any help would be appreciated!
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMVt-P2jgQ_mvMy6gROEDgIQ8su6hIu22vW1Xq08okE-KTY-f8I5T760-2A4Rddq8Sikw8M_7mm5nPYcbwvUTMyeyOzO5HzNla6fwL1zXTo50qj_kWatYh7BAlWH3kcg9WwUFzi8DgyBoBLdMGNTjjN4XoGkIzE7dW37aErmHnLGgmgUurgElArZVO4DNqBG7A1giFKhFszSxsCc0aYNZi09r-vEI1LRdI0hUZ35PxiszH8Ve0bf-GplwWwpUIhNKIYvPs2lZpS-jm1-rp8Ydm3JqkJpR-4LP9TujmSZVO4NA0PGOKkjVoWlZgTDa9e2sSN1YkXXka4uqJtS2X-4ji7PW-_XPBBNN_bL79-gpJfBqrXWFhoxSQrN8HcDIUvoTfZycYRP3JhENCV9CR9A4I3RC6gUe0BpgxrukLZWtu4KCcKGHnCyiNZdIaUFIcewjZ_WtQMdYv3xw2phbe-2ILZhFIuibpwxX29yhZvwVM0odBmsYyywvoFC9BOds6S-gi4LyVK6HzLq7XwcWHo-s-1MVes8OLMlYja7yL8kGXQ24BQphPJH1oNZf-zGg0oNoT0y97kM9Wc7n_jhVwGYFe3piQ9jWujzN4BahnfX2esTCyBhiYcAgwWfoCdqitAW79yN0g9xxPo3VaXjATuvi__P5yyg_zj2OL0Dhj_X8cZtmDPsUe2EcUX5TE0I2n0G-b68-a6NUcrjdKXbfNVd800ZrQxfarJ5grT34YJzqvrpnmKmlY-x3_cVxjGUihv72E0DVAlfy-5ghu2ne9fZV0V-YfpM2lhYZxGaswTOSq7go0svJTlO5KKy92Xo6jUldcYHLy62swvhx0Pv0kvEMAn9UBOwwNuoU92iDolRJCHXxzBbWHQ40Stv4OGQg6cPtW0-PfJEl6cSZ087Gep6vJJKMkXU39I57nF1x2TPASWNsKXjDLlQRVgb-e-L-oKkIzj4VLj0agRbC-PQnNbuo3N-bUN--JD6HZubxFzTQ00enFh3kJgvdSKf3izyGzuxOMxavYP0KoJZkNSn2L-JWBimlgBrbgZInaK3Dp6xC0uSf-pNB7lKiZxRJ4BVuoGBc-_T3v_FUewEGJFZc8MFUpfUMEErhz8Y7uEEolEYxK4Fn113ahZOUMlh6T_06oj0Mo3FxAJLCSR6hRtBeErG01FtxvEzoZlXlaLtMlG2E-ySZLOs2mNB3VeZbhAlOWlhXOkU2WizJjWTlJ5ws2qdJlNeI5HdPpeE6nk_k0nabJfMlwVs3Gy2KSVvNdSqZjbBgXiU8wUXo_4sY4zJfz2WQ2EmyHwoSPIkolHiBs-sGc3Y907n0-7dzekOlYcGPNJYrlVmDeVxNCOWEdW13DQ-DA0_pNcWlRG-ASHh9_PoFvZ_-xNHJa5LW1rfGsh-ndc1u7XVKEee3nICBotfobCz8MAZ4hdBPhdzn9LwAA___iCwJi">