Browse Source

Fix for 64331

	  	java.lang.NullPointerException in WeaverMessageHandler class
tags/for_ajdt1_1_12
aclement 20 years ago
parent
commit
573741c808

+ 14
- 6
org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/WeaverMessageHandler.java View File

@@ -10,6 +10,7 @@
*******************************************************************************/
package org.aspectj.ajdt.internal.compiler;

import java.util.ArrayList;
import java.util.List;

import org.aspectj.ajdt.internal.compiler.lookup.EclipseSourceLocation;
@@ -164,12 +165,13 @@ public class WeaverMessageHandler implements IMessageHandler {
private IProblem[] buildSeeAlsoProblems(List sourceLocations,
CompilationResult problemSource,
boolean usedBinarySourceFileName) {
int probLength = sourceLocations.size();
if (usedBinarySourceFileName) probLength++;
IProblem[] ret = new IProblem[probLength];
List ret = new ArrayList();

for (int i = 0; i < sourceLocations.size(); i++) {
ISourceLocation loc = (ISourceLocation) sourceLocations.get(i);
ret[i] = new DefaultProblem(loc.getSourceFile().getPath().toCharArray(),
if (loc != null ) {
DefaultProblem dp =
new DefaultProblem( loc.getSourceFile().getPath().toCharArray(),
"see also",
0,
new String[] {},
@@ -177,13 +179,19 @@ public class WeaverMessageHandler implements IMessageHandler {
getStartPos(loc,null),
getEndPos(loc,null),
loc.getLine());
ret.add(dp);
} else {
throw new RuntimeException("Internal Compiler Error: Unexpected null source location passed as 'see also' location.");
}
}
if (usedBinarySourceFileName) {
ret[ret.length -1] = new DefaultProblem(problemSource.fileName,"see also",0,new String[] {},
DefaultProblem dp = new DefaultProblem(problemSource.fileName,"see also",0,new String[] {},
ProblemSeverities.Ignore,0,
0,0);
ret.add(dp);
}
return ret;
IProblem[] retValue = (IProblem[])ret.toArray(new IProblem[]{});
return retValue;
}
}


+ 7
- 0
tests/ajcTests.xml View File

@@ -7795,4 +7795,11 @@
</compile>
</ajc-test>
<ajc-test dir="bugs/abstractITDs"
pr="64331" title="java.lang.NullPointerException in WeaverMessageHandler class">
<compile files="A.java,C.java" aspectpath="B.jar">
<message kind="error" line="1" text="must implement abstract inter-type declaration: void A.foo()"/>
</compile>
</ajc-test>
</suite>

+ 2
- 0
tests/bugs/abstractITDs/A.java View File

@@ -0,0 +1,2 @@
public abstract class A {
}

+ 3
- 0
tests/bugs/abstractITDs/B.aj View File

@@ -0,0 +1,3 @@
public aspect B {
abstract public void A.foo();
}

BIN
tests/bugs/abstractITDs/B.jar View File


+ 2
- 0
tests/bugs/abstractITDs/C.java View File

@@ -0,0 +1,2 @@
public class C extends A {
}

+ 1
- 0
tests/bugs/abstractITDs/buildBJar.bat View File

@@ -0,0 +1 @@
ajc A.java B.aj -outjar B.jar

+ 8
- 1
weaver/src/org/aspectj/weaver/ResolvedTypeX.java View File

@@ -986,10 +986,17 @@ public abstract class ResolvedTypeX extends TypeX {
for (Iterator iter = getInterTypeMungersIncludingSupers().iterator(); iter.hasNext();) {
ConcreteTypeMunger element = (ConcreteTypeMunger) iter.next();
if (element.getSignature() != null && element.getSignature().isAbstract()) {
ISourceLocation xtraLocation = element.getSourceLocation();
if (xtraLocation == null) {
// Until intertype mungers remember where they came from, the source location
// for the element is null when binary weaving. In these cases uses the
// source location for the aspect containing the ITD
xtraLocation = element.getAspectType().getSourceLocation();
}
world.getMessageHandler().handleMessage(
new Message("must implement abstract inter-type declaration: " + element.getSignature(),
"", IMessage.ERROR, getSourceLocation(), null,
new ISourceLocation[] { element.getSourceLocation() }));
new ISourceLocation[] { xtraLocation }));
}
}
}

Loading…
Cancel
Save