diff options
author | acolyer <acolyer> | 2005-04-20 12:57:49 +0000 |
---|---|---|
committer | acolyer <acolyer> | 2005-04-20 12:57:49 +0000 |
commit | 78abc76610cfb5fd2a2282086adfb017537ce49c (patch) | |
tree | 976a993332b1f2aeb7fb9fbc283cdccf71707b24 | |
parent | a92b2f0201a3fa6b02a9f3c67e9b34a17c0fb7f3 (diff) | |
download | aspectj-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
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 ":", "one of type, method, field, constructor" 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(); |