Yeah, this is kind of a problematic case. I too had it triggering an ICE here but that would break a compile-fail test case because the error message was duplicated (once for this method and another time in typeck::check::mod::check_enum_variants()). 
But this was before I moved discriminant calculation out of `VariantInfo::from_ast_variant()`---I'll try to put the ICE back in and see if it passes the test.

The problem here is that the order between this method and type checking is not fixed. Most of the time the enum will be type checked before this method is called for it but in some rare cases (see https://github.com/mozilla/rust/issues/6362 and https://github.com/mozilla/rust/issues/7527) this method is called before the type check. Which in turn produces an ICE instead of an compilation error. Maybe this should be cleaned up anyway (by always running the type checking before).