This is an automated email from the ASF dual-hosted git repository.

paulk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git


The following commit(s) were added to refs/heads/master by this push:
     new c5d2bd4e67 GROOVY-11294: Make generated toList() and toMap() methods 
on records return immutable collections
c5d2bd4e67 is described below

commit c5d2bd4e67e3d29f704d102e91ea52672dd3ae0a
Author: Paul King <[email protected]>
AuthorDate: Mon Jan 29 14:48:48 2024 +1000

    GROOVY-11294: Make generated toList() and toMap() methods on records return 
immutable collections
---
 .../org/codehaus/groovy/transform/RecordTypeASTTransformation.java   | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git 
a/src/main/java/org/codehaus/groovy/transform/RecordTypeASTTransformation.java 
b/src/main/java/org/codehaus/groovy/transform/RecordTypeASTTransformation.java
index e0990b37bd..ff7ca91e46 100644
--- 
a/src/main/java/org/codehaus/groovy/transform/RecordTypeASTTransformation.java
+++ 
b/src/main/java/org/codehaus/groovy/transform/RecordTypeASTTransformation.java
@@ -134,6 +134,7 @@ public class RecordTypeASTTransformation extends 
AbstractASTTransformation imple
     private static final ClassNode RECORD_OPTIONS_TYPE = 
make(RecordOptions.class);
     private static final ClassNode SIMPLE_BEAN_INFO_TYPE = 
make(SimpleBeanInfo.class);
     private static final ClassNode BEAN_DESCRIPTOR_TYPE = 
make(BeanDescriptor.class);
+    private static final ClassNode COLLECTIONS_TYPE = 
makeWithoutCaching(Collections.class, false);
     private static final ClassNode PROPERTY_DESCRIPTOR_TYPE = 
make(PropertyDescriptor.class);
     private static final ClassNode PROPERTY_DESCRIPTOR_ARRAY_TYPE = 
make(PropertyDescriptor[].class);
     private static final ClassNode EVENT_SET_DESCRIPTOR_TYPE = 
make(EventSetDescriptor.class);
@@ -376,7 +377,7 @@ public class RecordTypeASTTransformation extends 
AbstractASTTransformation imple
         for (PropertyNode pNode : pList) {
             args.add(callThisX(pNode.getName()));
         }
-        Statement body = returnS(listX(args));
+        Statement body = returnS(callX(COLLECTIONS_TYPE, "unmodifiableList", 
listX(args)));
         addGeneratedMethod(cNode, TO_LIST, ACC_PUBLIC | ACC_FINAL, 
LIST_TYPE.getPlainNodeReference(), Parameter.EMPTY_ARRAY, 
ClassNode.EMPTY_ARRAY, body);
     }
 
@@ -386,7 +387,7 @@ public class RecordTypeASTTransformation extends 
AbstractASTTransformation imple
             String name = pNode.getName();
             entries.add(mapEntryX(name, callThisX(name)));
         }
-        Statement body = returnS(mapX(entries));
+        Statement body = returnS(callX(COLLECTIONS_TYPE, "unmodifiableMap", 
mapX(entries)));
         addGeneratedMethod(cNode, TO_MAP, ACC_PUBLIC | ACC_FINAL, 
MAP_TYPE.getPlainNodeReference(), Parameter.EMPTY_ARRAY, ClassNode.EMPTY_ARRAY, 
body);
     }
 

Reply via email to