7a7a1a9c91289eeebd6923cba4ace8ef75f50388
markd
  Mon Apr 20 15:16:48 2015 -0700
Improve error message from gff3ToGenePred to make it easier to determine
where bad GFF3 annotations created an invalid genePred. (no redmine)

diff --git src/hg/lib/genePred.c src/hg/lib/genePred.c
index d77e58a..f13f060 100644
--- src/hg/lib/genePred.c
+++ src/hg/lib/genePred.c
@@ -1481,33 +1481,33 @@
 
 static void checkExon(FILE* errFh, int* errorCnt, char *desc, struct genePred* gp, int iExon)
 /* check one exon of a genePred */
 {
 unsigned exonStart = gp->exonStarts[iExon];
 unsigned exonEnd = gp->exonEnds[iExon];
 if (exonStart >= exonEnd)
     gpError(errFh, errorCnt, "%s: %s exon %u start %u >= end %u", desc, gp->name, iExon, exonStart, exonEnd);
 if (exonStart < gp->txStart)
     gpError(errFh, errorCnt, "%s: %s exon %u start %u < txStart %u", desc, gp->name, iExon, exonStart, gp->txStart);
 if (exonEnd > gp->txEnd)
     gpError(errFh, errorCnt, "%s: %s exon %u end %u > txEnd %u", desc, gp->name, iExon, exonEnd, gp->txEnd);
 if (iExon > 0)
     {
     /* other than first exon */
-    unsigned prevExonEnd = gp->exonEnds[iExon-1];
-    if (exonStart < prevExonEnd)
-        gpError(errFh, errorCnt, "%s: %s exon %u overlaps previous exon", desc, gp->name, iExon);
+    if (exonStart < gp->exonEnds[iExon-1])
+        gpError(errFh, errorCnt, "%s: %s exon %u (%s:%d-%d) overlaps previous exon (%s:%d-%d)",
+                desc, gp->name, iExon, gp->chrom, exonStart, exonEnd, gp->chrom, gp->exonStarts[iExon-1], gp->exonEnds[iExon-1]);
     }
 
 if (gp->optFields & genePredExonFramesFld)
     {
     int frame = gp->exonFrames[iExon];
     if ((frame < -1) || (frame > 2))
         gpError(errFh, errorCnt, "%s: %s invalid exonFrame: %d", desc, gp->name, frame);
     if ((exonEnd > gp->cdsStart) && (exonStart < gp->cdsEnd))
         {
         if (frame == -1)
             gpError(errFh, errorCnt, "%s: %s no exonFrame on CDS exon %d", desc, gp->name, iExon);
         }
     else
         {
         if (frame != -1)