summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoracolyer <acolyer>2005-08-19 14:49:23 +0000
committeracolyer <acolyer>2005-08-19 14:49:23 +0000
commit2fbf2933e6b75fcac32e4b725227aa4ee70d2e79 (patch)
tree8b29100d32eddd658a043a5c6d55ced640028f90
parent2b23e912c5e57b0731b25c3a26ec365b20468b0f (diff)
downloadaspectj-2fbf2933e6b75fcac32e4b725227aa4ee70d2e79.tar.gz
aspectj-2fbf2933e6b75fcac32e4b725227aa4ee70d2e79.zip
make sure that fields don't have a void type in a get / set pointcut expression
-rw-r--r--weaver/src/org/aspectj/weaver/WeaverMessages.java1
-rw-r--r--weaver/src/org/aspectj/weaver/patterns/KindedPointcut.java9
-rw-r--r--weaver/src/org/aspectj/weaver/weaver-messages.properties1
3 files changed, 10 insertions, 1 deletions
diff --git a/weaver/src/org/aspectj/weaver/WeaverMessages.java b/weaver/src/org/aspectj/weaver/WeaverMessages.java
index 7efec1867..0665e2940 100644
--- a/weaver/src/org/aspectj/weaver/WeaverMessages.java
+++ b/weaver/src/org/aspectj/weaver/WeaverMessages.java
@@ -30,6 +30,7 @@ public class WeaverMessages {
public static final String EXACT_TYPE_PATTERN_REQD = "exactTypePatternRequired";
public static final String CANT_BIND_TYPE = "cantBindType";
public static final String WILDCARD_NOT_ALLOWED = "wildcardTypePatternNotAllowed";
+ public static final String FIELDS_CANT_HAVE_VOID_TYPE = "fieldCantBeVoid";
public static final String DECP_OBJECT = "decpObject";
public static final String CANT_EXTEND_SELF="cantExtendSelf";
diff --git a/weaver/src/org/aspectj/weaver/patterns/KindedPointcut.java b/weaver/src/org/aspectj/weaver/patterns/KindedPointcut.java
index c2d6658e4..eba4ee37a 100644
--- a/weaver/src/org/aspectj/weaver/patterns/KindedPointcut.java
+++ b/weaver/src/org/aspectj/weaver/patterns/KindedPointcut.java
@@ -322,7 +322,14 @@ public class KindedPointcut extends Pointcut {
if (visitor.wellHasItThen/*?*/()) {
scope.message(MessageUtil.error(WeaverMessages.format(WeaverMessages.GET_AND_SET_DONT_SUPPORT_DEC_TYPE_PARAMETERS),
getSourceLocation()));
- }
+ }
+
+ // fields can't have a void type!
+ UnresolvedType returnType = signature.getReturnType().getExactType();
+ if (returnType == ResolvedType.VOID) {
+ scope.message(MessageUtil.error(WeaverMessages.format(WeaverMessages.FIELDS_CANT_HAVE_VOID_TYPE),
+ getSourceLocation()));
+ }
}
// no join points for initialization and preinitialization of parameterized types
diff --git a/weaver/src/org/aspectj/weaver/weaver-messages.properties b/weaver/src/org/aspectj/weaver/weaver-messages.properties
index e962215af..e1c2cad55 100644
--- a/weaver/src/org/aspectj/weaver/weaver-messages.properties
+++ b/weaver/src/org/aspectj/weaver/weaver-messages.properties
@@ -25,6 +25,7 @@ cantFindPointcut=can''t find pointcut ''{0}'' on {1}
exactTypePatternRequired=exact type pattern required
cantBindType=can''t bind type name ''{0}''
wildcardTypePatternNotAllowed=wildcard type pattern not allowed, must use type name
+fieldCantBeVoid=fields cannot have a void type
# Declare parents messages...
decpObject=can''t change the parents of java.lang.Object