Skip to content

Commit

Permalink
simplify TypeUsage
Browse files Browse the repository at this point in the history
  • Loading branch information
ftomassetti committed Oct 30, 2015
1 parent 051adb2 commit 392bb1e
Show file tree
Hide file tree
Showing 7 changed files with 28 additions and 16 deletions.
Expand Up @@ -8,6 +8,7 @@
import java.util.List;

public class ArrayTypeUsage implements TypeUsage {

@Override
public boolean equals(Object o) {
if (this == o) return true;
Expand Down
Expand Up @@ -178,7 +178,12 @@ public Optional<TypeUsage> solveGenericType(String name) {
return Optional.empty();
}

@Override
/**
* Create a copy of the value with the type parameter changed.
* @param i
* @param replaced
* @return
*/
public TypeUsage replaceParam(int i, TypeUsage replaced) {
ArrayList<TypeUsage> typeParametersCorrected = new ArrayList<>(typeParameters);
typeParametersCorrected.set(i, replaced);
Expand Down Expand Up @@ -214,7 +219,7 @@ private TypeUsage replaceTypeParams(TypeUsage typeUsage){
TypeUsage replaced = replaceTypeParams(typeUsage.parameters().get(i));
// Identity comparison on purpose
if (replaced != typeUsage.parameters().get(i)) {
typeUsage = typeUsage.replaceParam(i, replaced);
typeUsage = typeUsage.asReferenceTypeUsage().replaceParam(i, replaced);
}
}

Expand Down
Expand Up @@ -87,16 +87,6 @@ default TypeParameter asTypeParameter() {
/// TypeParameters
///

/**
* Create a copy of the value with the type parameter changed.
* @param i
* @param replaced
* @return
*/
default TypeUsage replaceParam(int i, TypeUsage replaced) {
throw new UnsupportedOperationException(this.getClass().getCanonicalName());
}

default TypeUsage replaceParam(String name, TypeUsage replaced) {
//throw new UnsupportedOperationException(this.getClass().getCanonicalName());
return this;
Expand All @@ -118,7 +108,7 @@ default TypeUsage solveGenericTypes(Context context, TypeSolver typeSolver) {
TypeUsage result = this;
int i=0;
for (TypeUsage tp : this.parameters()) {
result = result.replaceParam(i, tp.solveGenericTypes(context, typeSolver));
result = result.asReferenceTypeUsage().replaceParam(i, tp.solveGenericTypes(context, typeSolver));
i++;
}
return result;
Expand Down
Expand Up @@ -30,7 +30,7 @@ public Optional<TypeUsage> solveGenericType(String name, TypeSolver typeSolver)
throw new UnsupportedOperationException(name);
}
TypeUsage typeOfScope = JavaParserFacade.get(typeSolver).getType(wrappedNode.getScope());
return typeOfScope.solveGenericType(name);
return typeOfScope.asReferenceTypeUsage().solveGenericType(name);
}

@Override
Expand Down
Expand Up @@ -153,7 +153,7 @@ private TypeUsage replaceTypeParams(TypeUsage typeUsage, TypeSolver typeSolver,
TypeUsage replaced = replaceTypeParams(typeUsage.parameters().get(i), typeSolver, context);
// Identity comparison on purpose
if (replaced != typeUsage.parameters().get(i)) {
typeUsage = typeUsage.replaceParam(i, replaced);
typeUsage = typeUsage.asReferenceTypeUsage().replaceParam(i, replaced);
}
}

Expand Down
Expand Up @@ -99,7 +99,7 @@ public Optional<MethodUsage> solveMethodAsUsage(String name, List<TypeUsage> par
List<TypeUsage> parametersOfReturnType = parseTypeParameters(classSignature.getReturnType().toString(), typeSolver, new JavassistMethodContext(method), invokationContext);
TypeUsage newReturnType = methodUsage.returnType();
for (int i = 0; i < parametersOfReturnType.size(); i++) {
newReturnType = newReturnType.replaceParam(i, parametersOfReturnType.get(i));
newReturnType = newReturnType.asReferenceTypeUsage().replaceParam(i, parametersOfReturnType.get(i));
}
methodUsage = methodUsage.replaceReturnType(newReturnType);
}
Expand Down
Expand Up @@ -59,4 +59,20 @@ public void testIsTypeVariable() {
assertEquals(false, arrayOfStrings.isTypeVariable());
}

@Test(expected = UnsupportedOperationException.class)
public void testAsReferenceTypeUsage() {
arrayOfBooleans.asReferenceTypeUsage();
}

@Test(expected = UnsupportedOperationException.class)
public void testAsTypeParameter() {
arrayOfBooleans.asTypeParameter();
}

@Test
public void testAsDescribe() {
assertEquals("boolean[]", arrayOfBooleans.describe());
assertEquals("java.lang.String[]", arrayOfStrings.describe());
}

}

0 comments on commit 392bb1e

Please sign in to comment.