aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/ajcTests.xml6
-rw-r--r--tests/bugs/Cosmetic.java11
-rw-r--r--weaver/src/org/aspectj/weaver/patterns/WildTypePattern.java7
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);