Author: scabanovich
Date: 2011-04-21 14:36:04 -0400 (Thu, 21 Apr 2011)
New Revision: 30716
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractTypeDefinition.java
Log:
JBIDE-8768
https://issues.jboss.org/browse/JBIDE-8768
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractTypeDefinition.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractTypeDefinition.java 2011-04-21
18:29:41 UTC (rev 30715)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractTypeDefinition.java 2011-04-21
18:36:04 UTC (rev 30716)
@@ -104,12 +104,18 @@
map = new HashMap<String, ISourceRange>();
getContent();
if(content == null) return;
-
+
+ //Any disagreement between content and range means that content is obsolete
+ //and this build is obsolete (type was updated wile old build is proceeding).
+ //New build is pending, and now we only have to go smoothly around inconsistencies.
ISourceRange r = type.getNameRange();
if(r == null) return;
int b = r.getOffset() + r.getLength();
+ if(b < 0) return;
int e = content.indexOf('{', b);
if(e < 0) e = content.length();
+ if(e < b) return;
+
String sup = content.substring(b, e);
String sc = type.getSuperclassName();
if(sc != null) checkRange(b, sup, sc);