aboutsummaryrefslogtreecommitdiffstats
path: root/bridge
diff options
context:
space:
mode:
authorAlexander Kriegisch <Alexander@Kriegisch.name>2021-03-20 10:24:57 +0700
committerAlexander Kriegisch <Alexander@Kriegisch.name>2021-03-20 10:24:57 +0700
commit31b2d60b897d318bfbffde2d78dbc288f85db191 (patch)
treeb31e667d37e23dcb6ec0ffe7efac2348c0672df2 /bridge
parente51c43b9e3970aab098a8d17c1057f660732a584 (diff)
downloadaspectj-31b2d60b897d318bfbffde2d78dbc288f85db191.tar.gz
aspectj-31b2d60b897d318bfbffde2d78dbc288f85db191.zip
Improve usage text, error and warning output in batch compiler
- Usage texts are now printed to stdOut, no longer stdErr. - 'java ...Main -?' no longer prints usage text twice (once to stdOut and then again to stdErr). - AjdtCommand.inferKind: Usage texts are no longer mis-identified as warnings or errors just because they contain substrings "warning" or "error". Matching is now more precise, looking for "[warning]" and "[error]". But in that case the method would not be called anyway because errors and warnings are identified in other ways already. As a fall-back, the categories IMessage.ERROR and IMessage.WARNING still exist in the method. - In case of compile errors, no usage message is printed anymore, because previously the user had to scroll up a lot in order to see the actual messages. This is also in line with ECJ. The same is true for warnings, but it was like this in Ajc already. - AjdtCommand.inferKind: There is a new category IMessage.USAGE especially for AspectJ usage texts, which will be identified by string matching and then correctly handled (i.e. printed to stdOut, not stdErr). - Usage text printing is no longer done in AspectJ but in the AspectJ "shadows" fork of JDT. This helps to get rid of some now obsolete code here. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
Diffstat (limited to 'bridge')
-rw-r--r--bridge/src/main/java/org/aspectj/bridge/IMessage.java8
-rw-r--r--bridge/src/main/java/org/aspectj/bridge/Message.java7
-rw-r--r--bridge/src/main/java/org/aspectj/bridge/context/PinpointingMessageHandler.java1
3 files changed, 14 insertions, 2 deletions
diff --git a/bridge/src/main/java/org/aspectj/bridge/IMessage.java b/bridge/src/main/java/org/aspectj/bridge/IMessage.java
index b53a8c727..21ef8d7ab 100644
--- a/bridge/src/main/java/org/aspectj/bridge/IMessage.java
+++ b/bridge/src/main/java/org/aspectj/bridge/IMessage.java
@@ -28,8 +28,9 @@ public interface IMessage {
// int values must sync with KINDS order below
Kind WEAVEINFO = new Kind("weaveinfo", 5);
Kind INFO = new Kind("info", 10);
+ Kind USAGE = new Kind("usage", 15);
Kind DEBUG = new Kind("debug", 20);
- Kind TASKTAG = new Kind("task", 25); // represents a 'TODO' from eclipse - producted by the compiler and
+ Kind TASKTAG = new Kind("task", 25); // represents a 'TODO' from eclipse - produced by the compiler and
// consumed by AJDT
Kind WARNING = new Kind("warning", 30);
Kind ERROR = new Kind("error", 40);
@@ -42,7 +43,7 @@ public interface IMessage {
/**
* list of Kind in precedence order. 0 is less than IMessage.Kind#COMPARATOR.compareTo(KINDS.get(i), KINDS.get(i + 1))
*/
- List<Kind> KINDS = Collections.unmodifiableList(Arrays.asList(new Kind[] { WEAVEINFO, INFO, DEBUG, TASKTAG,
+ List<Kind> KINDS = Collections.unmodifiableList(Arrays.asList(new Kind[] { WEAVEINFO, INFO, USAGE, DEBUG, TASKTAG,
WARNING, ERROR, FAIL, ABORT }));
/** @return non-null String with simple message */
@@ -60,6 +61,9 @@ public interface IMessage {
/** @return true if this is an internal debug message */
boolean isDebug();
+ /** @return true if this is a compiler usage message */
+ boolean isUsage();
+
/** @return true if this is information for the user */
boolean isInfo();
diff --git a/bridge/src/main/java/org/aspectj/bridge/Message.java b/bridge/src/main/java/org/aspectj/bridge/Message.java
index a4f17072b..959491c1f 100644
--- a/bridge/src/main/java/org/aspectj/bridge/Message.java
+++ b/bridge/src/main/java/org/aspectj/bridge/Message.java
@@ -121,6 +121,13 @@ public class Message implements IMessage {
return kind == IMessage.DEBUG;
}
+ /**
+ * @return true if kind == IMessage.USAGE
+ */
+ public boolean isUsage() {
+ return kind == IMessage.USAGE;
+ }
+
public boolean isTaskTag() {
return kind == IMessage.TASKTAG;
}
diff --git a/bridge/src/main/java/org/aspectj/bridge/context/PinpointingMessageHandler.java b/bridge/src/main/java/org/aspectj/bridge/context/PinpointingMessageHandler.java
index c54ff6789..b8c975cd0 100644
--- a/bridge/src/main/java/org/aspectj/bridge/context/PinpointingMessageHandler.java
+++ b/bridge/src/main/java/org/aspectj/bridge/context/PinpointingMessageHandler.java
@@ -91,6 +91,7 @@ public class PinpointingMessageHandler implements IMessageHandler {
public boolean isError() { return delegate.isError(); }
public boolean isWarning() { return delegate.isWarning();}
public boolean isDebug() { return delegate.isDebug();}
+ public boolean isUsage() { return delegate.isUsage();}
public boolean isInfo() { return delegate.isInfo();}
public boolean isAbort() { return delegate.isAbort();}
public boolean isTaskTag() { return delegate.isTaskTag();}