remaining fix for 72016 (problem/type information flowing through AJDE)

This commit is contained in:
aclement 2004-08-17 09:43:12 +00:00
parent a2469c733c
commit cd4aeb90df
6 changed files with 62 additions and 6 deletions

View File

@ -43,9 +43,9 @@ public class ExtensionTests extends AjcTestCase {
*
* ajc -warn:unusedImport UnusedImport.java
*
* Expected result = id
* Expected result is that id matches IProblem.UnusedImport
*/
public void testOutjarInInjars () {
public void testMessageID () {
String[] args = new String[] {"UnusedImport.java","-warn:unusedImport"};
CompilationResult result = ajc(baseDir,args);
List l = result.getWarningMessages();
@ -128,4 +128,22 @@ public class ExtensionTests extends AjcTestCase {
}
/**
* Aim: Check that the start/end of certain warnings are correct
*
* ajc -warn:unusedImport UnusedImport.java
*
* Expected result is first warning message has start=7 end=20
*/
public void testMessageSourceStartEnd() {
String[] args = new String[] {"UnusedImport.java","-warn:unusedImport"};
CompilationResult result = ajc(baseDir,args);
List l = result.getWarningMessages();
IMessage m = ((IMessage)l.get(0));
assertTrue("Expected source start to be 7 but was "+m.getSourceStart(),
m.getSourceStart()==7);
assertTrue("Expected source end to be 20 but was "+m.getSourceEnd(),
m.getSourceEnd()==20);
}
}

View File

@ -76,6 +76,12 @@ public interface IMessage {
/** Return the ID of the message where applicable, see IProblem for list of valid IDs */
int getID();
/** Return the start position of the problem (inclusive), or -1 if unknown. */
int getSourceStart();
/** Return the end position of the problem (inclusive), or -1 if unknown. */
int getSourceEnd();
/** @return Throwable associated with this message, or null if none */
Throwable getThrown();

View File

@ -32,6 +32,7 @@ public class Message implements IMessage {
private final List/*SourceLocation*/ extraSourceLocations;
private final boolean declared; // Is it a DEOW ?
private final int id;
private final int sourceStart,sourceEnd;
/**
* Create a (compiler) error or warning message
@ -63,14 +64,16 @@ public class Message implements IMessage {
*/
public Message(String message, String details, IMessage.Kind kind,
ISourceLocation sourceLocation, Throwable thrown, ISourceLocation[] extraSourceLocations) {
this(message,details,kind,sourceLocation,thrown,extraSourceLocations,false,0);
this(message,details,kind,sourceLocation,thrown,extraSourceLocations,false,0,-1,-1);
}
public Message(String message, String details, IMessage.Kind kind,
ISourceLocation sLoc, Throwable thrown, ISourceLocation[] otherLocs,
boolean declared,int id) {
boolean declared,int id,int sourcestart,int sourceend) {
this.details = details;
this.id = id;
this.sourceStart = sourcestart;
this.sourceEnd = sourceend;
this.message = ((message!=null) ? message : ((thrown==null) ? null : thrown.getMessage()));
this.kind = kind;
this.sourceLocation = sLoc;
@ -182,4 +185,11 @@ public class Message implements IMessage {
return id;
}
public int getSourceStart() {
return sourceStart;
}
public int getSourceEnd() {
return sourceEnd;
}
}

View File

@ -151,7 +151,10 @@ public class EclipseAdapterUtils {
problem.isError() ? IMessage.ERROR : IMessage.WARNING,
sourceLocation,
null,
seeAlsoLocations,declared,problem.getID());
seeAlsoLocations,
declared,
problem.getID(),
problem.getSourceStart(),problem.getSourceEnd());
return msg;
}

View File

@ -40,6 +40,7 @@ public class SoftMessage implements IMessage {
private ISourceLocation sourceLocation;
private String details;
private int id;
private int sourceStart,sourceEnd;
private final ArrayList extraSourceLocations = new ArrayList();
//private ISourceLocation pseudoSourceLocation; // set directly
@ -332,6 +333,22 @@ public class SoftMessage implements IMessage {
public void setID(int id) {
this.id = id;
}
public int getSourceStart() {
return sourceStart;
}
public void setSourceStart(int s) {
sourceStart = s;
}
public int getSourceEnd() {
return sourceStart;
}
public void setSourceEnd(int s) {
sourceEnd = s;
}
/* (non-Javadoc)
* @see org.aspectj.bridge.IMessage#getExtraSourceLocations()

View File

@ -52,7 +52,9 @@ public class Checker extends ShadowMunger {
isError ? IMessage.ERROR : IMessage.WARNING,
shadow.getSourceLocation(),
null,
new ISourceLocation[]{this.getSourceLocation()},true,0);
new ISourceLocation[]{this.getSourceLocation()},true,
0, // id
-1,-1); // source start/end
world.getMessageHandler().handleMessage(message);