summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoracolyer <acolyer>2005-03-23 20:26:21 +0000
committeracolyer <acolyer>2005-03-23 20:26:21 +0000
commitfb01cad1cc839b23cba31cd4dd5f44f68bad4411 (patch)
treefa373081decfaedad9cab225c5a1b927f1a40654
parent776ab61a02fb038c83a7d5638174443f6e727267 (diff)
downloadaspectj-fb01cad1cc839b23cba31cd4dd5f44f68bad4411.tar.gz
aspectj-fb01cad1cc839b23cba31cd4dd5f44f68bad4411.zip
fix for Bugzilla Bug 84333
BCException: Bad type name: TypeX.nameToSignature(TypeX.java:635)
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java7
-rw-r--r--tests/java5/generics/ITDReturningParameterizedType.aj21
-rw-r--r--tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java4
-rw-r--r--tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java22
-rw-r--r--tests/src/org/aspectj/systemtest/ajc150/ajc150.xml11
5 files changed, 65 insertions, 0 deletions
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java
index 3d82006ad..5aeedd62e 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java
@@ -51,6 +51,7 @@ import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding;
/**
* @author Jim Hugunin
@@ -158,6 +159,12 @@ public class EclipseFactory {
if (binding == null || binding.qualifiedSourceName() == null) {
return ResolvedTypeX.MISSING;
}
+ // first piece of generics support!
+ if (binding instanceof TypeVariableBinding) {
+ // this is a type variable...
+ TypeVariableBinding tvb = (TypeVariableBinding) binding;
+ return TypeX.forName(getName(tvb.firstBound)); // XXX needs more investigation as to whether this is correct in all cases
+ }
return TypeX.forName(getName(binding));
}
diff --git a/tests/java5/generics/ITDReturningParameterizedType.aj b/tests/java5/generics/ITDReturningParameterizedType.aj
new file mode 100644
index 000000000..aa5f3e978
--- /dev/null
+++ b/tests/java5/generics/ITDReturningParameterizedType.aj
@@ -0,0 +1,21 @@
+import java.util.*;
+
+public aspect ITDReturningParameterizedType {
+
+ private List<String> C.strings = new ArrayList<String>();
+
+ public List<String> C.getStrings() {
+ return strings;
+ }
+
+
+ public static void main(String[] args) {
+ C c = new C();
+ List<String> ss = c.getStrings();
+ }
+}
+
+
+class C {
+
+} \ No newline at end of file
diff --git a/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java b/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java
index 0d3b6b076..0af01c1b7 100644
--- a/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java
+++ b/tests/src/org/aspectj/systemtest/ajc150/Ajc150Tests.java
@@ -149,6 +149,10 @@ public class Ajc150Tests extends org.aspectj.testing.XMLBasedAjcTestCase {
runTest("dirs on aspectpath");
}
+ public void testIntroSample() {
+ runTest("introduction sample");
+ }
+
// helper methods.....
public SyntheticRepository createRepos(File cpentry) {
diff --git a/tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java b/tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java
new file mode 100644
index 000000000..332f0dd8e
--- /dev/null
+++ b/tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java
@@ -0,0 +1,22 @@
+package org.aspectj.systemtest.ajc150;
+
+import java.io.File;
+
+import junit.framework.Test;
+
+import org.aspectj.testing.XMLBasedAjcTestCase;
+
+public class GenericsTests extends XMLBasedAjcTestCase {
+
+ public static Test suite() {
+ return XMLBasedAjcTestCase.loadSuite(GenericsTests.class);
+ }
+
+ protected File getSpecFile() {
+ return new File("../tests/src/org/aspectj/systemtest/ajc150/ajc150.xml");
+ }
+
+ public void testITDReturningParameterizedType() {
+ runTest("ITD with parameterized type");
+ }
+}
diff --git a/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml b/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml
index e92516e85..c80d5f681 100644
--- a/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml
+++ b/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml
@@ -125,6 +125,10 @@
<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="../docs/dist/doc/examples/introduction" title="introduction sample" vm="1.5">
+ <compile files="CloneablePoint.java,ComparablePoint.java,HashablePoint.java,Point.java" options="-1.5"/>
+ </ajc-test>
<ajc-test dir="java5/varargs" title="varargs in constructor sig" vm="1.5">
<compile files="Pr88652.aj" options="-1.5">
@@ -2029,4 +2033,11 @@
</compile>
</ajc-test>
+ <!-- Generics tests -->
+
+ <ajc-test dir="java5/generics" title="ITD with parameterized type" vm="1.5">
+ <compile files="ITDReturningParameterizedType.aj" options="-1.5"/>
+ <run class="ITDReturningParameterizedType"/>
+ </ajc-test>
+
</suite> \ No newline at end of file