summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoracolyer <acolyer>2005-04-20 12:57:49 +0000
committeracolyer <acolyer>2005-04-20 12:57:49 +0000
commit78abc76610cfb5fd2a2282086adfb017537ce49c (patch)
tree976a993332b1f2aeb7fb9fbc283cdccf71707b24
parenta92b2f0201a3fa6b02a9f3c67e9b34a17c0fb7f3 (diff)
downloadaspectj-78abc76610cfb5fd2a2282086adfb017537ce49c.tar.gz
aspectj-78abc76610cfb5fd2a2282086adfb017537ce49c.zip
fix for Bugzilla Bug 91858
NullPointerException when declare @type is spelt with capital letter patch submitted by Andrew Huff
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/DeclareAnnotationDeclaration.java4
-rw-r--r--tests/java5/annotations/declare/DeathByPoorSpelling.aj7
-rw-r--r--tests/src/org/aspectj/systemtest/ajc150/DeclareAnnotationTests.java5
-rw-r--r--tests/src/org/aspectj/systemtest/ajc150/ajc150.xml11
-rw-r--r--weaver/src/org/aspectj/weaver/patterns/PatternParser.java3
5 files changed, 22 insertions, 8 deletions
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/DeclareAnnotationDeclaration.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/DeclareAnnotationDeclaration.java
index d7da525e5..dbe4ca748 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/DeclareAnnotationDeclaration.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/DeclareAnnotationDeclaration.java
@@ -80,7 +80,9 @@ public class DeclareAnnotationDeclaration extends DeclareDeclaration {
public void postParse(TypeDeclaration typeDec) {
super.postParse(typeDec);
- ((DeclareAnnotation)declareDecl).setAnnotationMethod(new String(selector));
+ if (declareDecl != null){
+ ((DeclareAnnotation)declareDecl).setAnnotationMethod(new String(selector));
+ }
}
}
diff --git a/tests/java5/annotations/declare/DeathByPoorSpelling.aj b/tests/java5/annotations/declare/DeathByPoorSpelling.aj
new file mode 100644
index 000000000..64404dd6d
--- /dev/null
+++ b/tests/java5/annotations/declare/DeathByPoorSpelling.aj
@@ -0,0 +1,7 @@
+// "declare @Type (should be @type)"
+
+@interface myInterface {}
+
+aspect A{
+ declare @Type: A : @myInterface;
+}
diff --git a/tests/src/org/aspectj/systemtest/ajc150/DeclareAnnotationTests.java b/tests/src/org/aspectj/systemtest/ajc150/DeclareAnnotationTests.java
index 2aa7ded4b..0304944cf 100644
--- a/tests/src/org/aspectj/systemtest/ajc150/DeclareAnnotationTests.java
+++ b/tests/src/org/aspectj/systemtest/ajc150/DeclareAnnotationTests.java
@@ -322,4 +322,9 @@ public class DeclareAnnotationTests extends XMLBasedAjcTestCase {
assertTrue("Should have a relationship but does not ",l.size()>0);
}
}
+
+ public void testDeclareTypeMisspelled() {
+ runTest("declare @Type (should be @type)");
+ }
+
} \ No newline at end of file
diff --git a/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml b/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml
index 4bd87bc7c..b2005b972 100644
--- a/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml
+++ b/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml
@@ -125,11 +125,6 @@
<ajc-test dir="bugs150" title="bad asm for enums" vm="1.5">
<compile files="Rainbow.java" options="-emacssym,-1.5"/>
</ajc-test>
-
- <ajc-test dir="bugs150" pr="83645" title="pertypewithin({interface}) illegal field modifier">
- <compile files="PR83645.java"/>
- <run class="PR83645"/>
- </ajc-test>
<ajc-test dir="../docs/dist/doc/examples/introduction" title="introduction sample" vm="1.5">
<compile files="CloneablePoint.java,ComparablePoint.java,HashablePoint.java,Point.java" options="-1.5"/>
@@ -545,6 +540,12 @@
</run>
</ajc-test>
+ <ajc-test dir="java5/annotations/declare" pr="91858" title="declare @Type (should be @type)">
+ <compile files="DeathByPoorSpelling.aj" options="-1.5">
+ <message kind="error" line="6" text="Syntax error on token &quot;:&quot;, &quot;one of type, method, field, constructor&quot; expected"/>
+ </compile>
+ </ajc-test>
+
<!-- ======================================================================================= -->
<!-- Autoboxing tests -->
<!-- ======================================================================================= -->
diff --git a/weaver/src/org/aspectj/weaver/patterns/PatternParser.java b/weaver/src/org/aspectj/weaver/patterns/PatternParser.java
index 1463534c3..ffd4446ca 100644
--- a/weaver/src/org/aspectj/weaver/patterns/PatternParser.java
+++ b/weaver/src/org/aspectj/weaver/patterns/PatternParser.java
@@ -139,8 +139,7 @@ public class PatternParser {
} else if (kind.equals("constructor")) {
ret = parseDeclareAtMethod(false);
} else {
- throw new ParserException("expected one of type, method, field, constructor",
- tokenSource.peek(-1));
+ throw new ParserException("one of type, method, field, constructor",tokenSource.peek(-1));
}
eat(";");
int endPos = tokenSource.peek(-1).getEnd();