From: aclement Date: Tue, 29 Jul 2008 16:55:49 +0000 (+0000) Subject: 229829: fix for sourceStart() NPE X-Git-Tag: V162DEV_M1~159 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=e9823aa074ffa69352ffcab1ef6be2b00d5accf1;p=aspectj.git 229829: fix for sourceStart() NPE --- diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.java index ced21bd9c..7fd1d9ba0 100644 --- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.java +++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.java @@ -253,8 +253,20 @@ public class EclipseSourceType extends AbstractReferenceTypeDelegate { if (amd.binding == null || !amd.binding.isValidBinding()) continue; ResolvedMember member = factory.makeResolvedMember(amd.binding); if (unit != null) { - member.setSourceContext(new EclipseSourceContext(unit.compilationResult,amd.binding.sourceStart())); - member.setPosition(amd.binding.sourceStart(),amd.binding.sourceEnd()); + boolean positionKnown = true; + if (amd.binding.sourceMethod() == null) { + if (amd.binding.declaringClass instanceof SourceTypeBinding) { + SourceTypeBinding stb = ((SourceTypeBinding) amd.binding.declaringClass); + if (stb.scope==null || stb.scope.referenceContext==null) positionKnown = false; + } + } + if (positionKnown) { // pr229829 + member.setSourceContext(new EclipseSourceContext(unit.compilationResult,amd.binding.sourceStart())); + member.setPosition(amd.binding.sourceStart(),amd.binding.sourceEnd()); + } else { + member.setSourceContext(new EclipseSourceContext(unit.compilationResult,0)); + member.setPosition(0,0); + } } declaredMethods.add(member); }