webidl: Make logging a little more consistently formatted

This commit makes these changes:

* Unsupported constructs always log "unsupported" for easy `grep`ing
* There is always a "<generic message> : <details>" format now, so we can easily
  use `cut` to grab the generic message and count which kinds of things are our
  biggest missing features.
* Make sure that we have different `warn!` logs for each kind of unsupported
  thing, instead of grouping them together.

Put all that together and this is the current state of `wasm-bindgen-webidl` and
`web-sys`:

```
$ grep WARN stderr.txt | grep wasm_bindgen_webidl | grep -i unsupported | cut -d ' ' -f5- | cut -d ':' -f 1 | sort | uniq -c | sort -rn
    387 Unsupported WebIDL Dictionary definition
    139 Unsupported argument type
     70 Unsupported return type
     47 Unsupported WebIDL Callback definition
     22 Unsupported WebIDL extended attribute
     18 Unsupported unnamed operation
      9 Unsupported WebIDL CallbackInterface definition
      7 Unsupported WebIDL Stringifier interface member
      7 Unsupported WebIDL Maplike interface member
      2 Unsupported webidl stringifier
      2 Unsupported WebIDL Setlike interface member
      2 Unsupported stringifier on type
```
This commit is contained in:
Nick Fitzgerald
2018-08-15 14:24:09 -07:00
parent c1f7b42662
commit 21063fd42f
4 changed files with 42 additions and 28 deletions

View File

@ -236,7 +236,7 @@ impl<'src> FirstPassRecord<'src> {
match ret.to_syn_type(TypePosition::Return) {
None => {
warn!(
"Cannot convert return type to syn type: {:?} on {:?}",
"Unsupported return type: {:?} on {:?}",
ret,
rust_name
);
@ -320,7 +320,7 @@ impl<'src> FirstPassRecord<'src> {
syn_type
} else {
warn!(
"Cannot convert argument type to syn type: {:?} on {:?}",
"Unsupported argument type: {:?} on {:?}",
idl_type,
rust_name
);
@ -397,7 +397,7 @@ impl<'src> FirstPassRecord<'src> {
first_pass::OperationId::Constructor => panic!("constructors are unsupported"),
first_pass::OperationId::Operation(name) => match name {
None => {
warn!("Operations without a name are unsupported");
warn!("Unsupported unnamed operation: {:?}", operation_id);
return Vec::new();
}
Some(name) => name,
@ -541,7 +541,7 @@ impl<'src> FirstPassRecord<'src> {
let name = match operation_name {
Some(name) => name.to_string(),
None => {
warn!("Operations without a name are unsupported");
warn!("Unsupported unnamed operation: on {:?}", self_name);
return Vec::new();
}
};