Exception thrown during RenameLabels for bad labels

**Good**
```javascript
{foo:{foo2:"bar"}}
```
```
WARNING - Suspicious code. Is there a missing '+' on the previous line?
```

**Bad**
```javascript
{foo:{foo:"bar"}}
```
```
WARNING - Suspicious code. Is there a missing '+' on the previous line?

0 error(s), 1 warning(s)
java.lang.RuntimeException: INTERNAL COMPILER ERROR.
Please report this problem.
null
  Node(LABEL): stdin:1:6
{foo:{foo:"bar"}}
  Parent(BLOCK): stdin:1:5
{foo:{foo:"bar"}}

	at com.google.common.base.Preconditions.checkState(Preconditions.java:161)
	at com.google.javascript.jscomp.RenameLabels$ProcessLabels.shouldTraverse(RenameLabels.java:158)
	at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:564)
	at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:578)
	at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:578)
	at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:578)
	at com.google.javascript.jscomp.NodeTraversal.traverseBranch(NodeTraversal.java:578)
	at com.google.javascript.jscomp.NodeTraversal.traverse(NodeTraversal.java:289)
	at com.google.javascript.jscomp.NodeTraversal.traverse(NodeTraversal.java:535)
	at com.google.javascript.jscomp.RenameLabels.process(RenameLabels.java:271)
	at com.google.javascript.jscomp.PhaseOptimizer$NamedPass.process(PhaseOptimizer.java:285)
	at com.google.javascript.jscomp.PhaseOptimizer.process(PhaseOptimizer.java:217)
	at com.google.javascript.jscomp.Compiler.optimize(Compiler.java:1941)
	at com.google.javascript.jscomp.Compiler.compileInternal(Compiler.java:752)
	at com.google.javascript.jscomp.Compiler.access$000(Compiler.java:92)
	at com.google.javascript.jscomp.Compiler$3.call(Compiler.java:638)
	at com.google.javascript.jscomp.Compiler$3.call(Compiler.java:635)
	at com.google.javascript.jscomp.Compiler$4.call(Compiler.java:682)
	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.IllegalStateException
	... 22 more
```

I haven't yet been able to produce any sensical code with this error.
It looks like we're only checking for one label being an ancestor of the other? What about a case like

    function f() {
    foo:
      alert(1);
    bar:
      alert(2);
    foo:
      alert(3);
    }

? I haven't checked but I assume that is a syntax error too, and it doesn't look like we warn about it.