You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2022/07/07 01:52:25 UTC
[groovy] branch GROOVY_4_0_X updated: GROOVY-10680: GroovyConsole should display record components
This is an automated email from the ASF dual-hosted git repository.
paulk pushed a commit to branch GROOVY_4_0_X
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/GROOVY_4_0_X by this push:
new 052892cd76 GROOVY-10680: GroovyConsole should display record components
052892cd76 is described below
commit 052892cd766e83dbb4d4962a4c24ab4791058f57
Author: Paul King <pa...@asert.com.au>
AuthorDate: Thu Jul 7 09:01:18 2022 +1000
GROOVY-10680: GroovyConsole should display record components
---
.../groovy/console/ui/ScriptToTreeNodeAdapter.groovy | 14 ++++++++++++++
.../groovy/console/ui/AstBrowserProperties.groovy | 1 +
2 files changed, 15 insertions(+)
diff --git a/subprojects/groovy-console/src/main/groovy/groovy/console/ui/ScriptToTreeNodeAdapter.groovy b/subprojects/groovy-console/src/main/groovy/groovy/console/ui/ScriptToTreeNodeAdapter.groovy
index 426590ffd5..411af2c354 100644
--- a/subprojects/groovy-console/src/main/groovy/groovy/console/ui/ScriptToTreeNodeAdapter.groovy
+++ b/subprojects/groovy-console/src/main/groovy/groovy/console/ui/ScriptToTreeNodeAdapter.groovy
@@ -36,6 +36,7 @@ import org.codehaus.groovy.ast.MethodNode
import org.codehaus.groovy.ast.ModuleNode
import org.codehaus.groovy.ast.Parameter
import org.codehaus.groovy.ast.PropertyNode
+import org.codehaus.groovy.ast.RecordComponentNode
import org.codehaus.groovy.ast.expr.ArgumentListExpression
import org.codehaus.groovy.ast.expr.ArrayExpression
import org.codehaus.groovy.ast.expr.AttributeExpression
@@ -312,6 +313,7 @@ class TreeNodeBuildingNodeOperation implements CompilationUnit.IPrimaryClassNode
collectMethodData(child, 'Methods', classNode)
collectFieldData(child, 'Fields', classNode)
collectPropertyData(child, 'Properties', classNode)
+ collectRecordComponentData(child, 'Record Components', classNode)
collectAnnotationData(child, 'Annotations', classNode.annotations)
if (showClosureClasses) {
@@ -336,6 +338,7 @@ class TreeNodeBuildingNodeOperation implements CompilationUnit.IPrimaryClassNode
collectMethodData(child, 'Methods', innerClassNode)
collectFieldData(child, 'Fields', innerClassNode)
collectPropertyData(child, 'Properties', innerClassNode)
+ collectRecordComponentData(child, 'Record Components', classNode)
collectAnnotationData(child, 'Annotations', innerClassNode.annotations)
}
}
@@ -362,6 +365,17 @@ class TreeNodeBuildingNodeOperation implements CompilationUnit.IPrimaryClassNode
}
}
+ private void collectRecordComponentData(parent, String name, ClassNode classNode) {
+ def allProperties = nodeMaker.makeNode(name)
+ if (classNode.properties) parent.add(allProperties)
+ classNode.recordComponents?.each { RecordComponentNode recordComponentNode ->
+ def ggrandchild = adapter.make(recordComponentNode)
+ allProperties.add(ggrandchild)
+ collectTypeData(ggrandchild, 'Type', recordComponentNode.type)
+ collectAnnotationData(ggrandchild, 'Annotations', recordComponentNode.annotations)
+ }
+ }
+
private void collectFieldData(parent, String name, ClassNode classNode) {
if (classNode.fields) {
def allFields = nodeMaker.makeNode(name)
diff --git a/subprojects/groovy-console/src/main/resources/groovy/console/ui/AstBrowserProperties.groovy b/subprojects/groovy-console/src/main/resources/groovy/console/ui/AstBrowserProperties.groovy
index 2866d30aad..ae090f2e9b 100644
--- a/subprojects/groovy-console/src/main/resources/groovy/console/ui/AstBrowserProperties.groovy
+++ b/subprojects/groovy-console/src/main/resources/groovy/console/ui/AstBrowserProperties.groovy
@@ -28,6 +28,7 @@ org {
MethodNode = "MethodNode - \$expression.name"
FieldNode = "FieldNode - \$expression.name : \$expression.type"
PropertyNode = "PropertyNode - \${expression.field?.name} : \${expression.field?.type}"
+ RecordComponentNode = "RecordComponentNode - \$expression.name : \$expression.type"
AnnotationNode = "AnnotationNode - \${expression.classNode?.name}"
Parameter = "Parameter - \$expression.name"
DynamicVariable = "DynamicVariable - \$expression.name"