Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,22 @@ public boolean isRawType() {
return XTypes.isRawParameterizedType(type);
}

public XTypeName keyTypeName() {
checkState(!isRawType());
return XTypeNames.getParameterizedTypeArguments(typeName()).get(0);
}

public XTypeName valueTypeName() {
checkState(!isRawType());
return XTypeNames.getParameterizedTypeArguments(typeName()).get(1);
}

public XTypeName unwrappedFrameworkValueTypeName() {
return valuesAreFrameworkType()
? XTypeNames.getParameterizedTypeArguments(valueTypeName()).get(0)
: valueTypeName();
}

/**
* The map key type.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ private XTypeName keyTypeName() {
if (useLazyClassKey) {
return XTypeName.STRING;
}
return MapType.from(binding.key()).keyType().asTypeName();
return MapType.from(binding.key()).keyTypeName();
}

private XTypeName valueTypeName() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,15 @@ object XTypeNames {
* isn't a parameterized type, it returns the argument unchanged.
*/
// TODO(bcorso): Take in an XTypeName once we can check for XParameterizedTypeName in XPoet.
@JvmStatic
fun getParameterizedTypeArguments(typeName: XTypeName): List<XTypeName> {
val javaPoet = typeName.toJavaPoet()
val kotlinPoet = typeName.toKotlinPoet()
val javaArgs = (javaPoet as? JParameterizedTypeName)?.typeArguments ?: emptyList()
val kotlinArgs = (kotlinPoet as? KParameterizedTypeName)?.typeArguments ?: emptyList()
return javaArgs.zip(kotlinArgs).map { (j, k) -> toXPoet(j, k) }
}

@JvmStatic
fun rawJavaTypeName(typeName: JTypeName): JTypeName {
return if (typeName is JParameterizedTypeName) {
Expand Down
Loading