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

@ -123,7 +123,7 @@ impl<'src> FirstPass<'src, ()> for weedle::DictionaryDefinition<'src> {
}
if !record.dictionaries.insert(self.identifier.0) {
warn!("encountered multiple dictionary declarations of {}", self.identifier.0);
info!("Encountered multiple dictionary declarations: {}", self.identifier.0);
}
Ok(())
@ -137,7 +137,7 @@ impl<'src> FirstPass<'src, ()> for weedle::EnumDefinition<'src> {
}
if !record.enums.insert(self.identifier.0) {
warn!("Encountered multiple enum declarations of {}", self.identifier.0);
info!("Encountered multiple enum declarations: {}", self.identifier.0);
}
Ok(())
@ -336,11 +336,11 @@ impl<'src> FirstPass<'src, &'src str> for weedle::interface::OperationInterfaceM
}
if self.specials.len() > 1 {
warn!("Unsupported webidl operation {:?}", self);
warn!("Unsupported webidl operation: {:?}", self);
return Ok(())
}
if let Some(StringifierOrStatic::Stringifier(_)) = self.modifier {
warn!("Unsupported webidl operation {:?}", self);
warn!("Unsupported webidl stringifier: {:?}", self);
return Ok(())
}
let mut ids = vec![OperationId::Operation(self.identifier.map(|s| s.0))];
@ -430,9 +430,10 @@ impl<'src> FirstPass<'src, &'src str> for weedle::mixin::OperationMixinMember<'s
}
if self.stringifier.is_some() {
warn!("Unsupported webidl operation {:?}", self);
warn!("Unsupported webidl stringifier: {:?}", self);
return Ok(())
}
first_pass_operation(
record,
FirstPassOperationType::Mixin,
@ -450,7 +451,7 @@ impl<'src> FirstPass<'src, ()> for weedle::TypedefDefinition<'src> {
}
if record.typedefs.insert(self.identifier.0, &self.type_.type_).is_some() {
warn!("Encountered multiple declarations of {}", self.identifier.0);
info!("Encountered multiple typedef declarations: {}", self.identifier.0);
}
Ok(())