summaryrefslogtreecommitdiffstats
path: root/weaver
diff options
context:
space:
mode:
authoraclement <aclement>2006-01-25 11:28:51 +0000
committeraclement <aclement>2006-01-25 11:28:51 +0000
commit99eb7f8654eef884dfb204f8fdc0ea00fe849cec (patch)
treedc89bd9b9dbbfb17b241fc8f5345232a71edf4ae /weaver
parent244a1c78371fab02a6b2a9937fcc27e6cf1bc61d (diff)
downloadaspectj-99eb7f8654eef884dfb204f8fdc0ea00fe849cec.tar.gz
aspectj-99eb7f8654eef884dfb204f8fdc0ea00fe849cec.zip
fix for 122452 - pattern parser for a duff pointcut definition. Also fix for 125027 (deow length set wrong during parsing). latter fix from Helen.
Diffstat (limited to 'weaver')
-rw-r--r--weaver/src/org/aspectj/weaver/patterns/PatternParser.java13
-rw-r--r--weaver/testsrc/org/aspectj/weaver/patterns/DeclareErrorOrWarningTestCase.java7
2 files changed, 18 insertions, 2 deletions
diff --git a/weaver/src/org/aspectj/weaver/patterns/PatternParser.java b/weaver/src/org/aspectj/weaver/patterns/PatternParser.java
index 3d5866203..e37663d3d 100644
--- a/weaver/src/org/aspectj/weaver/patterns/PatternParser.java
+++ b/weaver/src/org/aspectj/weaver/patterns/PatternParser.java
@@ -546,8 +546,13 @@ public class PatternParser {
onType = null;
}
+ String simpleName = name.maybeGetSimpleName();
+ if (simpleName == null) {
+ throw new ParserException("(",tokenSource.peek(-1));
+ }
+
TypePatternList arguments = parseArgumentsPattern();
- return new ReferencePointcut(onType, name.maybeGetSimpleName(), arguments);
+ return new ReferencePointcut(onType, simpleName, arguments);
}
private Pointcut parseDesignatorPointcut(PointcutDesignatorHandler pcdHandler) {
@@ -1325,7 +1330,11 @@ public class PatternParser {
if (shouldEnd && t!=IToken.EOF) {
throw new ParserException("<string>;",token);
}
-
+ // bug 125027: since we've eaten the ";" we need to set the index
+ // to be one less otherwise the end position isn't set correctly.
+ int currentIndex = tokenSource.getIndex();
+ tokenSource.setIndex(currentIndex-1);
+
return result.toString();
}
diff --git a/weaver/testsrc/org/aspectj/weaver/patterns/DeclareErrorOrWarningTestCase.java b/weaver/testsrc/org/aspectj/weaver/patterns/DeclareErrorOrWarningTestCase.java
index 00bebaef9..fb06efa5e 100644
--- a/weaver/testsrc/org/aspectj/weaver/patterns/DeclareErrorOrWarningTestCase.java
+++ b/weaver/testsrc/org/aspectj/weaver/patterns/DeclareErrorOrWarningTestCase.java
@@ -44,6 +44,13 @@ public class DeclareErrorOrWarningTestCase extends TestCase {
}
+ public void testStartAndEndPositionSet() throws IOException {
+ DeclareErrorOrWarning d =
+ parse("declare error: call(void foo()): \"that is bad\";");
+ assertEquals("start position should be 0", 0, d.getStart());
+ assertEquals("end position should be 46", 46, d.getEnd());
+ }
+
private DeclareErrorOrWarning parse(String string) {
return (DeclareErrorOrWarning)new PatternParser(string).parseDeclare();
}