mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-18 20:41:22 +07:00
PY-59198 PY-54560 Support "alias" parameter of attr and dataclass_transform fields
GitOrigin-RevId: 6a81d2a45d808391413b5c0b52c79f7f6c51dcbb
This commit is contained in:
committed by
intellij-monorepo-bot
parent
53d8170407
commit
aef3b8de3c
@@ -221,14 +221,13 @@ class PyDataclassTypeProvider : PyTypeProviderBase() {
|
||||
if (fieldParams != null && !fieldParams.initValue) return Triple(fieldName, false, null)
|
||||
if (fieldParams == null && field.annotationValue == null) return null // skip fields that are not annotated
|
||||
|
||||
// TODO add support for name aliases
|
||||
val parameterName =
|
||||
fieldName.let {
|
||||
if (dataclassParameters.type.asPredefinedType == PyDataclassParameters.PredefinedType.ATTRS && PyUtil.getInitialUnderscores(it) == 1) {
|
||||
it.substring(1)
|
||||
}
|
||||
else it
|
||||
}
|
||||
val parameterName = when (dataclassParameters.type.asPredefinedType) {
|
||||
// Fields starting with more than one underscore will be mangled into ClassName__field_name, but we don't support that
|
||||
PyDataclassParameters.PredefinedType.ATTRS -> fieldParams?.alias ?: fieldName.removePrefix("_")
|
||||
PyDataclassParameters.PredefinedType.DATACLASS_TRANSFORM -> fieldParams?.alias ?: fieldName
|
||||
PyDataclassParameters.PredefinedType.STD -> fieldName
|
||||
else -> fieldName
|
||||
}
|
||||
|
||||
val parameter = PyCallableParameterImpl.nonPsi(
|
||||
parameterName,
|
||||
|
||||
Reference in New Issue
Block a user