diff options
-rw-r--r-- | tests/ajcTests.xml | 6 | ||||
-rw-r--r-- | tests/bugs/Cosmetic.java | 11 | ||||
-rw-r--r-- | weaver/src/org/aspectj/weaver/patterns/WildTypePattern.java | 7 |
3 files changed, 21 insertions, 3 deletions
diff --git a/tests/ajcTests.xml b/tests/ajcTests.xml index 08d856f20..a74b3d915 100644 --- a/tests/ajcTests.xml +++ b/tests/ajcTests.xml @@ -7770,4 +7770,10 @@ </compile> </ajc-test> + <ajc-test dir="bugs" + pr="53999" title="'can't bind type' message has $ for . in type name for declare soft"> + <compile files="Cosmetic.java"> + <message kind="error" line="9" text="can't bind type name 'unknown.Error'"/> + </compile> + </ajc-test> </suite> diff --git a/tests/bugs/Cosmetic.java b/tests/bugs/Cosmetic.java new file mode 100644 index 000000000..bc874305b --- /dev/null +++ b/tests/bugs/Cosmetic.java @@ -0,0 +1,11 @@ + class Test { + public static void main(String[] args) { + test(); + } + static void test() { + throw new Error("hello"); + } + static aspect A { + declare soft : unknown.Error : call(void test()); // CE should be a message saying cant bind type 'unknown.Error' and not 'unknown$Error' + } +}
\ No newline at end of file diff --git a/weaver/src/org/aspectj/weaver/patterns/WildTypePattern.java b/weaver/src/org/aspectj/weaver/patterns/WildTypePattern.java index f710c5aaa..01324e36b 100644 --- a/weaver/src/org/aspectj/weaver/patterns/WildTypePattern.java +++ b/weaver/src/org/aspectj/weaver/patterns/WildTypePattern.java @@ -333,6 +333,7 @@ public class WildTypePattern extends TypePattern { } String cleanName = maybeGetCleanName(); + String originalName = cleanName; if (cleanName != null) { TypeX type; @@ -347,14 +348,14 @@ public class WildTypePattern extends TypePattern { if (requireExactType) { if (!allowBinding) { scope.getWorld().getMessageHandler().handleMessage( - MessageUtil.error("can't bind type name '" + cleanName + "'", + MessageUtil.error("can't bind type name '" + originalName + "'", getSourceLocation())); } else if (scope.getWorld().getLint().invalidAbsoluteTypeName.isEnabled()) { - scope.getWorld().getLint().invalidAbsoluteTypeName.signal(cleanName, getSourceLocation()); + scope.getWorld().getLint().invalidAbsoluteTypeName.signal(originalName, getSourceLocation()); } return NO; } else if (scope.getWorld().getLint().invalidAbsoluteTypeName.isEnabled()) { - scope.getWorld().getLint().invalidAbsoluteTypeName.signal(cleanName, getSourceLocation()); + scope.getWorld().getLint().invalidAbsoluteTypeName.signal(originalName, getSourceLocation()); } } else { if (dim != 0) type = TypeX.makeArray(type, dim); |