Skip to content

Commit

Permalink
Fix missing labels for missing configuring functions nodes
Browse files Browse the repository at this point in the history
  • Loading branch information
h0tk3y committed Oct 4, 2024
1 parent a61dbdb commit b340f5b
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 20 deletions.
Original file line number Diff line number Diff line change
@@ -1,15 +1,24 @@
package org.gradle.client.ui.connected.actions

import org.gradle.declarative.dsl.schema.SchemaFunction
import org.gradle.internal.declarativedsl.dom.DeclarativeDocument
import org.gradle.internal.declarativedsl.dom.DeclarativeDocument.DocumentNode.ElementNode
import org.gradle.internal.declarativedsl.dom.DeclarativeDocument.DocumentNode.PropertyNode
import org.gradle.internal.declarativedsl.dom.DocumentNodeContainer
import org.gradle.internal.declarativedsl.dom.DocumentResolution.ElementResolution.SuccessfulElementResolution
import org.gradle.internal.declarativedsl.dom.resolution.DocumentResolutionContainer

val DeclarativeDocument.singleSoftwareTypeNode: ElementNode?
get() = content.filterIsInstance<ElementNode>().singleOrNull()

fun DocumentNodeContainer.childElementNodes(name: String): List<ElementNode> =
content.filterIsInstance<ElementNode>().filter { it.name == name }
fun DocumentNodeContainer.childElementNodes(
resolutionContainer: DocumentResolutionContainer,
function: SchemaFunction
): List<ElementNode> =
content.filterIsInstance<ElementNode>().filter {
val resolution = resolutionContainer.data(it)
(resolution as? SuccessfulElementResolution)?.elementFactoryFunction == function
}

fun DocumentNodeContainer.property(name: String): PropertyNode? =
content.filterIsInstance<PropertyNode>().singleOrNull { it.name == name }
Original file line number Diff line number Diff line change
Expand Up @@ -493,7 +493,7 @@ class ModelTreeRendering(
val args = valueNode.values.map {
(it as? DeclarativeDocument.ValueNode.LiteralValueNode)?.value ?: "..."
}
val argsString = args.joinToString(",", "(", ")") ?: "()"
val argsString = args.joinToString(",", "(", ")")
"${valueNode.factoryName}$argsString"
}
}
Expand All @@ -507,27 +507,35 @@ class ModelTreeRendering(
) {
if (parentNode is ElementNode && resolutionContainer.isUnresolvedBase(parentNode))
return

val functionNodes = parentNode.childElementNodes(subFunction.simpleName)
functionNodes.forEach { functionNode ->
val functionType = functionNode.type(resolutionContainer) as? DataClass

WithDecoration(functionNode) {
val title = subFunction.simpleName +
val functionNodes = parentNode.childElementNodes(resolutionContainer, subFunction)
if (functionNodes.isNotEmpty()) {
functionNodes.forEach { functionNode ->
val functionType = functionNode.type(resolutionContainer) as? DataClass

WithDecoration(functionNode) {
val argsString =
if (functionNode.elementValues.isNotEmpty()) "(${elementArgumentsString(functionNode)})" else ""
TitleSmall(
text = title,
modifier = Modifier
.withHoverCursor()
.semiTransparentIfNull(functionType)
.withClickTextRangeSelection(functionNode, highlightingContext)
)
val title = subFunction.simpleName + argsString
TitleSmall(
text = title,
modifier = Modifier
.withHoverCursor()
.semiTransparentIfNull(functionType)
.withClickTextRangeSelection(functionNode, highlightingContext)
)
}
ElementInfoOrNothingDeclared(functionType, functionNode, indentLevel + 1)
}
ElementInfoOrNothingDeclared(
functionType,
functionNode,
indentLevel + 1
} else {
TitleSmall(
text = subFunction.simpleName,
modifier = Modifier
.withHoverCursor()
.semiTransparentIfNull(null)
.withClickTextRangeSelection(null, highlightingContext)
)
ElementInfoOrNothingDeclared(null, null, indentLevel + 1)
}
}

Expand Down

0 comments on commit b340f5b

Please sign in to comment.