View | Details | Raw Unified | Return to bug 175039
Collapse All | Expand All

(-)testsrc/org/aspectj/weaver/TypeXTestCase.java (+23 lines)
Lines 122-127 Link Here
122
		}
122
		}
123
	}
123
	}
124
	
124
	
125
	public void testTypeFactoryForParameterizedTypes() {
126
		if (LangUtil.is15VMOrGreater()) { // no funny types pre 1.5		
127
			UnresolvedType enumOfSimpleType = 
128
				TypeFactory.createTypeFromSignature("Pjava/lang/Enum<Ljava/lang/String;>;"); 
129
			assertEquals(1, enumOfSimpleType.getTypeParameters().length);
130
			
131
			UnresolvedType enumOfNestedType = 
132
				TypeFactory.createTypeFromSignature("Pjava/lang/Enum<Ljavax/jws/soap/SOAPBinding$ParameterStyle;>;"); 
133
			assertEquals(1, enumOfNestedType.getTypeParameters().length);
134
135
			// is this signature right?
136
			UnresolvedType nestedTypeOfParameterized = 
137
				TypeFactory.createTypeFromSignature("PMyInterface<Ljava/lang/String;>$MyOtherType;"); 
138
			assertEquals(0, nestedTypeOfParameterized.getTypeParameters().length);
139
			
140
			// how about this one? is this valid?
141
			UnresolvedType doublyNestedTypeSignatures = 
142
				TypeFactory.createTypeFromSignature("PMyInterface<Ljava/lang/String;Ljava/lang/String;>$MyOtherType<Ljava/lang/Object;>;"); 
143
			assertEquals(1, nestedTypeOfParameterized.getTypeParameters().length);
144
			
145
		}
146
	}
147
	
125
	private void checkTX(UnresolvedType tx,boolean shouldBeParameterized,int numberOfTypeParameters) {
148
	private void checkTX(UnresolvedType tx,boolean shouldBeParameterized,int numberOfTypeParameters) {
126
		assertTrue("Expected parameterization flag to be "+shouldBeParameterized,tx.isParameterizedType()==shouldBeParameterized);
149
		assertTrue("Expected parameterization flag to be "+shouldBeParameterized,tx.isParameterizedType()==shouldBeParameterized);
127
		if (numberOfTypeParameters==0) {
150
		if (numberOfTypeParameters==0) {
(-)src/org/aspectj/weaver/TypeFactory.java (-1 / +1 lines)
Lines 123-129 Link Here
123
				// the type parameters of interest are only those that apply to the 'last type' in the signature
123
				// the type parameters of interest are only those that apply to the 'last type' in the signature
124
				// if the signature is 'PMyInterface<String>$MyOtherType;' then there are none...
124
				// if the signature is 'PMyInterface<String>$MyOtherType;' then there are none...
125
				String lastType = null;
125
				String lastType = null;
126
				int nestedTypePosition = signature.indexOf("$");
126
				int nestedTypePosition = signature.indexOf("$", endOfParams); // don't look for $ INSIDE the parameters
127
				if (nestedTypePosition!=-1) lastType = signature.substring(nestedTypePosition+1);
127
				if (nestedTypePosition!=-1) lastType = signature.substring(nestedTypePosition+1);
128
				else                        lastType = new String(signature);
128
				else                        lastType = new String(signature);
129
				startOfParams = lastType.indexOf("<");
129
				startOfParams = lastType.indexOf("<");

Return to bug 175039